@bitgo-beta/sdk-core 8.2.1-beta.99 → 8.2.1-beta.991
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2797 -0
- package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +0 -1
- package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +3 -3
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +4 -3
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +1 -0
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +41 -29
- package/dist/src/account-lib/baseCoin/enum.d.ts +17 -3
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +32 -7
- package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/errors.js +8 -2
- package/dist/src/account-lib/baseCoin/iface.d.ts +19 -35
- package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/iface.js +26 -18
- package/dist/src/account-lib/baseCoin/index.d.ts +1 -1
- package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/index.js +8 -5
- package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts +81 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessage.js +136 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +67 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.js +144 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +33 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +44 -0
- package/dist/src/account-lib/baseCoin/messages/iface.d.ts +157 -0
- package/dist/src/account-lib/baseCoin/messages/iface.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/iface.js +3 -0
- package/dist/src/account-lib/baseCoin/messages/index.d.ts +6 -0
- package/dist/src/account-lib/baseCoin/messages/index.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/index.js +22 -0
- package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts +3 -0
- package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/simple/index.js +19 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts +13 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.js +31 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts +21 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.js +28 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -2
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +38 -26
- package/dist/src/account-lib/index.js +23 -9
- package/dist/src/account-lib/mpc/curves/ed25519.d.ts +4 -18
- package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/curves/ed25519.js +6 -60
- package/dist/src/account-lib/mpc/index.d.ts +4 -4
- package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/index.js +11 -7
- package/dist/src/account-lib/mpc/shamir.d.ts +5 -37
- package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/shamir.js +6 -130
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +38 -9
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +497 -349
- package/dist/src/account-lib/mpc/tss/ecdsa/index.js +23 -9
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +73 -52
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +1 -2
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +66 -69
- package/dist/src/account-lib/mpc/tss/eddsa/index.js +23 -9
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
- package/dist/src/account-lib/mpc/tss/index.js +23 -9
- package/dist/src/account-lib/mpc/util.d.ts +7 -1
- package/dist/src/account-lib/mpc/util.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/util.js +19 -1
- package/dist/src/account-lib/staking/index.js +6 -2
- package/dist/src/account-lib/staking/utils.js +3 -3
- package/dist/src/account-lib/util/crypto.d.ts +8 -2
- package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
- package/dist/src/account-lib/util/crypto.js +69 -38
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +2 -1
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -1
- package/dist/src/account-lib/util/ed25519KeyDeriver.js +5 -3
- package/dist/src/api/bip32path.js +2 -3
- package/dist/src/api/index.js +6 -2
- package/dist/src/api/types.d.ts +8 -0
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/api/types.js +1 -1
- package/dist/src/bitgo/address-book/address-book.d.ts +61 -0
- package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -0
- package/dist/src/bitgo/address-book/address-book.js +139 -0
- package/dist/src/bitgo/address-book/index.d.ts +3 -0
- package/dist/src/bitgo/address-book/index.d.ts.map +1 -0
- package/dist/src/bitgo/address-book/index.js +19 -0
- package/dist/src/bitgo/address-book/types.d.ts +170 -0
- package/dist/src/bitgo/address-book/types.d.ts.map +1 -0
- package/dist/src/bitgo/address-book/types.js +3 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +90 -10
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +142 -16
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +113 -19
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +7 -3
- package/dist/src/bitgo/baseCoin/index.js +6 -2
- package/dist/src/bitgo/bip32util.d.ts +3 -16
- package/dist/src/bitgo/bip32util.d.ts.map +1 -1
- package/dist/src/bitgo/bip32util.js +4 -56
- package/dist/src/bitgo/bitcoin.d.ts +0 -1
- package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
- package/dist/src/bitgo/bitcoin.js +26 -13
- package/dist/src/bitgo/bitgoBase.d.ts +6 -2
- package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
- package/dist/src/bitgo/bitgoBase.js +1 -1
- package/dist/src/bitgo/coinFactory.d.ts +17 -3
- package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
- package/dist/src/bitgo/coinFactory.js +26 -3
- package/dist/src/bitgo/config.d.ts +94 -20
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/config.js +26 -15
- package/dist/src/bitgo/ecdh.d.ts +0 -1
- package/dist/src/bitgo/ecdh.d.ts.map +1 -1
- package/dist/src/bitgo/ecdh.js +26 -13
- package/dist/src/bitgo/enterprise/enterprise.d.ts +16 -14
- package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprise.js +64 -31
- package/dist/src/bitgo/enterprise/enterprises.d.ts +6 -0
- package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprises.js +48 -9
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts +6 -7
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
- package/dist/src/bitgo/enterprise/iEnterprises.d.ts +2 -0
- package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/iEnterprises.js +1 -1
- package/dist/src/bitgo/enterprise/index.js +6 -2
- package/dist/src/bitgo/environments.d.ts +60 -5
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +96 -32
- package/dist/src/bitgo/errors.d.ts +6 -0
- package/dist/src/bitgo/errors.d.ts.map +1 -1
- package/dist/src/bitgo/errors.js +14 -2
- package/dist/src/bitgo/index.d.ts +1 -1
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +26 -11
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +3 -3
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +1 -1
- package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
- package/dist/src/bitgo/internal/index.js +6 -2
- package/dist/src/bitgo/internal/internal.js +5 -6
- package/dist/src/bitgo/internal/keycard.js +6 -7
- package/dist/src/bitgo/keychain/decryptKeychain.d.ts +13 -0
- package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
- package/dist/src/bitgo/keychain/decryptKeychain.js +35 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts +63 -7
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +2 -2
- package/dist/src/bitgo/keychain/index.d.ts +1 -0
- package/dist/src/bitgo/keychain/index.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/index.js +7 -2
- package/dist/src/bitgo/keychain/keychains.d.ts +13 -3
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +128 -37
- package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +3 -3
- package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/ovcJsonCodec.js +23 -9
- package/dist/src/bitgo/legacyBitcoin.d.ts +0 -1
- package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
- package/dist/src/bitgo/legacyBitcoin.js +27 -13
- package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts +7 -0
- package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lightningWalletUtil.js +25 -0
- package/dist/src/bitgo/market/iMarkets.d.ts +2 -2
- package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -1
- package/dist/src/bitgo/market/index.js +6 -2
- package/dist/src/bitgo/market/markets.js +23 -9
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +1 -0
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/iPendingApproval.js +4 -4
- package/dist/src/bitgo/pendingApproval/index.js +6 -2
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +20 -8
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +221 -107
- package/dist/src/bitgo/pendingApproval/pendingApprovals.js +23 -9
- package/dist/src/bitgo/recovery/index.js +6 -2
- package/dist/src/bitgo/recovery/initiate.d.ts +8 -2
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
- package/dist/src/bitgo/recovery/initiate.js +7 -8
- package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +129 -0
- package/dist/src/bitgo/staking/goStakingInterfaces.d.ts.map +1 -0
- package/dist/src/bitgo/staking/goStakingInterfaces.js +3 -0
- package/dist/src/bitgo/staking/goStakingWallet.d.ts +62 -0
- package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -0
- package/dist/src/bitgo/staking/goStakingWallet.js +143 -0
- package/dist/src/bitgo/staking/iGoStakingWallet.d.ts +17 -0
- package/dist/src/bitgo/staking/iGoStakingWallet.d.ts.map +1 -0
- package/dist/src/bitgo/staking/iGoStakingWallet.js +3 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +120 -4
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
- package/dist/src/bitgo/staking/index.d.ts +3 -0
- package/dist/src/bitgo/staking/index.d.ts.map +1 -1
- package/dist/src/bitgo/staking/index.js +9 -2
- package/dist/src/bitgo/staking/stakingWallet.d.ts +13 -2
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +45 -4
- package/dist/src/bitgo/trading/iTradingAccount.d.ts +2 -32
- package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
- package/dist/src/bitgo/trading/index.d.ts +1 -15
- package/dist/src/bitgo/trading/index.d.ts.map +1 -1
- package/dist/src/bitgo/trading/index.js +7 -17
- package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
- package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
- package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
- package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
- package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
- package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/decrypt.js +23 -0
- package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
- package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
- package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
- package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/encrypt.js +58 -0
- package/dist/src/bitgo/trading/network/index.d.ts +5 -0
- package/dist/src/bitgo/trading/network/index.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/index.js +21 -0
- package/dist/src/bitgo/trading/network/network.d.ts +36 -0
- package/dist/src/bitgo/trading/network/network.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/network.js +101 -0
- package/dist/src/bitgo/trading/network/types.d.ts +277 -0
- package/dist/src/bitgo/trading/network/types.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/types.js +3 -0
- package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
- package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/utils.js +54 -0
- package/dist/src/bitgo/trading/tradingAccount.d.ts +11 -35
- package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/tradingAccount.js +9 -96
- package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +27 -0
- package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
- package/dist/src/bitgo/tss/bitgoPubKeys.js +61 -0
- package/dist/src/bitgo/tss/common.d.ts +37 -5
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +103 -17
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
- package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
- package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +162 -0
- package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
- package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +11 -8
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.js +38 -41
- package/dist/src/bitgo/tss/eddsa/index.js +23 -9
- package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
- package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/index.d.ts +3 -2
- package/dist/src/bitgo/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/tss/index.js +26 -10
- package/dist/src/bitgo/tss/types.d.ts +3 -3
- package/dist/src/bitgo/tss/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/types.js +2 -2
- package/dist/src/bitgo/types.d.ts +3 -3
- package/dist/src/bitgo/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +11 -0
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +66 -10
- package/dist/src/bitgo/utils/codecProps.js +24 -11
- package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
- package/dist/src/bitgo/utils/decode.js +30 -16
- package/dist/src/bitgo/utils/index.d.ts +3 -2
- package/dist/src/bitgo/utils/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/index.js +26 -11
- package/dist/src/bitgo/utils/messageTypes.d.ts +37 -0
- package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
- package/dist/src/bitgo/utils/messageTypes.js +14 -0
- package/dist/src/bitgo/utils/mpcUtils.d.ts +2 -3
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +34 -12
- package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
- package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
- package/dist/src/bitgo/utils/notEmpty.js +7 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts +11 -9
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/opengpgUtils.js +74 -73
- package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -1
- package/dist/src/bitgo/utils/postWithCodec.js +4 -38
- package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
- package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/promise-utils.js +2 -3
- package/dist/src/bitgo/utils/triple.d.ts +1 -1
- package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
- package/dist/src/bitgo/utils/triple.js +2 -3
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +52 -14
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +186 -44
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +205 -34
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +22 -20
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
- package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +28 -0
- package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/base.js +53 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +20 -52
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +145 -280
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +199 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +950 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +8 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +13 -0
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +4 -0
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/index.js +10 -2
- package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +15 -9
- package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +107 -0
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +5 -3
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +75 -58
- package/dist/src/bitgo/utils/tss/eddsa/index.js +23 -9
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +7 -7
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/index.js +23 -9
- package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
- package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
- package/dist/src/bitgo/utils/txRequest.js +47 -0
- package/dist/src/bitgo/utils/util.js +24 -10
- package/dist/src/bitgo/utils/wallet.d.ts +7 -0
- package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
- package/dist/src/bitgo/utils/wallet.js +48 -0
- package/dist/src/bitgo/wallet/BuildParams.d.ts +52 -8
- package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/BuildParams.js +65 -19
- package/dist/src/bitgo/wallet/iWallet.d.ts +204 -19
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts +91 -16
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +43 -3
- package/dist/src/bitgo/wallet/index.js +6 -2
- package/dist/src/bitgo/wallet/wallet.d.ts +198 -25
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +983 -309
- package/dist/src/bitgo/wallet/wallets.d.ts +96 -9
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +816 -193
- package/dist/src/bitgo/webhook/index.js +6 -2
- package/dist/src/bitgo/webhook/webhooks.js +23 -9
- package/dist/src/coins/fiataed.d.ts +32 -0
- package/dist/src/coins/fiataed.d.ts.map +1 -0
- package/dist/src/coins/fiataed.js +61 -0
- package/dist/src/coins/fiateur.d.ts +3 -2
- package/dist/src/coins/fiateur.d.ts.map +1 -1
- package/dist/src/coins/fiateur.js +5 -1
- package/dist/src/coins/fiatgbp.d.ts +3 -2
- package/dist/src/coins/fiatgbp.d.ts.map +1 -1
- package/dist/src/coins/fiatgbp.js +5 -1
- package/dist/src/coins/fiatsgd.d.ts +32 -0
- package/dist/src/coins/fiatsgd.d.ts.map +1 -0
- package/dist/src/coins/fiatsgd.js +61 -0
- package/dist/src/coins/fiatusd.d.ts +3 -2
- package/dist/src/coins/fiatusd.d.ts.map +1 -1
- package/dist/src/coins/fiatusd.js +5 -1
- package/dist/src/coins/index.d.ts +4 -0
- package/dist/src/coins/index.d.ts.map +1 -1
- package/dist/src/coins/index.js +10 -2
- package/dist/src/coins/ofc.d.ts +3 -2
- package/dist/src/coins/ofc.d.ts.map +1 -1
- package/dist/src/coins/ofc.js +6 -2
- package/dist/src/coins/ofcToken.js +2 -2
- package/dist/src/coins/susd.d.ts +3 -2
- package/dist/src/coins/susd.d.ts.map +1 -1
- package/dist/src/coins/susd.js +5 -1
- package/dist/src/coins/tfiataed.d.ts +11 -0
- package/dist/src/coins/tfiataed.d.ts.map +1 -0
- package/dist/src/coins/tfiataed.js +17 -0
- package/dist/src/coins/tfiatsgd.d.ts +11 -0
- package/dist/src/coins/tfiatsgd.d.ts.map +1 -0
- package/dist/src/coins/tfiatsgd.js +17 -0
- package/dist/src/common.js +27 -13
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +26 -11
- package/dist/src/units.js +5 -6
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts +2 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.js +218 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +2 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.js +173 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +105 -0
- package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts +46 -0
- package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts.map +1 -0
- package/dist/test/unit/account-lib/baseCoin/messages/fixtures.js +71 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +233 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts +3 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts.map +1 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.js +24 -0
- package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
- package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
- package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
- package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +45 -0
- package/dist/test/unit/bitgo/utils/messageTypes.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/messageTypes.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/messageTypes.js +64 -0
- package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
- package/dist/test/unit/bitgo/utils/postWithCodec.js +32 -38
- package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/txRequest.js +105 -0
- package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/BuildParams.js +68 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +37 -17
- package/dist/test/unit/units.js +63 -63
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +24 -21
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -77
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
- package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -209
- package/dist/src/account-lib/mpc/hdTree.d.ts +0 -31
- package/dist/src/account-lib/mpc/hdTree.d.ts.map +0 -1
- package/dist/src/account-lib/mpc/hdTree.js +0 -141
- package/dist/src/account-lib/mpc/types.d.ts +0 -5
- package/dist/src/account-lib/mpc/types.d.ts.map +0 -1
- package/dist/src/account-lib/mpc/types.js +0 -3
- package/dist/src/bitgo/lightning/iLightning.d.ts +0 -186
- package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/iLightning.js +0 -106
- package/dist/src/bitgo/lightning/index.d.ts +0 -5
- package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/index.js +0 -17
- package/dist/src/bitgo/lightning/lightning.d.ts +0 -25
- package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lightning.js +0 -111
- package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -46
- package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lightningUtils.js +0 -133
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts +0 -3
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
- package/dist/src/bitgo/trading/affirmation.d.ts +0 -35
- package/dist/src/bitgo/trading/affirmation.d.ts.map +0 -1
- package/dist/src/bitgo/trading/affirmation.js +0 -53
- package/dist/src/bitgo/trading/affirmations.d.ts +0 -23
- package/dist/src/bitgo/trading/affirmations.d.ts.map +0 -1
- package/dist/src/bitgo/trading/affirmations.js +0 -45
- package/dist/src/bitgo/trading/iAffirmation.d.ts +0 -15
- package/dist/src/bitgo/trading/iAffirmation.d.ts.map +0 -1
- package/dist/src/bitgo/trading/iAffirmation.js +0 -13
- package/dist/src/bitgo/trading/iAffirmations.d.ts +0 -10
- package/dist/src/bitgo/trading/iAffirmations.d.ts.map +0 -1
- package/dist/src/bitgo/trading/iAffirmations.js +0 -3
- package/dist/src/bitgo/trading/iSettlement.d.ts +0 -25
- package/dist/src/bitgo/trading/iSettlement.d.ts.map +0 -1
- package/dist/src/bitgo/trading/iSettlement.js +0 -17
- package/dist/src/bitgo/trading/iSettlements.d.ts +0 -19
- package/dist/src/bitgo/trading/iSettlements.d.ts.map +0 -1
- package/dist/src/bitgo/trading/iSettlements.js +0 -3
- package/dist/src/bitgo/trading/iTradingPartner.d.ts +0 -14
- package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +0 -1
- package/dist/src/bitgo/trading/iTradingPartner.js +0 -17
- package/dist/src/bitgo/trading/iTradingPartners.d.ts +0 -15
- package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +0 -1
- package/dist/src/bitgo/trading/iTradingPartners.js +0 -9
- package/dist/src/bitgo/trading/lock.d.ts +0 -16
- package/dist/src/bitgo/trading/lock.d.ts.map +0 -1
- package/dist/src/bitgo/trading/lock.js +0 -12
- package/dist/src/bitgo/trading/payload.d.ts +0 -22
- package/dist/src/bitgo/trading/payload.d.ts.map +0 -1
- package/dist/src/bitgo/trading/payload.js +0 -3
- package/dist/src/bitgo/trading/settlement.d.ts +0 -16
- package/dist/src/bitgo/trading/settlement.d.ts.map +0 -1
- package/dist/src/bitgo/trading/settlement.js +0 -21
- package/dist/src/bitgo/trading/settlements.d.ts +0 -32
- package/dist/src/bitgo/trading/settlements.d.ts.map +0 -1
- package/dist/src/bitgo/trading/settlements.js +0 -61
- package/dist/src/bitgo/trading/trade.d.ts +0 -29
- package/dist/src/bitgo/trading/trade.d.ts.map +0 -1
- package/dist/src/bitgo/trading/trade.js +0 -11
- package/dist/src/bitgo/trading/tradingPartner.d.ts +0 -26
- package/dist/src/bitgo/trading/tradingPartner.d.ts.map +0 -1
- package/dist/src/bitgo/trading/tradingPartner.js +0 -31
- package/dist/src/bitgo/trading/tradingPartners.d.ts +0 -24
- package/dist/src/bitgo/trading/tradingPartners.d.ts.map +0 -1
- package/dist/src/bitgo/trading/tradingPartners.js +0 -32
- package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
- package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
- package/dist/src/bitgo/utils/blsUtils.js +0 -237
- package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
- package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
- package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
- package/dist/src/bitgo/wallet/SendTransactionRequest.d.ts +0 -71
- package/dist/src/bitgo/wallet/SendTransactionRequest.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/SendTransactionRequest.js +0 -41
- package/dist/src/openssl/index.d.ts +0 -5
- package/dist/src/openssl/index.d.ts.map +0 -1
- package/dist/src/openssl/index.js +0 -9
- package/dist/test/unit/openssl.d.ts +0 -2
- package/dist/test/unit/openssl.d.ts.map +0 -1
- package/dist/test/unit/openssl.js +0 -39
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
7
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
8
|
+
const should_1 = __importDefault(require("should"));
|
|
9
|
+
const src_1 = require("../../../../../src");
|
|
10
|
+
const fixtures_1 = require("./fixtures");
|
|
11
|
+
describe('Base Message', () => {
|
|
12
|
+
let coinConfig;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
coinConfig = sinon_1.default.createStubInstance(statics_1.BaseCoin);
|
|
15
|
+
});
|
|
16
|
+
it('should initialize with default values', () => {
|
|
17
|
+
const message = new fixtures_1.TestMessage({
|
|
18
|
+
coinConfig,
|
|
19
|
+
payload: '',
|
|
20
|
+
});
|
|
21
|
+
should_1.default.equal(message.getType(), src_1.MessageStandardType.UNKNOWN);
|
|
22
|
+
should_1.default.equal(message.getPayload(), '');
|
|
23
|
+
should_1.default.deepEqual(message.getMetadata(), {});
|
|
24
|
+
should_1.default.deepEqual(message.getSignatures(), []);
|
|
25
|
+
should_1.default.deepEqual(message.getSigners(), []);
|
|
26
|
+
});
|
|
27
|
+
it('should initialize with provided values', () => {
|
|
28
|
+
const { payload, type, metadata, signers, signatures } = fixtures_1.messageSamples.eip191;
|
|
29
|
+
const message = new fixtures_1.TestMessage({
|
|
30
|
+
coinConfig,
|
|
31
|
+
payload,
|
|
32
|
+
type,
|
|
33
|
+
metadata,
|
|
34
|
+
signers,
|
|
35
|
+
signatures,
|
|
36
|
+
});
|
|
37
|
+
should_1.default.equal(message.getType(), type);
|
|
38
|
+
should_1.default.equal(message.getPayload(), payload);
|
|
39
|
+
should_1.default.deepEqual(message.getMetadata(), metadata);
|
|
40
|
+
should_1.default.deepEqual(message.getSignatures(), signatures);
|
|
41
|
+
should_1.default.deepEqual(message.getSigners(), signers);
|
|
42
|
+
});
|
|
43
|
+
describe('Getters and Setters', () => {
|
|
44
|
+
let message;
|
|
45
|
+
beforeEach(() => {
|
|
46
|
+
message = new fixtures_1.TestMessage({
|
|
47
|
+
coinConfig,
|
|
48
|
+
payload: 'test',
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
it('should handle adding and getting signers', () => {
|
|
52
|
+
const signer1 = '0xabc123';
|
|
53
|
+
const signer2 = '0xdef456';
|
|
54
|
+
message.addSigner(signer1);
|
|
55
|
+
should_1.default.deepEqual(message.getSigners(), [signer1]);
|
|
56
|
+
message.addSigner(signer2);
|
|
57
|
+
should_1.default.deepEqual(message.getSigners(), [signer1, signer2]);
|
|
58
|
+
// Adding a duplicate signer should not add it again
|
|
59
|
+
message.addSigner(signer1);
|
|
60
|
+
should_1.default.deepEqual(message.getSigners(), [signer1, signer2]);
|
|
61
|
+
// Set signers should replace all existing signers
|
|
62
|
+
const newSigners = ['0x111', '0x222'];
|
|
63
|
+
message.setSigners(newSigners);
|
|
64
|
+
should_1.default.deepEqual(message.getSigners(), newSigners);
|
|
65
|
+
});
|
|
66
|
+
it('should handle adding and getting signatures', () => {
|
|
67
|
+
const sig1 = {
|
|
68
|
+
publicKey: { pub: 'pub1' },
|
|
69
|
+
signature: Buffer.from('signature1'),
|
|
70
|
+
};
|
|
71
|
+
const sig2 = {
|
|
72
|
+
publicKey: { pub: 'pub2' },
|
|
73
|
+
signature: Buffer.from('signature2'),
|
|
74
|
+
};
|
|
75
|
+
message.addSignature(sig1);
|
|
76
|
+
should_1.default.deepEqual(message.getSignatures(), [sig1]);
|
|
77
|
+
message.addSignature(sig2);
|
|
78
|
+
should_1.default.deepEqual(message.getSignatures(), [sig1, sig2]);
|
|
79
|
+
// Set signatures should replace all existing signatures
|
|
80
|
+
const newSignatures = [
|
|
81
|
+
{
|
|
82
|
+
publicKey: { pub: 'pub3' },
|
|
83
|
+
signature: Buffer.from('sig3'),
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
publicKey: { pub: 'pub4' },
|
|
87
|
+
signature: Buffer.from('sig4'),
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
message.setSignatures(newSignatures);
|
|
91
|
+
should_1.default.deepEqual(message.getSignatures(), newSignatures);
|
|
92
|
+
});
|
|
93
|
+
it('should return copies of arrays to prevent mutation', () => {
|
|
94
|
+
const signers = ['addr1', 'addr2'];
|
|
95
|
+
const signatures = [
|
|
96
|
+
{
|
|
97
|
+
publicKey: { pub: 'pub1' },
|
|
98
|
+
signature: Buffer.from('sig1'),
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
publicKey: { pub: 'pub1' },
|
|
102
|
+
signature: Buffer.from('sig1'),
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
message.setSigners(signers);
|
|
106
|
+
message.setSignatures(signatures);
|
|
107
|
+
// Modifying the returned arrays should not affect the internal state
|
|
108
|
+
const returnedSigners = message.getSigners();
|
|
109
|
+
const returnedSignatures = message.getSignatures();
|
|
110
|
+
returnedSigners.push('addr3');
|
|
111
|
+
returnedSignatures.push({
|
|
112
|
+
publicKey: { pub: 'pub3' },
|
|
113
|
+
signature: Buffer.from('sig3'),
|
|
114
|
+
});
|
|
115
|
+
should_1.default.deepEqual(message.getSigners(), signers);
|
|
116
|
+
should_1.default.deepEqual(message.getSignatures(), signatures);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('getSignablePayload', () => {
|
|
120
|
+
it('should return the signablePayload if set', async () => {
|
|
121
|
+
const customSignablePayload = '0xabcdef123456';
|
|
122
|
+
const message = new fixtures_1.TestMessage({
|
|
123
|
+
coinConfig,
|
|
124
|
+
payload: 'original payload',
|
|
125
|
+
signablePayload: customSignablePayload,
|
|
126
|
+
});
|
|
127
|
+
const result = await message.getSignablePayload();
|
|
128
|
+
should_1.default.equal(result, customSignablePayload);
|
|
129
|
+
});
|
|
130
|
+
it('should return the payload as buffer if signablePayload is not set', async () => {
|
|
131
|
+
const payload = 'test payload';
|
|
132
|
+
const message = new fixtures_1.TestMessage({
|
|
133
|
+
coinConfig,
|
|
134
|
+
payload,
|
|
135
|
+
});
|
|
136
|
+
const result = await message.getSignablePayload();
|
|
137
|
+
should_1.default.deepEqual(result, Buffer.from(payload));
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
describe('toBroadcastFormat', () => {
|
|
141
|
+
it('should create a proper broadcastable format with all fields', async () => {
|
|
142
|
+
const { payload, type, metadata, signers, signatures } = fixtures_1.messageSamples.eip191;
|
|
143
|
+
const customSignablePayload = Buffer.from('custom signable payload');
|
|
144
|
+
const message = new fixtures_1.TestMessage({
|
|
145
|
+
coinConfig,
|
|
146
|
+
payload,
|
|
147
|
+
type,
|
|
148
|
+
metadata,
|
|
149
|
+
signers,
|
|
150
|
+
signatures,
|
|
151
|
+
signablePayload: customSignablePayload,
|
|
152
|
+
});
|
|
153
|
+
const broadcastFormat = await message.toBroadcastFormat();
|
|
154
|
+
should_1.default.deepEqual(broadcastFormat, {
|
|
155
|
+
type,
|
|
156
|
+
payload,
|
|
157
|
+
serializedSignatures: (0, src_1.serializeSignatures)(signatures),
|
|
158
|
+
signers,
|
|
159
|
+
metadata,
|
|
160
|
+
signablePayload: customSignablePayload.toString('base64'),
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
it('should perform a deep copy of metadata to prevent mutation', async () => {
|
|
164
|
+
const nestedMetadata = {
|
|
165
|
+
version: '1.0',
|
|
166
|
+
settings: {
|
|
167
|
+
chainId: 1,
|
|
168
|
+
gasLimit: 21000,
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
const message = new fixtures_1.TestMessage({
|
|
172
|
+
coinConfig,
|
|
173
|
+
payload: 'test',
|
|
174
|
+
metadata: nestedMetadata,
|
|
175
|
+
signers: ['addr1'],
|
|
176
|
+
signatures: [
|
|
177
|
+
{
|
|
178
|
+
publicKey: { pub: 'pub1' },
|
|
179
|
+
signature: Buffer.from('sig1'),
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
});
|
|
183
|
+
const broadcastFormat = await message.toBroadcastFormat();
|
|
184
|
+
// The metadata in the broadcast format should be a deep copy
|
|
185
|
+
should_1.default.deepEqual(broadcastFormat.metadata, nestedMetadata);
|
|
186
|
+
// But it should not be the same object reference
|
|
187
|
+
should_1.default.notEqual(broadcastFormat.metadata, nestedMetadata);
|
|
188
|
+
// Modifying the original should not affect the broadcasted version
|
|
189
|
+
nestedMetadata.settings.gasLimit = 50000;
|
|
190
|
+
should_1.default.notEqual(broadcastFormat.metadata.settings.gasLimit, 50000);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
describe('toBroadcastString', () => {
|
|
194
|
+
it('should serialize the broadcastable format to JSON string', async () => {
|
|
195
|
+
const { payload, type, metadata, signers, signatures } = fixtures_1.messageSamples.eip191;
|
|
196
|
+
const message = new fixtures_1.TestMessage({
|
|
197
|
+
coinConfig,
|
|
198
|
+
payload,
|
|
199
|
+
type,
|
|
200
|
+
metadata,
|
|
201
|
+
signers,
|
|
202
|
+
signatures,
|
|
203
|
+
});
|
|
204
|
+
const expectedBroadcastString = {
|
|
205
|
+
type,
|
|
206
|
+
payload,
|
|
207
|
+
serializedSignatures: (0, src_1.serializeSignatures)(signatures),
|
|
208
|
+
signers,
|
|
209
|
+
metadata,
|
|
210
|
+
signablePayload: 'SGVsbG8gQml0R28h',
|
|
211
|
+
};
|
|
212
|
+
const broadcastString = await message.toBroadcastString();
|
|
213
|
+
const parsed = JSON.parse(broadcastString);
|
|
214
|
+
should_1.default.deepEqual(parsed, expectedBroadcastString);
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZU1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYWNjb3VudC1saWIvYmFzZUNvaW4vbWVzc2FnZXMvYmFzZU1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpREFBK0M7QUFDL0Msa0RBQTBCO0FBQzFCLG9EQUE0QjtBQUM1Qiw0Q0FBOEU7QUFDOUUseUNBQXlEO0FBRXpELFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzVCLElBQUksVUFBZ0QsQ0FBQztJQUVyRCxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsVUFBVSxHQUFHLGVBQUssQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQVcsQ0FBQztZQUM5QixVQUFVO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDLENBQUM7UUFFSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUseUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdDQUF3QyxF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RUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcseUJBQWMsQ0FBQyxNQUFNLENBQUM7WUFFL0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQkFBVyxDQUFDO2dCQUM5QixVQUFVO2dCQUNWLE9BQU87Z0JBQ1AsSUFBSTtnQkFDSixRQUFRO2dCQUNSLE9BQU87Z0JBQ1AsVUFBVTthQUNYLENBQUMsQ0FBQztZQUNILE1BQU0sdUJBQXVCLEdBQUc7Z0JBQzlCLElBQUk7Z0JBQ0osT0FBTztnQkFDUCxvQkFBb0IsRUFBRSxJQUFBLHlCQUFtQixFQUFDLFVBQVUsQ0FBQztnQkFDckQsT0FBTztnQkFDUCxRQUFRO2dCQUNSLGVBQWUsRUFBRSxrQkFBa0I7YUFDcEMsQ0FBQztZQUVGLE1BQU0sZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUUzQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IE1lc3NhZ2VTdGFuZGFyZFR5cGUsIHNlcmlhbGl6ZVNpZ25hdHVyZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgbWVzc2FnZVNhbXBsZXMsIFRlc3RNZXNzYWdlIH0gZnJvbSAnLi9maXh0dXJlcyc7XG5cbmRlc2NyaWJlKCdCYXNlIE1lc3NhZ2UnLCAoKSA9PiB7XG4gIGxldCBjb2luQ29uZmlnOiBzaW5vbi5TaW5vblN0dWJiZWRJbnN0YW5jZTxCYXNlQ29pbj47XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgY29pbkNvbmZpZyA9IHNpbm9uLmNyZWF0ZVN0dWJJbnN0YW5jZShCYXNlQ29pbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB3aXRoIGRlZmF1bHQgdmFsdWVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgVGVzdE1lc3NhZ2Uoe1xuICAgICAgY29pbkNvbmZpZyxcbiAgICAgIHBheWxvYWQ6ICcnLFxuICAgIH0pO1xuXG4gICAgc2hvdWxkLmVxdWFsKG1lc3NhZ2UuZ2V0VHlwZSgpLCBNZXNzYWdlU3RhbmRhcmRUeXBlLlVOS05PV04pO1xuICAgIHNob3VsZC5lcXVhbChtZXNzYWdlLmdldFBheWxvYWQoKSwgJycpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwobWVzc2FnZS5nZXRNZXRhZGF0YSgpLCB7fSk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChtZXNzYWdlLmdldFNpZ25hdHVyZXMoKSwgW10pO1xuICAgIHNob3VsZC5kZWVwRXF1YWwobWVzc2FnZS5nZXRTaWduZXJzKCksIFtdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIHdpdGggcHJvdmlkZWQgdmFsdWVzJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgcGF5bG9hZCwgdHlwZSwgbWV0YWRhdGEsIHNpZ25lcnMsIHNpZ25hdHVyZXMgfSA9IG1lc3NhZ2VTYW1wbGVzLmVpcDE5MTtcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgVGVzdE1lc3NhZ2Uoe1xuICAgICAgY29pbkNvbmZpZyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB0eXBlLFxuICAgICAgbWV0YWRhdGEsXG4gICAgICBzaWduZXJzLFxuICAgICAgc2lnbmF0dXJlcyxcbiAgICB9KTtcblxuICAgIHNob3VsZC5lcXVhbChtZXNzYWdlLmdldFR5cGUoKSwgdHlwZSk7XG4gICAgc2hvdWxkLmVxdWFsKG1lc3NhZ2UuZ2V0UGF5bG9hZCgpLCBwYXlsb2FkKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2UuZ2V0TWV0YWRhdGEoKSwgbWV0YWRhdGEpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwobWVzc2FnZS5nZXRTaWduYXR1cmVzKCksIHNpZ25hdHVyZXMpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwobWVzc2FnZS5nZXRTaWduZXJzKCksIHNpZ25lcnMpO1xuICB9KTtcblxuICBkZXNjcmliZSgnR2V0dGVycyBhbmQgU2V0dGVycycsICgpID0+IHtcbiAgICBsZXQgbWVzc2FnZTogVGVzdE1lc3NhZ2U7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIG1lc3NhZ2UgPSBuZXcgVGVzdE1lc3NhZ2Uoe1xuICAgICAgICBjb2luQ29uZmlnLFxuICAgICAgICBwYXlsb2FkOiAndGVzdCcsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGFkZGluZyBhbmQgZ2V0dGluZyBzaWduZXJzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2lnbmVyMSA9ICcweGFiYzEyMyc7XG4gICAgICBjb25zdCBzaWduZXIyID0gJzB4ZGVmNDU2JztcblxuICAgICAgbWVzc2FnZS5hZGRTaWduZXIoc2lnbmVyMSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2UuZ2V0U2lnbmVycygpLCBbc2lnbmVyMV0pO1xuXG4gICAgICBtZXNzYWdlLmFkZFNpZ25lcihzaWduZXIyKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobWVzc2FnZS5nZXRTaWduZXJzKCksIFtzaWduZXIxLCBzaWduZXIyXSk7XG5cbiAgICAgIC8vIEFkZGluZyBhIGR1cGxpY2F0ZSBzaWduZXIgc2hvdWxkIG5vdCBhZGQgaXQgYWdhaW5cbiAgICAgIG1lc3NhZ2UuYWRkU2lnbmVyKHNpZ25lcjEpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChtZXNzYWdlLmdldFNpZ25lcnMoKSwgW3NpZ25lcjEsIHNpZ25lcjJdKTtcblxuICAgICAgLy8gU2V0IHNpZ25lcnMgc2hvdWxkIHJlcGxhY2UgYWxsIGV4aXN0aW5nIHNpZ25lcnNcbiAgICAgIGNvbnN0IG5ld1NpZ25lcnMgPSBbJzB4MTExJywgJzB4MjIyJ107XG4gICAgICBtZXNzYWdlLnNldFNpZ25lcnMobmV3U2lnbmVycyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2UuZ2V0U2lnbmVycygpLCBuZXdTaWduZXJzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGFkZGluZyBhbmQgZ2V0dGluZyBzaWduYXR1cmVzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2lnMSA9IHtcbiAgICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YjEnIH0sXG4gICAgICAgIHNpZ25hdHVyZTogQnVmZmVyLmZyb20oJ3NpZ25hdHVyZTEnKSxcbiAgICAgIH07XG4gICAgICBjb25zdCBzaWcyID0ge1xuICAgICAgICBwdWJsaWNLZXk6IHsgcHViOiAncHViMicgfSxcbiAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnbmF0dXJlMicpLFxuICAgICAgfTtcblxuICAgICAgbWVzc2FnZS5hZGRTaWduYXR1cmUoc2lnMSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2UuZ2V0U2lnbmF0dXJlcygpLCBbc2lnMV0pO1xuXG4gICAgICBtZXNzYWdlLmFkZFNpZ25hdHVyZShzaWcyKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobWVzc2FnZS5nZXRTaWduYXR1cmVzKCksIFtzaWcxLCBzaWcyXSk7XG5cbiAgICAgIC8vIFNldCBzaWduYXR1cmVzIHNob3VsZCByZXBsYWNlIGFsbCBleGlzdGluZyBzaWduYXR1cmVzXG4gICAgICBjb25zdCBuZXdTaWduYXR1cmVzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YjMnIH0sXG4gICAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnMycpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YjQnIH0sXG4gICAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnNCcpLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIG1lc3NhZ2Uuc2V0U2lnbmF0dXJlcyhuZXdTaWduYXR1cmVzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobWVzc2FnZS5nZXRTaWduYXR1cmVzKCksIG5ld1NpZ25hdHVyZXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gY29waWVzIG9mIGFycmF5cyB0byBwcmV2ZW50IG11dGF0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2lnbmVycyA9IFsnYWRkcjEnLCAnYWRkcjInXTtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZXMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHsgcHViOiAncHViMScgfSxcbiAgICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdzaWcxJyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJsaWNLZXk6IHsgcHViOiAncHViMScgfSxcbiAgICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdzaWcxJyksXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBtZXNzYWdlLnNldFNpZ25lcnMoc2lnbmVycyk7XG4gICAgICBtZXNzYWdlLnNldFNpZ25hdHVyZXMoc2lnbmF0dXJlcyk7XG5cbiAgICAgIC8vIE1vZGlmeWluZyB0aGUgcmV0dXJuZWQgYXJyYXlzIHNob3VsZCBub3QgYWZmZWN0IHRoZSBpbnRlcm5hbCBzdGF0ZVxuICAgICAgY29uc3QgcmV0dXJuZWRTaWduZXJzID0gbWVzc2FnZS5nZXRTaWduZXJzKCk7XG4gICAgICBjb25zdCByZXR1cm5lZFNpZ25hdHVyZXMgPSBtZXNzYWdlLmdldFNpZ25hdHVyZXMoKTtcblxuICAgICAgcmV0dXJuZWRTaWduZXJzLnB1c2goJ2FkZHIzJyk7XG4gICAgICByZXR1cm5lZFNpZ25hdHVyZXMucHVzaCh7XG4gICAgICAgIHB1YmxpY0tleTogeyBwdWI6ICdwdWIzJyB9LFxuICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdzaWczJyksXG4gICAgICB9KTtcblxuICAgICAgc2hvdWxkLmRlZXBFcXVhbChtZXNzYWdlLmdldFNpZ25lcnMoKSwgc2lnbmVycyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2UuZ2V0U2lnbmF0dXJlcygpLCBzaWduYXR1cmVzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFNpZ25hYmxlUGF5bG9hZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgc2lnbmFibGVQYXlsb2FkIGlmIHNldCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbVNpZ25hYmxlUGF5bG9hZCA9ICcweGFiY2RlZjEyMzQ1Nic7XG4gICAgICBjb25zdCBtZXNzYWdlID0gbmV3IFRlc3RNZXNzYWdlKHtcbiAgICAgICAgY29pbkNvbmZpZyxcbiAgICAgICAgcGF5bG9hZDogJ29yaWdpbmFsIHBheWxvYWQnLFxuICAgICAgICBzaWduYWJsZVBheWxvYWQ6IGN1c3RvbVNpZ25hYmxlUGF5bG9hZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtZXNzYWdlLmdldFNpZ25hYmxlUGF5bG9hZCgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlc3VsdCwgY3VzdG9tU2lnbmFibGVQYXlsb2FkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBwYXlsb2FkIGFzIGJ1ZmZlciBpZiBzaWduYWJsZVBheWxvYWQgaXMgbm90IHNldCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSAndGVzdCBwYXlsb2FkJztcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgVGVzdE1lc3NhZ2Uoe1xuICAgICAgICBjb2luQ29uZmlnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1lc3NhZ2UuZ2V0U2lnbmFibGVQYXlsb2FkKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgQnVmZmVyLmZyb20ocGF5bG9hZCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9Ccm9hZGNhc3RGb3JtYXQnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBwcm9wZXIgYnJvYWRjYXN0YWJsZSBmb3JtYXQgd2l0aCBhbGwgZmllbGRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgeyBwYXlsb2FkLCB0eXBlLCBtZXRhZGF0YSwgc2lnbmVycywgc2lnbmF0dXJlcyB9ID0gbWVzc2FnZVNhbXBsZXMuZWlwMTkxO1xuICAgICAgY29uc3QgY3VzdG9tU2lnbmFibGVQYXlsb2FkID0gQnVmZmVyLmZyb20oJ2N1c3RvbSBzaWduYWJsZSBwYXlsb2FkJyk7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgVGVzdE1lc3NhZ2Uoe1xuICAgICAgICBjb2luQ29uZmlnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICB0eXBlLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgc2lnbmVycyxcbiAgICAgICAgc2lnbmF0dXJlcyxcbiAgICAgICAgc2lnbmFibGVQYXlsb2FkOiBjdXN0b21TaWduYWJsZVBheWxvYWQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYnJvYWRjYXN0Rm9ybWF0ID0gYXdhaXQgbWVzc2FnZS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGJyb2FkY2FzdEZvcm1hdCwge1xuICAgICAgICB0eXBlLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICBzZXJpYWxpemVkU2lnbmF0dXJlczogc2VyaWFsaXplU2lnbmF0dXJlcyhzaWduYXR1cmVzKSxcbiAgICAgICAgc2lnbmVycyxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIHNpZ25hYmxlUGF5bG9hZDogY3VzdG9tU2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwZXJmb3JtIGEgZGVlcCBjb3B5IG9mIG1ldGFkYXRhIHRvIHByZXZlbnQgbXV0YXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBuZXN0ZWRNZXRhZGF0YSA9IHtcbiAgICAgICAgdmVyc2lvbjogJzEuMCcsXG4gICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgY2hhaW5JZDogMSxcbiAgICAgICAgICBnYXNMaW1pdDogMjEwMDAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtZXNzYWdlID0gbmV3IFRlc3RNZXNzYWdlKHtcbiAgICAgICAgY29pbkNvbmZpZyxcbiAgICAgICAgcGF5bG9hZDogJ3Rlc3QnLFxuICAgICAgICBtZXRhZGF0YTogbmVzdGVkTWV0YWRhdGEsXG4gICAgICAgIHNpZ25lcnM6IFsnYWRkcjEnXSxcbiAgICAgICAgc2lnbmF0dXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB1YmxpY0tleTogeyBwdWI6ICdwdWIxJyB9LFxuICAgICAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnMScpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYnJvYWRjYXN0Rm9ybWF0ID0gYXdhaXQgbWVzc2FnZS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAvLyBUaGUgbWV0YWRhdGEgaW4gdGhlIGJyb2FkY2FzdCBmb3JtYXQgc2hvdWxkIGJlIGEgZGVlcCBjb3B5XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGJyb2FkY2FzdEZvcm1hdC5tZXRhZGF0YSwgbmVzdGVkTWV0YWRhdGEpO1xuXG4gICAgICAvLyBCdXQgaXQgc2hvdWxkIG5vdCBiZSB0aGUgc2FtZSBvYmplY3QgcmVmZXJlbmNlXG4gICAgICBzaG91bGQubm90RXF1YWwoYnJvYWRjYXN0Rm9ybWF0Lm1ldGFkYXRhLCBuZXN0ZWRNZXRhZGF0YSk7XG5cbiAgICAgIC8vIE1vZGlmeWluZyB0aGUgb3JpZ2luYWwgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGJyb2FkY2FzdGVkIHZlcnNpb25cbiAgICAgIG5lc3RlZE1ldGFkYXRhLnNldHRpbmdzLmdhc0xpbWl0ID0gNTAwMDA7XG4gICAgICBzaG91bGQubm90RXF1YWwoKGJyb2FkY2FzdEZvcm1hdC5tZXRhZGF0YSBhcyBhbnkpLnNldHRpbmdzLmdhc0xpbWl0LCA1MDAwMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0b0Jyb2FkY2FzdFN0cmluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNlcmlhbGl6ZSB0aGUgYnJvYWRjYXN0YWJsZSBmb3JtYXQgdG8gSlNPTiBzdHJpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB7IHBheWxvYWQsIHR5cGUsIG1ldGFkYXRhLCBzaWduZXJzLCBzaWduYXR1cmVzIH0gPSBtZXNzYWdlU2FtcGxlcy5laXAxOTE7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgVGVzdE1lc3NhZ2Uoe1xuICAgICAgICBjb2luQ29uZmlnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICB0eXBlLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgc2lnbmVycyxcbiAgICAgICAgc2lnbmF0dXJlcyxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZXhwZWN0ZWRCcm9hZGNhc3RTdHJpbmcgPSB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIHNlcmlhbGl6ZWRTaWduYXR1cmVzOiBzZXJpYWxpemVTaWduYXR1cmVzKHNpZ25hdHVyZXMpLFxuICAgICAgICBzaWduZXJzLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgc2lnbmFibGVQYXlsb2FkOiAnU0dWc2JHOGdRbWwwUjI4aCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBicm9hZGNhc3RTdHJpbmcgPSBhd2FpdCBtZXNzYWdlLnRvQnJvYWRjYXN0U3RyaW5nKCk7XG4gICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGJyb2FkY2FzdFN0cmluZyk7XG5cbiAgICAgIHNob3VsZC5kZWVwRXF1YWwocGFyc2VkLCBleHBlY3RlZEJyb2FkY2FzdFN0cmluZyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseMessageBuilder.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/account-lib/baseCoin/messages/baseMessageBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
7
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
8
|
+
const should_1 = __importDefault(require("should"));
|
|
9
|
+
const src_1 = require("../../../../../src");
|
|
10
|
+
const fixtures_1 = require("./fixtures");
|
|
11
|
+
describe('Base Message Builder', () => {
|
|
12
|
+
let builder;
|
|
13
|
+
let mockCoinConfig;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
mockCoinConfig = sinon_1.default.createStubInstance(statics_1.BaseCoin);
|
|
16
|
+
builder = new fixtures_1.TestMessageBuilder(mockCoinConfig, src_1.MessageStandardType.EIP191);
|
|
17
|
+
});
|
|
18
|
+
it('should initialize with default values', () => {
|
|
19
|
+
should_1.default.equal(builder.getPayload(), '');
|
|
20
|
+
should_1.default.equal(builder.getType(), src_1.MessageStandardType.EIP191);
|
|
21
|
+
should_1.default.deepEqual(builder.getSignatures(), []);
|
|
22
|
+
should_1.default.deepEqual(builder.getSigners(), []);
|
|
23
|
+
should_1.default.deepEqual(builder.getMetadata(), {});
|
|
24
|
+
should_1.default.equal(builder.getDigest(), undefined);
|
|
25
|
+
});
|
|
26
|
+
it('should set and get payload', () => {
|
|
27
|
+
const payload = 'test payload';
|
|
28
|
+
builder.setPayload(payload);
|
|
29
|
+
should_1.default.equal(builder.getPayload(), payload);
|
|
30
|
+
});
|
|
31
|
+
it('should set and get metadata', () => {
|
|
32
|
+
const metadata = { key: 'value', num: 123 };
|
|
33
|
+
builder.setMetadata(metadata);
|
|
34
|
+
should_1.default.deepEqual(builder.getMetadata(), metadata);
|
|
35
|
+
});
|
|
36
|
+
it('should set and get type', () => {
|
|
37
|
+
const type = src_1.MessageStandardType.UNKNOWN;
|
|
38
|
+
builder.setType(type);
|
|
39
|
+
should_1.default.equal(builder.getType(), type);
|
|
40
|
+
});
|
|
41
|
+
it('should set and get signatures', () => {
|
|
42
|
+
const signatures = [
|
|
43
|
+
{
|
|
44
|
+
publicKey: { pub: 'pubKey1' },
|
|
45
|
+
signature: Buffer.from('sig1'),
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
publicKey: { pub: 'pubKey2' },
|
|
49
|
+
signature: Buffer.from('sig2'),
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
publicKey: { pub: 'pubKey3' },
|
|
53
|
+
signature: Buffer.from('sig3'),
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
builder.setSignatures(signatures);
|
|
57
|
+
should_1.default.deepEqual(builder.getSignatures(), signatures);
|
|
58
|
+
});
|
|
59
|
+
it('should set and get signers', () => {
|
|
60
|
+
const signers = ['address1', 'address2', 'address3'];
|
|
61
|
+
builder.setSigners(signers);
|
|
62
|
+
should_1.default.deepEqual(builder.getSigners(), signers);
|
|
63
|
+
});
|
|
64
|
+
it('should set and get digest', () => {
|
|
65
|
+
const digest = '0x1234abcd';
|
|
66
|
+
builder.setDigest(digest);
|
|
67
|
+
should_1.default.equal(builder.getDigest(), digest);
|
|
68
|
+
});
|
|
69
|
+
it('should build a message with the correct properties', async () => {
|
|
70
|
+
const payload = 'test message';
|
|
71
|
+
const metadata = { foo: 'bar', encoding: 'utf8' };
|
|
72
|
+
const signatures = [
|
|
73
|
+
{
|
|
74
|
+
publicKey: { pub: 'pubKey1' },
|
|
75
|
+
signature: Buffer.from('sig1'),
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
publicKey: { pub: 'pubKey2' },
|
|
79
|
+
signature: Buffer.from('sig2'),
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
const signers = ['addr1', 'addr2'];
|
|
83
|
+
builder
|
|
84
|
+
.setType(src_1.MessageStandardType.EIP191)
|
|
85
|
+
.setPayload(payload)
|
|
86
|
+
.setMetadata(metadata)
|
|
87
|
+
.setSignatures(signatures)
|
|
88
|
+
.setSigners(signers);
|
|
89
|
+
const message = await builder.build();
|
|
90
|
+
should_1.default.equal(message.getType(), src_1.MessageStandardType.EIP191);
|
|
91
|
+
should_1.default.equal(message.getPayload(), payload);
|
|
92
|
+
should_1.default.deepEqual(message.getMetadata(), metadata);
|
|
93
|
+
should_1.default.deepEqual(message.getSignatures(), signatures);
|
|
94
|
+
should_1.default.deepEqual(message.getSigners(), signers);
|
|
95
|
+
const signablePayload = await message.getSignablePayload();
|
|
96
|
+
should_1.default.deepEqual(signablePayload, Buffer.from(payload));
|
|
97
|
+
});
|
|
98
|
+
it('should correctly handle toBroadcastFormat', async () => {
|
|
99
|
+
const payload = 'hello world';
|
|
100
|
+
const metadata = { version: '1.0', encoding: 'utf8' };
|
|
101
|
+
const signatures = [
|
|
102
|
+
{
|
|
103
|
+
publicKey: { pub: 'pubKey1' },
|
|
104
|
+
signature: Buffer.from('sig1'),
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
const signers = ['addr1'];
|
|
108
|
+
builder
|
|
109
|
+
.setType(src_1.MessageStandardType.EIP191)
|
|
110
|
+
.setPayload(payload)
|
|
111
|
+
.setMetadata(metadata)
|
|
112
|
+
.setSignatures(signatures)
|
|
113
|
+
.setSigners(signers);
|
|
114
|
+
const message = await builder.build();
|
|
115
|
+
const broadcastFormat = await message.toBroadcastFormat();
|
|
116
|
+
const expectedBroadcastFormat = {
|
|
117
|
+
type: src_1.MessageStandardType.EIP191,
|
|
118
|
+
payload: payload,
|
|
119
|
+
serializedSignatures: (0, src_1.serializeSignatures)(signatures),
|
|
120
|
+
signers: signers,
|
|
121
|
+
metadata: metadata,
|
|
122
|
+
signablePayload: 'aGVsbG8gd29ybGQ=',
|
|
123
|
+
};
|
|
124
|
+
should_1.default.deepEqual(broadcastFormat, expectedBroadcastFormat);
|
|
125
|
+
});
|
|
126
|
+
it('should correctly handle fromBroadcastFormat', async () => {
|
|
127
|
+
const broadcastMessage = {
|
|
128
|
+
type: src_1.MessageStandardType.EIP191,
|
|
129
|
+
payload: 'broadcast test',
|
|
130
|
+
signatures: [
|
|
131
|
+
{
|
|
132
|
+
publicKey: { pub: 'pubKey1' },
|
|
133
|
+
signature: Buffer.from('sig1'),
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
publicKey: { pub: 'pubKey2' },
|
|
137
|
+
signature: Buffer.from('sig2'),
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
signers: ['addr1', 'addr2'],
|
|
141
|
+
metadata: { chainId: 1, encoding: 'utf8' },
|
|
142
|
+
};
|
|
143
|
+
const message = await builder.fromBroadcastFormat(broadcastMessage);
|
|
144
|
+
should_1.default.equal(message.getType(), broadcastMessage.type);
|
|
145
|
+
should_1.default.equal(message.getPayload(), broadcastMessage.payload);
|
|
146
|
+
should_1.default.deepEqual(message.getSignatures(), broadcastMessage.signatures);
|
|
147
|
+
should_1.default.deepEqual(message.getSigners(), broadcastMessage.signers);
|
|
148
|
+
should_1.default.deepEqual(message.getMetadata(), broadcastMessage.metadata);
|
|
149
|
+
});
|
|
150
|
+
it('should correctly handle toBroadcastString', async () => {
|
|
151
|
+
const payload = 'serialize me';
|
|
152
|
+
const signatures = [
|
|
153
|
+
{
|
|
154
|
+
publicKey: { pub: 'pubKey1' },
|
|
155
|
+
signature: Buffer.from('sig1'),
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
const signers = ['addr1'];
|
|
159
|
+
builder.setType(src_1.MessageStandardType.EIP191).setPayload(payload).setSignatures(signatures).setSigners(signers);
|
|
160
|
+
const message = await builder.build();
|
|
161
|
+
const broadcastString = await message.toBroadcastString();
|
|
162
|
+
const expectedJson = JSON.stringify({
|
|
163
|
+
type: src_1.MessageStandardType.EIP191,
|
|
164
|
+
payload: payload,
|
|
165
|
+
serializedSignatures: (0, src_1.serializeSignatures)(signatures),
|
|
166
|
+
signers: signers,
|
|
167
|
+
metadata: { encoding: 'utf8' },
|
|
168
|
+
signablePayload: 'c2VyaWFsaXplIG1l',
|
|
169
|
+
});
|
|
170
|
+
should_1.default.equal(broadcastString, expectedJson);
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZU1lc3NhZ2VCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2FjY291bnQtbGliL2Jhc2VDb2luL21lc3NhZ2VzL2Jhc2VNZXNzYWdlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlEQUErQztBQUMvQyxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLDRDQUFvRztBQUNwRyx5Q0FBZ0Q7QUFFaEQsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxJQUFJLE9BQTJCLENBQUM7SUFDaEMsSUFBSSxjQUFvRCxDQUFDO0lBRXpELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxjQUFjLEdBQUcsZUFBSyxDQUFDLGtCQUFrQixDQUFDLGtCQUFRLENBQUMsQ0FBQztRQUNwRCxPQUFPLEdBQUcsSUFBSSw2QkFBa0IsQ0FBQyxjQUFxQyxFQUFFLHlCQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLHlCQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLGdCQUFNLENBQUMs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ICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBCcm9hZGNhc3RhYmxlTWVzc2FnZSwgTWVzc2FnZVN0YW5kYXJkVHlwZSwgc2VyaWFsaXplU2lnbmF0dXJlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBUZXN0TWVzc2FnZUJ1aWxkZXIgfSBmcm9tICcuL2ZpeHR1cmVzJztcblxuZGVzY3JpYmUoJ0Jhc2UgTWVzc2FnZSBCdWlsZGVyJywgKCkgPT4ge1xuICBsZXQgYnVpbGRlcjogVGVzdE1lc3NhZ2VCdWlsZGVyO1xuICBsZXQgbW9ja0NvaW5Db25maWc6IHNpbm9uLlNpbm9uU3R1YmJlZEluc3RhbmNlPEJhc2VDb2luPjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBtb2NrQ29pbkNvbmZpZyA9IHNpbm9uLmNyZWF0ZVN0dWJJbnN0YW5jZShCYXNlQ29pbik7XG4gICAgYnVpbGRlciA9IG5ldyBUZXN0TWVzc2FnZUJ1aWxkZXIobW9ja0NvaW5Db25maWcgYXMgdW5rbm93biBhcyBCYXNlQ29pbiwgTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluaXRpYWxpemUgd2l0aCBkZWZhdWx0IHZhbHVlcycsICgpID0+IHtcbiAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRQYXlsb2FkKCksICcnKTtcbiAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRUeXBlKCksIE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGJ1aWxkZXIuZ2V0U2lnbmF0dXJlcygpLCBbXSk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFNpZ25lcnMoKSwgW10pO1xuICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRNZXRhZGF0YSgpLCB7fSk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0RGlnZXN0KCksIHVuZGVmaW5lZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2V0IGFuZCBnZXQgcGF5bG9hZCcsICgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gJ3Rlc3QgcGF5bG9hZCc7XG4gICAgYnVpbGRlci5zZXRQYXlsb2FkKHBheWxvYWQpO1xuICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldFBheWxvYWQoKSwgcGF5bG9hZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2V0IGFuZCBnZXQgbWV0YWRhdGEnLCAoKSA9PiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB7IGtleTogJ3ZhbHVlJywgbnVtOiAxMjMgfTtcbiAgICBidWlsZGVyLnNldE1ldGFkYXRhKG1ldGFkYXRhKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGJ1aWxkZXIuZ2V0TWV0YWRhdGEoKSwgbWV0YWRhdGEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHNldCBhbmQgZ2V0IHR5cGUnLCAoKSA9PiB7XG4gICAgY29uc3QgdHlwZSA9IE1lc3NhZ2VTdGFuZGFyZFR5cGUuVU5LTk9XTjtcbiAgICBidWlsZGVyLnNldFR5cGUodHlwZSk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0VHlwZSgpLCB0eXBlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgYW5kIGdldCBzaWduYXR1cmVzJywgKCkgPT4ge1xuICAgIGNvbnN0IHNpZ25hdHVyZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHB1YmxpY0tleTogeyBwdWI6ICdwdWJLZXkxJyB9LFxuICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdzaWcxJyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwdWJsaWNLZXk6IHsgcHViOiAncHViS2V5MicgfSxcbiAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnMicpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YktleTMnIH0sXG4gICAgICAgIHNpZ25hdHVyZTogQnVmZmVyLmZyb20oJ3NpZzMnKSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBidWlsZGVyLnNldFNpZ25hdHVyZXMoc2lnbmF0dXJlcyk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFNpZ25hdHVyZXMoKSwgc2lnbmF0dXJlcyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2V0IGFuZCBnZXQgc2lnbmVycycsICgpID0+IHtcbiAgICBjb25zdCBzaWduZXJzID0gWydhZGRyZXNzMScsICdhZGRyZXNzMicsICdhZGRyZXNzMyddO1xuICAgIGJ1aWxkZXIuc2V0U2lnbmVycyhzaWduZXJzKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKGJ1aWxkZXIuZ2V0U2lnbmVycygpLCBzaWduZXJzKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgYW5kIGdldCBkaWdlc3QnLCAoKSA9PiB7XG4gICAgY29uc3QgZGlnZXN0ID0gJzB4MTIzNGFiY2QnO1xuICAgIGJ1aWxkZXIuc2V0RGlnZXN0KGRpZ2VzdCk7XG4gICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0RGlnZXN0KCksIGRpZ2VzdCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgYSBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydGllcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gJ3Rlc3QgbWVzc2FnZSc7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB7IGZvbzogJ2JhcicsIGVuY29kaW5nOiAndXRmOCcgfTtcbiAgICBjb25zdCBzaWduYXR1cmVzID0gW1xuICAgICAge1xuICAgICAgICBwdWJsaWNLZXk6IHsgcHViOiAncHViS2V5MScgfSxcbiAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnMScpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YktleTInIH0sXG4gICAgICAgIHNpZ25hdHVyZTogQnVmZmVyLmZyb20oJ3NpZzInKSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBjb25zdCBzaWduZXJzID0gWydhZGRyMScsICdhZGRyMiddO1xuXG4gICAgYnVpbGRlclxuICAgICAgLnNldFR5cGUoTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpXG4gICAgICAuc2V0UGF5bG9hZChwYXlsb2FkKVxuICAgICAgLnNldE1ldGFkYXRhKG1ldGFkYXRhKVxuICAgICAgLnNldFNpZ25hdHVyZXMoc2lnbmF0dXJlcylcbiAgICAgIC5zZXRTaWduZXJzKHNpZ25lcnMpO1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChtZXNzYWdlLmdldFR5cGUoKSwgTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICAgIHNob3VsZC5lcXVhbChtZXNzYWdlLmdldFBheWxvYWQoKSwgcGF5bG9hZCk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChtZXNzYWdlLmdldE1ldGFkYXRhKCksIG1ldGFkYXRhKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2UuZ2V0U2lnbmF0dXJlcygpLCBzaWduYXR1cmVzKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2UuZ2V0U2lnbmVycygpLCBzaWduZXJzKTtcblxuICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IGF3YWl0IG1lc3NhZ2UuZ2V0U2lnbmFibGVQYXlsb2FkKCk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChzaWduYWJsZVBheWxvYWQsIEJ1ZmZlci5mcm9tKHBheWxvYWQpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgaGFuZGxlIHRvQnJvYWRjYXN0Rm9ybWF0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSAnaGVsbG8gd29ybGQnO1xuICAgIGNvbnN0IG1ldGFkYXRhID0geyB2ZXJzaW9uOiAnMS4wJywgZW5jb2Rpbmc6ICd1dGY4JyB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHB1YmxpY0tleTogeyBwdWI6ICdwdWJLZXkxJyB9LFxuICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdzaWcxJyksXG4gICAgICB9LFxuICAgIF07XG4gICAgY29uc3Qgc2lnbmVycyA9IFsnYWRkcjEnXTtcblxuICAgIGJ1aWxkZXJcbiAgICAgIC5zZXRUeXBlKE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxKVxuICAgICAgLnNldFBheWxvYWQocGF5bG9hZClcbiAgICAgIC5zZXRNZXRhZGF0YShtZXRhZGF0YSlcbiAgICAgIC5zZXRTaWduYXR1cmVzKHNpZ25hdHVyZXMpXG4gICAgICAuc2V0U2lnbmVycyhzaWduZXJzKTtcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgYnJvYWRjYXN0Rm9ybWF0ID0gYXdhaXQgbWVzc2FnZS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIGNvbnN0IGV4cGVjdGVkQnJvYWRjYXN0Rm9ybWF0OiBCcm9hZGNhc3RhYmxlTWVzc2FnZSA9IHtcbiAgICAgIHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxLFxuICAgICAgcGF5bG9hZDogcGF5bG9hZCxcbiAgICAgIHNlcmlhbGl6ZWRTaWduYXR1cmVzOiBzZXJpYWxpemVTaWduYXR1cmVzKHNpZ25hdHVyZXMpLFxuICAgICAgc2lnbmVyczogc2lnbmVycyxcbiAgICAgIG1ldGFkYXRhOiBtZXRhZGF0YSxcbiAgICAgIHNpZ25hYmxlUGF5bG9hZDogJ2FHVnNiRzhnZDI5eWJHUT0nLFxuICAgIH07XG5cbiAgICBzaG91bGQuZGVlcEVxdWFsKGJyb2FkY2FzdEZvcm1hdCwgZXhwZWN0ZWRCcm9hZGNhc3RGb3JtYXQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvcnJlY3RseSBoYW5kbGUgZnJvbUJyb2FkY2FzdEZvcm1hdCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBicm9hZGNhc3RNZXNzYWdlID0ge1xuICAgICAgdHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEsXG4gICAgICBwYXlsb2FkOiAnYnJvYWRjYXN0IHRlc3QnLFxuICAgICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YktleTEnIH0sXG4gICAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnMScpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YktleTInIH0sXG4gICAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnMicpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHNpZ25lcnM6IFsnYWRkcjEnLCAnYWRkcjInXSxcbiAgICAgIG1ldGFkYXRhOiB7IGNoYWluSWQ6IDEsIGVuY29kaW5nOiAndXRmOCcgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGJ1aWxkZXIuZnJvbUJyb2FkY2FzdEZvcm1hdChicm9hZGNhc3RNZXNzYWdlKTtcblxuICAgIHNob3VsZC5lcXVhbChtZXNzYWdlLmdldFR5cGUoKSwgYnJvYWRjYXN0TWVzc2FnZS50eXBlKTtcbiAgICBzaG91bGQuZXF1YWwobWVzc2FnZS5nZXRQYXlsb2FkKCksIGJyb2FkY2FzdE1lc3NhZ2UucGF5bG9hZCk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChtZXNzYWdlLmdldFNpZ25hdHVyZXMoKSwgYnJvYWRjYXN0TWVzc2FnZS5zaWduYXR1cmVzKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2UuZ2V0U2lnbmVycygpLCBicm9hZGNhc3RNZXNzYWdlLnNpZ25lcnMpO1xuICAgIHNob3VsZC5kZWVwRXF1YWwobWVzc2FnZS5nZXRNZXRhZGF0YSgpLCBicm9hZGNhc3RNZXNzYWdlLm1ldGFkYXRhKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgaGFuZGxlIHRvQnJvYWRjYXN0U3RyaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSAnc2VyaWFsaXplIG1lJztcbiAgICBjb25zdCBzaWduYXR1cmVzID0gW1xuICAgICAge1xuICAgICAgICBwdWJsaWNLZXk6IHsgcHViOiAncHViS2V5MScgfSxcbiAgICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbSgnc2lnMScpLFxuICAgICAgfSxcbiAgICBdO1xuICAgIGNvbnN0IHNpZ25lcnMgPSBbJ2FkZHIxJ107XG5cbiAgICBidWlsZGVyLnNldFR5cGUoTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpLnNldFBheWxvYWQocGF5bG9hZCkuc2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzKS5zZXRTaWduZXJzKHNpZ25lcnMpO1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBicm9hZGNhc3RTdHJpbmcgPSBhd2FpdCBtZXNzYWdlLnRvQnJvYWRjYXN0U3RyaW5nKCk7XG5cbiAgICBjb25zdCBleHBlY3RlZEpzb24gPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB0eXBlOiBNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSxcbiAgICAgIHBheWxvYWQ6IHBheWxvYWQsXG4gICAgICBzZXJpYWxpemVkU2lnbmF0dXJlczogc2VyaWFsaXplU2lnbmF0dXJlcyhzaWduYXR1cmVzKSxcbiAgICAgIHNpZ25lcnM6IHNpZ25lcnMsXG4gICAgICBtZXRhZGF0YTogeyBlbmNvZGluZzogJ3V0ZjgnIH0sXG4gICAgICBzaWduYWJsZVBheWxvYWQ6ICdjMlZ5YVdGc2FYcGxJRzFsJyxcbiAgICB9KTtcblxuICAgIHNob3VsZC5lcXVhbChicm9hZGNhc3RTdHJpbmcsIGV4cGVjdGVkSnNvbik7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseMessageBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
7
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
8
|
+
const should_1 = __importDefault(require("should"));
|
|
9
|
+
const src_1 = require("../../../../../src");
|
|
10
|
+
const fixtures_1 = require("./fixtures");
|
|
11
|
+
describe('Base Message Builder Factory', () => {
|
|
12
|
+
let factory;
|
|
13
|
+
let mockCoinConfig;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
mockCoinConfig = sinon_1.default.createStubInstance(statics_1.BaseCoin);
|
|
16
|
+
factory = new fixtures_1.TestMessageBuilderFactory(mockCoinConfig);
|
|
17
|
+
});
|
|
18
|
+
describe('getMessageBuilder', () => {
|
|
19
|
+
it('should create a message builder for EIP191 type', () => {
|
|
20
|
+
const builder = factory.getMessageBuilder(src_1.MessageStandardType.EIP191);
|
|
21
|
+
should_1.default.exist(builder);
|
|
22
|
+
should_1.default.equal(builder.getType(), src_1.MessageStandardType.EIP191);
|
|
23
|
+
});
|
|
24
|
+
it('should create a message builder for UNKNOWN type', () => {
|
|
25
|
+
const builder = factory.getMessageBuilder(src_1.MessageStandardType.UNKNOWN);
|
|
26
|
+
should_1.default.exist(builder);
|
|
27
|
+
should_1.default.equal(builder.getType(), src_1.MessageStandardType.UNKNOWN);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe('fromBroadcastFormat', () => {
|
|
31
|
+
it('should create a builder from a broadcast message', () => {
|
|
32
|
+
const broadcastMessage = {
|
|
33
|
+
type: src_1.MessageStandardType.EIP191,
|
|
34
|
+
payload: 'hello world',
|
|
35
|
+
serializedSignatures: [
|
|
36
|
+
{
|
|
37
|
+
publicKey: 'pub1',
|
|
38
|
+
signature: 'sig1',
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
signers: ['addr1'],
|
|
42
|
+
metadata: { version: '1.0' },
|
|
43
|
+
};
|
|
44
|
+
const builder = factory.fromBroadcastFormat(broadcastMessage);
|
|
45
|
+
should_1.default.exist(builder);
|
|
46
|
+
// Since the TestMessageBuilder always returns the same type that was passed to constructor
|
|
47
|
+
should_1.default.equal(builder.getType(), src_1.MessageStandardType.EIP191);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('fromBroadcastString', () => {
|
|
51
|
+
it('should parse a broadcast message string and create the appropriate builder', () => {
|
|
52
|
+
const broadcastMessage = {
|
|
53
|
+
type: src_1.MessageStandardType.EIP191,
|
|
54
|
+
payload: 'test message',
|
|
55
|
+
serializedSignatures: [
|
|
56
|
+
{
|
|
57
|
+
publicKey: 'pub1',
|
|
58
|
+
signature: 'sig1',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
publicKey: 'pub2',
|
|
62
|
+
signature: 'sig2',
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
signers: ['addr1', 'addr2'],
|
|
66
|
+
metadata: { chainId: 1 },
|
|
67
|
+
};
|
|
68
|
+
const broadcastString = JSON.stringify(broadcastMessage);
|
|
69
|
+
const builder = factory.fromBroadcastString(broadcastString);
|
|
70
|
+
should_1.default.exist(builder);
|
|
71
|
+
// Since the TestMessageBuilder always returns the same type that was passed to constructor
|
|
72
|
+
should_1.default.equal(builder.getType(), src_1.MessageStandardType.EIP191);
|
|
73
|
+
});
|
|
74
|
+
it('should handle broadcast messages with different types', () => {
|
|
75
|
+
const broadcastMessage = {
|
|
76
|
+
type: src_1.MessageStandardType.UNKNOWN,
|
|
77
|
+
payload: 'unknown message',
|
|
78
|
+
serializedSignatures: [
|
|
79
|
+
{
|
|
80
|
+
publicKey: 'pub1',
|
|
81
|
+
signature: 'sig1',
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
signers: ['addr1'],
|
|
85
|
+
};
|
|
86
|
+
const broadcastString = JSON.stringify(broadcastMessage);
|
|
87
|
+
const builder = factory.fromBroadcastString(broadcastString);
|
|
88
|
+
should_1.default.exist(builder);
|
|
89
|
+
should_1.default.equal(builder.getType(), src_1.MessageStandardType.UNKNOWN);
|
|
90
|
+
});
|
|
91
|
+
it('should handle broadcast messages without optional fields', () => {
|
|
92
|
+
const broadcastMessage = {
|
|
93
|
+
type: src_1.MessageStandardType.EIP191,
|
|
94
|
+
payload: 'minimal message',
|
|
95
|
+
signatures: [],
|
|
96
|
+
signers: [],
|
|
97
|
+
};
|
|
98
|
+
const broadcastString = JSON.stringify(broadcastMessage);
|
|
99
|
+
const builder = factory.fromBroadcastString(broadcastString);
|
|
100
|
+
should_1.default.exist(builder);
|
|
101
|
+
should_1.default.equal(builder.getType(), src_1.MessageStandardType.EIP191);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZU1lc3NhZ2VCdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9hY2NvdW50LWxpYi9iYXNlQ29pbi9tZXNzYWdlcy9iYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQStDO0FBQy9DLGtEQUEwQjtBQUMxQixvREFBNEI7QUFDNUIsNENBQStFO0FBQy9FLHlDQUF1RDtBQUV2RCxRQUFRLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO0lBQzVDLElBQUksT0FBa0MsQ0FBQztJQUN2QyxJQUFJLGNBQW9ELENBQUM7SUFFekQsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLGNBQWMsR0FBRyxlQUFLLENBQUMsa0JBQWtCLENBQUMsa0JBQVEsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxJQUFJLG9DQUF5QixDQUFDLGNBQXFDLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEdBQUcsRUFBRTtZQUN6RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMseUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLHlCQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMseUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLHlCQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxHQUFHLEVBQUU7WUFDMUQsTUFBTSxnQkFBZ0IsR0FBeUI7Z0JBQzdDLElBQUksRUFBRSx5QkFBbUIsQ0FBQyxNQUFNO2dCQUNoQyxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsb0JBQW9CLEVBQUU7b0JBQ3BCO3dCQUNFLFNBQVMsRUFBRSxNQUFNO3dCQUNqQixTQUFTLEVBQUUsTUFBTTtxQkFDbEI7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNsQixRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO2FBQzdCLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QiwyRkFBMkY7WUFDM0YsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLHlCQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLEVBQUUsQ0FBQyw0RUFBNEUsRUFBRSxHQUFHLEVBQUU7WUFDcEYsTUFBTSxnQkFBZ0IsR0FBeUI7Z0JBQzdDLElBQUksRUFBRSx5QkFBbUIsQ0FBQyxNQUFNO2dCQUNoQyxPQUFPLEVBQUUsY0FBYztnQkFDdkIsb0JBQW9CLEVBQUU7b0JBQ3BCO3dCQUNFLFNBQVMsRUFBRSxNQUFNO3dCQUNqQixTQUFTLEVBQUUsTUFBTTtxQkFDbEI7b0JBQ0Q7d0JBQ0UsU0FBUyxFQUFFLE1BQU07d0JBQ2pCLFNBQVMsRUFBRSxNQUFNO3FCQUNsQjtpQkFDRjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO2dCQUMzQixRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO2FBQ3pCLENBQUM7WUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdELGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLDJGQUEyRjtZQUMzRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUseUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1lBQy9ELE1BQU0sZ0JBQWdCLEdBQXlCO2dCQUM3QyxJQUFJLEVBQUUseUJBQW1CLENBQUMsT0FBTztnQkFDakMsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsb0JBQW9CLEVBQUU7b0JBQ3BCO3dCQUNFLFNBQVMsRUFBRSxNQUFNO3dCQUNqQixTQUFTLEVBQUUsTUFBTTtxQkFDbEI7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ25CLENBQUM7WUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTdELGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSx5QkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7WUFDbEUsTUFBTSxnQkFBZ0IsR0FBRztnQkFDdkIsSUFBSSxFQUFFLHlCQUFtQixDQUFDLE1BQU07Z0JBQ2hDLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFVBQVUsRUFBRSxFQUFFO2dCQUNkLE9BQU8sRUFBRSxFQUFFO2FBQ1osQ0FBQztZQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN6RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFN0QsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLHlCQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgQnJvYWRjYXN0YWJsZU1lc3NhZ2UsIE1lc3NhZ2VTdGFuZGFyZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgVGVzdE1lc3NhZ2VCdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vZml4dHVyZXMnO1xuXG5kZXNjcmliZSgnQmFzZSBNZXNzYWdlIEJ1aWxkZXIgRmFjdG9yeScsICgpID0+IHtcbiAgbGV0IGZhY3Rvcnk6IFRlc3RNZXNzYWdlQnVpbGRlckZhY3Rvcnk7XG4gIGxldCBtb2NrQ29pbkNvbmZpZzogc2lub24uU2lub25TdHViYmVkSW5zdGFuY2U8QmFzZUNvaW4+O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG1vY2tDb2luQ29uZmlnID0gc2lub24uY3JlYXRlU3R1Ykluc3RhbmNlKEJhc2VDb2luKTtcbiAgICBmYWN0b3J5ID0gbmV3IFRlc3RNZXNzYWdlQnVpbGRlckZhY3RvcnkobW9ja0NvaW5Db25maWcgYXMgdW5rbm93biBhcyBCYXNlQ29pbik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRNZXNzYWdlQnVpbGRlcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIG1lc3NhZ2UgYnVpbGRlciBmb3IgRUlQMTkxIHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRNZXNzYWdlQnVpbGRlcihNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSk7XG4gICAgICBzaG91bGQuZXhpc3QoYnVpbGRlcik7XG4gICAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRUeXBlKCksIE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgbWVzc2FnZSBidWlsZGVyIGZvciBVTktOT1dOIHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRNZXNzYWdlQnVpbGRlcihNZXNzYWdlU3RhbmRhcmRUeXBlLlVOS05PV04pO1xuICAgICAgc2hvdWxkLmV4aXN0KGJ1aWxkZXIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0VHlwZSgpLCBNZXNzYWdlU3RhbmRhcmRUeXBlLlVOS05PV04pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJvbUJyb2FkY2FzdEZvcm1hdCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIGJ1aWxkZXIgZnJvbSBhIGJyb2FkY2FzdCBtZXNzYWdlJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnJvYWRjYXN0TWVzc2FnZTogQnJvYWRjYXN0YWJsZU1lc3NhZ2UgPSB7XG4gICAgICAgIHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxLFxuICAgICAgICBwYXlsb2FkOiAnaGVsbG8gd29ybGQnLFxuICAgICAgICBzZXJpYWxpemVkU2lnbmF0dXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB1YmxpY0tleTogJ3B1YjEnLFxuICAgICAgICAgICAgc2lnbmF0dXJlOiAnc2lnMScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc2lnbmVyczogWydhZGRyMSddLFxuICAgICAgICBtZXRhZGF0YTogeyB2ZXJzaW9uOiAnMS4wJyB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZnJvbUJyb2FkY2FzdEZvcm1hdChicm9hZGNhc3RNZXNzYWdlKTtcbiAgICAgIHNob3VsZC5leGlzdChidWlsZGVyKTtcbiAgICAgIC8vIFNpbmNlIHRoZSBUZXN0TWVzc2FnZUJ1aWxkZXIgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgdHlwZSB0aGF0IHdhcyBwYXNzZWQgdG8gY29uc3RydWN0b3JcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldFR5cGUoKSwgTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJvbUJyb2FkY2FzdFN0cmluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIGEgYnJvYWRjYXN0IG1lc3NhZ2Ugc3RyaW5nIGFuZCBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIGJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBicm9hZGNhc3RNZXNzYWdlOiBCcm9hZGNhc3RhYmxlTWVzc2FnZSA9IHtcbiAgICAgICAgdHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEsXG4gICAgICAgIHBheWxvYWQ6ICd0ZXN0IG1lc3NhZ2UnLFxuICAgICAgICBzZXJpYWxpemVkU2lnbmF0dXJlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB1YmxpY0tleTogJ3B1YjEnLFxuICAgICAgICAgICAgc2lnbmF0dXJlOiAnc2lnMScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdWJsaWNLZXk6ICdwdWIyJyxcbiAgICAgICAgICAgIHNpZ25hdHVyZTogJ3NpZzInLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHNpZ25lcnM6IFsnYWRkcjEnLCAnYWRkcjInXSxcbiAgICAgICAgbWV0YWRhdGE6IHsgY2hhaW5JZDogMSB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYnJvYWRjYXN0U3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoYnJvYWRjYXN0TWVzc2FnZSk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tQnJvYWRjYXN0U3RyaW5nKGJyb2FkY2FzdFN0cmluZyk7XG5cbiAgICAgIHNob3VsZC5leGlzdChidWlsZGVyKTtcbiAgICAgIC8vIFNpbmNlIHRoZSBUZXN0TWVzc2FnZUJ1aWxkZXIgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgdHlwZSB0aGF0IHdhcyBwYXNzZWQgdG8gY29uc3RydWN0b3JcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldFR5cGUoKSwgTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgYnJvYWRjYXN0IG1lc3NhZ2VzIHdpdGggZGlmZmVyZW50IHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnJvYWRjYXN0TWVzc2FnZTogQnJvYWRjYXN0YWJsZU1lc3NhZ2UgPSB7XG4gICAgICAgIHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUuVU5LTk9XTixcbiAgICAgICAgcGF5bG9hZDogJ3Vua25vd24gbWVzc2FnZScsXG4gICAgICAgIHNlcmlhbGl6ZWRTaWduYXR1cmVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHVibGljS2V5OiAncHViMScsXG4gICAgICAgICAgICBzaWduYXR1cmU6ICdzaWcxJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzaWduZXJzOiBbJ2FkZHIxJ10sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBicm9hZGNhc3RTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShicm9hZGNhc3RNZXNzYWdlKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb21Ccm9hZGNhc3RTdHJpbmcoYnJvYWRjYXN0U3RyaW5nKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGJ1aWxkZXIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0VHlwZSgpLCBNZXNzYWdlU3RhbmRhcmRUeXBlLlVOS05PV04pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgYnJvYWRjYXN0IG1lc3NhZ2VzIHdpdGhvdXQgb3B0aW9uYWwgZmllbGRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnJvYWRjYXN0TWVzc2FnZSA9IHtcbiAgICAgICAgdHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEsXG4gICAgICAgIHBheWxvYWQ6ICdtaW5pbWFsIG1lc3NhZ2UnLFxuICAgICAgICBzaWduYXR1cmVzOiBbXSxcbiAgICAgICAgc2lnbmVyczogW10sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBicm9hZGNhc3RTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShicm9hZGNhc3RNZXNzYWdlKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb21Ccm9hZGNhc3RTdHJpbmcoYnJvYWRjYXN0U3RyaW5nKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGJ1aWxkZXIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0VHlwZSgpLCBNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BaseMessage, BaseMessageBuilder, BaseMessageBuilderFactory, IMessage, IMessageBuilder, MessageOptions, MessageStandardType } from '../../../../../src';
|
|
2
|
+
import { BaseCoin } from '@bitgo-beta/statics';
|
|
3
|
+
export declare class TestMessageBuilderFactory extends BaseMessageBuilderFactory {
|
|
4
|
+
constructor(coinConfig: Readonly<BaseCoin>);
|
|
5
|
+
getMessageBuilder(type: MessageStandardType): IMessageBuilder;
|
|
6
|
+
}
|
|
7
|
+
export declare class TestMessageBuilder extends BaseMessageBuilder {
|
|
8
|
+
constructor(coinConfig: Readonly<BaseCoin>, type?: MessageStandardType);
|
|
9
|
+
buildMessage(options: MessageOptions): Promise<IMessage>;
|
|
10
|
+
fromBroadcastFormat(broadcastMessage: any): Promise<IMessage>;
|
|
11
|
+
}
|
|
12
|
+
export declare class TestMessage extends BaseMessage {
|
|
13
|
+
constructor(options: MessageOptions);
|
|
14
|
+
getSignablePayload(): Promise<string | Buffer>;
|
|
15
|
+
}
|
|
16
|
+
export declare const messageSamples: {
|
|
17
|
+
eip191: {
|
|
18
|
+
payload: string;
|
|
19
|
+
type: MessageStandardType;
|
|
20
|
+
metadata: {
|
|
21
|
+
chainId: number;
|
|
22
|
+
};
|
|
23
|
+
signers: string[];
|
|
24
|
+
signatures: {
|
|
25
|
+
publicKey: {
|
|
26
|
+
pub: string;
|
|
27
|
+
};
|
|
28
|
+
signature: Buffer<ArrayBuffer>;
|
|
29
|
+
}[];
|
|
30
|
+
};
|
|
31
|
+
unknown: {
|
|
32
|
+
payload: string;
|
|
33
|
+
type: MessageStandardType;
|
|
34
|
+
metadata: {
|
|
35
|
+
version: string;
|
|
36
|
+
};
|
|
37
|
+
signers: string[];
|
|
38
|
+
signatures: {
|
|
39
|
+
publicKey: {
|
|
40
|
+
pub: string;
|
|
41
|
+
};
|
|
42
|
+
signature: Buffer<ArrayBuffer>;
|
|
43
|
+
}[];
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=fixtures.d.ts.map
|