diff --git a/examples/ts/build-message.ts b/examples/ts/build-message.ts index acb1cd5da2..aeab64cd9f 100644 --- a/examples/ts/build-message.ts +++ b/examples/ts/build-message.ts @@ -8,9 +8,8 @@ */ import {BitGoAPI} from '@bitgo/sdk-api'; -import {MessageStandardType} from "@bitgo/sdk-core"; +import {MessageStandardType, getMidnightGlacierDropClaimMsg} from "@bitgo/sdk-core"; import {Hteth} from "@bitgo/sdk-coin-eth"; -import {MIDNIGHT_TNC_HASH} from "@bitgo/account-lib"; require('dotenv').config({ path: '../../.env' }); const bitgo = new BitGoAPI({ @@ -30,7 +29,8 @@ async function main() { console.log(`Wallet label: ${wallet.label()}`); const adaTestnetDestinationAddress = 'addr_test1vz7xs7ceu4xx9n5xn57lfe86vrwddqpp77vjwq5ptlkh49cqy3wur'; - const testnetMessageRaw = `STAR 12345678 to ${adaTestnetDestinationAddress} ${MIDNIGHT_TNC_HASH}`; + const allocationAmt = 12345678; + const testnetMessageRaw = getMidnightGlacierDropClaimMsg(adaTestnetDestinationAddress, allocationAmt); const txRequest = await wallet.buildSignMessageRequest({ message: { diff --git a/examples/ts/sign-message.ts b/examples/ts/sign-message.ts index 69331ae598..3f9f0ef15a 100644 --- a/examples/ts/sign-message.ts +++ b/examples/ts/sign-message.ts @@ -4,8 +4,7 @@ * Copyright 2025, BitGo, Inc. All Rights Reserved. */ import { BitGo } from 'bitgo'; -import { MessageStandardType } from '@bitgo/sdk-core'; -import { MIDNIGHT_TNC_HASH } from "@bitgo/account-lib"; +import { getMidnightGlacierDropClaimMsg, MessageStandardType } from '@bitgo/sdk-core'; const bitgo = new BitGo({ env: 'test' }); @@ -20,7 +19,8 @@ async function signMessage(): Promise { const walletInstance = await basecoin.wallets().get({ id: walletId }); const adaTestnetDestinationAddress = 'addr_test1vz7xs7ceu4xx9n5xn57lfe86vrwddqpp77vjwq5ptlkh49cqy3wur'; - const testnetMessageRaw = `STAR 12345678 to ${adaTestnetDestinationAddress} ${MIDNIGHT_TNC_HASH}`; + const allocationAmt = 12345678; + const testnetMessageRaw = getMidnightGlacierDropClaimMsg(adaTestnetDestinationAddress, allocationAmt); const messageTxn = await walletInstance.signMessage({ message: { diff --git a/modules/abstract-eth/src/lib/messages/eip191/eip191MessageBuilder.ts b/modules/abstract-eth/src/lib/messages/eip191/eip191MessageBuilder.ts index 858836127c..ccccf0937f 100644 --- a/modules/abstract-eth/src/lib/messages/eip191/eip191MessageBuilder.ts +++ b/modules/abstract-eth/src/lib/messages/eip191/eip191MessageBuilder.ts @@ -22,4 +22,10 @@ export class Eip191MessageBuilder extends BaseMessageBuilder { async buildMessage(options: MessageOptions): Promise { return new EIP191Message(options); } + + protected getWhitelistedMessageTemplates(): Record { + // EIP-191 does not have whitelisted message templates + // This means all messages are allowed + return {}; + } } diff --git a/modules/account-lib/src/index.ts b/modules/account-lib/src/index.ts index 2547c2420e..d8bbb99dfd 100644 --- a/modules/account-lib/src/index.ts +++ b/modules/account-lib/src/index.ts @@ -10,7 +10,10 @@ import { BaseMessageBuilderFactory, BuildMessageError, MessageStandardType, + MIDNIGHT_TNC_HASH, } from '@bitgo/sdk-core'; +export { MIDNIGHT_TNC_HASH }; + import { BaseCoin as CoinConfig, CoinFeature, coins } from '@bitgo/statics'; export { Ed25519BIP32, Eddsa }; @@ -203,9 +206,6 @@ export { Vet }; import * as CosmosSharedCoin from '@bitgo/sdk-coin-cosmos'; export { CosmosSharedCoin }; -import { validateAgainstMessageTemplates, MIDNIGHT_TNC_HASH } from './utils'; -export { MIDNIGHT_TNC_HASH }; - const coinBuilderMap = { trx: Trx.WrappedBuilder, ttrx: Trx.WrappedBuilder, @@ -423,15 +423,13 @@ export async function verifyMessage( try { const messageBuilderFactory = getMessageBuilderFactory(coinName); const messageBuilder = messageBuilderFactory.getMessageBuilder(messageStandardType); - messageBuilder.setPayload(messageRaw); - const message = await messageBuilder.build(); - const isValidMessageEncoded = await message.verifyEncodedPayload(messageEncoded, metadata); - if (!isValidMessageEncoded) { + if (!messageBuilder || !messageBuilder.isMessageWhitelisted(messageRaw)) { return false; } - return validateAgainstMessageTemplates(messageRaw); + messageBuilder.setPayload(messageRaw); + const message = await messageBuilder.build(); + return await message.verifyEncodedPayload(messageEncoded, metadata); } catch (e) { - console.error(`Error verifying message for coin ${coinName}:`, e); return false; } } diff --git a/modules/account-lib/src/utils/index.ts b/modules/account-lib/src/utils/index.ts index c9dbda5019..a103ebcf77 100644 --- a/modules/account-lib/src/utils/index.ts +++ b/modules/account-lib/src/utils/index.ts @@ -18,5 +18,3 @@ export function register(coinName: string): BaseUtils { } throw new NotSupported(`${coinName} util factory not supported`); } - -export * from './messages'; diff --git a/modules/account-lib/src/utils/messages/index.ts b/modules/account-lib/src/utils/messages/index.ts deleted file mode 100644 index 6d986e1176..0000000000 --- a/modules/account-lib/src/utils/messages/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -export const MIDNIGHT_TNC_HASH = '31a6bab50a84b8439adcfb786bb2020f6807e6e8fda629b424110fc7bb1c6b8b'; - -/* - * matches a message that starts with "STAR ", followed by a number, - * then " to addr" or " to addr_test1", followed by a 50+ character alphanumeric address, - * and ends with the midnight TnC hash - */ -const MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE = `STAR \\d+ to addr(?:1|_test1)[a-z0-9]{50,} ${MIDNIGHT_TNC_HASH}`; - -/** - * @file Utility functions for validating messages against whitelisted templates. - * This is used to ensure that only specific message formats are accepted. - */ -const whitelistedMessageTemplates = [MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE]; - -/** - * Validates a message against a set of whitelisted templates. - * The templates can contain placeholders like {{variable}} which will be replaced with a wildcard in the regex. - * - * @param {string} messageRaw - The raw message to validate. - * @returns {boolean} - Returns true if the message matches any of the whitelisted templates, false otherwise. - */ -export function validateAgainstMessageTemplates(messageRaw: string): boolean { - return whitelistedMessageTemplates.some((template) => { - const regex = new RegExp(`^${template}$`, 's'); // 's' flag to match newlines - return regex.test(messageRaw); - }); -} diff --git a/modules/account-lib/test/unit/utils/messages/index.ts b/modules/account-lib/test/unit/utils/messages/index.ts index 37088efea9..d7aa11c6e5 100644 --- a/modules/account-lib/test/unit/utils/messages/index.ts +++ b/modules/account-lib/test/unit/utils/messages/index.ts @@ -1,24 +1,34 @@ import should from 'should'; -import { MIDNIGHT_TNC_HASH, validateAgainstMessageTemplates } from '../../../../src/utils'; +import { + getMidnightGlacierDropClaimMsg, + isMessageWhitelisted, + MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE, + MIDNIGHT_TNC_HASH, +} from '@bitgo/sdk-core'; describe('Message validation', () => { - describe('validateAgainstMessageTemplates', () => { + describe('isMessageWhitelisted', () => { + const whitelistedMessageTemplates: Record = { + midnightGDClaimMsgTemplate: MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE, + }; + const adaTestnetDestinationAddress = 'addr_test1vz7xs7ceu4xx9n5xn57lfe86vrwddqpp77vjwq5ptlkh49cqy3wur'; const adaMainnetDestinationAddress = 'addr1q9k6u7lhf467y2f8skr2dafldx2npsd8fymq0mslnj0t44nd4ealwnt4ug5j0pvx5m6n76v4xrq6wjfkqlhpl8y7httq2m9cmu'; + const allocationAmt = 100; it('should validate testnet message matching the Midnight glacier drop claim template', () => { - const messageRaw = `STAR 100 to ${adaTestnetDestinationAddress} ${MIDNIGHT_TNC_HASH}`; + const messageRaw = getMidnightGlacierDropClaimMsg(adaTestnetDestinationAddress, allocationAmt); - const result = validateAgainstMessageTemplates(messageRaw); + const result = isMessageWhitelisted(whitelistedMessageTemplates, messageRaw); should.equal(result, true); }); it('should validate mainnet message matching the Midnight glacier drop claim template', () => { - const messageRaw = `STAR 100 to ${adaMainnetDestinationAddress} ${MIDNIGHT_TNC_HASH}`; + const messageRaw = getMidnightGlacierDropClaimMsg(adaMainnetDestinationAddress, allocationAmt); - const result = validateAgainstMessageTemplates(messageRaw); + const result = isMessageWhitelisted(whitelistedMessageTemplates, messageRaw); should.equal(result, true); }); @@ -26,7 +36,7 @@ describe('Message validation', () => { it('should not validate message with incorrect format', () => { const messageRaw = `INCORRECT 100 to ${adaTestnetDestinationAddress} ${MIDNIGHT_TNC_HASH}`; - const result = validateAgainstMessageTemplates(messageRaw); + const result = isMessageWhitelisted(whitelistedMessageTemplates, messageRaw); should.equal(result, false); }); @@ -35,7 +45,7 @@ describe('Message validation', () => { // Missing "to addr" part const messageRaw = `STAR 100 ${MIDNIGHT_TNC_HASH}`; - const result = validateAgainstMessageTemplates(messageRaw); + const result = isMessageWhitelisted(whitelistedMessageTemplates, messageRaw); should.equal(result, false); }); @@ -46,13 +56,13 @@ describe('Message validation', () => { '5af1adf825baa496729e2eac1e895ebc77973744bce67f44276bf6006f5c21de863ed121e11828d8fc0241773191e26dc1134803a681a9a98ba0ae812553db24'; const messageRaw = `STAR 100 to ${adaTestnetDestinationAddress} ${incorrectHash}`; - const result = validateAgainstMessageTemplates(messageRaw); + const result = isMessageWhitelisted(whitelistedMessageTemplates, messageRaw); should.equal(result, false); }); it('should handle empty message', () => { - const result = validateAgainstMessageTemplates(''); + const result = isMessageWhitelisted(whitelistedMessageTemplates, ''); should.equal(result, false); }); @@ -60,7 +70,7 @@ describe('Message validation', () => { it('should not validate message with special regex characters', () => { const messageRaw = `STAR shade.with+special*chars to addr.with[special]chars ${MIDNIGHT_TNC_HASH}`; - const result = validateAgainstMessageTemplates(messageRaw); + const result = isMessageWhitelisted(whitelistedMessageTemplates, messageRaw); should.equal(result, false); }); diff --git a/modules/account-lib/test/unit/verifyMessage.ts b/modules/account-lib/test/unit/verifyMessage.ts index 6c94118d9d..4c497f0ed6 100644 --- a/modules/account-lib/test/unit/verifyMessage.ts +++ b/modules/account-lib/test/unit/verifyMessage.ts @@ -1,12 +1,12 @@ import should from 'should'; import * as accountLib from '../../src'; -import { MessageStandardType } from '@bitgo/sdk-core'; -import { MIDNIGHT_TNC_HASH } from '../../src/utils'; +import { getMidnightGlacierDropClaimMsg, MessageStandardType } from '@bitgo/sdk-core'; describe('verifyMessage', () => { const adaTestnetOriginAddress = 'addr_test1wz4h6068hs93n8j5ar88fgzz6sfnw8krng09xx0mmf36m8c7j9yap'; const adaTestnetDestinationAddress = 'addr_test1vz7xs7ceu4xx9n5xn57lfe86vrwddqpp77vjwq5ptlkh49cqy3wur'; - const testnetMessageRaw = `STAR 100 to ${adaTestnetDestinationAddress} ${MIDNIGHT_TNC_HASH}`; + const allocationAmt = 100; + const testnetMessageRaw = getMidnightGlacierDropClaimMsg(adaTestnetDestinationAddress, allocationAmt); describe('EIP191 Message', function () { const eip191MessageBuilder = accountLib diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessage.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessage.ts index 1ab37342f9..7cbd7e00a2 100644 --- a/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessage.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessage.ts @@ -5,7 +5,7 @@ import { MessageOptions, MessagePayload, MessageStandardType, -} from '../../../bitgo'; +} from './messageTypes'; import { IMessage } from './iface'; import { serializeSignatures, Signature } from '../iface'; diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilder.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilder.ts index 032ab09643..874620dfaa 100644 --- a/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilder.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilder.ts @@ -1,7 +1,8 @@ -import { BroadcastableMessage, MessageOptions, MessagePayload, MessageStandardType } from '../../../bitgo'; +import { BroadcastableMessage, MessageOptions, MessagePayload, MessageStandardType } from './messageTypes'; import { BaseCoin as CoinConfig } from '@bitgo/statics'; import { IMessage, IMessageBuilder } from './iface'; import { deserializeSignatures, Signature } from '../iface'; +import { isMessageWhitelisted } from './index'; /** * Base Message Builder @@ -12,6 +13,7 @@ export abstract class BaseMessageBuilder implements IMessageBuilder { protected type: MessageStandardType; protected signatures: Signature[] = []; protected signers: string[] = []; + protected whitelistedMessageTemplates: Record = {}; protected metadata?: Record = {}; protected digest?: string; @@ -26,6 +28,7 @@ export abstract class BaseMessageBuilder implements IMessageBuilder { ) { this.coinConfig = coinConfig; this.type = messageType; + this.whitelistedMessageTemplates = this.getWhitelistedMessageTemplates(); } /** @@ -118,6 +121,10 @@ export abstract class BaseMessageBuilder implements IMessageBuilder { return this; } + public isMessageWhitelisted(messageRaw: string): boolean { + return isMessageWhitelisted(this.whitelistedMessageTemplates, messageRaw); + } + /** * Builds a message using the previously set payload and metadata * @returns A Promise resolving to the built IMessage @@ -167,4 +174,16 @@ export abstract class BaseMessageBuilder implements IMessageBuilder { }; return this.build(); } + + protected getWhitelistedMessageTemplates(): Record { + // By default, all messages are allowed + return {}; + + // Example of adding a whitelisted message template + // Uncomment and modify as needed + // return { + // midnightGDClaimMsgTemplate: MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE, + // // Add more whitelisted templates as needed + // }; + } } diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.ts index 831fa958f6..c48be4f7d1 100644 --- a/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.ts @@ -1,6 +1,6 @@ import { BaseCoin as CoinConfig } from '@bitgo/statics'; import { IMessageBuilder, IMessageBuilderFactory } from './iface'; -import { BroadcastableMessage, MessageStandardType } from '../../../bitgo'; +import { BroadcastableMessage, MessageStandardType } from './messageTypes'; import { deserializeSignatures } from '../iface'; /** diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/iface.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/iface.ts index 43303d77b2..883dd2259c 100644 --- a/modules/sdk-core/src/account-lib/baseCoin/messages/iface.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/iface.ts @@ -1,4 +1,4 @@ -import { BroadcastableMessage, MessageMetadata, MessagePayload, MessageStandardType } from '../../../bitgo'; +import { BroadcastableMessage, MessageMetadata, MessagePayload, MessageStandardType } from './messageTypes'; import { Signature } from '../iface'; /** @@ -136,6 +136,15 @@ export interface IMessageBuilder { */ getPayload(): MessagePayload | undefined; + /** + * Checks if the message string is whitelisted. + * Some message standards like EIP-191 allow any message + * + * @param messageRaw The raw message string to check + * @return True if the message builder allows any message or the message is whitelisted, false otherwise + */ + isMessageWhitelisted(messageRaw: string): boolean; + /** * Gets the current metadata * @returns The current metadata diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/index.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/index.ts index 53aa2421c0..33999fdd34 100644 --- a/modules/sdk-core/src/account-lib/baseCoin/messages/index.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/index.ts @@ -3,3 +3,6 @@ export * from './baseMessageBuilder'; export * from './baseMessageBuilderFactory'; export * from './iface'; export * from './simple'; +export * from './messageTypes'; +export * from './midnight'; +export * from './utils'; diff --git a/modules/sdk-core/src/bitgo/utils/messageTypes.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/messageTypes.ts similarity index 93% rename from modules/sdk-core/src/bitgo/utils/messageTypes.ts rename to modules/sdk-core/src/account-lib/baseCoin/messages/messageTypes.ts index 1a322bd5fa..bc43234de9 100644 --- a/modules/sdk-core/src/bitgo/utils/messageTypes.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/messageTypes.ts @@ -1,5 +1,5 @@ import { BaseCoin as CoinConfig } from '@bitgo/statics'; -import { SerializedSignature, Signature } from '../../account-lib'; +import { SerializedSignature, Signature } from '../iface'; /** * Supported message signing standard types diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/midnight.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/midnight.ts new file mode 100644 index 0000000000..323f23b824 --- /dev/null +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/midnight.ts @@ -0,0 +1,12 @@ +export const MIDNIGHT_TNC_HASH = '31a6bab50a84b8439adcfb786bb2020f6807e6e8fda629b424110fc7bb1c6b8b'; + +/* + * matches a message that starts with "STAR ", followed by a number, + * then " to addr" or " to addr_test1", followed by a 50+ character alphanumeric address, + * and ends with the midnight TnC hash + */ +export const MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE = `STAR \\d+ to addr(?:1|_test1)[a-z0-9]{50,} ${MIDNIGHT_TNC_HASH}`; + +export function getMidnightGlacierDropClaimMsg(cardanoDestAddr: string, allocationAmt: number): string { + return `STAR ${allocationAmt} to ${cardanoDestAddr} ${MIDNIGHT_TNC_HASH}`; +} diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/simple/simpleMessage.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/simple/simpleMessage.ts index cd7f35d1d7..694d909b80 100644 --- a/modules/sdk-core/src/account-lib/baseCoin/messages/simple/simpleMessage.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/simple/simpleMessage.ts @@ -1,5 +1,5 @@ import { BaseMessage } from '../baseMessage'; -import { MessageOptions, MessageStandardType } from '../../../../bitgo'; +import { MessageOptions, MessageStandardType } from '../messageTypes'; /** * Implementation of String Message diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.ts index 237dbdb3ce..0104685f02 100644 --- a/modules/sdk-core/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.ts +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.ts @@ -1,7 +1,7 @@ import { SimpleMessage } from './simpleMessage'; import { BaseCoin as CoinConfig } from '@bitgo/statics'; import { BaseMessageBuilder } from '../baseMessageBuilder'; -import { MessageOptions, MessageStandardType } from '../../../../bitgo'; +import { MessageOptions, MessageStandardType } from '../messageTypes'; import { IMessage } from '../iface'; /** diff --git a/modules/sdk-core/src/account-lib/baseCoin/messages/utils.ts b/modules/sdk-core/src/account-lib/baseCoin/messages/utils.ts new file mode 100644 index 0000000000..3521253c47 --- /dev/null +++ b/modules/sdk-core/src/account-lib/baseCoin/messages/utils.ts @@ -0,0 +1,17 @@ +/** + * Validates a message against a set of whitelisted templates. + * The templates can contain placeholders like {{variable}} which will be replaced with a wildcard in the regex. + * + * @param whitelistedMessageTemplates - A record of whitelisted message templates. + * @param {string} messageRaw - The raw message to validate. + * @returns {boolean} - Returns true if the message matches any of the whitelisted templates, false otherwise. + */ +export function isMessageWhitelisted(whitelistedMessageTemplates: Record, messageRaw: string): boolean { + if (!whitelistedMessageTemplates || !Object.keys(whitelistedMessageTemplates).length) { + return true; + } + return Object.values(whitelistedMessageTemplates).some((template) => { + const regex = new RegExp(`^${template}$`, 's'); // 's' flag to match newlines + return regex.test(messageRaw); + }); +} diff --git a/modules/sdk-core/src/bitgo/baseCoin/iBaseCoin.ts b/modules/sdk-core/src/bitgo/baseCoin/iBaseCoin.ts index 86ed77f77a..4c8a3a85d0 100644 --- a/modules/sdk-core/src/bitgo/baseCoin/iBaseCoin.ts +++ b/modules/sdk-core/src/bitgo/baseCoin/iBaseCoin.ts @@ -12,10 +12,10 @@ import { CreateAddressFormat, CustomSigningFunction, IWallet, IWallets, Memo, Wa import { TokenEnablement } from '@bitgo/public-types'; import { Hash } from 'crypto'; -import { TransactionType } from '../../account-lib'; +import { MessageStandardType, TransactionType } from '../../account-lib'; import { IInscriptionBuilder } from '../inscriptionBuilder'; -import { MessageStandardType, MPCTx, PopulatedIntent, TokenTransferRecipientParams, TokenType } from '../utils'; -import { IWebhooks } from '../webhook/iWebhooks'; +import { MPCTx, PopulatedIntent, TokenTransferRecipientParams, TokenType } from '../utils'; +import { IWebhooks } from '../webhook'; export const multisigTypes = { onchain: 'onchain', diff --git a/modules/sdk-core/src/bitgo/utils/index.ts b/modules/sdk-core/src/bitgo/utils/index.ts index 5623fd151a..c3f471375d 100644 --- a/modules/sdk-core/src/bitgo/utils/index.ts +++ b/modules/sdk-core/src/bitgo/utils/index.ts @@ -10,6 +10,5 @@ export * from './util'; export * from './decode'; export * from './notEmpty'; export * from './wallet'; -export * from './messageTypes'; export { openpgpUtils }; diff --git a/modules/sdk-core/src/bitgo/utils/tss/baseTSSUtils.ts b/modules/sdk-core/src/bitgo/utils/tss/baseTSSUtils.ts index de7fd8bfdd..319c0df50e 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/baseTSSUtils.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/baseTSSUtils.ts @@ -44,7 +44,7 @@ import { RequestTracer } from '../util'; import { envRequiresBitgoPubGpgKeyConfig, getBitgoMpcGpgPubKey } from '../../tss/bitgoPubKeys'; import { getBitgoGpgPubKey } from '../opengpgUtils'; import assert from 'assert'; -import { MessageStandardType } from '../messageTypes'; +import { MessageStandardType } from '../../../account-lib'; /** * BaseTssUtil class which different signature schemes have to extend diff --git a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts index 31c80f5d76..ceb15ef23e 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts @@ -9,7 +9,7 @@ import { KeyShare } from './ecdsa'; import { EcdsaTypes } from '@bitgo/sdk-lib-mpc'; import { TssEcdsaStep1ReturnMessage, TssEcdsaStep2ReturnMessage, TxRequestChallengeResponse } from '../../tss/types'; import { AShare, DShare, SShare } from '../../tss/ecdsa/types'; -import { MessageStandardType } from '../messageTypes'; +import { MessageStandardType } from '../../../account-lib'; export type TxRequestVersion = 'full' | 'lite'; export interface HopParams { diff --git a/modules/sdk-core/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.ts b/modules/sdk-core/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.ts index bcd17ffca9..f90acec570 100644 --- a/modules/sdk-core/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.ts +++ b/modules/sdk-core/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.ts @@ -1,7 +1,7 @@ import { Wallet, IWallet } from '../wallet'; -import { MessageStandardType } from '../utils'; import { MidnightMessageProvider } from './midnightMessageProvider'; import { IMessageProvider, MessageInfo } from './iMessageProvider'; +import { MessageStandardType } from '../../account-lib'; type BulkAccountBasedMessageResponse = { txRequests: Record[]; diff --git a/yarn.lock b/yarn.lock index 9d6d4e85b0..3d90bbdcd4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -956,6 +956,17 @@ monocle-ts "^2.3.13" newtype-ts "^0.3.5" +"@bitgo/public-types@5.29.0": + version "5.29.0" + resolved "https://registry.npmjs.org/@bitgo/public-types/-/public-types-5.29.0.tgz#4ceae8cf837359b0cb8808f417aef64ae2f52839" + integrity sha512-E1zKNPwDmMKoJq/WC0Igg4ftdGX5DUMu49hi1vqjkdMebFliHRrPiVTSiGwDkFj7kwZbaNORNMqS/Qv4WugV0g== + dependencies: + fp-ts "^2.0.0" + io-ts "npm:@bitgo-forks/io-ts@2.1.4" + io-ts-types "^0.5.16" + monocle-ts "^2.3.13" + newtype-ts "^0.3.5" + "@bitgo/wasm-miniscript@2.0.0-beta.7": version "2.0.0-beta.7" resolved "https://registry.npmjs.org/@bitgo/wasm-miniscript/-/wasm-miniscript-2.0.0-beta.7.tgz"