@bitgo/account-lib 2.20.1 → 2.21.0-hotfix.1
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 +79 -0
- package/README.md +5 -7
- package/dist/browser/bitgo-account-lib.js +2 -0
- package/dist/browser/bitgo-account-lib.js.LICENSE.txt +337 -0
- package/dist/resources/hbar/protobuf/BasicTypes.proto +424 -0
- package/dist/resources/hbar/protobuf/CryptoCreate.proto +47 -0
- package/dist/resources/hbar/protobuf/CryptoTransfer.proto +33 -0
- package/dist/resources/hbar/protobuf/Duration.proto +28 -0
- package/dist/resources/hbar/protobuf/Timestamp.proto +34 -0
- package/dist/resources/hbar/protobuf/Transaction.proto +35 -0
- package/dist/resources/hbar/protobuf/TransactionBody.proto +24 -0
- package/dist/resources/hbar/protobuf/TransactionContents.proto +33 -0
- package/dist/resources/hbar/protobuf/hedera.d.ts +4612 -0
- package/dist/resources/hbar/protobuf/hedera.js +12192 -0
- package/dist/resources/trx/protobuf/Contract.proto +256 -0
- package/dist/resources/trx/protobuf/Discover.proto +44 -0
- package/dist/resources/trx/protobuf/tron.d.ts +11024 -0
- package/dist/resources/trx/protobuf/tron.js +31510 -0
- package/dist/resources/trx/protobuf/tron.proto +677 -0
- package/dist/src/coin/algo/assetTransferBuilder.d.ts +42 -0
- package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/assetTransferBuilder.js +105 -0
- package/dist/src/coin/algo/errors.d.ts +11 -0
- package/dist/src/coin/algo/errors.d.ts.map +1 -0
- package/dist/src/coin/algo/errors.js +27 -0
- package/dist/src/coin/algo/ifaces.d.ts +46 -0
- package/dist/src/coin/algo/ifaces.d.ts.map +1 -0
- package/dist/src/coin/algo/ifaces.js +3 -0
- package/dist/src/coin/algo/index.d.ts +13 -0
- package/dist/src/coin/algo/index.d.ts.map +1 -0
- package/dist/src/coin/algo/index.js +47 -0
- package/dist/src/coin/algo/keyPair.d.ts +25 -0
- package/dist/src/coin/algo/keyPair.d.ts.map +1 -0
- package/dist/src/coin/algo/keyPair.js +77 -0
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +104 -0
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/keyRegistrationBuilder.js +239 -0
- package/dist/src/coin/algo/seedEncoding.d.ts +25 -0
- package/dist/src/coin/algo/seedEncoding.d.ts.map +1 -0
- package/dist/src/coin/algo/seedEncoding.js +97 -0
- package/dist/src/coin/algo/transaction.d.ts +75 -0
- package/dist/src/coin/algo/transaction.d.ts.map +1 -0
- package/dist/src/coin/algo/transaction.js +251 -0
- package/dist/src/coin/algo/transactionBuilder.d.ts +204 -0
- package/dist/src/coin/algo/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/transactionBuilder.js +373 -0
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts +16 -0
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/algo/transactionBuilderFactory.js +52 -0
- package/dist/src/coin/algo/transferBuilder.d.ts +40 -0
- package/dist/src/coin/algo/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/transferBuilder.js +89 -0
- package/dist/src/coin/algo/txnSchema.d.ts +7 -0
- package/dist/src/coin/algo/txnSchema.d.ts.map +1 -0
- package/dist/src/coin/algo/txnSchema.js +68 -0
- package/dist/src/coin/algo/utils.d.ts +249 -0
- package/dist/src/coin/algo/utils.d.ts.map +1 -0
- package/dist/src/coin/algo/utils.js +539 -0
- package/dist/src/coin/avaxc/index.d.ts +8 -0
- package/dist/src/coin/avaxc/index.d.ts.map +1 -0
- package/dist/src/coin/avaxc/index.js +35 -0
- package/dist/src/coin/avaxc/keyPair.d.ts +26 -0
- package/dist/src/coin/avaxc/keyPair.d.ts.map +1 -0
- package/dist/src/coin/avaxc/keyPair.js +83 -0
- package/dist/src/coin/avaxc/resources.d.ts +12 -0
- package/dist/src/coin/avaxc/resources.d.ts.map +1 -0
- package/dist/src/coin/avaxc/resources.js +27 -0
- package/dist/src/coin/avaxc/transactionBuilder.d.ts +17 -0
- package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/avaxc/transactionBuilder.js +45 -0
- package/dist/src/coin/avaxc/transferBuilder.d.ts +17 -0
- package/dist/src/coin/avaxc/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/avaxc/transferBuilder.js +25 -0
- package/dist/src/coin/avaxc/utils.d.ts +39 -0
- package/dist/src/coin/avaxc/utils.d.ts.map +1 -0
- package/dist/src/coin/avaxc/utils.js +70 -0
- package/dist/src/coin/avaxc/walletUtil.d.ts +22 -0
- package/dist/src/coin/avaxc/walletUtil.d.ts.map +1 -0
- package/dist/src/coin/avaxc/walletUtil.js +62 -0
- package/dist/src/coin/baseCoin/baseKeyPair.d.ts +27 -0
- package/dist/src/coin/baseCoin/baseKeyPair.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/baseKeyPair.js +3 -0
- package/dist/src/coin/baseCoin/baseTransaction.d.ts +71 -0
- package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/baseTransaction.js +94 -0
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts +128 -0
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/baseTransactionBuilder.js +179 -0
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts +30 -0
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.js +20 -0
- package/dist/src/coin/baseCoin/baseUtils.d.ts +45 -0
- package/dist/src/coin/baseCoin/baseUtils.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/baseUtils.js +3 -0
- package/dist/src/coin/baseCoin/blsKeyPair.d.ts +75 -0
- package/dist/src/coin/baseCoin/blsKeyPair.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/blsKeyPair.js +232 -0
- package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts +50 -0
- package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/ed25519KeyPair.js +141 -0
- package/dist/src/coin/baseCoin/enum.d.ts +43 -0
- package/dist/src/coin/baseCoin/enum.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/enum.js +70 -0
- package/dist/src/coin/baseCoin/errors.d.ts +65 -0
- package/dist/src/coin/baseCoin/errors.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/errors.js +156 -0
- package/dist/src/coin/baseCoin/iface.d.ts +162 -0
- package/dist/src/coin/baseCoin/iface.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/iface.js +38 -0
- package/dist/src/coin/baseCoin/index.d.ts +12 -0
- package/dist/src/coin/baseCoin/index.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/index.js +41 -0
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts +55 -0
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -0
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.js +124 -0
- package/dist/src/coin/celo/index.d.ts +8 -0
- package/dist/src/coin/celo/index.d.ts.map +1 -0
- package/dist/src/coin/celo/index.js +35 -0
- package/dist/src/coin/celo/resources.d.ts +10 -0
- package/dist/src/coin/celo/resources.d.ts.map +1 -0
- package/dist/src/coin/celo/resources.js +26 -0
- package/dist/src/coin/celo/stakingBuilder.d.ts +91 -0
- package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -0
- package/dist/src/coin/celo/stakingBuilder.js +277 -0
- package/dist/src/coin/celo/stakingCall.d.ts +7 -0
- package/dist/src/coin/celo/stakingCall.d.ts.map +1 -0
- package/dist/src/coin/celo/stakingCall.js +13 -0
- package/dist/src/coin/celo/stakingUtils.d.ts +15 -0
- package/dist/src/coin/celo/stakingUtils.d.ts.map +1 -0
- package/dist/src/coin/celo/stakingUtils.js +98 -0
- package/dist/src/coin/celo/transaction.d.ts +10 -0
- package/dist/src/coin/celo/transaction.d.ts.map +1 -0
- package/dist/src/coin/celo/transaction.js +37 -0
- package/dist/src/coin/celo/transactionBuilder.d.ts +86 -0
- package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/celo/transactionBuilder.js +228 -0
- package/dist/src/coin/celo/transferBuilder.d.ts +19 -0
- package/dist/src/coin/celo/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/celo/transferBuilder.js +27 -0
- package/dist/src/coin/celo/types.d.ts +52 -0
- package/dist/src/coin/celo/types.d.ts.map +1 -0
- package/dist/src/coin/celo/types.js +222 -0
- package/dist/src/coin/celo/utils.d.ts +18 -0
- package/dist/src/coin/celo/utils.d.ts.map +1 -0
- package/dist/src/coin/celo/utils.js +99 -0
- package/dist/src/coin/cspr/constants.d.ts +19 -0
- package/dist/src/coin/cspr/constants.d.ts.map +1 -0
- package/dist/src/coin/cspr/constants.js +28 -0
- package/dist/src/coin/cspr/delegateBuilder.d.ts +49 -0
- package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/delegateBuilder.js +111 -0
- package/dist/src/coin/cspr/ifaces.d.ts +69 -0
- package/dist/src/coin/cspr/ifaces.d.ts.map +1 -0
- package/dist/src/coin/cspr/ifaces.js +3 -0
- package/dist/src/coin/cspr/index.d.ts +6 -0
- package/dist/src/coin/cspr/index.d.ts.map +1 -0
- package/dist/src/coin/cspr/index.js +31 -0
- package/dist/src/coin/cspr/keyPair.d.ts +18 -0
- package/dist/src/coin/cspr/keyPair.d.ts.map +1 -0
- package/dist/src/coin/cspr/keyPair.js +75 -0
- package/dist/src/coin/cspr/transaction.d.ts +55 -0
- package/dist/src/coin/cspr/transaction.d.ts.map +1 -0
- package/dist/src/coin/cspr/transaction.js +227 -0
- package/dist/src/coin/cspr/transactionBuilder.d.ts +124 -0
- package/dist/src/coin/cspr/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/transactionBuilder.js +312 -0
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +46 -0
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/cspr/transactionBuilderFactory.js +98 -0
- package/dist/src/coin/cspr/transferBuilder.d.ts +39 -0
- package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/transferBuilder.js +106 -0
- package/dist/src/coin/cspr/undelegateBuilder.d.ts +49 -0
- package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/undelegateBuilder.js +111 -0
- package/dist/src/coin/cspr/utils.d.ts +188 -0
- package/dist/src/coin/cspr/utils.d.ts.map +1 -0
- package/dist/src/coin/cspr/utils.js +477 -0
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +27 -0
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/cspr/walletInitializationBuilder.js +95 -0
- package/dist/src/coin/dot/addressInitializationBuilder.d.ts +79 -0
- package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/addressInitializationBuilder.js +182 -0
- package/dist/src/coin/dot/batchTransactionBuilder.d.ts +47 -0
- package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/batchTransactionBuilder.js +122 -0
- package/dist/src/coin/dot/claimBuilder.d.ts +58 -0
- package/dist/src/coin/dot/claimBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/claimBuilder.js +119 -0
- package/dist/src/coin/dot/errors.d.ts +8 -0
- package/dist/src/coin/dot/errors.d.ts.map +1 -0
- package/dist/src/coin/dot/errors.js +19 -0
- package/dist/src/coin/dot/iface.d.ts +194 -0
- package/dist/src/coin/dot/iface.d.ts.map +1 -0
- package/dist/src/coin/dot/iface.js +39 -0
- package/dist/src/coin/dot/index.d.ts +17 -0
- package/dist/src/coin/dot/index.d.ts.map +1 -0
- package/dist/src/coin/dot/index.js +53 -0
- package/dist/src/coin/dot/keyPair.d.ts +31 -0
- package/dist/src/coin/dot/keyPair.d.ts.map +1 -0
- package/dist/src/coin/dot/keyPair.js +70 -0
- package/dist/src/coin/dot/singletonRegistry.d.ts +7 -0
- package/dist/src/coin/dot/singletonRegistry.d.ts.map +1 -0
- package/dist/src/coin/dot/singletonRegistry.js +20 -0
- package/dist/src/coin/dot/stakingBuilder.d.ts +58 -0
- package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/stakingBuilder.js +139 -0
- package/dist/src/coin/dot/transaction.d.ts +65 -0
- package/dist/src/coin/dot/transaction.d.ts.map +1 -0
- package/dist/src/coin/dot/transaction.js +396 -0
- package/dist/src/coin/dot/transactionBuilder.d.ts +131 -0
- package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/transactionBuilder.js +332 -0
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts +26 -0
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/dot/transactionBuilderFactory.js +93 -0
- package/dist/src/coin/dot/transferBuilder.d.ts +71 -0
- package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/transferBuilder.js +177 -0
- package/dist/src/coin/dot/txnSchema.d.ts +14 -0
- package/dist/src/coin/dot/txnSchema.d.ts.map +1 -0
- package/dist/src/coin/dot/txnSchema.js +104 -0
- package/dist/src/coin/dot/unnominateBuilder.d.ts +24 -0
- package/dist/src/coin/dot/unnominateBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/unnominateBuilder.js +50 -0
- package/dist/src/coin/dot/unstakeBuilder.d.ts +38 -0
- package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/unstakeBuilder.js +89 -0
- package/dist/src/coin/dot/utils.d.ts +145 -0
- package/dist/src/coin/dot/utils.d.ts.map +1 -0
- package/dist/src/coin/dot/utils.js +283 -0
- package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +38 -0
- package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/withdrawUnstakedBuilder.js +90 -0
- package/dist/src/coin/etc/index.d.ts +8 -0
- package/dist/src/coin/etc/index.d.ts.map +1 -0
- package/dist/src/coin/etc/index.js +35 -0
- package/dist/src/coin/etc/resources.d.ts +10 -0
- package/dist/src/coin/etc/resources.d.ts.map +1 -0
- package/dist/src/coin/etc/resources.js +26 -0
- package/dist/src/coin/etc/transactionBuilder.d.ts +17 -0
- package/dist/src/coin/etc/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/etc/transactionBuilder.js +45 -0
- package/dist/src/coin/etc/transferBuilder.d.ts +19 -0
- package/dist/src/coin/etc/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/etc/transferBuilder.js +27 -0
- package/dist/src/coin/etc/utils.d.ts +18 -0
- package/dist/src/coin/etc/utils.d.ts.map +1 -0
- package/dist/src/coin/etc/utils.js +42 -0
- package/dist/src/coin/eth/contractCall.d.ts +8 -0
- package/dist/src/coin/eth/contractCall.d.ts.map +1 -0
- package/dist/src/coin/eth/contractCall.js +17 -0
- package/dist/src/coin/eth/iface.d.ts +122 -0
- package/dist/src/coin/eth/iface.d.ts.map +1 -0
- package/dist/src/coin/eth/iface.js +8 -0
- package/dist/src/coin/eth/index.d.ts +10 -0
- package/dist/src/coin/eth/index.d.ts.map +1 -0
- package/dist/src/coin/eth/index.js +39 -0
- package/dist/src/coin/eth/keyPair.d.ts +26 -0
- package/dist/src/coin/eth/keyPair.d.ts.map +1 -0
- package/dist/src/coin/eth/keyPair.js +85 -0
- package/dist/src/coin/eth/transaction.d.ts +64 -0
- package/dist/src/coin/eth/transaction.d.ts.map +1 -0
- package/dist/src/coin/eth/transaction.js +137 -0
- package/dist/src/coin/eth/transactionBuilder.d.ts +194 -0
- package/dist/src/coin/eth/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/eth/transactionBuilder.js +624 -0
- package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts +47 -0
- package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts.map +1 -0
- package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.js +113 -0
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts +14 -0
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts.map +1 -0
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.js +83 -0
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts +13 -0
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts.map +1 -0
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.js +68 -0
- package/dist/src/coin/eth/transferBuilder.d.ts +65 -0
- package/dist/src/coin/eth/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/eth/transferBuilder.js +197 -0
- package/dist/src/coin/eth/types.d.ts +39 -0
- package/dist/src/coin/eth/types.d.ts.map +1 -0
- package/dist/src/coin/eth/types.js +135 -0
- package/dist/src/coin/eth/utils.d.ts +201 -0
- package/dist/src/coin/eth/utils.d.ts.map +1 -0
- package/dist/src/coin/eth/utils.js +486 -0
- package/dist/src/coin/eth/walletUtil.d.ts +21 -0
- package/dist/src/coin/eth/walletUtil.d.ts.map +1 -0
- package/dist/src/coin/eth/walletUtil.js +31 -0
- package/dist/src/coin/eth2/index.d.ts +2 -0
- package/dist/src/coin/eth2/index.d.ts.map +1 -0
- package/dist/src/coin/eth2/index.js +6 -0
- package/dist/src/coin/eth2/keyPair.d.ts +33 -0
- package/dist/src/coin/eth2/keyPair.d.ts.map +1 -0
- package/dist/src/coin/eth2/keyPair.js +65 -0
- package/dist/src/coin/hbar/constants.d.ts +8 -0
- package/dist/src/coin/hbar/constants.d.ts.map +1 -0
- package/dist/src/coin/hbar/constants.js +12 -0
- package/dist/src/coin/hbar/iface.d.ts +26 -0
- package/dist/src/coin/hbar/iface.d.ts.map +1 -0
- package/dist/src/coin/hbar/iface.js +3 -0
- package/dist/src/coin/hbar/ifaces.d.ts +26 -0
- package/dist/src/coin/hbar/ifaces.d.ts.map +1 -0
- package/dist/src/coin/hbar/ifaces.js +3 -0
- package/dist/src/coin/hbar/index.d.ts +6 -0
- package/dist/src/coin/hbar/index.d.ts.map +1 -0
- package/dist/src/coin/hbar/index.js +31 -0
- package/dist/src/coin/hbar/keyPair.d.ts +23 -0
- package/dist/src/coin/hbar/keyPair.d.ts.map +1 -0
- package/dist/src/coin/hbar/keyPair.js +70 -0
- package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +35 -0
- package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/tokenAssociateBuilder.js +118 -0
- package/dist/src/coin/hbar/transaction.d.ts +97 -0
- package/dist/src/coin/hbar/transaction.d.ts.map +1 -0
- package/dist/src/coin/hbar/transaction.js +255 -0
- package/dist/src/coin/hbar/transactionBuilder.d.ts +111 -0
- package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/transactionBuilder.js +270 -0
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +42 -0
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/hbar/transactionBuilderFactory.js +79 -0
- package/dist/src/coin/hbar/transferBuilder.d.ts +43 -0
- package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/transferBuilder.js +124 -0
- package/dist/src/coin/hbar/utils.d.ts +186 -0
- package/dist/src/coin/hbar/utils.d.ts.map +1 -0
- package/dist/src/coin/hbar/utils.js +400 -0
- package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +28 -0
- package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/walletInitializationBuilder.js +110 -0
- package/dist/src/coin/near/constants.d.ts +12 -0
- package/dist/src/coin/near/constants.d.ts.map +1 -0
- package/dist/src/coin/near/constants.js +15 -0
- package/dist/src/coin/near/contractCallWrapper.d.ts +33 -0
- package/dist/src/coin/near/contractCallWrapper.d.ts.map +1 -0
- package/dist/src/coin/near/contractCallWrapper.js +68 -0
- package/dist/src/coin/near/errors.d.ts +5 -0
- package/dist/src/coin/near/errors.d.ts.map +1 -0
- package/dist/src/coin/near/errors.js +12 -0
- package/dist/src/coin/near/iface.d.ts +40 -0
- package/dist/src/coin/near/iface.d.ts.map +1 -0
- package/dist/src/coin/near/iface.js +8 -0
- package/dist/src/coin/near/index.d.ts +11 -0
- package/dist/src/coin/near/index.d.ts.map +1 -0
- package/dist/src/coin/near/index.js +41 -0
- package/dist/src/coin/near/keyPair.d.ts +25 -0
- package/dist/src/coin/near/keyPair.d.ts.map +1 -0
- package/dist/src/coin/near/keyPair.js +73 -0
- package/dist/src/coin/near/stakingActivateBuilder.d.ts +32 -0
- package/dist/src/coin/near/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/src/coin/near/stakingActivateBuilder.js +90 -0
- package/dist/src/coin/near/stakingDeactivateBuilder.d.ts +32 -0
- package/dist/src/coin/near/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/src/coin/near/stakingDeactivateBuilder.js +89 -0
- package/dist/src/coin/near/stakingWithdrawBuilder.d.ts +32 -0
- package/dist/src/coin/near/stakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/src/coin/near/stakingWithdrawBuilder.js +89 -0
- package/dist/src/coin/near/transaction.d.ts +90 -0
- package/dist/src/coin/near/transaction.d.ts.map +1 -0
- package/dist/src/coin/near/transaction.js +368 -0
- package/dist/src/coin/near/transactionBuilder.d.ts +89 -0
- package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/near/transactionBuilder.js +216 -0
- package/dist/src/coin/near/transactionBuilderFactory.d.ts +30 -0
- package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/near/transactionBuilderFactory.js +71 -0
- package/dist/src/coin/near/transferBuilder.d.ts +26 -0
- package/dist/src/coin/near/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/near/transferBuilder.js +72 -0
- package/dist/src/coin/near/utils.d.ts +42 -0
- package/dist/src/coin/near/utils.d.ts.map +1 -0
- package/dist/src/coin/near/utils.js +85 -0
- package/dist/src/coin/near/walletInitializationBuilder.d.ts +12 -0
- package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/near/walletInitializationBuilder.js +20 -0
- package/dist/src/coin/polygon/index.d.ts +8 -0
- package/dist/src/coin/polygon/index.d.ts.map +1 -0
- package/dist/src/coin/polygon/index.js +35 -0
- package/dist/src/coin/polygon/resources.d.ts +10 -0
- package/dist/src/coin/polygon/resources.d.ts.map +1 -0
- package/dist/src/coin/polygon/resources.js +25 -0
- package/dist/src/coin/polygon/transactionBuilder.d.ts +17 -0
- package/dist/src/coin/polygon/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/polygon/transactionBuilder.js +44 -0
- package/dist/src/coin/polygon/transferBuilder.d.ts +19 -0
- package/dist/src/coin/polygon/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/polygon/transferBuilder.js +27 -0
- package/dist/src/coin/polygon/utils.d.ts +18 -0
- package/dist/src/coin/polygon/utils.d.ts.map +1 -0
- package/dist/src/coin/polygon/utils.js +42 -0
- package/dist/src/coin/polygon/walletUtil.d.ts +48 -0
- package/dist/src/coin/polygon/walletUtil.d.ts.map +1 -0
- package/dist/src/coin/polygon/walletUtil.js +632 -0
- package/dist/src/coin/rbtc/index.d.ts +8 -0
- package/dist/src/coin/rbtc/index.d.ts.map +1 -0
- package/dist/src/coin/rbtc/index.js +35 -0
- package/dist/src/coin/rbtc/resources.d.ts +10 -0
- package/dist/src/coin/rbtc/resources.d.ts.map +1 -0
- package/dist/src/coin/rbtc/resources.js +25 -0
- package/dist/src/coin/rbtc/transactionBuilder.d.ts +17 -0
- package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/rbtc/transactionBuilder.js +44 -0
- package/dist/src/coin/rbtc/transferBuilder.d.ts +19 -0
- package/dist/src/coin/rbtc/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/rbtc/transferBuilder.js +27 -0
- package/dist/src/coin/rbtc/utils.d.ts +18 -0
- package/dist/src/coin/rbtc/utils.d.ts.map +1 -0
- package/dist/src/coin/rbtc/utils.js +42 -0
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts +41 -0
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/ataInitializationBuilder.js +110 -0
- package/dist/src/coin/sol/ataInitializationTransaction.d.ts +14 -0
- package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +1 -0
- package/dist/src/coin/sol/ataInitializationTransaction.js +81 -0
- package/dist/src/coin/sol/constants.d.ts +58 -0
- package/dist/src/coin/sol/constants.d.ts.map +1 -0
- package/dist/src/coin/sol/constants.js +76 -0
- package/dist/src/coin/sol/iface.d.ts +99 -0
- package/dist/src/coin/sol/iface.d.ts.map +1 -0
- package/dist/src/coin/sol/iface.js +3 -0
- package/dist/src/coin/sol/index.d.ts +11 -0
- package/dist/src/coin/sol/index.d.ts.map +1 -0
- package/dist/src/coin/sol/index.js +41 -0
- package/dist/src/coin/sol/instructionParamsFactory.d.ts +12 -0
- package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -0
- package/dist/src/coin/sol/instructionParamsFactory.js +260 -0
- package/dist/src/coin/sol/keyPair.d.ts +26 -0
- package/dist/src/coin/sol/keyPair.d.ts.map +1 -0
- package/dist/src/coin/sol/keyPair.js +63 -0
- package/dist/src/coin/sol/solInstructionFactory.d.ts +10 -0
- package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -0
- package/dist/src/coin/sol/solInstructionFactory.js +213 -0
- package/dist/src/coin/sol/stakingActivateBuilder.d.ts +41 -0
- package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/stakingActivateBuilder.js +94 -0
- package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +23 -0
- package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/stakingDeactivateBuilder.js +62 -0
- package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +31 -0
- package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/stakingWithdrawBuilder.js +78 -0
- package/dist/src/coin/sol/tokenEncodeDecode.d.ts +85 -0
- package/dist/src/coin/sol/tokenEncodeDecode.d.ts.map +1 -0
- package/dist/src/coin/sol/tokenEncodeDecode.js +133 -0
- package/dist/src/coin/sol/tokenTransferBuilder.d.ts +27 -0
- package/dist/src/coin/sol/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/tokenTransferBuilder.js +73 -0
- package/dist/src/coin/sol/transaction.d.ts +61 -0
- package/dist/src/coin/sol/transaction.d.ts.map +1 -0
- package/dist/src/coin/sol/transaction.js +369 -0
- package/dist/src/coin/sol/transactionBuilder.d.ts +101 -0
- package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/transactionBuilder.js +261 -0
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts +76 -0
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/sol/transactionBuilderFactory.js +136 -0
- package/dist/src/coin/sol/transferBuilder.d.ts +26 -0
- package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/transferBuilder.js +67 -0
- package/dist/src/coin/sol/utils.d.ts +146 -0
- package/dist/src/coin/sol/utils.d.ts.map +1 -0
- package/dist/src/coin/sol/utils.js +361 -0
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts +26 -0
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/walletInitializationBuilder.js +71 -0
- package/dist/src/coin/stx/abstractContractBuilder.d.ts +19 -0
- package/dist/src/coin/stx/abstractContractBuilder.d.ts.map +1 -0
- package/dist/src/coin/stx/abstractContractBuilder.js +70 -0
- package/dist/src/coin/stx/constants.d.ts +8 -0
- package/dist/src/coin/stx/constants.d.ts.map +1 -0
- package/dist/src/coin/stx/constants.js +19 -0
- package/dist/src/coin/stx/contractBuilder.d.ts +33 -0
- package/dist/src/coin/stx/contractBuilder.d.ts.map +1 -0
- package/dist/src/coin/stx/contractBuilder.js +116 -0
- package/dist/src/coin/stx/iface.d.ts +48 -0
- package/dist/src/coin/stx/iface.d.ts.map +1 -0
- package/dist/src/coin/stx/iface.js +3 -0
- package/dist/src/coin/stx/index.d.ts +6 -0
- package/dist/src/coin/stx/index.d.ts.map +1 -0
- package/dist/src/coin/stx/index.js +32 -0
- package/dist/src/coin/stx/keyPair.d.ts +55 -0
- package/dist/src/coin/stx/keyPair.d.ts.map +1 -0
- package/dist/src/coin/stx/keyPair.js +140 -0
- package/dist/src/coin/stx/sendmanyBuilder.d.ts +23 -0
- package/dist/src/coin/stx/sendmanyBuilder.d.ts.map +1 -0
- package/dist/src/coin/stx/sendmanyBuilder.js +75 -0
- package/dist/src/coin/stx/transaction.d.ts +49 -0
- package/dist/src/coin/stx/transaction.d.ts.map +1 -0
- package/dist/src/coin/stx/transaction.js +225 -0
- package/dist/src/coin/stx/transactionBuilder.d.ts +86 -0
- package/dist/src/coin/stx/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/stx/transactionBuilder.js +263 -0
- package/dist/src/coin/stx/transactionBuilderFactory.d.ts +30 -0
- package/dist/src/coin/stx/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/stx/transactionBuilderFactory.js +81 -0
- package/dist/src/coin/stx/transferBuilder.d.ts +30 -0
- package/dist/src/coin/stx/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/stx/transferBuilder.js +99 -0
- package/dist/src/coin/stx/utils.d.ts +207 -0
- package/dist/src/coin/stx/utils.d.ts.map +1 -0
- package/dist/src/coin/stx/utils.js +503 -0
- package/dist/src/coin/trx/address.d.ts +11 -0
- package/dist/src/coin/trx/address.d.ts.map +1 -0
- package/dist/src/coin/trx/address.js +13 -0
- package/dist/src/coin/trx/contractCallBuilder.d.ts +96 -0
- package/dist/src/coin/trx/contractCallBuilder.d.ts.map +1 -0
- package/dist/src/coin/trx/contractCallBuilder.js +281 -0
- package/dist/src/coin/trx/enum.d.ts +23 -0
- package/dist/src/coin/trx/enum.d.ts.map +1 -0
- package/dist/src/coin/trx/enum.js +28 -0
- package/dist/src/coin/trx/iface.d.ts +92 -0
- package/dist/src/coin/trx/iface.d.ts.map +1 -0
- package/dist/src/coin/trx/iface.js +3 -0
- package/dist/src/coin/trx/index.d.ts +10 -0
- package/dist/src/coin/trx/index.d.ts.map +1 -0
- package/dist/src/coin/trx/index.js +39 -0
- package/dist/src/coin/trx/keyPair.d.ts +44 -0
- package/dist/src/coin/trx/keyPair.d.ts.map +1 -0
- package/dist/src/coin/trx/keyPair.js +121 -0
- package/dist/src/coin/trx/transaction.d.ts +74 -0
- package/dist/src/coin/trx/transaction.d.ts.map +1 -0
- package/dist/src/coin/trx/transaction.js +205 -0
- package/dist/src/coin/trx/transactionBuilder.d.ts +65 -0
- package/dist/src/coin/trx/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/trx/transactionBuilder.js +215 -0
- package/dist/src/coin/trx/utils.d.ts +127 -0
- package/dist/src/coin/trx/utils.d.ts.map +1 -0
- package/dist/src/coin/trx/utils.js +369 -0
- package/dist/src/coin/trx/wrappedBuilder.d.ts +52 -0
- package/dist/src/coin/trx/wrappedBuilder.d.ts.map +1 -0
- package/dist/src/coin/trx/wrappedBuilder.js +104 -0
- package/dist/src/coin/xrp/index.d.ts +5 -0
- package/dist/src/coin/xrp/index.d.ts.map +1 -0
- package/dist/src/coin/xrp/index.js +29 -0
- package/dist/src/coin/xrp/keyPair.d.ts +10 -0
- package/dist/src/coin/xrp/keyPair.d.ts.map +1 -0
- package/dist/src/coin/xrp/keyPair.js +16 -0
- package/dist/src/coin/xrp/transaction.d.ts +10 -0
- package/dist/src/coin/xrp/transaction.d.ts.map +1 -0
- package/dist/src/coin/xrp/transaction.js +20 -0
- package/dist/src/coin/xrp/transactionBuilder.d.ts +27 -0
- package/dist/src/coin/xrp/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/xrp/transactionBuilder.js +46 -0
- package/dist/src/coin/xrp/transactionBuilderFactory.d.ts +24 -0
- package/dist/src/coin/xrp/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/xrp/transactionBuilderFactory.js +38 -0
- package/dist/src/coin/xrp/transferBuilder.d.ts +14 -0
- package/dist/src/coin/xrp/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/xrp/transferBuilder.js +24 -0
- package/dist/src/coin/xrp/utils.d.ts +16 -0
- package/dist/src/coin/xrp/utils.d.ts.map +1 -0
- package/dist/src/coin/xrp/utils.js +32 -0
- package/dist/src/coin/xrp/walletInitializationBuilder.d.ts +14 -0
- package/dist/src/coin/xrp/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/xrp/walletInitializationBuilder.js +24 -0
- package/dist/src/coin/xtz/address.d.ts +8 -0
- package/dist/src/coin/xtz/address.d.ts.map +1 -0
- package/dist/src/coin/xtz/address.js +10 -0
- package/dist/src/coin/xtz/iface.d.ts +81 -0
- package/dist/src/coin/xtz/iface.d.ts.map +1 -0
- package/dist/src/coin/xtz/iface.js +3 -0
- package/dist/src/coin/xtz/index.d.ts +8 -0
- package/dist/src/coin/xtz/index.d.ts.map +1 -0
- package/dist/src/coin/xtz/index.js +37 -0
- package/dist/src/coin/xtz/keyPair.d.ts +40 -0
- package/dist/src/coin/xtz/keyPair.d.ts.map +1 -0
- package/dist/src/coin/xtz/keyPair.js +136 -0
- package/dist/src/coin/xtz/multisigUtils.d.ts +134 -0
- package/dist/src/coin/xtz/multisigUtils.d.ts.map +1 -0
- package/dist/src/coin/xtz/multisigUtils.js +1180 -0
- package/dist/src/coin/xtz/transaction.d.ts +119 -0
- package/dist/src/coin/xtz/transaction.d.ts.map +1 -0
- package/dist/src/coin/xtz/transaction.js +315 -0
- package/dist/src/coin/xtz/transactionBuilder.d.ts +171 -0
- package/dist/src/coin/xtz/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/xtz/transactionBuilder.js +453 -0
- package/dist/src/coin/xtz/transferBuilder.d.ts +24 -0
- package/dist/src/coin/xtz/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/xtz/transferBuilder.js +64 -0
- package/dist/src/coin/xtz/utils.d.ts +265 -0
- package/dist/src/coin/xtz/utils.d.ts.map +1 -0
- package/dist/src/coin/xtz/utils.js +460 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/mpc/curves/baseCurve.d.ts +18 -0
- package/dist/src/mpc/curves/baseCurve.d.ts.map +1 -0
- package/dist/src/mpc/curves/baseCurve.js +6 -0
- package/dist/src/mpc/curves/ed25519.d.ts +17 -0
- package/dist/src/mpc/curves/ed25519.d.ts.map +1 -0
- package/dist/src/mpc/curves/ed25519.js +48 -0
- package/dist/src/mpc/curves/index.d.ts +5 -0
- package/dist/src/mpc/curves/index.d.ts.map +1 -0
- package/dist/src/mpc/curves/index.js +6 -0
- package/dist/src/mpc/curves/secp256k1.d.ts +16 -0
- package/dist/src/mpc/curves/secp256k1.d.ts.map +1 -0
- package/dist/src/mpc/curves/secp256k1.js +66 -0
- package/dist/src/mpc/curves.d.ts +29 -0
- package/dist/src/mpc/curves.d.ts.map +1 -0
- package/dist/src/mpc/curves.js +96 -0
- package/dist/src/mpc/hdTree.d.ts +24 -0
- package/dist/src/mpc/hdTree.d.ts.map +1 -0
- package/dist/src/mpc/hdTree.js +143 -0
- package/dist/src/mpc/shamir.d.ts +26 -0
- package/dist/src/mpc/shamir.d.ts.map +1 -0
- package/dist/src/mpc/shamir.js +87 -0
- package/dist/src/mpc/tss/eddsa/eddsa.d.ts +29 -0
- package/dist/src/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
- package/dist/src/mpc/tss/eddsa/eddsa.js +273 -0
- package/dist/src/mpc/tss/eddsa/index.d.ts +4 -0
- package/dist/src/mpc/tss/eddsa/index.d.ts.map +1 -0
- package/dist/src/mpc/tss/eddsa/index.js +30 -0
- package/dist/src/mpc/tss/eddsa/types.d.ts +70 -0
- package/dist/src/mpc/tss/eddsa/types.d.ts.map +1 -0
- package/dist/src/mpc/tss/eddsa/types.js +3 -0
- package/dist/src/mpc/tss/index.d.ts +5 -0
- package/dist/src/mpc/tss/index.d.ts.map +1 -0
- package/dist/src/mpc/tss/index.js +32 -0
- package/dist/src/mpc/tss.d.ts +98 -0
- package/dist/src/mpc/tss.d.ts.map +1 -0
- package/dist/src/mpc/tss.js +344 -0
- package/dist/src/mpc/util.d.ts +7 -0
- package/dist/src/mpc/util.d.ts.map +1 -0
- package/dist/src/mpc/util.js +38 -0
- package/dist/src/utils/crypto.d.ts +99 -0
- package/dist/src/utils/crypto.d.ts.map +1 -0
- package/dist/src/utils/crypto.js +260 -0
- package/dist/src/utils/ed25519KeyDeriver.d.ts +49 -0
- package/dist/src/utils/ed25519KeyDeriver.d.ts.map +1 -0
- package/dist/src/utils/ed25519KeyDeriver.js +92 -0
- package/dist/tsconfig.tsbuildinfo +7282 -1934
- package/package.json +24 -27
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
+
import { StacksNetwork } from '@stacks/network';
|
|
4
|
+
import { BaseAddress, BaseFee, BaseKey, BaseTransactionBuilder } from '@bitgo/sdk-core';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
import { KeyPair } from './keyPair';
|
|
7
|
+
import { SignatureData } from './iface';
|
|
8
|
+
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
9
|
+
private _transaction;
|
|
10
|
+
protected _anchorMode: number;
|
|
11
|
+
protected _fee: BaseFee;
|
|
12
|
+
protected _nonce: number;
|
|
13
|
+
protected _memo: string;
|
|
14
|
+
protected _numberSignatures: number;
|
|
15
|
+
protected _multiSignerKeyPairs: KeyPair[];
|
|
16
|
+
protected _signatures: SignatureData[];
|
|
17
|
+
protected _network: StacksNetwork;
|
|
18
|
+
protected _fromPubKeys: string[];
|
|
19
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
20
|
+
/**
|
|
21
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
22
|
+
*
|
|
23
|
+
* @param {Transaction} tx the transaction data
|
|
24
|
+
*/
|
|
25
|
+
initBuilder(tx: Transaction): void;
|
|
26
|
+
/** @inheritdoc */
|
|
27
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
28
|
+
/** @inheritdoc */
|
|
29
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
30
|
+
private getSignature;
|
|
31
|
+
private getPrivateKey;
|
|
32
|
+
/** @inheritdoc */
|
|
33
|
+
protected signImplementation(key: BaseKey): Transaction;
|
|
34
|
+
/** @inheritdoc */
|
|
35
|
+
protected get transaction(): Transaction;
|
|
36
|
+
/** @inheritdoc */
|
|
37
|
+
protected set transaction(transaction: Transaction);
|
|
38
|
+
/**
|
|
39
|
+
* Validates that the given key is not already in this._multiSignerKeyPairs
|
|
40
|
+
*
|
|
41
|
+
* @param {BaseKey} key - The key to check
|
|
42
|
+
*/
|
|
43
|
+
private checkDuplicatedKeys;
|
|
44
|
+
/**
|
|
45
|
+
* Set the transaction fees
|
|
46
|
+
*
|
|
47
|
+
* @param {BaseFee} fee The maximum gas to pay
|
|
48
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
49
|
+
*/
|
|
50
|
+
fee(fee: BaseFee): this;
|
|
51
|
+
nonce(n: number): this;
|
|
52
|
+
fromPubKey(senderPubKey: string | string[]): this;
|
|
53
|
+
/**
|
|
54
|
+
* Set the memo
|
|
55
|
+
*
|
|
56
|
+
* @param {string} memo
|
|
57
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
58
|
+
*/
|
|
59
|
+
memo(memo: string): this;
|
|
60
|
+
/**
|
|
61
|
+
* Set the number of signatures for multi-sig
|
|
62
|
+
*
|
|
63
|
+
* @param {number} numSigns
|
|
64
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
65
|
+
*/
|
|
66
|
+
numberSignatures(numSigns: number): this;
|
|
67
|
+
/** @inheritdoc */
|
|
68
|
+
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
69
|
+
/** @inheritdoc */
|
|
70
|
+
validateKey(key: BaseKey): void;
|
|
71
|
+
/** @inheritdoc */
|
|
72
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
73
|
+
/** @inheritdoc */
|
|
74
|
+
validateTransaction(transaction?: Transaction): void;
|
|
75
|
+
/** @inheritdoc */
|
|
76
|
+
validateValue(value: BigNumber): void;
|
|
77
|
+
/**
|
|
78
|
+
* Validates that the fee field is defined
|
|
79
|
+
*/
|
|
80
|
+
private validateFee;
|
|
81
|
+
/**
|
|
82
|
+
* Validates that nonce is defined
|
|
83
|
+
*/
|
|
84
|
+
private validateNonce;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAe,MAAM,gBAAgB,CAAC;AAarE,OAAO,EAAE,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,sBAAsB,EAOvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIxC,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,OAAO,CAAC,YAAY,CAAc;IAClC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAC1C,SAAS,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAW7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IA2ClC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAYjE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAwB3D,OAAO,CAAC,YAAY,CAC8B;IAClD,OAAO,CAAC,aAAa,CACoF;IAEzG,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAmBvD,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAMvB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAajD;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAO/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAWpD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAKpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,aAAa;CAUtB"}
|
|
@@ -0,0 +1,263 @@
|
|
|
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
|
+
exports.TransactionBuilder = void 0;
|
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
|
9
|
+
const statics_1 = require("@bitgo/statics");
|
|
10
|
+
const transactions_1 = require("@stacks/transactions");
|
|
11
|
+
const network_1 = require("@stacks/network");
|
|
12
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
13
|
+
const transaction_1 = require("./transaction");
|
|
14
|
+
const keyPair_1 = require("./keyPair");
|
|
15
|
+
const utils_1 = require("./utils");
|
|
16
|
+
const constants_1 = require("./constants");
|
|
17
|
+
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
18
|
+
constructor(_coinConfig) {
|
|
19
|
+
super(_coinConfig);
|
|
20
|
+
this.getSignature = (_, index) => this._signatures.find((s) => s.index === index);
|
|
21
|
+
this.getPrivateKey = (pubKey, _) => this._multiSignerKeyPairs.find((kp) => kp.getKeys(true).pub === pubKey || kp.getKeys().pub === pubKey);
|
|
22
|
+
this._anchorMode = constants_1.ANCHOR_MODE;
|
|
23
|
+
this._multiSignerKeyPairs = [];
|
|
24
|
+
this._fromPubKeys = [];
|
|
25
|
+
this._signatures = [];
|
|
26
|
+
this._numberSignatures = constants_1.DEFAULT_MULTISIG_SIG_NUMBER;
|
|
27
|
+
this._network = _coinConfig.network.type === statics_1.NetworkType.MAINNET ? new network_1.StacksMainnet() : new network_1.StacksTestnet();
|
|
28
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
32
|
+
*
|
|
33
|
+
* @param {Transaction} tx the transaction data
|
|
34
|
+
*/
|
|
35
|
+
initBuilder(tx) {
|
|
36
|
+
this.transaction = tx;
|
|
37
|
+
// check if it is signed or unsigned tx
|
|
38
|
+
if (tx.stxTransaction.auth.spendingCondition === undefined) {
|
|
39
|
+
throw new sdk_core_1.InvalidTransactionError('spending condition cannot be undefined');
|
|
40
|
+
}
|
|
41
|
+
const txData = tx.toJson();
|
|
42
|
+
this.fee({ fee: txData.fee.toString() });
|
|
43
|
+
this.nonce(txData.nonce);
|
|
44
|
+
let sigHash = tx.stxTransaction.verifyBegin();
|
|
45
|
+
const authType = tx.stxTransaction.auth.authType ? tx.stxTransaction.auth.authType : transactions_1.AuthType.Standard;
|
|
46
|
+
if (transactions_1.isSingleSig(tx.stxTransaction.auth.spendingCondition)) {
|
|
47
|
+
this._numberSignatures = 1;
|
|
48
|
+
if (tx.stxTransaction.auth.spendingCondition.signature.data !== transactions_1.emptyMessageSignature().data) {
|
|
49
|
+
const signature = tx.stxTransaction.auth.spendingCondition.signature;
|
|
50
|
+
sigHash = transactions_1.makeSigHashPreSign(sigHash, authType, new bn_js_1.default(this._fee.fee), new bn_js_1.default(this._nonce));
|
|
51
|
+
this._signatures.push({ ...signature, index: 0, sigHash });
|
|
52
|
+
this._fromPubKeys = [transactions_1.publicKeyFromSignature(sigHash, signature)];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this._numberSignatures = tx.stxTransaction.auth.spendingCondition.signaturesRequired;
|
|
57
|
+
tx.stxTransaction.auth.spendingCondition.fields.forEach((field, index) => {
|
|
58
|
+
if (field.contents.type === transactions_1.StacksMessageType.MessageSignature) {
|
|
59
|
+
const signature = field.contents;
|
|
60
|
+
const nextVerify = transactions_1.nextVerification(sigHash, authType, new bn_js_1.default(this._fee.fee), new bn_js_1.default(this._nonce), transactions_1.PubKeyEncoding.Compressed, // useless param as Compressed is hardcoded in stacks lib
|
|
61
|
+
signature);
|
|
62
|
+
sigHash = nextVerify.nextSigHash;
|
|
63
|
+
this._signatures.push({ ...signature, index, sigHash });
|
|
64
|
+
this._fromPubKeys.push(nextVerify.pubKey.data.toString('hex'));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this._fromPubKeys.push(field.contents.data.toString('hex'));
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** @inheritdoc */
|
|
73
|
+
fromImplementation(rawTransaction) {
|
|
74
|
+
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
75
|
+
this.validateRawTransaction(rawTransaction);
|
|
76
|
+
const stackstransaction = transactions_1.deserializeTransaction(transactions_1.BufferReader.fromBuffer(Buffer.from(utils_1.removeHexPrefix(rawTransaction), 'hex')));
|
|
77
|
+
tx.stxTransaction = stackstransaction;
|
|
78
|
+
this.initBuilder(tx);
|
|
79
|
+
return this.transaction;
|
|
80
|
+
}
|
|
81
|
+
// region Base Builder
|
|
82
|
+
/** @inheritdoc */
|
|
83
|
+
async buildImplementation() {
|
|
84
|
+
const isMultiSig = this._fromPubKeys.length > 1;
|
|
85
|
+
this._transaction.stxTransaction.setFee(new bn_js_1.default(this._fee.fee));
|
|
86
|
+
this._transaction.stxTransaction.setNonce(new bn_js_1.default(this._nonce));
|
|
87
|
+
for (let index = 0; index < this._fromPubKeys.length; index++) {
|
|
88
|
+
const pubKey = this._fromPubKeys[index];
|
|
89
|
+
const signature = this.getSignature(pubKey, index);
|
|
90
|
+
if (signature) {
|
|
91
|
+
await this.transaction.signWithSignatures(signature, isMultiSig);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const prvKey = this.getPrivateKey(pubKey, index);
|
|
95
|
+
if (prvKey) {
|
|
96
|
+
await this.transaction.sign(prvKey);
|
|
97
|
+
}
|
|
98
|
+
else if (isMultiSig) {
|
|
99
|
+
await this.transaction.appendOrigin(pubKey);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
this._transaction.loadInputsAndOutputs();
|
|
104
|
+
return this._transaction;
|
|
105
|
+
}
|
|
106
|
+
/** @inheritdoc */
|
|
107
|
+
signImplementation(key) {
|
|
108
|
+
this.checkDuplicatedKeys(key);
|
|
109
|
+
let prv = key.key;
|
|
110
|
+
if (prv.startsWith('xprv')) {
|
|
111
|
+
const rawPrv = sdk_core_1.xprvToRawPrv(prv);
|
|
112
|
+
prv = new keyPair_1.KeyPair({ prv: rawPrv }).getKeys(true).prv;
|
|
113
|
+
}
|
|
114
|
+
const signer = new keyPair_1.KeyPair({ prv: prv });
|
|
115
|
+
// Signing the transaction is an operation that relies on all the data being set,
|
|
116
|
+
// so we set the source here and leave the actual signing for the build step
|
|
117
|
+
this._multiSignerKeyPairs.push(signer);
|
|
118
|
+
const publicKey = signer.getKeys(signer.getCompressed()).pub;
|
|
119
|
+
if (!this._fromPubKeys.includes(publicKey)) {
|
|
120
|
+
this._fromPubKeys.push(publicKey);
|
|
121
|
+
}
|
|
122
|
+
return this.transaction;
|
|
123
|
+
}
|
|
124
|
+
/** @inheritdoc */
|
|
125
|
+
get transaction() {
|
|
126
|
+
return this._transaction;
|
|
127
|
+
}
|
|
128
|
+
/** @inheritdoc */
|
|
129
|
+
set transaction(transaction) {
|
|
130
|
+
this._transaction = transaction;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Validates that the given key is not already in this._multiSignerKeyPairs
|
|
134
|
+
*
|
|
135
|
+
* @param {BaseKey} key - The key to check
|
|
136
|
+
*/
|
|
137
|
+
checkDuplicatedKeys(key) {
|
|
138
|
+
this._multiSignerKeyPairs.forEach((_sourceKeyPair) => {
|
|
139
|
+
if (_sourceKeyPair.getKeys().prv === key.key) {
|
|
140
|
+
throw new sdk_core_1.SigningError('Repeated sign: ' + key.key);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Set the transaction fees
|
|
146
|
+
*
|
|
147
|
+
* @param {BaseFee} fee The maximum gas to pay
|
|
148
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
149
|
+
*/
|
|
150
|
+
fee(fee) {
|
|
151
|
+
this.validateValue(new bignumber_js_1.default(fee.fee));
|
|
152
|
+
this._fee = fee;
|
|
153
|
+
return this;
|
|
154
|
+
}
|
|
155
|
+
nonce(n) {
|
|
156
|
+
this._nonce = n;
|
|
157
|
+
return this;
|
|
158
|
+
}
|
|
159
|
+
fromPubKey(senderPubKey) {
|
|
160
|
+
const pubKeys = senderPubKey instanceof Array ? senderPubKey : [senderPubKey];
|
|
161
|
+
this._fromPubKeys = [];
|
|
162
|
+
pubKeys.forEach((key) => {
|
|
163
|
+
if (utils_1.isValidPublicKey(key)) {
|
|
164
|
+
this._fromPubKeys.push(key);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid public key');
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Set the memo
|
|
174
|
+
*
|
|
175
|
+
* @param {string} memo
|
|
176
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
177
|
+
*/
|
|
178
|
+
memo(memo) {
|
|
179
|
+
if (!utils_1.isValidMemo(memo)) {
|
|
180
|
+
throw new sdk_core_1.BuildTransactionError('Memo is too long');
|
|
181
|
+
}
|
|
182
|
+
this._memo = memo;
|
|
183
|
+
return this;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Set the number of signatures for multi-sig
|
|
187
|
+
*
|
|
188
|
+
* @param {number} numSigns
|
|
189
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
190
|
+
*/
|
|
191
|
+
numberSignatures(numSigns) {
|
|
192
|
+
this.validateValue(new bignumber_js_1.default(numSigns));
|
|
193
|
+
this._numberSignatures = numSigns;
|
|
194
|
+
return this;
|
|
195
|
+
}
|
|
196
|
+
// region Validators
|
|
197
|
+
/** @inheritdoc */
|
|
198
|
+
validateAddress(address, addressFormat) {
|
|
199
|
+
if (!utils_1.isValidAddress(address.address)) {
|
|
200
|
+
throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/** @inheritdoc */
|
|
204
|
+
validateKey(key) {
|
|
205
|
+
const keyPair = new keyPair_1.KeyPair({ prv: key.key });
|
|
206
|
+
if (!keyPair.getKeys().prv) {
|
|
207
|
+
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/** @inheritdoc */
|
|
211
|
+
validateRawTransaction(rawTransaction) {
|
|
212
|
+
if (!rawTransaction) {
|
|
213
|
+
throw new sdk_core_1.InvalidTransactionError('Raw transaction is empty');
|
|
214
|
+
}
|
|
215
|
+
try {
|
|
216
|
+
transactions_1.deserializeTransaction(transactions_1.BufferReader.fromBuffer(Buffer.from(utils_1.removeHexPrefix(rawTransaction), 'hex')));
|
|
217
|
+
}
|
|
218
|
+
catch (e) {
|
|
219
|
+
throw new sdk_core_1.ParseTransactionError('There was an error parsing the raw transaction');
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/** @inheritdoc */
|
|
223
|
+
validateTransaction(transaction) {
|
|
224
|
+
this.validateFee();
|
|
225
|
+
this.validateNonce();
|
|
226
|
+
}
|
|
227
|
+
/** @inheritdoc */
|
|
228
|
+
validateValue(value) {
|
|
229
|
+
if (value.isLessThan(0)) {
|
|
230
|
+
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Validates that the fee field is defined
|
|
235
|
+
*/
|
|
236
|
+
validateFee() {
|
|
237
|
+
if (this._fee === undefined) {
|
|
238
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing fee');
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
this.validateValue(new bignumber_js_1.default(this._fee.fee));
|
|
242
|
+
}
|
|
243
|
+
catch (e) {
|
|
244
|
+
throw new sdk_core_1.BuildTransactionError('Invalid fee');
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Validates that nonce is defined
|
|
249
|
+
*/
|
|
250
|
+
validateNonce() {
|
|
251
|
+
if (this._nonce === undefined) {
|
|
252
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing nonce');
|
|
253
|
+
}
|
|
254
|
+
try {
|
|
255
|
+
this.validateValue(new bignumber_js_1.default(this._nonce));
|
|
256
|
+
}
|
|
257
|
+
catch (e) {
|
|
258
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid nonce ${this._nonce}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
exports.TransactionBuilder = TransactionBuilder;
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc3R4L3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnRUFBcUM7QUFDckMsa0RBQTJCO0FBQzNCLDRDQUFxRTtBQUNyRSx1REFXOEI7QUFDOUIsNkNBQThFO0FBQzlFLDhDQVd5QjtBQUN6QiwrQ0FBNEM7QUFDNUMsdUNBQW9DO0FBRXBDLG1DQUF5RjtBQUN6RiwyQ0FBdUU7QUFFdkUsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBWXJFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBZ0diLGlCQUFZLEdBQUcsQ0FBQyxDQUFTLEVBQUUsS0FBYSxFQUE2QixFQUFFLENBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzFDLGtCQUFhLEdBQUcsQ0FBQyxNQUFjLEVBQUUsQ0FBUyxFQUF1QixFQUFFLENBQ3pFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLE1BQU0sSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBbEd2RyxJQUFJLENBQUMsV0FBVyxHQUFHLHVCQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsdUNBQTJC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O1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksZ0NBQXFCLENBQUMsaUJBQWlCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztDQUNGO0FBelJELGdEQXlSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBCaWdOdW0gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICBBdXRoVHlwZSxcbiAgQnVmZmVyUmVhZGVyLFxuICBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uLFxuICBlbXB0eU1lc3NhZ2VTaWduYXR1cmUsXG4gIGlzU2luZ2xlU2lnLFxuICBtYWtlU2lnSGFzaFByZVNpZ24sXG4gIG5leHRWZXJpZmljYXRpb24sXG4gIHB1YmxpY0tleUZyb21TaWduYXR1cmUsXG4gIFN0YWNrc01lc3NhZ2VUeXBlLFxuICBQdWJLZXlFbmNvZGluZyxcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU3RhY2tzTmV0d29yaywgU3RhY2tzVGVzdG5ldCwgU3RhY2tzTWFpbm5ldCB9IGZyb20gJ0BzdGFja3MvbmV0d29yayc7XG5pbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUZlZSxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICB4cHJ2VG9SYXdQcnYsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBTaWduYXR1cmVEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpc1ZhbGlkQWRkcmVzcywgcmVtb3ZlSGV4UHJlZml4LCBpc1ZhbGlkTWVtbywgaXNWYWxpZFB1YmxpY0tleSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQU5DSE9SX01PREUsIERFRkFVTFRfTVVMVElTSUdfU0lHX05VTUJFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfYW5jaG9yTW9kZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2ZlZTogQmFzZUZlZTtcbiAgcHJvdGVjdGVkIF9ub25jZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX21lbW86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9udW1iZXJTaWduYXR1cmVzOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfbXVsdGlTaWduZXJLZXlQYWlyczogS2V5UGFpcltdO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZXM6IFNpZ25hdHVyZURhdGFbXTtcbiAgcHJvdGVjdGVkIF9uZXR3b3JrOiBTdGFja3NOZXR3b3JrO1xuICBwcm90ZWN0ZWQgX2Zyb21QdWJLZXlzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fYW5jaG9yTW9kZSA9IEFOQ0hPUl9NT0RFO1xuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMgPSBbXTtcbiAgICB0aGlzLl9mcm9tUHViS2V5cyA9IFtdO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbXTtcbiAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzID0gREVGQVVMVF9NVUxUSVNJR19TSUdfTlVNQkVSO1xuICAgIHRoaXMuX25ldHdvcmsgPSBfY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyBuZXcgU3RhY2tzTWFpbm5ldCgpIDogbmV3IFN0YWNrc1Rlc3RuZXQoKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHR4O1xuICAgIC8vIGNoZWNrIGlmIGl0IGlzIHNpZ25lZCBvciB1bnNpZ25lZCB0eFxuICAgIGlmICh0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignc3BlbmRpbmcgY29uZGl0aW9uIGNhbm5vdCBiZSB1bmRlZmluZWQnKTtcbiAgICB9XG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgdGhpcy5mZWUoeyBmZWU6IHR4RGF0YS5mZWUudG9TdHJpbmcoKSB9KTtcbiAgICB0aGlzLm5vbmNlKHR4RGF0YS5ub25jZSk7XG4gICAgbGV0IHNpZ0hhc2ggPSB0eC5zdHhUcmFuc2FjdGlvbi52ZXJpZnlCZWdpbigpO1xuXG4gICAgY29uc3QgYXV0aFR5cGUgPSB0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLmF1dGhUeXBlID8gdHguc3R4VHJhbnNhY3Rpb24uYXV0aC5hdXRoVHlwZSA6IEF1dGhUeXBlLlN0YW5kYXJkO1xuICAgIGlmIChpc1NpbmdsZVNpZyh0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uKSkge1xuICAgICAgdGhpcy5fbnVtYmVyU2lnbmF0dXJlcyA9IDE7XG4gICAgICBpZiAodHguc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbi5zaWduYXR1cmUuZGF0YSAhPT0gZW1wdHlNZXNzYWdlU2lnbmF0dXJlKCkuZGF0YSkge1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSB0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLnNpZ25hdHVyZTtcbiAgICAgICAgc2lnSGFzaCA9IG1ha2VTaWdIYXNoUHJlU2lnbihzaWdIYXNoLCBhdXRoVHlwZSwgbmV3IEJpZ051bSh0aGlzLl9mZWUuZmVlKSwgbmV3IEJpZ051bSh0aGlzLl9ub25jZSkpO1xuICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyAuLi5zaWduYXR1cmUsIGluZGV4OiAwLCBzaWdIYXNoIH0pO1xuICAgICAgICB0aGlzLl9mcm9tUHViS2V5cyA9IFtwdWJsaWNLZXlGcm9tU2lnbmF0dXJlKHNpZ0hhc2gsIHNpZ25hdHVyZSldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzID0gdHguc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbi5zaWduYXR1cmVzUmVxdWlyZWQ7XG4gICAgICB0eC5zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLmNvbnRlbnRzLnR5cGUgPT09IFN0YWNrc01lc3NhZ2VUeXBlLk1lc3NhZ2VTaWduYXR1cmUpIHtcbiAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBmaWVsZC5jb250ZW50cztcbiAgICAgICAgICBjb25zdCBuZXh0VmVyaWZ5ID0gbmV4dFZlcmlmaWNhdGlvbihcbiAgICAgICAgICAgIHNpZ0hhc2gsXG4gICAgICAgICAgICBhdXRoVHlwZSxcbiAgICAgICAgICAgIG5ldyBCaWdOdW0odGhpcy5fZmVlLmZlZSksXG4gICAgICAgICAgICBuZXcgQmlnTnVtKHRoaXMuX25vbmNlKSxcbiAgICAgICAgICAgIFB1YktleUVuY29kaW5nLkNvbXByZXNzZWQsIC8vIHVzZWxlc3MgcGFyYW0gYXMgQ29tcHJlc3NlZCBpcyBoYXJkY29kZWQgaW4gc3RhY2tzIGxpYlxuICAgICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgICk7XG4gICAgICAgICAgc2lnSGFzaCA9IG5leHRWZXJpZnkubmV4dFNpZ0hhc2g7XG4gICAgICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgLi4uc2lnbmF0dXJlLCBpbmRleCwgc2lnSGFzaCB9KTtcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cy5wdXNoKG5leHRWZXJpZnkucHViS2V5LmRhdGEudG9TdHJpbmcoJ2hleCcpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cy5wdXNoKGZpZWxkLmNvbnRlbnRzLmRhdGEudG9TdHJpbmcoJ2hleCcpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHN0YWNrc3RyYW5zYWN0aW9uID0gZGVzZXJpYWxpemVUcmFuc2FjdGlvbihcbiAgICAgIEJ1ZmZlclJlYWRlci5mcm9tQnVmZmVyKEJ1ZmZlci5mcm9tKHJlbW92ZUhleFByZWZpeChyYXdUcmFuc2FjdGlvbiksICdoZXgnKSksXG4gICAgKTtcbiAgICB0eC5zdHhUcmFuc2FjdGlvbiA9IHN0YWNrc3RyYW5zYWN0aW9uO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLy8gcmVnaW9uIEJhc2UgQnVpbGRlclxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGlzTXVsdGlTaWc6IGJvb2xlYW4gPSB0aGlzLl9mcm9tUHViS2V5cy5sZW5ndGggPiAxO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnN0eFRyYW5zYWN0aW9uLnNldEZlZShuZXcgQmlnTnVtKHRoaXMuX2ZlZS5mZWUpKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zdHhUcmFuc2FjdGlvbi5zZXROb25jZShuZXcgQmlnTnVtKHRoaXMuX25vbmNlKSk7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZnJvbVB1YktleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBwdWJLZXkgPSB0aGlzLl9mcm9tUHViS2V5c1tpbmRleF07XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZShwdWJLZXksIGluZGV4KTtcbiAgICAgIGlmIChzaWduYXR1cmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5zaWduV2l0aFNpZ25hdHVyZXMoc2lnbmF0dXJlLCBpc011bHRpU2lnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBydktleSA9IHRoaXMuZ2V0UHJpdmF0ZUtleShwdWJLZXksIGluZGV4KTtcbiAgICAgICAgaWYgKHBydktleSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihwcnZLZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTXVsdGlTaWcpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uLmFwcGVuZE9yaWdpbihwdWJLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGdldFNpZ25hdHVyZSA9IChfOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBTaWduYXR1cmVEYXRhIHwgdW5kZWZpbmVkID0+XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5maW5kKChzKSA9PiBzLmluZGV4ID09PSBpbmRleCk7XG4gIHByaXZhdGUgZ2V0UHJpdmF0ZUtleSA9IChwdWJLZXk6IHN0cmluZywgXzogbnVtYmVyKTogS2V5UGFpciB8IHVuZGVmaW5lZCA9PlxuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMuZmluZCgoa3ApID0+IGtwLmdldEtleXModHJ1ZSkucHViID09PSBwdWJLZXkgfHwga3AuZ2V0S2V5cygpLnB1YiA9PT0gcHViS2V5KTtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy5jaGVja0R1cGxpY2F0ZWRLZXlzKGtleSk7XG4gICAgbGV0IHBydiA9IGtleS5rZXk7XG4gICAgaWYgKHBydi5zdGFydHNXaXRoKCd4cHJ2JykpIHtcbiAgICAgIGNvbnN0IHJhd1BydiA9IHhwcnZUb1Jhd1BydihwcnYpO1xuICAgICAgcHJ2ID0gbmV3IEtleVBhaXIoeyBwcnY6IHJhd1BydiB9KS5nZXRLZXlzKHRydWUpLnBydjtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmVyID0gbmV3IEtleVBhaXIoeyBwcnY6IHBydiB9KTtcblxuICAgIC8vIFNpZ25pbmcgdGhlIHRyYW5zYWN0aW9uIGlzIGFuIG9wZXJhdGlvbiB0aGF0IHJlbGllcyBvbiBhbGwgdGhlIGRhdGEgYmVpbmcgc2V0LFxuICAgIC8vIHNvIHdlIHNldCB0aGUgc291cmNlIGhlcmUgYW5kIGxlYXZlIHRoZSBhY3R1YWwgc2lnbmluZyBmb3IgdGhlIGJ1aWxkIHN0ZXBcbiAgICB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzLnB1c2goc2lnbmVyKTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBzaWduZXIuZ2V0S2V5cyhzaWduZXIuZ2V0Q29tcHJlc3NlZCgpKS5wdWI7XG4gICAgaWYgKCF0aGlzLl9mcm9tUHViS2V5cy5pbmNsdWRlcyhwdWJsaWNLZXkpKSB7XG4gICAgICB0aGlzLl9mcm9tUHViS2V5cy5wdXNoKHB1YmxpY0tleSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIGdpdmVuIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUtleX0ga2V5IC0gVGhlIGtleSB0byBjaGVja1xuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0R1cGxpY2F0ZWRLZXlzKGtleTogQmFzZUtleSkge1xuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMuZm9yRWFjaCgoX3NvdXJjZUtleVBhaXIpID0+IHtcbiAgICAgIGlmIChfc291cmNlS2V5UGFpci5nZXRLZXlzKCkucHJ2ID09PSBrZXkua2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1JlcGVhdGVkIHNpZ246ICcgKyBrZXkua2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGZlZXNcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlRmVlfSBmZWUgVGhlIG1heGltdW0gZ2FzIHRvIHBheVxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGZlZShmZWU6IEJhc2VGZWUpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZmVlKSk7XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbm9uY2UobjogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fbm9uY2UgPSBuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZnJvbVB1YktleShzZW5kZXJQdWJLZXk6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcHViS2V5cyA9IHNlbmRlclB1YktleSBpbnN0YW5jZW9mIEFycmF5ID8gc2VuZGVyUHViS2V5IDogW3NlbmRlclB1YktleV07XG4gICAgdGhpcy5fZnJvbVB1YktleXMgPSBbXTtcbiAgICBwdWJLZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGlzVmFsaWRQdWJsaWNLZXkoa2V5KSkge1xuICAgICAgICB0aGlzLl9mcm9tUHViS2V5cy5wdXNoKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgcHVibGljIGtleScpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgdGhlIG1lbW9cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbW9cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBtZW1vKG1lbW86IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZE1lbW8obWVtbykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01lbW8gaXMgdG9vIGxvbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fbWVtbyA9IG1lbW87XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogIFNldCB0aGUgbnVtYmVyIG9mIHNpZ25hdHVyZXMgZm9yIG11bHRpLXNpZ1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtU2lnbnNcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBudW1iZXJTaWduYXR1cmVzKG51bVNpZ25zOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihudW1TaWducykpO1xuICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXMgPSBudW1TaWducztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIGlmICgha2V5UGFpci5nZXRLZXlzKCkucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbihCdWZmZXJSZWFkZXIuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShyZW1vdmVIZXhQcmVmaXgocmF3VHJhbnNhY3Rpb24pLCAnaGV4JykpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVGZWUoKTtcbiAgICB0aGlzLnZhbGlkYXRlTm9uY2UoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBmZWUgZmllbGQgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZlZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcih0aGlzLl9mZWUuZmVlKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBmZWUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgbm9uY2UgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZU5vbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9ub25jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIG5vbmNlJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcih0aGlzLl9ub25jZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgbm9uY2UgJHt0aGlzLl9ub25jZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import { BaseTransactionBuilderFactory } from '@bitgo/sdk-core';
|
|
3
|
+
import { TransferBuilder } from './transferBuilder';
|
|
4
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
import { ContractBuilder } from './contractBuilder';
|
|
7
|
+
import { SendmanyBuilder } from './sendmanyBuilder';
|
|
8
|
+
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
9
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
from(raw: string): TransactionBuilder;
|
|
12
|
+
private parseTransaction;
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
getWalletInitializationBuilder(tx?: Transaction): void;
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
getTransferBuilder(tx?: Transaction): TransferBuilder;
|
|
17
|
+
getContractBuilder(tx?: Transaction): ContractBuilder;
|
|
18
|
+
getSendmanyBuilder(tx?: Transaction): SendmanyBuilder;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize the builder with the given transaction
|
|
21
|
+
*
|
|
22
|
+
* @param {Transaction | undefined} tx - the transaction used to initialize the builder
|
|
23
|
+
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
24
|
+
* @returns {TransactionBuilder} the builder initialized
|
|
25
|
+
*/
|
|
26
|
+
private static initializeBuilder;
|
|
27
|
+
/** @inheritdoc */
|
|
28
|
+
validateRawTransaction(rawTransaction: unknown): void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=transactionBuilderFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EACL,6BAA6B,EAI9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAqBrC,OAAO,CAAC,gBAAgB;IASxB,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI;IAItD,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI;CAQtD"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionBuilderFactory = void 0;
|
|
4
|
+
const transactions_1 = require("@stacks/transactions");
|
|
5
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
6
|
+
const transferBuilder_1 = require("./transferBuilder");
|
|
7
|
+
const transaction_1 = require("./transaction");
|
|
8
|
+
const contractBuilder_1 = require("./contractBuilder");
|
|
9
|
+
const _1 = require(".");
|
|
10
|
+
const sendmanyBuilder_1 = require("./sendmanyBuilder");
|
|
11
|
+
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
12
|
+
constructor(_coinConfig) {
|
|
13
|
+
super(_coinConfig);
|
|
14
|
+
}
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
from(raw) {
|
|
17
|
+
this.validateRawTransaction(raw);
|
|
18
|
+
try {
|
|
19
|
+
const tx = this.parseTransaction(raw);
|
|
20
|
+
switch (tx.stxTransaction.payload.payloadType) {
|
|
21
|
+
case transactions_1.PayloadType.TokenTransfer:
|
|
22
|
+
return this.getTransferBuilder(tx);
|
|
23
|
+
case transactions_1.PayloadType.ContractCall:
|
|
24
|
+
if (sendmanyBuilder_1.SendmanyBuilder.isValidContractCall(this._coinConfig, tx.stxTransaction.payload)) {
|
|
25
|
+
return this.getSendmanyBuilder(tx);
|
|
26
|
+
}
|
|
27
|
+
return this.getContractBuilder(tx);
|
|
28
|
+
default:
|
|
29
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
console.error(e);
|
|
34
|
+
throw new sdk_core_1.ParseTransactionError('There was an error parsing the raw transaction');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
parseTransaction(rawTransaction) {
|
|
38
|
+
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
39
|
+
const stackstransaction = transactions_1.deserializeTransaction(transactions_1.BufferReader.fromBuffer(Buffer.from(_1.Utils.removeHexPrefix(rawTransaction), 'hex')));
|
|
40
|
+
tx.stxTransaction = stackstransaction;
|
|
41
|
+
return tx;
|
|
42
|
+
}
|
|
43
|
+
/** @inheritdoc */
|
|
44
|
+
getWalletInitializationBuilder(tx) {
|
|
45
|
+
throw new sdk_core_1.NotImplementedError('method not implemented');
|
|
46
|
+
}
|
|
47
|
+
/** @inheritdoc */
|
|
48
|
+
getTransferBuilder(tx) {
|
|
49
|
+
return TransactionBuilderFactory.initializeBuilder(new transferBuilder_1.TransferBuilder(this._coinConfig), tx);
|
|
50
|
+
}
|
|
51
|
+
getContractBuilder(tx) {
|
|
52
|
+
return TransactionBuilderFactory.initializeBuilder(new contractBuilder_1.ContractBuilder(this._coinConfig), tx);
|
|
53
|
+
}
|
|
54
|
+
getSendmanyBuilder(tx) {
|
|
55
|
+
return TransactionBuilderFactory.initializeBuilder(new sendmanyBuilder_1.SendmanyBuilder(this._coinConfig), tx);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Initialize the builder with the given transaction
|
|
59
|
+
*
|
|
60
|
+
* @param {Transaction | undefined} tx - the transaction used to initialize the builder
|
|
61
|
+
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
62
|
+
* @returns {TransactionBuilder} the builder initialized
|
|
63
|
+
*/
|
|
64
|
+
static initializeBuilder(builder, tx) {
|
|
65
|
+
if (tx) {
|
|
66
|
+
builder.initBuilder(tx);
|
|
67
|
+
}
|
|
68
|
+
return builder;
|
|
69
|
+
}
|
|
70
|
+
/** @inheritdoc */
|
|
71
|
+
validateRawTransaction(rawTransaction) {
|
|
72
|
+
if (!rawTransaction) {
|
|
73
|
+
throw new sdk_core_1.InvalidTransactionError('Raw transaction is empty');
|
|
74
|
+
}
|
|
75
|
+
if (!_1.Utils.isValidRawTransaction(rawTransaction)) {
|
|
76
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL3N0eC90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUF5RjtBQUN6Riw4Q0FLeUI7QUFDekIsdURBQW9EO0FBRXBELCtDQUE0QztBQUM1Qyx1REFBb0Q7QUFDcEQsd0JBQTBCO0FBQzFCLHVEQUFvRDtBQUVwRCxNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUk7WUFDRixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQzdDLEtBQUssMEJBQVcsQ0FBQyxhQUFhO29CQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckMsS0FBSywwQkFBVyxDQUFDLFlBQVk7b0JBQzNCLElBQUksaUNBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ3BGLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNwQztvQkFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckM7b0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHFCQUFxQixDQUFDLENBQUM7YUFDNUQ7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixNQUFNLElBQUksZ0NBQXFCLENBQUMsZ0RBQWdELENBQUMsQ0FBQztTQUNuRjtJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxjQUFzQjtRQUM3QyxNQUFNLEVBQUUsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0saUJBQWlCLEdBQUcscUNBQXNCLENBQzlDLDJCQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBSyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNuRixDQUFDO1FBQ0YsRUFBRSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUN0QyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQThCLENBQUMsRUFBZ0I7UUFDN0MsTUFBTSxJQUFJLDhCQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0IsQ0FBQyxFQUFnQjtRQUNqQyxPQUFPLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQWdCO1FBQ2pDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBZ0I7UUFDakMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMsaUJBQWlCLENBQStCLE9BQVUsRUFBRSxFQUEyQjtRQUNwRyxJQUFJLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNCQUFzQixDQUFDLGNBQXVCO1FBQzVDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDL0Q7UUFDRCxJQUFJLENBQUMsUUFBSyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztDQUNGO0FBN0VELDhEQTZFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCdWZmZXJSZWFkZXIsIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24sIFBheWxvYWRUeXBlIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBOb3RJbXBsZW1lbnRlZEVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ29udHJhY3RCdWlsZGVyIH0gZnJvbSAnLi9jb250cmFjdEJ1aWxkZXInO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuJztcbmltcG9ydCB7IFNlbmRtYW55QnVpbGRlciB9IGZyb20gJy4vc2VuZG1hbnlCdWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHggPSB0aGlzLnBhcnNlVHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgIHN3aXRjaCAodHguc3R4VHJhbnNhY3Rpb24ucGF5bG9hZC5wYXlsb2FkVHlwZSkge1xuICAgICAgICBjYXNlIFBheWxvYWRUeXBlLlRva2VuVHJhbnNmZXI6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHR4KTtcbiAgICAgICAgY2FzZSBQYXlsb2FkVHlwZS5Db250cmFjdENhbGw6XG4gICAgICAgICAgaWYgKFNlbmRtYW55QnVpbGRlci5pc1ZhbGlkQ29udHJhY3RDYWxsKHRoaXMuX2NvaW5Db25maWcsIHR4LnN0eFRyYW5zYWN0aW9uLnBheWxvYWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZW5kbWFueUJ1aWxkZXIodHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb250cmFjdEJ1aWxkZXIodHgpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgY29uc3Qgc3RhY2tzdHJhbnNhY3Rpb24gPSBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKFxuICAgICAgQnVmZmVyUmVhZGVyLmZyb21CdWZmZXIoQnVmZmVyLmZyb20oVXRpbHMucmVtb3ZlSGV4UHJlZml4KHJhd1RyYW5zYWN0aW9uKSwgJ2hleCcpKSxcbiAgICApO1xuICAgIHR4LnN0eFRyYW5zYWN0aW9uID0gc3RhY2tzdHJhbnNhY3Rpb247XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIobmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSwgdHgpO1xuICB9XG5cbiAgZ2V0Q29udHJhY3RCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBDb250cmFjdEJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKG5ldyBDb250cmFjdEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyksIHR4KTtcbiAgfVxuXG4gIGdldFNlbmRtYW55QnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogU2VuZG1hbnlCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcihuZXcgU2VuZG1hbnlCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpLCB0eCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4oYnVpbGRlcjogVCwgdHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignUmF3IHRyYW5zYWN0aW9uIGlzIGVtcHR5Jyk7XG4gICAgfVxuICAgIGlmICghVXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import BigNum from 'bn.js';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
+
export declare class TransferBuilder extends TransactionBuilder {
|
|
6
|
+
private _options;
|
|
7
|
+
protected _toAddress: string;
|
|
8
|
+
protected _amount: BigNum;
|
|
9
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
10
|
+
initBuilder(tx: Transaction): void;
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
13
|
+
private buildTokenTransferOptions;
|
|
14
|
+
/**
|
|
15
|
+
* Set the destination address where the funds will be sent,
|
|
16
|
+
* it may take the format `'<shard>.<realm>.<account>'` or `'<account>'`
|
|
17
|
+
*
|
|
18
|
+
* @param {string} address the address to transfer funds to
|
|
19
|
+
* @returns {TransferBuilder} the builder with the new parameter set
|
|
20
|
+
*/
|
|
21
|
+
to(address: string): this;
|
|
22
|
+
/**
|
|
23
|
+
* Set the amount to be transferred
|
|
24
|
+
*
|
|
25
|
+
* @param {string} amount amount to transfer in tinyBars (there are 100,000,000 tinyBars in one Hbar)
|
|
26
|
+
* @returns {TransferBuilder} the builder with the new parameter set
|
|
27
|
+
*/
|
|
28
|
+
amount(amount: string): this;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,MAAM,MAAM,OAAO,CAAC;AAc3B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,QAAQ,CAAsE;IACtF,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAiBlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D,OAAO,CAAC,yBAAyB;IA6BjC;;;;;;OAMG;IACH,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAO7B"}
|