@bitgo/account-lib 2.20.1-rc.2 → 2.21.0-hotfix.0
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,539 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.Utils = void 0;
|
|
26
|
+
const algosdk_1 = __importDefault(require("algosdk"));
|
|
27
|
+
const stellar_sdk_1 = __importDefault(require("stellar-sdk"));
|
|
28
|
+
const hex = __importStar(require("@stablelib/hex"));
|
|
29
|
+
const nacl = __importStar(require("tweetnacl"));
|
|
30
|
+
const hi_base32_1 = __importDefault(require("hi-base32"));
|
|
31
|
+
const js_sha512_1 = __importDefault(require("js-sha512"));
|
|
32
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
33
|
+
const keyPair_1 = require("./keyPair");
|
|
34
|
+
const seedEncoding_1 = require("./seedEncoding");
|
|
35
|
+
const algoNacl = __importStar(require("algosdk/dist/cjs/src/nacl/naclWrappers"));
|
|
36
|
+
const encoding = __importStar(require("algosdk/dist/cjs/src/encoding/encoding"));
|
|
37
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
38
|
+
const ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
|
|
39
|
+
const ALGORAND_SEED_LENGTH = 58;
|
|
40
|
+
const ALGORAND_SEED_BYTE_LENGTH = 36;
|
|
41
|
+
const ALGORAND_TRANSACTION_LENGTH = 52;
|
|
42
|
+
const SEED_BYTES_LENGTH = 32;
|
|
43
|
+
/**
|
|
44
|
+
* Determines whether the string is only composed of hex chars.
|
|
45
|
+
*
|
|
46
|
+
* @param {string} maybe The string to be validated.
|
|
47
|
+
* @returns {boolean} true if the string consists of only hex characters, otherwise false.
|
|
48
|
+
*/
|
|
49
|
+
function allHexChars(maybe) {
|
|
50
|
+
return /^([0-9a-f]{2})+$/i.test(maybe);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* ConcatArrays takes two array and returns a joint array of both
|
|
54
|
+
*
|
|
55
|
+
* @param a {Uint8Array} first array to concat
|
|
56
|
+
* @param b {Uint8Array} second array
|
|
57
|
+
* @returns {Uint8Array} a new array containing all elements of 'a' followed by all elements of 'b'
|
|
58
|
+
*/
|
|
59
|
+
function concatArrays(a, b) {
|
|
60
|
+
const c = new Uint8Array(a.length + b.length);
|
|
61
|
+
c.set(a);
|
|
62
|
+
c.set(b, a.length);
|
|
63
|
+
return c;
|
|
64
|
+
}
|
|
65
|
+
class Utils {
|
|
66
|
+
/** @inheritdoc */
|
|
67
|
+
isValidAddress(address) {
|
|
68
|
+
return algosdk_1.default.isValidAddress(address);
|
|
69
|
+
}
|
|
70
|
+
/** @inheritdoc */
|
|
71
|
+
isValidTransactionId(txId) {
|
|
72
|
+
if (txId.length !== 104) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return allHexChars(txId);
|
|
76
|
+
}
|
|
77
|
+
/** @inheritdoc */
|
|
78
|
+
isValidPublicKey(key) {
|
|
79
|
+
return sdk_core_1.isValidEd25519PublicKey(key);
|
|
80
|
+
}
|
|
81
|
+
/** @inheritdoc */
|
|
82
|
+
isValidPrivateKey(key) {
|
|
83
|
+
return sdk_core_1.isValidEd25519SecretKey(key);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Returns an hex string of the given buffer
|
|
87
|
+
*
|
|
88
|
+
* @param {Uint8Array} buffer - the buffer to be converted to hex
|
|
89
|
+
* @returns {string} - the hex value
|
|
90
|
+
*/
|
|
91
|
+
toHex(buffer) {
|
|
92
|
+
return hex.encode(buffer, true);
|
|
93
|
+
}
|
|
94
|
+
/** @inheritdoc */
|
|
95
|
+
isValidSignature(signature) {
|
|
96
|
+
throw new sdk_core_1.NotImplementedError('isValidSignature not implemented.');
|
|
97
|
+
}
|
|
98
|
+
/** @inheritdoc */
|
|
99
|
+
isValidBlockId(hash) {
|
|
100
|
+
throw new sdk_core_1.NotImplementedError('hash not implemented.');
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Compare two Keys
|
|
104
|
+
*
|
|
105
|
+
* @param {Uint8Array} key1 - key to be compare
|
|
106
|
+
* @param {Uint8Array} key2 - key to be compare
|
|
107
|
+
* @returns {boolean} - returns true if both keys are equal
|
|
108
|
+
*/
|
|
109
|
+
areKeysEqual(key1, key2) {
|
|
110
|
+
return nacl.verify(key1, key2);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns a Uint8Array of the given hex string
|
|
114
|
+
*
|
|
115
|
+
* @param {string} str - the hex string to be converted
|
|
116
|
+
* @returns {string} - the Uint8Array value
|
|
117
|
+
*/
|
|
118
|
+
toUint8Array(str) {
|
|
119
|
+
return Buffer.from(str, 'hex');
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Determines whether a seed is valid.
|
|
123
|
+
*
|
|
124
|
+
* @param {string} seed - the seed to be validated
|
|
125
|
+
* @returns {boolean} - true if the seed is valid
|
|
126
|
+
*/
|
|
127
|
+
isValidSeed(seed) {
|
|
128
|
+
if (typeof seed !== 'string')
|
|
129
|
+
return false;
|
|
130
|
+
if (seed.length !== ALGORAND_SEED_LENGTH)
|
|
131
|
+
return false;
|
|
132
|
+
// Try to decode
|
|
133
|
+
let decoded;
|
|
134
|
+
try {
|
|
135
|
+
decoded = this.decodeSeed(seed);
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
// Compute checksum
|
|
141
|
+
const checksum = new Uint8Array(js_sha512_1.default.sha512_256.array(decoded.seed).slice(SEED_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, SEED_BYTES_LENGTH));
|
|
142
|
+
// Check if the checksum matches the one from the decoded seed
|
|
143
|
+
return lodash_1.default.isEqual(checksum, decoded.checksum);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Encode an algo seed
|
|
147
|
+
*
|
|
148
|
+
* @param {Buffer} secretKey - the valid secretKey .
|
|
149
|
+
* @returns {string} - the seed to be validated.
|
|
150
|
+
*/
|
|
151
|
+
encodeSeed(secretKey) {
|
|
152
|
+
// get seed
|
|
153
|
+
const seed = secretKey.slice(0, SEED_BYTES_LENGTH);
|
|
154
|
+
// compute checksum
|
|
155
|
+
const checksum = Buffer.from(js_sha512_1.default.sha512_256.array(seed).slice(SEED_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, SEED_BYTES_LENGTH));
|
|
156
|
+
const encodedSeed = hi_base32_1.default.encode(concatArrays(seed, checksum));
|
|
157
|
+
return encodedSeed.toString().slice(0, ALGORAND_SEED_LENGTH); // removing the extra '===='
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* decodeSeed decodes an algo seed
|
|
161
|
+
*
|
|
162
|
+
* Decoding algo seed is same as decoding address.
|
|
163
|
+
* Latest version of algo sdk (1.9, at this writing) does not expose explicit method for decoding seed.
|
|
164
|
+
* Parameter is decoded and split into seed and checksum.
|
|
165
|
+
*
|
|
166
|
+
* @param {string} seed - hex or base64 encoded seed to be validated
|
|
167
|
+
* @returns {Seed} - validated object Seed
|
|
168
|
+
*/
|
|
169
|
+
decodeSeed(seed) {
|
|
170
|
+
// try to decode
|
|
171
|
+
const decoded = hi_base32_1.default.decode.asBytes(seed);
|
|
172
|
+
// Sanity check
|
|
173
|
+
if (decoded.length !== ALGORAND_SEED_BYTE_LENGTH)
|
|
174
|
+
throw new Error('seed seems to be malformed');
|
|
175
|
+
return {
|
|
176
|
+
seed: new Uint8Array(decoded.slice(0, ALGORAND_SEED_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH)),
|
|
177
|
+
checksum: new Uint8Array(decoded.slice(SEED_BYTES_LENGTH, ALGORAND_SEED_BYTE_LENGTH)),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Verifies if signature for message is valid.
|
|
182
|
+
*
|
|
183
|
+
* @param pub {Uint8Array} public key
|
|
184
|
+
* @param message {Uint8Array} signed message
|
|
185
|
+
* @param signature {Buffer} signature to verify
|
|
186
|
+
* @returns {Boolean} true if signature is valid.
|
|
187
|
+
*/
|
|
188
|
+
verifySignature(message, signature, pub) {
|
|
189
|
+
return nacl.sign.detached.verify(message, signature, pub);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Transforms an Ed25519 public key into an algorand address.
|
|
193
|
+
*
|
|
194
|
+
* @param {Uint8Array} pk The Ed25519 public key.
|
|
195
|
+
* @see https://developer.algorand.org/docs/features/accounts/#transformation-public-key-to-algorand-address
|
|
196
|
+
*
|
|
197
|
+
* @returns {string} The algorand address.
|
|
198
|
+
*/
|
|
199
|
+
publicKeyToAlgoAddress(pk) {
|
|
200
|
+
return new keyPair_1.KeyPair({ pub: Buffer.from(pk).toString('hex') }).getAddress();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Checks if a unsigned algo transaction can be decoded.
|
|
204
|
+
*
|
|
205
|
+
* @param {Uint8Array} txn The encoded unsigned transaction.
|
|
206
|
+
* @returns {boolean} true if the transaction can be decoded, otherwise false
|
|
207
|
+
*/
|
|
208
|
+
isDecodableUnsignedAlgoTxn(txn) {
|
|
209
|
+
try {
|
|
210
|
+
algosdk_1.default.decodeUnsignedTransaction(txn);
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Checks if a signed algo transaction can be decoded.
|
|
219
|
+
*
|
|
220
|
+
* @param {Uint8Array} txn The encoded signed transaction.
|
|
221
|
+
* @returns {boolean} true if the transaction can be decoded, otherwise false
|
|
222
|
+
*/
|
|
223
|
+
isDecodableSignedTransaction(txn) {
|
|
224
|
+
try {
|
|
225
|
+
algosdk_1.default.decodeSignedTransaction(txn);
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Decodes a signed or unsigned algo transaction.
|
|
234
|
+
*
|
|
235
|
+
* @param {Uint8Array | string} txnBytes The encoded unsigned or signed txn.
|
|
236
|
+
* @returns {EncodedTx} The decoded transaction.
|
|
237
|
+
*/
|
|
238
|
+
decodeAlgoTxn(txnBytes) {
|
|
239
|
+
let buffer = typeof txnBytes === 'string'
|
|
240
|
+
? Buffer.from(txnBytes, allHexChars(txnBytes) ? 'hex' : 'base64')
|
|
241
|
+
: Buffer.from(txnBytes);
|
|
242
|
+
// In order to maintain backward compatibility with old keyreg transactions encoded with
|
|
243
|
+
// forked algosdk 1.2.0 (https://github.com/BitGo/algosdk-bitgo),
|
|
244
|
+
// the relevant information is extracted and parsed following the latest algosdk
|
|
245
|
+
// release standard.
|
|
246
|
+
// This way we can decode transactions successfully by still maintaining backward compatibility.
|
|
247
|
+
const decodedTx = encoding.decode(buffer);
|
|
248
|
+
if (decodedTx.txn &&
|
|
249
|
+
decodedTx.txn.type === 'keyreg' &&
|
|
250
|
+
decodedTx.txn.votefst &&
|
|
251
|
+
decodedTx.txn.votelst &&
|
|
252
|
+
decodedTx.txn.votekd) {
|
|
253
|
+
decodedTx.txn.votekey = decodedTx.txn.votekey || decodedTx.msig.subsig[0].pk;
|
|
254
|
+
decodedTx.txn.selkey = decodedTx.txn.selkey || decodedTx.msig.subsig[0].pk;
|
|
255
|
+
buffer = decodedTx.msig || decodedTx.sig ? encoding.encode(decodedTx) : encoding.encode(decodedTx.txn);
|
|
256
|
+
}
|
|
257
|
+
try {
|
|
258
|
+
return this.tryToDecodeUnsignedTransaction(buffer);
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
// Ignore error to try different format
|
|
262
|
+
}
|
|
263
|
+
try {
|
|
264
|
+
return this.tryToDecodeSignedTransaction(buffer);
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
throw new sdk_core_1.InvalidTransactionError('Transaction cannot be decoded');
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Try to decode a signed Algo transaction
|
|
272
|
+
* @param buffer the encoded transaction
|
|
273
|
+
* @returns { EncodedTx } the decoded signed transaction
|
|
274
|
+
* @throws error if it is not a valid encoded signed transaction
|
|
275
|
+
*/
|
|
276
|
+
tryToDecodeSignedTransaction(buffer) {
|
|
277
|
+
// TODO: Replace with
|
|
278
|
+
// return algosdk.Transaction.from_obj_for_encoding(algosdk.decodeSignedTransaction(buffer).txn);
|
|
279
|
+
// see: https://github.com/algorand/js-algorand-sdk/issues/364
|
|
280
|
+
// "...some parts of the codebase treat the output of Transaction.from_obj_for_encoding as EncodedTransaction.
|
|
281
|
+
// They need to be fixed(or we at least need to make it so Transaction conforms to EncodedTransaction)."
|
|
282
|
+
const tx = algosdk_1.default.decodeSignedTransaction(buffer);
|
|
283
|
+
const signers = [];
|
|
284
|
+
const signedBy = [];
|
|
285
|
+
if (tx.msig && tx.msig.subsig) {
|
|
286
|
+
for (const sig of tx.msig.subsig) {
|
|
287
|
+
const addr = algosdk_1.default.encodeAddress(sig.pk);
|
|
288
|
+
signers.push(addr);
|
|
289
|
+
if (sig.s) {
|
|
290
|
+
signedBy.push(addr);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
rawTransaction: new Uint8Array(buffer),
|
|
296
|
+
txn: tx.txn,
|
|
297
|
+
signed: true,
|
|
298
|
+
signers: signers,
|
|
299
|
+
signedBy: signedBy,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Try to decode an unsigned Algo transaction
|
|
304
|
+
* @param buffer the encoded transaction
|
|
305
|
+
* @returns {EncodedTx} the decoded unsigned transaction
|
|
306
|
+
* @throws error if it is not a valid encoded unsigned transaction
|
|
307
|
+
*/
|
|
308
|
+
tryToDecodeUnsignedTransaction(buffer) {
|
|
309
|
+
const txn = algosdk_1.default.decodeUnsignedTransaction(buffer);
|
|
310
|
+
return {
|
|
311
|
+
rawTransaction: new Uint8Array(buffer),
|
|
312
|
+
txn,
|
|
313
|
+
signed: false,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
/*
|
|
317
|
+
* encodeObj takes a javascript object and returns its msgpack encoding
|
|
318
|
+
* Note that the encoding sorts the fields alphabetically
|
|
319
|
+
*
|
|
320
|
+
* @param {Record<string | number | symbol, any>} obj js obj
|
|
321
|
+
* @returns {Uint8Array} Uint8Array binary representation
|
|
322
|
+
*/
|
|
323
|
+
encodeObj(obj) {
|
|
324
|
+
return algosdk_1.default.encodeObj(obj);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* decodeObj takes a Uint8Array and returns its javascript obj
|
|
328
|
+
* @param o - Uint8Array to decode
|
|
329
|
+
* @returns object
|
|
330
|
+
*/
|
|
331
|
+
decodeObj(o) {
|
|
332
|
+
return algosdk_1.default.decodeObj(o);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* secretKeyToMnemonic takes an Algorant secret key and returns the corresponding mnemonic
|
|
336
|
+
*
|
|
337
|
+
* @param sk - Algorant secret key
|
|
338
|
+
* @return Secret key is associated mnemonic
|
|
339
|
+
*/
|
|
340
|
+
secretKeyToMnemonic(sk) {
|
|
341
|
+
const skValid = Buffer.from(sk.toString('hex'));
|
|
342
|
+
if (!this.isValidPrivateKey(skValid.toString('hex'))) {
|
|
343
|
+
throw new sdk_core_1.InvalidKey(`The secret key: ${sk.toString('hex')} is invalid`);
|
|
344
|
+
}
|
|
345
|
+
const skUnit8Array = Buffer.from(sk);
|
|
346
|
+
return algosdk_1.default.secretKeyToMnemonic(skUnit8Array);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* seedFromMnemonic converts a mnemonic generated using this library into the source key used to create it
|
|
350
|
+
* It returns an error if the passed mnemonic has an incorrect checksum, if the number of words is unexpected, or if one
|
|
351
|
+
* of the passed words is not found in the words list
|
|
352
|
+
*
|
|
353
|
+
* @param mnemonic - 25 words mnemonic
|
|
354
|
+
* @returns 32 bytes long seed
|
|
355
|
+
*/
|
|
356
|
+
seedFromMnemonic(mnemonic) {
|
|
357
|
+
return algosdk_1.default.mnemonicToMasterDerivationKey(mnemonic);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* keyPairFromSeed generates an object with secretKey and publicKey using the algosdk
|
|
361
|
+
* @param seed 32 bytes long seed
|
|
362
|
+
* @returns KeyPair
|
|
363
|
+
*/
|
|
364
|
+
keyPairFromSeed(seed) {
|
|
365
|
+
const mn = this.mnemonicFromSeed(seed);
|
|
366
|
+
const base64PrivateKey = algosdk_1.default.mnemonicToSecretKey(mn).sk;
|
|
367
|
+
return this.createKeyPair(base64PrivateKey);
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Generate a new `KeyPair` object from the given private key.
|
|
371
|
+
*
|
|
372
|
+
* @param base64PrivateKey 64 bytes long privateKey
|
|
373
|
+
* @returns KeyPair
|
|
374
|
+
*/
|
|
375
|
+
createKeyPair(base64PrivateKey) {
|
|
376
|
+
const sk = base64PrivateKey.slice(0, 32);
|
|
377
|
+
return new keyPair_1.KeyPair({ prv: Buffer.from(sk).toString('hex') });
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* decodePrivateKey generates a seed with a mnemonic and using algosdk.
|
|
381
|
+
*
|
|
382
|
+
* @param seed 32 bytes long seed
|
|
383
|
+
* @returns mnemonic - 25 words mnemonic - 25 words mnemonic
|
|
384
|
+
*/
|
|
385
|
+
mnemonicFromSeed(seed) {
|
|
386
|
+
return algosdk_1.default.masterDerivationKeyToMnemonic(seed);
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Validates the key with the stellar-sdk
|
|
390
|
+
*
|
|
391
|
+
* @param publicKey
|
|
392
|
+
* @returns boolean
|
|
393
|
+
*/
|
|
394
|
+
isValidEd25519PublicKeyStellar(publicKey) {
|
|
395
|
+
return stellar_sdk_1.default.StrKey.isValidEd25519PublicKey(publicKey);
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Decodes the key with the stellar-sdk
|
|
399
|
+
*
|
|
400
|
+
* @param publicKey
|
|
401
|
+
* @returns Buffer
|
|
402
|
+
*/
|
|
403
|
+
decodeEd25519PublicKeyStellar(publicKey) {
|
|
404
|
+
return stellar_sdk_1.default.StrKey.decodeEd25519PublicKey(publicKey);
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Convert a stellar seed to algorand encoding
|
|
408
|
+
*
|
|
409
|
+
* @param seed
|
|
410
|
+
* @returns string the encoded seed
|
|
411
|
+
*/
|
|
412
|
+
convertFromStellarSeed(seed) {
|
|
413
|
+
return seedEncoding_1.SeedEncoding.encode(stellar_sdk_1.default.StrKey.decodeEd25519SecretSeed(seed));
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Returns an address encoded with algosdk
|
|
417
|
+
*
|
|
418
|
+
* @param addr
|
|
419
|
+
* @returns string
|
|
420
|
+
*/
|
|
421
|
+
encodeAddress(addr) {
|
|
422
|
+
return algosdk_1.default.encodeAddress(addr);
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Return an address decoded with algosdk
|
|
426
|
+
*
|
|
427
|
+
* @param addr
|
|
428
|
+
* @returns Address
|
|
429
|
+
*/
|
|
430
|
+
decodeAddress(addr) {
|
|
431
|
+
return algosdk_1.default.decodeAddress(addr);
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Converts an address into an ALGO one
|
|
435
|
+
* If the given data is a Stellar address or public key, it is converted to ALGO address.
|
|
436
|
+
*
|
|
437
|
+
* @param addressOrPubKey an ALGO address, or an Stellar address or public key
|
|
438
|
+
* @returns address algo address string
|
|
439
|
+
*/
|
|
440
|
+
stellarAddressToAlgoAddress(addressOrPubKey) {
|
|
441
|
+
// we have an Algorand address
|
|
442
|
+
if (this.isValidAddress(addressOrPubKey)) {
|
|
443
|
+
return addressOrPubKey;
|
|
444
|
+
}
|
|
445
|
+
// we have a stellar key
|
|
446
|
+
if (this.isValidEd25519PublicKeyStellar(addressOrPubKey)) {
|
|
447
|
+
const stellarPub = this.decodeEd25519PublicKeyStellar(addressOrPubKey);
|
|
448
|
+
const algoAddress = this.encodeAddress(stellarPub);
|
|
449
|
+
if (this.isValidAddress(algoAddress)) {
|
|
450
|
+
return algoAddress;
|
|
451
|
+
}
|
|
452
|
+
throw new Error('Cannot convert Stellar address to an Algorand address via pubkey.');
|
|
453
|
+
}
|
|
454
|
+
throw new Error('Neither an Algorand address nor a stellar pubkey.');
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* multisigAddress takes multisig metadata (preimage) and returns the corresponding human readable Algorand address.
|
|
458
|
+
*
|
|
459
|
+
* @param {number} version mutlisig version
|
|
460
|
+
* @param {number} threshold multisig threshold
|
|
461
|
+
* @param {string[]} addrs list of Algorand addresses
|
|
462
|
+
* @returns {string} human readable Algorand address.
|
|
463
|
+
*/
|
|
464
|
+
multisigAddress(version, threshold, addrs) {
|
|
465
|
+
return algosdk_1.default.multisigAddress({
|
|
466
|
+
version,
|
|
467
|
+
threshold,
|
|
468
|
+
addrs,
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* generateAccount generates un account with a secretKey and an address
|
|
473
|
+
*
|
|
474
|
+
* Function has not params
|
|
475
|
+
* @returns Account
|
|
476
|
+
*/
|
|
477
|
+
generateAccount() {
|
|
478
|
+
return algosdk_1.default.generateAccount();
|
|
479
|
+
}
|
|
480
|
+
generateAccountFromSeed(seed) {
|
|
481
|
+
const keys = nacl.sign.keyPair.fromSeed(seed);
|
|
482
|
+
return {
|
|
483
|
+
addr: algosdk_1.default.encodeAddress(keys.publicKey),
|
|
484
|
+
sk: keys.secretKey,
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Generates Tx ID from an encoded multisig transaction
|
|
489
|
+
*
|
|
490
|
+
* This is done because of a change made on version 1.10.1 on algosdk so method txID() only supports SignedTransaction type.
|
|
491
|
+
* (https://github.com/algorand/js-algorand-sdk/blob/develop/CHANGELOG.md#1101)
|
|
492
|
+
*
|
|
493
|
+
* @param {string} txBase64 - encoded base64 multisig transaction
|
|
494
|
+
* @returns {string} - transaction ID
|
|
495
|
+
*/
|
|
496
|
+
getMultisigTxID(txBase64) {
|
|
497
|
+
const txBytes = Buffer.from(txBase64, 'base64');
|
|
498
|
+
const decodeSignTx = algosdk_1.default.decodeSignedTransaction(txBytes);
|
|
499
|
+
const wellFormedDecodedSignTx = decodeSignTx.txn.get_obj_for_encoding();
|
|
500
|
+
const txForEncoding = { msig: decodeSignTx.msig, txn: wellFormedDecodedSignTx };
|
|
501
|
+
const en_msg = encoding.encode(txForEncoding);
|
|
502
|
+
const tag = Buffer.from([84, 88]);
|
|
503
|
+
const gh = Buffer.from(concatArrays(tag, en_msg));
|
|
504
|
+
const hash = Buffer.from(algoNacl.genericHash(gh));
|
|
505
|
+
return hi_base32_1.default.encode(hash).slice(0, ALGORAND_TRANSACTION_LENGTH);
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Determines if a given transaction data is to enable or disable a token
|
|
509
|
+
* @param amount the amount in transaction
|
|
510
|
+
* @param from the originated address
|
|
511
|
+
* @param to the target address
|
|
512
|
+
* @param closeRemainderTo (optional) address to send remaining units in originated address
|
|
513
|
+
* @returns 'enableToken' or 'disableToken'
|
|
514
|
+
*/
|
|
515
|
+
getTokenTxType(amount, from, to, closeRemainderTo) {
|
|
516
|
+
let type = 'transferToken';
|
|
517
|
+
if (amount === '0' && from === to) {
|
|
518
|
+
type = !closeRemainderTo ? 'enableToken' : 'disableToken';
|
|
519
|
+
}
|
|
520
|
+
return type;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Validate if the key is a valid base64 string
|
|
524
|
+
* @param key the key to validate
|
|
525
|
+
*/
|
|
526
|
+
validateBase64(key) {
|
|
527
|
+
if (!key || typeof key !== 'string') {
|
|
528
|
+
throw new Error('Invalid base64 string');
|
|
529
|
+
}
|
|
530
|
+
const base64RegExp = /^(?:[a-zA-Z0-9+\/]{4})*(?:|(?:[a-zA-Z0-9+\/]{3}=)|(?:[a-zA-Z0-9+\/]{2}==)|(?:[a-zA-Z0-9+\/]{1}===))$/;
|
|
531
|
+
if (!base64RegExp.test(key)) {
|
|
532
|
+
throw new Error('Invalid base64 string');
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
exports.Utils = Utils;
|
|
537
|
+
const utils = new Utils();
|
|
538
|
+
exports.default = utils;
|
|
539
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBOEI7QUFDOUIsOERBQWtDO0FBQ2xDLG9EQUFzQztBQUN0QyxnREFBa0M7QUFDbEMsMERBQStCO0FBQy9CLDBEQUErQjtBQUMvQixvREFBdUI7QUFFdkIsdUNBQW9DO0FBQ3BDLGlEQUE4QztBQUM5QyxpRkFBbUU7QUFDbkUsaUZBQW1FO0FBQ25FLDhDQU95QjtBQUV6QixNQUFNLDZCQUE2QixHQUFHLENBQUMsQ0FBQztBQUN4QyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUNoQyxNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztBQUN2QyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUU3Qjs7Ozs7R0FLRztBQUNILFNBQVMsV0FBVyxDQUFDLEtBQWE7SUFDaEMsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsWUFBWSxDQUFDLENBQWEsRUFBRSxDQUFhO0lBQ2hELE1BQU0sQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDVCxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkIsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsTUFBYSxLQUFLO0lBQ2hCLGtCQUFrQjtJQUNsQixjQUFjLENBQUMsT0FBZTtRQUM1QixPQUFPLGlCQUFPLENBQUMsY0FB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R0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxtQkFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxjQUFjLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxFQUFVLEVBQUUsZ0JBQXlCO1FBQ2hGLElBQUksSUFBSSxHQUFHLGVBQWUsQ0FBQztRQUMzQixJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDMUM7UUFDRCxNQUFNLFlBQVksR0FDaEIsc0dBQXNHLENBQUM7UUFDekcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztDQUNGO0FBdGdCRCxzQkFzZ0JDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCBzdGVsbGFyIGZyb20gJ3N0ZWxsYXItc2RrJztcbmltcG9ydCAqIGFzIGhleCBmcm9tICdAc3RhYmxlbGliL2hleCc7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgYmFzZTMyIGZyb20gJ2hpLWJhc2UzMic7XG5pbXBvcnQgc2hhNTEyIGZyb20gJ2pzLXNoYTUxMic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQWRkcmVzcywgRW5jb2RlZFR4LCBTZWVkIH0gZnJvbSAnLi9pZmFjZXMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBTZWVkRW5jb2RpbmcgfSBmcm9tICcuL3NlZWRFbmNvZGluZyc7XG5pbXBvcnQgKiBhcyBhbGdvTmFjbCBmcm9tICdhbGdvc2RrL2Rpc3QvY2pzL3NyYy9uYWNsL25hY2xXcmFwcGVycyc7XG5pbXBvcnQgKiBhcyBlbmNvZGluZyBmcm9tICdhbGdvc2RrL2Rpc3QvY2pzL3NyYy9lbmNvZGluZy9lbmNvZGluZyc7XG5pbXBvcnQge1xuICBCYXNlVXRpbHMsXG4gIE5vdEltcGxlbWVudGVkRXJyb3IsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBJbnZhbGlkS2V5LFxuICBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleSxcbiAgaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXksXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmNvbnN0IEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RIID0gNDtcbmNvbnN0IEFMR09SQU5EX1NFRURfTEVOR1RIID0gNTg7XG5jb25zdCBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIID0gMzY7XG5jb25zdCBBTEdPUkFORF9UUkFOU0FDVElPTl9MRU5HVEggPSA1MjtcbmNvbnN0IFNFRURfQllURVNfTEVOR1RIID0gMzI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgb25seSBjb21wb3NlZCBvZiBoZXggY2hhcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1heWJlIFRoZSBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHN0cmluZyBjb25zaXN0cyBvZiBvbmx5IGhleCBjaGFyYWN0ZXJzLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmZ1bmN0aW9uIGFsbEhleENoYXJzKG1heWJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eKFswLTlhLWZdezJ9KSskL2kudGVzdChtYXliZSk7XG59XG5cbi8qKlxuICogQ29uY2F0QXJyYXlzIHRha2VzIHR3byBhcnJheSBhbmQgcmV0dXJucyBhIGpvaW50IGFycmF5IG9mIGJvdGhcbiAqXG4gKiBAcGFyYW0gYSB7VWludDhBcnJheX0gZmlyc3QgYXJyYXkgdG8gY29uY2F0XG4gKiBAcGFyYW0gYiB7VWludDhBcnJheX0gc2Vjb25kIGFycmF5XG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gYSBuZXcgYXJyYXkgY29udGFpbmluZyBhbGwgZWxlbWVudHMgb2YgJ2EnIGZvbGxvd2VkIGJ5IGFsbCBlbGVtZW50cyBvZiAnYidcbiAqL1xuZnVuY3Rpb24gY29uY2F0QXJyYXlzKGE6IFVpbnQ4QXJyYXksIGI6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgYyA9IG5ldyBVaW50OEFycmF5KGEubGVuZ3RoICsgYi5sZW5ndGgpO1xuICBjLnNldChhKTtcbiAgYy5zZXQoYiwgYS5sZW5ndGgpO1xuICByZXR1cm4gYztcbn1cblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhbGdvc2RrLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eElkLmxlbmd0aCAhPT0gMTA0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbEhleENoYXJzKHR4SWQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleShrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYnVmZmVyXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnVmZmVyIC0gdGhlIGJ1ZmZlciB0byBiZSBjb252ZXJ0ZWQgdG8gaGV4XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICAgKi9cbiAgdG9IZXgoYnVmZmVyOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gaGV4LmVuY29kZShidWZmZXIsIHRydWUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignaXNWYWxpZFNpZ25hdHVyZSBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2hhc2ggbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIEtleXNcbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBrZXkxIC0ga2V5IHRvIGJlIGNvbXBhcmVcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBrZXkyIC0ga2V5IHRvIGJlIGNvbXBhcmVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gcmV0dXJucyB0cnVlIGlmIGJvdGgga2V5cyBhcmUgZXF1YWxcbiAgICovXG4gIGFyZUtleXNFcXVhbChrZXkxOiBVaW50OEFycmF5LCBrZXkyOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hY2wudmVyaWZ5KGtleTEsIGtleTIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBVaW50OEFycmF5IG9mIHRoZSBnaXZlbiBoZXggc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSB0aGUgaGV4IHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgVWludDhBcnJheSB2YWx1ZVxuICAgKi9cbiAgdG9VaW50OEFycmF5KHN0cjogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBhIHNlZWQgaXMgdmFsaWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWVkIC0gdGhlIHNlZWQgdG8gYmUgdmFsaWRhdGVkXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRydWUgaWYgdGhlIHNlZWQgaXMgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRTZWVkKHNlZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygc2VlZCAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChzZWVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9MRU5HVEgpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFRyeSB0byBkZWNvZGVcbiAgICBsZXQgZGVjb2RlZDtcbiAgICB0cnkge1xuICAgICAgZGVjb2RlZCA9IHRoaXMuZGVjb2RlU2VlZChzZWVkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ29tcHV0ZSBjaGVja3N1bVxuICAgIGNvbnN0IGNoZWNrc3VtID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICBzaGE1MTIuc2hhNTEyXzI1Ni5hcnJheShkZWNvZGVkLnNlZWQpLnNsaWNlKFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsIFNFRURfQllURVNfTEVOR1RIKSxcbiAgICApO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNoZWNrc3VtIG1hdGNoZXMgdGhlIG9uZSBmcm9tIHRoZSBkZWNvZGVkIHNlZWRcbiAgICByZXR1cm4gXy5pc0VxdWFsKGNoZWNrc3VtLCBkZWNvZGVkLmNoZWNrc3VtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgYW4gYWxnbyBzZWVkXG4gICAqXG4gICAqIEBwYXJhbSAge0J1ZmZlcn0gc2VjcmV0S2V5IC0gdGhlIHZhbGlkIHNlY3JldEtleSAuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHNlZWQgdG8gYmUgdmFsaWRhdGVkLlxuICAgKi9cbiAgZW5jb2RlU2VlZChzZWNyZXRLZXk6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgLy8gZ2V0IHNlZWRcbiAgICBjb25zdCBzZWVkID0gc2VjcmV0S2V5LnNsaWNlKDAsIFNFRURfQllURVNfTEVOR1RIKTtcbiAgICAvLyBjb21wdXRlIGNoZWNrc3VtXG4gICAgY29uc3QgY2hlY2tzdW0gPSBCdWZmZXIuZnJvbShcbiAgICAgIHNoYTUxMi5zaGE1MTJfMjU2LmFycmF5KHNlZWQpLnNsaWNlKFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsIFNFRURfQllURVNfTEVOR1RIKSxcbiAgICApO1xuICAgIGNvbnN0IGVuY29kZWRTZWVkID0gYmFzZTMyLmVuY29kZShjb25jYXRBcnJheXMoc2VlZCwgY2hlY2tzdW0pKTtcblxuICAgIHJldHVybiBlbmNvZGVkU2VlZC50b1N0cmluZygpLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfTEVOR1RIKTsgLy8gcmVtb3ZpbmcgdGhlIGV4dHJhICc9PT09J1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZVNlZWQgZGVjb2RlcyBhbiBhbGdvIHNlZWRcbiAgICpcbiAgICogRGVjb2RpbmcgYWxnbyBzZWVkIGlzIHNhbWUgYXMgZGVjb2RpbmcgYWRkcmVzcy5cbiAgICogTGF0ZXN0IHZlcnNpb24gb2YgYWxnbyBzZGsgKDEuOSwgYXQgdGhpcyB3cml0aW5nKSBkb2VzIG5vdCBleHBvc2UgZXhwbGljaXQgbWV0aG9kIGZvciBkZWNvZGluZyBzZWVkLlxuICAgKiBQYXJhbWV0ZXIgaXMgZGVjb2RlZCBhbmQgc3BsaXQgaW50byBzZWVkIGFuZCBjaGVja3N1bS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSBoZXggb3IgYmFzZTY0IGVuY29kZWQgc2VlZCB0byBiZSB2YWxpZGF0ZWRcbiAgICogQHJldHVybnMge1NlZWR9IC0gdmFsaWRhdGVkIG9iamVjdCBTZWVkXG4gICAqL1xuICBkZWNvZGVTZWVkKHNlZWQ6IHN0cmluZyk6IFNlZWQge1xuICAgIC8vIHRyeSB0byBkZWNvZGVcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTMyLmRlY29kZS5hc0J5dGVzKHNlZWQpO1xuXG4gICAgLy8gU2FuaXR5IGNoZWNrXG4gICAgaWYgKGRlY29kZWQubGVuZ3RoICE9PSBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIKSB0aHJvdyBuZXcgRXJyb3IoJ3NlZWQgc2VlbXMgdG8gYmUgbWFsZm9ybWVkJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZWQ6IG5ldyBVaW50OEFycmF5KGRlY29kZWQuc2xpY2UoMCwgQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCAtIEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RIKSksXG4gICAgICBjaGVja3N1bTogbmV3IFVpbnQ4QXJyYXkoZGVjb2RlZC5zbGljZShTRUVEX0JZVEVTX0xFTkdUSCwgQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgc2lnbmF0dXJlIGZvciBtZXNzYWdlIGlzIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0gcHViIHtVaW50OEFycmF5fSBwdWJsaWMga2V5XG4gICAqIEBwYXJhbSBtZXNzYWdlIHtVaW50OEFycmF5fSBzaWduZWQgbWVzc2FnZVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIHtCdWZmZXJ9IHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkLlxuICAgKi9cbiAgdmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2U6IFVpbnQ4QXJyYXksIHNpZ25hdHVyZTogQnVmZmVyLCBwdWI6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmFjbC5zaWduLmRldGFjaGVkLnZlcmlmeShtZXNzYWdlLCBzaWduYXR1cmUsIHB1Yik7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBFZDI1NTE5IHB1YmxpYyBrZXkgaW50byBhbiBhbGdvcmFuZCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHBrIFRoZSBFZDI1NTE5IHB1YmxpYyBrZXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvZmVhdHVyZXMvYWNjb3VudHMvI3RyYW5zZm9ybWF0aW9uLXB1YmxpYy1rZXktdG8tYWxnb3JhbmQtYWRkcmVzc1xuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYWxnb3JhbmQgYWRkcmVzcy5cbiAgICovXG4gIHB1YmxpY0tleVRvQWxnb0FkZHJlc3MocGs6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogQnVmZmVyLmZyb20ocGspLnRvU3RyaW5nKCdoZXgnKSB9KS5nZXRBZGRyZXNzKCk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHVuc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gdHhuIFRoZSBlbmNvZGVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGVjb2RhYmxlVW5zaWduZWRBbGdvVHhuKHR4bjogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBhbGdvc2RrLmRlY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24odHhuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBzaWduZWQgYWxnbyB0cmFuc2FjdGlvbiBjYW4gYmUgZGVjb2RlZC5cbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSB0eG4gVGhlIGVuY29kZWQgc2lnbmVkIHRyYW5zYWN0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gY2FuIGJlIGRlY29kZWQsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGVjb2RhYmxlU2lnbmVkVHJhbnNhY3Rpb24odHhuOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24odHhuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheSB8IHN0cmluZ30gdHhuQnl0ZXMgVGhlIGVuY29kZWQgdW5zaWduZWQgb3Igc2lnbmVkIHR4bi5cbiAgICogQHJldHVybnMge0VuY29kZWRUeH0gVGhlIGRlY29kZWQgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBkZWNvZGVBbGdvVHhuKHR4bkJ5dGVzOiBVaW50OEFycmF5IHwgc3RyaW5nKTogRW5jb2RlZFR4IHtcbiAgICBsZXQgYnVmZmVyID1cbiAgICAgIHR5cGVvZiB0eG5CeXRlcyA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBCdWZmZXIuZnJvbSh0eG5CeXRlcywgYWxsSGV4Q2hhcnModHhuQnl0ZXMpID8gJ2hleCcgOiAnYmFzZTY0JylcbiAgICAgICAgOiBCdWZmZXIuZnJvbSh0eG5CeXRlcyk7XG5cbiAgICAvLyBJbiBvcmRlciB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGtleXJlZyB0cmFuc2FjdGlvbnMgZW5jb2RlZCB3aXRoXG4gICAgLy8gZm9ya2VkIGFsZ29zZGsgMS4yLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9hbGdvc2RrLWJpdGdvKSxcbiAgICAvLyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gaXMgZXh0cmFjdGVkIGFuZCBwYXJzZWQgZm9sbG93aW5nIHRoZSBsYXRlc3QgYWxnb3Nka1xuICAgIC8vIHJlbGVhc2Ugc3RhbmRhcmQuXG4gICAgLy8gVGhpcyB3YXkgd2UgY2FuIGRlY29kZSB0cmFuc2FjdGlvbnMgc3VjY2Vzc2Z1bGx5IGJ5IHN0aWxsIG1haW50YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlcik7XG4gICAgaWYgKFxuICAgICAgZGVjb2RlZFR4LnR4biAmJlxuICAgICAgZGVjb2RlZFR4LnR4bi50eXBlID09PSAna2V5cmVnJyAmJlxuICAgICAgZGVjb2RlZFR4LnR4bi52b3RlZnN0ICYmXG4gICAgICBkZWNvZGVkVHgudHhuLnZvdGVsc3QgJiZcbiAgICAgIGRlY29kZWRUeC50eG4udm90ZWtkXG4gICAgKSB7XG4gICAgICBkZWNvZGVkVHgudHhuLnZvdGVrZXkgPSBkZWNvZGVkVHgudHhuLnZvdGVrZXkgfHwgZGVjb2RlZFR4Lm1zaWcuc3Vic2lnWzBdLnBrO1xuICAgICAgZGVjb2RlZFR4LnR4bi5zZWxrZXkgPSBkZWNvZGVkVHgudHhuLnNlbGtleSB8fCBkZWNvZGVkVHgubXNpZy5zdWJzaWdbMF0ucGs7XG4gICAgICBidWZmZXIgPSBkZWNvZGVkVHgubXNpZyB8fCBkZWNvZGVkVHguc2lnID8gZW5jb2RpbmcuZW5jb2RlKGRlY29kZWRUeCkgOiBlbmNvZGluZy5lbmNvZGUoZGVjb2RlZFR4LnR4bik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLnRyeVRvRGVjb2RlVW5zaWduZWRUcmFuc2FjdGlvbihidWZmZXIpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWdub3JlIGVycm9yIHRvIHRyeSBkaWZmZXJlbnQgZm9ybWF0XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLnRyeVRvRGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY2Fubm90IGJlIGRlY29kZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGRlY29kZSBhIHNpZ25lZCBBbGdvIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBidWZmZXIgdGhlIGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMgeyBFbmNvZGVkVHggfSB0aGUgZGVjb2RlZCBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICogQHRocm93cyBlcnJvciBpZiBpdCBpcyBub3QgYSB2YWxpZCBlbmNvZGVkIHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgdHJ5VG9EZWNvZGVTaWduZWRUcmFuc2FjdGlvbihidWZmZXI6IEJ1ZmZlcik6IEVuY29kZWRUeCB7XG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoXG4gICAgLy8gcmV0dXJuIGFsZ29zZGsuVHJhbnNhY3Rpb24uZnJvbV9vYmpfZm9yX2VuY29kaW5nKGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKS50eG4pO1xuICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kL2pzLWFsZ29yYW5kLXNkay9pc3N1ZXMvMzY0XG4gICAgLy8gXCIuLi5zb21lIHBhcnRzIG9mIHRoZSBjb2RlYmFzZSB0cmVhdCB0aGUgb3V0cHV0IG9mIFRyYW5zYWN0aW9uLmZyb21fb2JqX2Zvcl9lbmNvZGluZyBhcyBFbmNvZGVkVHJhbnNhY3Rpb24uXG4gICAgLy8gVGhleSBuZWVkIHRvIGJlIGZpeGVkKG9yIHdlIGF0IGxlYXN0IG5lZWQgdG8gbWFrZSBpdCBzbyBUcmFuc2FjdGlvbiBjb25mb3JtcyB0byBFbmNvZGVkVHJhbnNhY3Rpb24pLlwiXG4gICAgY29uc3QgdHggPSBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcik7XG5cbiAgICBjb25zdCBzaWduZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHNpZ25lZEJ5OiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0eC5tc2lnICYmIHR4Lm1zaWcuc3Vic2lnKSB7XG4gICAgICBmb3IgKGNvbnN0IHNpZyBvZiB0eC5tc2lnLnN1YnNpZykge1xuICAgICAgICBjb25zdCBhZGRyID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHNpZy5wayk7XG4gICAgICAgIHNpZ25lcnMucHVzaChhZGRyKTtcbiAgICAgICAgaWYgKHNpZy5zKSB7XG4gICAgICAgICAgc2lnbmVkQnkucHVzaChhZGRyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByYXdUcmFuc2FjdGlvbjogbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSxcbiAgICAgIHR4bjogdHgudHhuLFxuICAgICAgc2lnbmVkOiB0cnVlLFxuICAgICAgc2lnbmVyczogc2lnbmVycyxcbiAgICAgIHNpZ25lZEJ5OiBzaWduZWRCeSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBkZWNvZGUgYW4gdW5zaWduZWQgQWxnbyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gYnVmZmVyIHRoZSBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtFbmNvZGVkVHh9IHRoZSBkZWNvZGVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqIEB0aHJvd3MgZXJyb3IgaWYgaXQgaXMgbm90IGEgdmFsaWQgZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgdHJ5VG9EZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcjogQnVmZmVyKTogRW5jb2RlZFR4IHtcbiAgICBjb25zdCB0eG4gPSBhbGdvc2RrLmRlY29kZVVuc2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmF3VHJhbnNhY3Rpb246IG5ldyBVaW50OEFycmF5KGJ1ZmZlciksXG4gICAgICB0eG4sXG4gICAgICBzaWduZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBlbmNvZGVPYmogdGFrZXMgYSBqYXZhc2NyaXB0IG9iamVjdCBhbmQgcmV0dXJucyBpdHMgbXNncGFjayBlbmNvZGluZ1xuICAgKiBOb3RlIHRoYXQgdGhlIGVuY29kaW5nIHNvcnRzIHRoZSBmaWVsZHMgYWxwaGFiZXRpY2FsbHlcbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBhbnk+fSBvYmoganMgb2JqXG4gICAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBVaW50OEFycmF5IGJpbmFyeSByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgZW5jb2RlT2JqKG9iajogUmVjb3JkPHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCwgYW55Pik6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBhbGdvc2RrLmVuY29kZU9iaihvYmopO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZU9iaiB0YWtlcyBhIFVpbnQ4QXJyYXkgYW5kIHJldHVybnMgaXRzIGphdmFzY3JpcHQgb2JqXG4gICAqIEBwYXJhbSBvIC0gVWludDhBcnJheSB0byBkZWNvZGVcbiAgICogQHJldHVybnMgb2JqZWN0XG4gICAqL1xuICBkZWNvZGVPYmoobzogQXJyYXlMaWtlPG51bWJlcj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gYWxnb3Nkay5kZWNvZGVPYmoobyk7XG4gIH1cblxuICAvKipcbiAgICogc2VjcmV0S2V5VG9NbmVtb25pYyB0YWtlcyBhbiBBbGdvcmFudCBzZWNyZXQga2V5IGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIG1uZW1vbmljXG4gICAqXG4gICAqIEBwYXJhbSBzayAtIEFsZ29yYW50IHNlY3JldCBrZXlcbiAgICogQHJldHVybiBTZWNyZXQga2V5IGlzIGFzc29jaWF0ZWQgbW5lbW9uaWNcbiAgICovXG4gIHNlY3JldEtleVRvTW5lbW9uaWMoc2s6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2tWYWxpZCA9IEJ1ZmZlci5mcm9tKHNrLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRQcml2YXRlS2V5KHNrVmFsaWQudG9TdHJpbmcoJ2hleCcpKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoYFRoZSBzZWNyZXQga2V5OiAke3NrLnRvU3RyaW5nKCdoZXgnKX0gaXMgaW52YWxpZGApO1xuICAgIH1cbiAgICBjb25zdCBza1VuaXQ4QXJyYXkgPSBCdWZmZXIuZnJvbShzayk7XG4gICAgcmV0dXJuIGFsZ29zZGsuc2VjcmV0S2V5VG9NbmVtb25pYyhza1VuaXQ4QXJyYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlZWRGcm9tTW5lbW9uaWMgY29udmVydHMgYSBtbmVtb25pYyBnZW5lcmF0ZWQgdXNpbmcgdGhpcyBsaWJyYXJ5IGludG8gdGhlIHNvdXJjZSBrZXkgdXNlZCB0byBjcmVhdGUgaXRcbiAgICogSXQgcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgcGFzc2VkIG1uZW1vbmljIGhhcyBhbiBpbmNvcnJlY3QgY2hlY2tzdW0sIGlmIHRoZSBudW1iZXIgb2Ygd29yZHMgaXMgdW5leHBlY3RlZCwgb3IgaWYgb25lXG4gICAqIG9mIHRoZSBwYXNzZWQgd29yZHMgaXMgbm90IGZvdW5kIGluIHRoZSB3b3JkcyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBtbmVtb25pYyAtIDI1IHdvcmRzIG1uZW1vbmljXG4gICAqIEByZXR1cm5zIDMyIGJ5dGVzIGxvbmcgc2VlZFxuICAgKi9cbiAgc2VlZEZyb21NbmVtb25pYyhtbmVtb25pYzogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGFsZ29zZGsubW5lbW9uaWNUb01hc3RlckRlcml2YXRpb25LZXkobW5lbW9uaWMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGtleVBhaXJGcm9tU2VlZCBnZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggc2VjcmV0S2V5IGFuZCBwdWJsaWNLZXkgdXNpbmcgdGhlIGFsZ29zZGtcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIEtleVBhaXJcbiAgICovXG4gIGtleVBhaXJGcm9tU2VlZChzZWVkOiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3QgbW4gPSB0aGlzLm1uZW1vbmljRnJvbVNlZWQoc2VlZCk7XG4gICAgY29uc3QgYmFzZTY0UHJpdmF0ZUtleSA9IGFsZ29zZGsubW5lbW9uaWNUb1NlY3JldEtleShtbikuc2s7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlS2V5UGFpcihiYXNlNjRQcml2YXRlS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIG5ldyBgS2V5UGFpcmAgb2JqZWN0IGZyb20gdGhlIGdpdmVuIHByaXZhdGUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZTY0UHJpdmF0ZUtleSA2NCBieXRlcyBsb25nIHByaXZhdGVLZXlcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUtleVBhaXIoYmFzZTY0UHJpdmF0ZUtleTogVWludDhBcnJheSk6IEtleVBhaXIge1xuICAgIGNvbnN0IHNrID0gYmFzZTY0UHJpdmF0ZUtleS5zbGljZSgwLCAzMik7XG4gICAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHJ2OiBCdWZmZXIuZnJvbShzaykudG9TdHJpbmcoJ2hleCcpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZVByaXZhdGVLZXkgZ2VuZXJhdGVzIGEgc2VlZCB3aXRoIGEgbW5lbW9uaWMgYW5kIHVzaW5nIGFsZ29zZGsuXG4gICAqXG4gICAqIEBwYXJhbSBzZWVkIDMyIGJ5dGVzIGxvbmcgc2VlZFxuICAgKiBAcmV0dXJucyBtbmVtb25pYyAtIDI1IHdvcmRzIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWNcbiAgICovXG4gIHByb3RlY3RlZCBtbmVtb25pY0Zyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBhbGdvc2RrLm1hc3RlckRlcml2YXRpb25LZXlUb01uZW1vbmljKHNlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUga2V5IHdpdGggdGhlIHN0ZWxsYXItc2RrXG4gICAqXG4gICAqIEBwYXJhbSBwdWJsaWNLZXlcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgcHJvdGVjdGVkIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5U3RlbGxhcihwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIGtleSB3aXRoIHRoZSBzdGVsbGFyLXNka1xuICAgKlxuICAgKiBAcGFyYW0gcHVibGljS2V5XG4gICAqIEByZXR1cm5zIEJ1ZmZlclxuICAgKi9cbiAgcHJvdGVjdGVkIGRlY29kZUVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyKHB1YmxpY0tleTogc3RyaW5nKTogQnVmZmVyIHtcbiAgICByZXR1cm4gc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBzdGVsbGFyIHNlZWQgdG8gYWxnb3JhbmQgZW5jb2RpbmdcbiAgICpcbiAgICogQHBhcmFtIHNlZWRcbiAgICogQHJldHVybnMgc3RyaW5nIHRoZSBlbmNvZGVkIHNlZWRcbiAgICovXG4gIGNvbnZlcnRGcm9tU3RlbGxhclNlZWQoc2VlZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU2VlZEVuY29kaW5nLmVuY29kZShzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5U2VjcmV0U2VlZChzZWVkKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhZGRyZXNzIGVuY29kZWQgd2l0aCBhbGdvc2RrXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZW5jb2RlQWRkcmVzcyhhZGRyOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKGFkZHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhZGRyZXNzIGRlY29kZWQgd2l0aCBhbGdvc2RrXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyXG4gICAqIEByZXR1cm5zIEFkZHJlc3NcbiAgICovXG4gIGRlY29kZUFkZHJlc3MoYWRkcjogc3RyaW5nKTogQWRkcmVzcyB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhhZGRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhZGRyZXNzIGludG8gYW4gQUxHTyBvbmVcbiAgICogSWYgdGhlIGdpdmVuIGRhdGEgaXMgYSBTdGVsbGFyIGFkZHJlc3Mgb3IgcHVibGljIGtleSwgaXQgaXMgY29udmVydGVkIHRvIEFMR08gYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3NPclB1YktleSBhbiBBTEdPIGFkZHJlc3MsIG9yIGFuIFN0ZWxsYXIgYWRkcmVzcyBvciBwdWJsaWMga2V5XG4gICAqIEByZXR1cm5zIGFkZHJlc3MgYWxnbyBhZGRyZXNzIHN0cmluZ1xuICAgKi9cbiAgc3RlbGxhckFkZHJlc3NUb0FsZ29BZGRyZXNzKGFkZHJlc3NPclB1YktleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyB3ZSBoYXZlIGFuIEFsZ29yYW5kIGFkZHJlc3NcbiAgICBpZiAodGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzT3JQdWJLZXkpKSB7XG4gICAgICByZXR1cm4gYWRkcmVzc09yUHViS2V5O1xuICAgIH1cbiAgICAvLyB3ZSBoYXZlIGEgc3RlbGxhciBrZXlcbiAgICBpZiAodGhpcy5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIoYWRkcmVzc09yUHViS2V5KSkge1xuICAgICAgY29uc3Qgc3RlbGxhclB1YiA9IHRoaXMuZGVjb2RlRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIoYWRkcmVzc09yUHViS2V5KTtcbiAgICAgIGNvbnN0IGFsZ29BZGRyZXNzID0gdGhpcy5lbmNvZGVBZGRyZXNzKHN0ZWxsYXJQdWIpO1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZEFkZHJlc3MoYWxnb0FkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBhbGdvQWRkcmVzcztcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbnZlcnQgU3RlbGxhciBhZGRyZXNzIHRvIGFuIEFsZ29yYW5kIGFkZHJlc3MgdmlhIHB1YmtleS4nKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOZWl0aGVyIGFuIEFsZ29yYW5kIGFkZHJlc3Mgbm9yIGEgc3RlbGxhciBwdWJrZXkuJyk7XG4gIH1cblxuICAvKipcbiAgICogbXVsdGlzaWdBZGRyZXNzIHRha2VzIG11bHRpc2lnIG1ldGFkYXRhIChwcmVpbWFnZSkgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgaHVtYW4gcmVhZGFibGUgQWxnb3JhbmQgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZlcnNpb24gbXV0bGlzaWcgdmVyc2lvblxuICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkIG11bHRpc2lnIHRocmVzaG9sZFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhZGRycyBsaXN0IG9mIEFsZ29yYW5kIGFkZHJlc3Nlc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBodW1hbiByZWFkYWJsZSBBbGdvcmFuZCBhZGRyZXNzLlxuICAgKi9cbiAgbXVsdGlzaWdBZGRyZXNzKHZlcnNpb246IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIGFkZHJzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFsZ29zZGsubXVsdGlzaWdBZGRyZXNzKHtcbiAgICAgIHZlcnNpb24sXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBhZGRycyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZUFjY291bnQgZ2VuZXJhdGVzIHVuIGFjY291bnQgd2l0aCBhIHNlY3JldEtleSBhbmQgYW4gYWRkcmVzc1xuICAgKlxuICAgKiBGdW5jdGlvbiBoYXMgbm90IHBhcmFtc1xuICAgKiBAcmV0dXJucyBBY2NvdW50XG4gICAqL1xuICBnZW5lcmF0ZUFjY291bnQoKTogYWxnb3Nkay5BY2NvdW50IHtcbiAgICByZXR1cm4gYWxnb3Nkay5nZW5lcmF0ZUFjY291bnQoKTtcbiAgfVxuXG4gIGdlbmVyYXRlQWNjb3VudEZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBhbGdvc2RrLkFjY291bnQge1xuICAgIGNvbnN0IGtleXMgPSBuYWNsLnNpZ24ua2V5UGFpci5mcm9tU2VlZChzZWVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWRkcjogYWxnb3Nkay5lbmNvZGVBZGRyZXNzKGtleXMucHVibGljS2V5KSxcbiAgICAgIHNrOiBrZXlzLnNlY3JldEtleSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBUeCBJRCBmcm9tIGFuIGVuY29kZWQgbXVsdGlzaWcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogVGhpcyBpcyBkb25lIGJlY2F1c2Ugb2YgYSBjaGFuZ2UgbWFkZSBvbiB2ZXJzaW9uIDEuMTAuMSBvbiBhbGdvc2RrIHNvIG1ldGhvZCB0eElEKCkgb25seSBzdXBwb3J0cyBTaWduZWRUcmFuc2FjdGlvbiB0eXBlLlxuICAgKiAoaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kL2pzLWFsZ29yYW5kLXNkay9ibG9iL2RldmVsb3AvQ0hBTkdFTE9HLm1kIzExMDEpXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eEJhc2U2NCAtIGVuY29kZWQgYmFzZTY0IG11bHRpc2lnIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdHJhbnNhY3Rpb24gSURcbiAgICovXG4gIGdldE11bHRpc2lnVHhJRCh0eEJhc2U2NDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eEJ5dGVzID0gQnVmZmVyLmZyb20odHhCYXNlNjQsICdiYXNlNjQnKTtcbiAgICBjb25zdCBkZWNvZGVTaWduVHggPSBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKHR4Qnl0ZXMpO1xuICAgIGNvbnN0IHdlbGxGb3JtZWREZWNvZGVkU2lnblR4ID0gZGVjb2RlU2lnblR4LnR4bi5nZXRfb2JqX2Zvcl9lbmNvZGluZygpO1xuICAgIGNvbnN0IHR4Rm9yRW5jb2RpbmcgPSB7IG1zaWc6IGRlY29kZVNpZ25UeC5tc2lnLCB0eG46IHdlbGxGb3JtZWREZWNvZGVkU2lnblR4IH07XG4gICAgY29uc3QgZW5fbXNnID0gZW5jb2RpbmcuZW5jb2RlKHR4Rm9yRW5jb2RpbmcpO1xuICAgIGNvbnN0IHRhZyA9IEJ1ZmZlci5mcm9tKFs4NCwgODhdKTtcbiAgICBjb25zdCBnaCA9IEJ1ZmZlci5mcm9tKGNvbmNhdEFycmF5cyh0YWcsIGVuX21zZykpO1xuICAgIGNvbnN0IGhhc2ggPSBCdWZmZXIuZnJvbShhbGdvTmFjbC5nZW5lcmljSGFzaChnaCkpO1xuICAgIHJldHVybiBiYXNlMzIuZW5jb2RlKGhhc2gpLnNsaWNlKDAsIEFMR09SQU5EX1RSQU5TQUNUSU9OX0xFTkdUSCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIHRyYW5zYWN0aW9uIGRhdGEgaXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSB0b2tlblxuICAgKiBAcGFyYW0gYW1vdW50IHRoZSBhbW91bnQgaW4gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGZyb20gdGhlIG9yaWdpbmF0ZWQgYWRkcmVzc1xuICAgKiBAcGFyYW0gdG8gdGhlIHRhcmdldCBhZGRyZXNzXG4gICAqIEBwYXJhbSBjbG9zZVJlbWFpbmRlclRvIChvcHRpb25hbCkgYWRkcmVzcyB0byBzZW5kIHJlbWFpbmluZyB1bml0cyBpbiBvcmlnaW5hdGVkIGFkZHJlc3NcbiAgICogQHJldHVybnMgJ2VuYWJsZVRva2VuJyBvciAnZGlzYWJsZVRva2VuJ1xuICAgKi9cbiAgZ2V0VG9rZW5UeFR5cGUoYW1vdW50OiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZywgY2xvc2VSZW1haW5kZXJUbz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHR5cGUgPSAndHJhbnNmZXJUb2tlbic7XG4gICAgaWYgKGFtb3VudCA9PT0gJzAnICYmIGZyb20gPT09IHRvKSB7XG4gICAgICB0eXBlID0gIWNsb3NlUmVtYWluZGVyVG8gPyAnZW5hYmxlVG9rZW4nIDogJ2Rpc2FibGVUb2tlbic7XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlmIHRoZSBrZXkgaXMgYSB2YWxpZCBiYXNlNjQgc3RyaW5nXG4gICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB2YWxpZGF0ZVxuICAgKi9cbiAgdmFsaWRhdGVCYXNlNjQoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWtleSB8fCB0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJhc2U2NCBzdHJpbmcnKTtcbiAgICB9XG4gICAgY29uc3QgYmFzZTY0UmVnRXhwID1cbiAgICAgIC9eKD86W2EtekEtWjAtOStcXC9dezR9KSooPzp8KD86W2EtekEtWjAtOStcXC9dezN9PSl8KD86W2EtekEtWjAtOStcXC9dezJ9PT0pfCg/OlthLXpBLVowLTkrXFwvXXsxfT09PSkpJC87XG4gICAgaWYgKCFiYXNlNjRSZWdFeHAudGVzdChrZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYmFzZTY0IHN0cmluZycpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { KeyPair } from './keyPair';
|
|
2
|
+
export { Transaction } from '../eth/transaction';
|
|
3
|
+
export { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
export { TransferBuilder } from './transferBuilder';
|
|
5
|
+
import * as Interface from '../eth/iface';
|
|
6
|
+
import * as Utils from './utils';
|
|
7
|
+
export { Interface, Utils };
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/avaxc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Utils = exports.Interface = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
|
|
23
|
+
var keyPair_1 = require("./keyPair");
|
|
24
|
+
Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
|
|
25
|
+
var transaction_1 = require("../eth/transaction");
|
|
26
|
+
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
|
|
27
|
+
var transactionBuilder_1 = require("./transactionBuilder");
|
|
28
|
+
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
29
|
+
var transferBuilder_1 = require("./transferBuilder");
|
|
30
|
+
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
31
|
+
const Interface = __importStar(require("../eth/iface"));
|
|
32
|
+
exports.Interface = Interface;
|
|
33
|
+
const Utils = __importStar(require("./utils"));
|
|
34
|
+
exports.Utils = Utils;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hdmF4Yy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUNBQW9DO0FBQTNCLGtHQUFBLE9BQU8sT0FBQTtBQUNoQixrREFBaUQ7QUFBeEMsMEdBQUEsV0FBVyxPQUFBO0FBQ3BCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBRXhCLHdEQUEwQztBQUdqQyw4QkFBUztBQUZsQiwrQ0FBaUM7QUFFYixzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9ldGgvdHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBJbnRlcmZhY2UgZnJvbSAnLi4vZXRoL2lmYWNlJztcbmltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBJbnRlcmZhY2UsIFV0aWxzIH07XG4iXX0=
|