@bitgo/account-lib 2.20.0-rc.2 → 2.20.0-rc.22
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 +195 -0
- package/dist/resources/README.md +8 -2
- package/dist/resources/trx/protobuf/tron.js +5 -1
- package/dist/src/coin/avaxc/index.js +3 -3
- package/dist/src/coin/avaxc/keyPair.d.ts +1 -2
- package/dist/src/coin/avaxc/keyPair.d.ts.map +1 -1
- package/dist/src/coin/avaxc/keyPair.js +25 -44
- package/dist/src/coin/avaxc/resources.js +3 -3
- package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/avaxc/transactionBuilder.js +22 -41
- package/dist/src/coin/avaxc/transferBuilder.js +8 -28
- package/dist/src/coin/avaxc/utils.js +14 -54
- package/dist/src/coin/celo/index.js +3 -3
- package/dist/src/coin/celo/resources.js +3 -3
- package/dist/src/coin/celo/stakingBuilder.d.ts +1 -1
- package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -1
- package/dist/src/coin/celo/stakingBuilder.js +102 -104
- package/dist/src/coin/celo/stakingCall.js +8 -26
- package/dist/src/coin/celo/stakingUtils.d.ts +1 -1
- package/dist/src/coin/celo/stakingUtils.d.ts.map +1 -1
- package/dist/src/coin/celo/stakingUtils.js +33 -34
- package/dist/src/coin/celo/transaction.js +10 -30
- package/dist/src/coin/celo/transactionBuilder.d.ts +1 -1
- package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/celo/transactionBuilder.js +96 -115
- package/dist/src/coin/celo/transferBuilder.js +8 -28
- package/dist/src/coin/celo/types.js +71 -125
- package/dist/src/coin/celo/utils.js +25 -25
- package/dist/src/coin/dot/addressInitializationBuilder.d.ts +1 -2
- package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/addressInitializationBuilder.js +60 -83
- package/dist/src/coin/dot/batchTransactionBuilder.d.ts +1 -1
- package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/batchTransactionBuilder.js +55 -78
- package/dist/src/coin/dot/claimBuilder.d.ts +1 -2
- package/dist/src/coin/dot/claimBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/claimBuilder.js +46 -68
- package/dist/src/coin/dot/errors.d.ts +1 -1
- package/dist/src/coin/dot/errors.d.ts.map +1 -1
- package/dist/src/coin/dot/errors.js +12 -33
- package/dist/src/coin/dot/iface.d.ts +1 -2
- package/dist/src/coin/dot/iface.d.ts.map +1 -1
- package/dist/src/coin/dot/iface.js +1 -1
- package/dist/src/coin/dot/index.js +3 -3
- package/dist/src/coin/dot/keyPair.d.ts +1 -2
- package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
- package/dist/src/coin/dot/keyPair.js +34 -52
- package/dist/src/coin/dot/singletonRegistry.js +6 -9
- package/dist/src/coin/dot/stakingBuilder.d.ts +1 -2
- package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/stakingBuilder.js +49 -71
- package/dist/src/coin/dot/transaction.d.ts +1 -2
- package/dist/src/coin/dot/transaction.d.ts.map +1 -1
- package/dist/src/coin/dot/transaction.js +146 -162
- package/dist/src/coin/dot/transactionBuilder.d.ts +2 -3
- package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilder.js +132 -204
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilderFactory.js +46 -65
- package/dist/src/coin/dot/transferBuilder.d.ts +1 -2
- package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transferBuilder.js +62 -85
- package/dist/src/coin/dot/txnSchema.js +17 -15
- package/dist/src/coin/dot/unnominateBuilder.d.ts +1 -1
- package/dist/src/coin/dot/unnominateBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/unnominateBuilder.js +24 -46
- package/dist/src/coin/dot/unstakeBuilder.d.ts +1 -1
- package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/unstakeBuilder.js +38 -60
- package/dist/src/coin/dot/utils.d.ts +1 -2
- package/dist/src/coin/dot/utils.d.ts.map +1 -1
- package/dist/src/coin/dot/utils.js +97 -101
- package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +1 -1
- package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/withdrawUnstakedBuilder.js +38 -60
- package/dist/src/coin/etc/index.js +3 -3
- package/dist/src/coin/etc/resources.js +3 -3
- package/dist/src/coin/etc/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/etc/transactionBuilder.js +22 -41
- package/dist/src/coin/etc/transferBuilder.js +8 -28
- package/dist/src/coin/etc/utils.js +10 -50
- package/dist/src/coin/eth/contractCall.js +8 -9
- package/dist/src/coin/eth/iface.d.ts +1 -1
- package/dist/src/coin/eth/iface.d.ts.map +1 -1
- package/dist/src/coin/eth/iface.js +1 -1
- package/dist/src/coin/eth/index.js +3 -3
- package/dist/src/coin/eth/keyPair.d.ts +1 -2
- package/dist/src/coin/eth/keyPair.d.ts.map +1 -1
- package/dist/src/coin/eth/keyPair.js +25 -44
- package/dist/src/coin/eth/transaction.d.ts +1 -2
- package/dist/src/coin/eth/transaction.d.ts.map +1 -1
- package/dist/src/coin/eth/transaction.js +48 -114
- package/dist/src/coin/eth/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/eth/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/eth/transactionBuilder.js +232 -303
- package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.js +37 -38
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.js +36 -53
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.js +32 -49
- package/dist/src/coin/eth/transferBuilder.js +58 -59
- package/dist/src/coin/eth/types.js +52 -56
- package/dist/src/coin/eth/utils.d.ts +1 -1
- package/dist/src/coin/eth/utils.d.ts.map +1 -1
- package/dist/src/coin/eth/utils.js +100 -147
- package/dist/src/coin/eth/walletUtil.d.ts +2 -0
- package/dist/src/coin/eth/walletUtil.d.ts.map +1 -1
- package/dist/src/coin/eth/walletUtil.js +4 -2
- package/dist/src/coin/eth2/keyPair.d.ts +1 -2
- package/dist/src/coin/eth2/keyPair.d.ts.map +1 -1
- package/dist/src/coin/eth2/keyPair.js +19 -37
- package/dist/src/coin/hbar/index.js +2 -2
- package/dist/src/coin/hbar/keyPair.d.ts +1 -2
- package/dist/src/coin/hbar/keyPair.d.ts.map +1 -1
- package/dist/src/coin/hbar/keyPair.js +30 -49
- package/dist/src/coin/hbar/transaction.d.ts +1 -2
- package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
- package/dist/src/coin/hbar/transaction.js +77 -146
- package/dist/src/coin/hbar/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/transactionBuilder.js +110 -193
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/hbar/transactionBuilderFactory.js +27 -45
- package/dist/src/coin/hbar/transferBuilder.d.ts +1 -1
- package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/transferBuilder.js +49 -113
- package/dist/src/coin/hbar/utils.d.ts +2 -15
- package/dist/src/coin/hbar/utils.d.ts.map +1 -1
- package/dist/src/coin/hbar/utils.js +38 -57
- package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/walletInitializationBuilder.js +42 -107
- package/dist/src/coin/near/contractCallWrapper.js +46 -65
- package/dist/src/coin/near/errors.d.ts +1 -1
- package/dist/src/coin/near/errors.d.ts.map +1 -1
- package/dist/src/coin/near/errors.js +7 -25
- package/dist/src/coin/near/iface.d.ts +1 -2
- package/dist/src/coin/near/iface.d.ts.map +1 -1
- package/dist/src/coin/near/iface.js +1 -1
- package/dist/src/coin/near/index.d.ts +3 -0
- package/dist/src/coin/near/index.d.ts.map +1 -1
- package/dist/src/coin/near/index.js +9 -3
- package/dist/src/coin/near/keyPair.d.ts +1 -2
- package/dist/src/coin/near/keyPair.d.ts.map +1 -1
- package/dist/src/coin/near/keyPair.js +23 -40
- package/dist/src/coin/near/stakingActivateBuilder.d.ts +1 -1
- package/dist/src/coin/near/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/stakingActivateBuilder.js +36 -105
- package/dist/src/coin/near/stakingDeactivateBuilder.d.ts +1 -1
- package/dist/src/coin/near/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/stakingDeactivateBuilder.js +36 -105
- package/dist/src/coin/near/stakingWithdrawBuilder.d.ts +1 -1
- package/dist/src/coin/near/stakingWithdrawBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/stakingWithdrawBuilder.js +36 -105
- package/dist/src/coin/near/transaction.d.ts +1 -2
- package/dist/src/coin/near/transaction.d.ts.map +1 -1
- package/dist/src/coin/near/transaction.js +125 -154
- package/dist/src/coin/near/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/transactionBuilder.js +81 -144
- package/dist/src/coin/near/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/near/transactionBuilderFactory.js +33 -51
- package/dist/src/coin/near/transferBuilder.d.ts +1 -1
- package/dist/src/coin/near/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/transferBuilder.js +27 -91
- package/dist/src/coin/near/utils.d.ts +1 -1
- package/dist/src/coin/near/utils.d.ts.map +1 -1
- package/dist/src/coin/near/utils.js +35 -45
- package/dist/src/coin/near/walletInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/walletInitializationBuilder.js +13 -70
- 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.js +3 -3
- package/dist/src/coin/rbtc/resources.js +3 -3
- package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/rbtc/transactionBuilder.js +21 -40
- package/dist/src/coin/rbtc/transferBuilder.js +8 -28
- package/dist/src/coin/rbtc/utils.js +10 -50
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/ataInitializationBuilder.js +52 -123
- package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +1 -1
- package/dist/src/coin/sol/ataInitializationTransaction.js +34 -57
- package/dist/src/coin/sol/iface.d.ts +1 -1
- package/dist/src/coin/sol/iface.d.ts.map +1 -1
- package/dist/src/coin/sol/iface.js +1 -1
- package/dist/src/coin/sol/index.js +3 -3
- package/dist/src/coin/sol/instructionParamsFactory.d.ts +1 -1
- package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -1
- package/dist/src/coin/sol/instructionParamsFactory.js +62 -67
- package/dist/src/coin/sol/keyPair.d.ts +1 -2
- package/dist/src/coin/sol/keyPair.d.ts.map +1 -1
- package/dist/src/coin/sol/keyPair.js +24 -42
- package/dist/src/coin/sol/solInstructionFactory.js +33 -33
- package/dist/src/coin/sol/stakingActivateBuilder.d.ts +1 -1
- package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/stakingActivateBuilder.js +45 -113
- package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +1 -1
- package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/stakingDeactivateBuilder.js +36 -104
- package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +1 -1
- package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/stakingWithdrawBuilder.js +41 -109
- package/dist/src/coin/sol/tokenEncodeDecode.js +46 -75
- package/dist/src/coin/sol/tokenTransferBuilder.d.ts +1 -1
- package/dist/src/coin/sol/tokenTransferBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/tokenTransferBuilder.js +42 -115
- package/dist/src/coin/sol/transaction.d.ts +1 -2
- package/dist/src/coin/sol/transaction.d.ts.map +1 -1
- package/dist/src/coin/sol/transaction.js +130 -221
- package/dist/src/coin/sol/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/transactionBuilder.js +104 -171
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/sol/transactionBuilderFactory.js +46 -64
- package/dist/src/coin/sol/transferBuilder.d.ts +1 -1
- package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/transferBuilder.js +37 -108
- package/dist/src/coin/sol/utils.d.ts +1 -1
- package/dist/src/coin/sol/utils.d.ts.map +1 -1
- package/dist/src/coin/sol/utils.js +49 -117
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/walletInitializationBuilder.js +39 -107
- package/dist/src/coin/stx/abstractContractBuilder.d.ts.map +1 -1
- package/dist/src/coin/stx/abstractContractBuilder.js +34 -104
- package/dist/src/coin/stx/contractBuilder.js +38 -57
- package/dist/src/coin/stx/index.js +2 -2
- package/dist/src/coin/stx/keyPair.d.ts +1 -2
- package/dist/src/coin/stx/keyPair.d.ts.map +1 -1
- package/dist/src/coin/stx/keyPair.js +39 -62
- package/dist/src/coin/stx/sendmanyBuilder.js +43 -108
- package/dist/src/coin/stx/transaction.d.ts +1 -2
- package/dist/src/coin/stx/transaction.d.ts.map +1 -1
- package/dist/src/coin/stx/transaction.js +102 -183
- package/dist/src/coin/stx/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/stx/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/stx/transactionBuilder.js +121 -218
- package/dist/src/coin/stx/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/stx/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/stx/transactionBuilderFactory.js +36 -54
- package/dist/src/coin/stx/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/stx/transferBuilder.js +41 -111
- package/dist/src/coin/stx/utils.d.ts.map +1 -1
- package/dist/src/coin/stx/utils.js +58 -65
- package/dist/src/coin/trx/address.d.ts +1 -1
- package/dist/src/coin/trx/address.d.ts.map +1 -1
- package/dist/src/coin/trx/address.js +3 -6
- package/dist/src/coin/trx/contractCallBuilder.d.ts +1 -1
- package/dist/src/coin/trx/contractCallBuilder.d.ts.map +1 -1
- package/dist/src/coin/trx/contractCallBuilder.js +100 -160
- package/dist/src/coin/trx/iface.d.ts +1 -1
- package/dist/src/coin/trx/iface.d.ts.map +1 -1
- package/dist/src/coin/trx/iface.js +1 -1
- package/dist/src/coin/trx/index.js +4 -4
- package/dist/src/coin/trx/keyPair.d.ts +1 -3
- package/dist/src/coin/trx/keyPair.d.ts.map +1 -1
- package/dist/src/coin/trx/keyPair.js +37 -57
- package/dist/src/coin/trx/transaction.d.ts +1 -3
- package/dist/src/coin/trx/transaction.d.ts.map +1 -1
- package/dist/src/coin/trx/transaction.js +84 -124
- package/dist/src/coin/trx/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/trx/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/trx/transactionBuilder.js +72 -134
- package/dist/src/coin/trx/utils.js +57 -59
- package/dist/src/coin/trx/wrappedBuilder.d.ts +1 -2
- package/dist/src/coin/trx/wrappedBuilder.d.ts.map +1 -1
- package/dist/src/coin/trx/wrappedBuilder.js +43 -101
- package/dist/src/coin/xrp/index.js +2 -2
- package/dist/src/coin/xrp/keyPair.d.ts +1 -2
- package/dist/src/coin/xrp/keyPair.d.ts.map +1 -1
- package/dist/src/coin/xrp/keyPair.js +6 -23
- package/dist/src/coin/xrp/transaction.d.ts +1 -2
- package/dist/src/coin/xrp/transaction.d.ts.map +1 -1
- package/dist/src/coin/xrp/transaction.js +13 -34
- package/dist/src/coin/xrp/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/xrp/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/xrp/transactionBuilder.js +29 -51
- package/dist/src/coin/xrp/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/xrp/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/xrp/transactionBuilderFactory.js +17 -35
- package/dist/src/coin/xrp/transferBuilder.d.ts +1 -1
- package/dist/src/coin/xrp/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/xrp/transferBuilder.js +16 -73
- package/dist/src/coin/xrp/utils.d.ts +1 -1
- package/dist/src/coin/xrp/utils.d.ts.map +1 -1
- package/dist/src/coin/xrp/utils.js +22 -25
- package/dist/src/coin/xrp/walletInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/xrp/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/xrp/walletInitializationBuilder.js +16 -73
- package/dist/src/coin/xtz/address.d.ts +1 -1
- package/dist/src/coin/xtz/address.d.ts.map +1 -1
- package/dist/src/coin/xtz/address.js +3 -6
- package/dist/src/coin/xtz/iface.d.ts +1 -1
- package/dist/src/coin/xtz/iface.d.ts.map +1 -1
- package/dist/src/coin/xtz/iface.js +1 -1
- package/dist/src/coin/xtz/index.js +4 -4
- package/dist/src/coin/xtz/keyPair.d.ts +1 -2
- package/dist/src/coin/xtz/keyPair.d.ts.map +1 -1
- package/dist/src/coin/xtz/keyPair.js +39 -59
- package/dist/src/coin/xtz/multisigUtils.js +64 -77
- package/dist/src/coin/xtz/transaction.d.ts +1 -2
- package/dist/src/coin/xtz/transaction.d.ts.map +1 -1
- package/dist/src/coin/xtz/transaction.js +175 -345
- package/dist/src/coin/xtz/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/xtz/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/xtz/transactionBuilder.js +212 -347
- package/dist/src/coin/xtz/transferBuilder.js +25 -28
- package/dist/src/coin/xtz/utils.d.ts.map +1 -1
- package/dist/src/coin/xtz/utils.js +54 -125
- package/dist/src/index.d.ts +7 -11
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +38 -44
- package/dist/src/keyPair/index.d.ts +1 -2
- package/dist/src/keyPair/index.d.ts.map +1 -1
- package/dist/src/keyPair/index.js +9 -9
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +9 -9
- package/dist/tsconfig.tsbuildinfo +21131 -16701
- package/package.json +21 -43
- package/resources/README.md +8 -2
- package/resources/trx/protobuf/tron.js +5 -1
- package/dist/browser/bitgo-account-lib.js +0 -2
- package/dist/browser/bitgo-account-lib.js.LICENSE.txt +0 -335
- package/dist/src/coin/algo/assetTransferBuilder.d.ts +0 -43
- package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +0 -1
- package/dist/src/coin/algo/assetTransferBuilder.js +0 -127
- package/dist/src/coin/algo/errors.d.ts +0 -11
- package/dist/src/coin/algo/errors.d.ts.map +0 -1
- package/dist/src/coin/algo/errors.js +0 -51
- package/dist/src/coin/algo/ifaces.d.ts +0 -46
- package/dist/src/coin/algo/ifaces.d.ts.map +0 -1
- package/dist/src/coin/algo/ifaces.js +0 -3
- package/dist/src/coin/algo/index.d.ts +0 -13
- package/dist/src/coin/algo/index.d.ts.map +0 -1
- package/dist/src/coin/algo/index.js +0 -47
- package/dist/src/coin/algo/keyPair.d.ts +0 -26
- package/dist/src/coin/algo/keyPair.d.ts.map +0 -1
- package/dist/src/coin/algo/keyPair.js +0 -95
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +0 -104
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +0 -1
- package/dist/src/coin/algo/keyRegistrationBuilder.js +0 -262
- package/dist/src/coin/algo/seedEncoding.d.ts +0 -25
- package/dist/src/coin/algo/seedEncoding.d.ts.map +0 -1
- package/dist/src/coin/algo/seedEncoding.js +0 -100
- package/dist/src/coin/algo/transaction.d.ts +0 -76
- package/dist/src/coin/algo/transaction.d.ts.map +0 -1
- package/dist/src/coin/algo/transaction.js +0 -287
- package/dist/src/coin/algo/transactionBuilder.d.ts +0 -205
- package/dist/src/coin/algo/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/algo/transactionBuilder.js +0 -445
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts +0 -16
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/coin/algo/transactionBuilderFactory.js +0 -70
- package/dist/src/coin/algo/transferBuilder.d.ts +0 -41
- package/dist/src/coin/algo/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/algo/transferBuilder.js +0 -111
- package/dist/src/coin/algo/txnSchema.d.ts +0 -7
- package/dist/src/coin/algo/txnSchema.d.ts.map +0 -1
- package/dist/src/coin/algo/txnSchema.js +0 -68
- package/dist/src/coin/algo/utils.d.ts +0 -249
- package/dist/src/coin/algo/utils.d.ts.map +0 -1
- package/dist/src/coin/algo/utils.js +0 -544
- package/dist/src/coin/baseCoin/baseKeyPair.d.ts +0 -27
- package/dist/src/coin/baseCoin/baseKeyPair.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseKeyPair.js +0 -3
- package/dist/src/coin/baseCoin/baseTransaction.d.ts +0 -71
- package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseTransaction.js +0 -94
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts +0 -128
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilder.js +0 -179
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts +0 -30
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.js +0 -20
- package/dist/src/coin/baseCoin/baseUtils.d.ts +0 -45
- package/dist/src/coin/baseCoin/baseUtils.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseUtils.js +0 -3
- package/dist/src/coin/baseCoin/blsKeyPair.d.ts +0 -75
- package/dist/src/coin/baseCoin/blsKeyPair.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/blsKeyPair.js +0 -232
- package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts +0 -50
- package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/ed25519KeyPair.js +0 -141
- package/dist/src/coin/baseCoin/enum.d.ts +0 -43
- package/dist/src/coin/baseCoin/enum.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/enum.js +0 -70
- package/dist/src/coin/baseCoin/errors.d.ts +0 -65
- package/dist/src/coin/baseCoin/errors.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/errors.js +0 -156
- package/dist/src/coin/baseCoin/iface.d.ts +0 -162
- package/dist/src/coin/baseCoin/iface.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/iface.js +0 -38
- package/dist/src/coin/baseCoin/index.d.ts +0 -12
- package/dist/src/coin/baseCoin/index.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/index.js +0 -41
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts +0 -55
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.js +0 -124
- package/dist/src/coin/cspr/constants.d.ts +0 -19
- package/dist/src/coin/cspr/constants.d.ts.map +0 -1
- package/dist/src/coin/cspr/constants.js +0 -28
- package/dist/src/coin/cspr/delegateBuilder.d.ts +0 -49
- package/dist/src/coin/cspr/delegateBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/delegateBuilder.js +0 -175
- package/dist/src/coin/cspr/ifaces.d.ts +0 -69
- package/dist/src/coin/cspr/ifaces.d.ts.map +0 -1
- package/dist/src/coin/cspr/ifaces.js +0 -3
- package/dist/src/coin/cspr/index.d.ts +0 -5
- package/dist/src/coin/cspr/index.d.ts.map +0 -1
- package/dist/src/coin/cspr/index.js +0 -29
- package/dist/src/coin/cspr/keyPair.d.ts +0 -19
- package/dist/src/coin/cspr/keyPair.d.ts.map +0 -1
- package/dist/src/coin/cspr/keyPair.js +0 -94
- package/dist/src/coin/cspr/transaction.d.ts +0 -56
- package/dist/src/coin/cspr/transaction.d.ts.map +0 -1
- package/dist/src/coin/cspr/transaction.js +0 -251
- package/dist/src/coin/cspr/transactionBuilder.d.ts +0 -125
- package/dist/src/coin/cspr/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/transactionBuilder.js +0 -383
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +0 -46
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/coin/cspr/transactionBuilderFactory.js +0 -116
- package/dist/src/coin/cspr/transferBuilder.d.ts +0 -39
- package/dist/src/coin/cspr/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/transferBuilder.js +0 -169
- package/dist/src/coin/cspr/undelegateBuilder.d.ts +0 -49
- package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/undelegateBuilder.js +0 -175
- package/dist/src/coin/cspr/utils.d.ts +0 -189
- package/dist/src/coin/cspr/utils.d.ts.map +0 -1
- package/dist/src/coin/cspr/utils.js +0 -483
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +0 -27
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/walletInitializationBuilder.js +0 -160
- package/dist/src/mpc/curves/baseCurve.d.ts +0 -18
- package/dist/src/mpc/curves/baseCurve.d.ts.map +0 -1
- package/dist/src/mpc/curves/baseCurve.js +0 -6
- package/dist/src/mpc/curves/ed25519.d.ts +0 -17
- package/dist/src/mpc/curves/ed25519.d.ts.map +0 -1
- package/dist/src/mpc/curves/ed25519.js +0 -96
- package/dist/src/mpc/curves/index.d.ts +0 -5
- package/dist/src/mpc/curves/index.d.ts.map +0 -1
- package/dist/src/mpc/curves/index.js +0 -6
- package/dist/src/mpc/hdTree.d.ts +0 -24
- package/dist/src/mpc/hdTree.d.ts.map +0 -1
- package/dist/src/mpc/hdTree.js +0 -143
- package/dist/src/mpc/shamir.d.ts +0 -26
- package/dist/src/mpc/shamir.d.ts.map +0 -1
- package/dist/src/mpc/shamir.js +0 -87
- package/dist/src/mpc/tss.d.ts +0 -98
- package/dist/src/mpc/tss.d.ts.map +0 -1
- package/dist/src/mpc/tss.js +0 -346
- package/dist/src/mpc/util.d.ts +0 -7
- package/dist/src/mpc/util.d.ts.map +0 -1
- package/dist/src/mpc/util.js +0 -38
- package/dist/src/utils/crypto.d.ts +0 -99
- package/dist/src/utils/crypto.d.ts.map +0 -1
- package/dist/src/utils/crypto.js +0 -260
- package/dist/src/utils/ed25519KeyDeriver.d.ts +0 -49
- package/dist/src/utils/ed25519KeyDeriver.d.ts.map +0 -1
- package/dist/src/utils/ed25519KeyDeriver.js +0 -92
|
@@ -4,25 +4,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Utils = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var Utils = /** @class */ (function () {
|
|
22
|
-
function Utils() {
|
|
23
|
-
}
|
|
7
|
+
const keyring_1 = require("@polkadot/keyring");
|
|
8
|
+
const decode_1 = require("@polkadot/keyring/pair/decode");
|
|
9
|
+
const Extrinsic_1 = require("@polkadot/types/extrinsic/v4/Extrinsic");
|
|
10
|
+
const util_1 = require("@polkadot/util");
|
|
11
|
+
const util_crypto_1 = require("@polkadot/util-crypto");
|
|
12
|
+
const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
13
|
+
const hi_base32_1 = __importDefault(require("hi-base32"));
|
|
14
|
+
const _1 = require(".");
|
|
15
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
16
|
+
const tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
17
|
+
const types_1 = require("@polkadot/types");
|
|
18
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
19
|
+
const PROXY_METHOD_ARG = 2;
|
|
20
|
+
class Utils {
|
|
24
21
|
/** @inheritdoc */
|
|
25
|
-
|
|
22
|
+
isValidAddress(address) {
|
|
26
23
|
try {
|
|
27
24
|
keyring_1.encodeAddress(util_1.isHex(address) ? util_1.hexToU8a(address) : keyring_1.decodeAddress(address));
|
|
28
25
|
return true;
|
|
@@ -30,37 +27,37 @@ var Utils = /** @class */ (function () {
|
|
|
30
27
|
catch (error) {
|
|
31
28
|
return false;
|
|
32
29
|
}
|
|
33
|
-
}
|
|
30
|
+
}
|
|
34
31
|
/** @inheritdoc */
|
|
35
|
-
|
|
32
|
+
isValidBlockId(hash) {
|
|
36
33
|
return util_1.isHex(hash, 256);
|
|
37
|
-
}
|
|
34
|
+
}
|
|
38
35
|
/** @inheritdoc */
|
|
39
|
-
|
|
36
|
+
isValidPrivateKey(key) {
|
|
40
37
|
try {
|
|
41
|
-
|
|
38
|
+
const decodedPrv = util_1.hexToU8a(key);
|
|
42
39
|
return decodedPrv.length === tweetnacl_1.default.sign.secretKeyLength / 2;
|
|
43
40
|
}
|
|
44
41
|
catch (e) {
|
|
45
42
|
return false;
|
|
46
43
|
}
|
|
47
|
-
}
|
|
44
|
+
}
|
|
48
45
|
/** @inheritdoc */
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
isValidPublicKey(key) {
|
|
47
|
+
let pubKey = key;
|
|
51
48
|
// convert base58 pub key to hex format
|
|
52
49
|
// tss common pub is in base58 format and decodes to length of 32
|
|
53
|
-
if (
|
|
54
|
-
|
|
50
|
+
if (sdk_core_1.isBase58(pubKey, 32)) {
|
|
51
|
+
const base58Decode = bs58_1.default.decode(pubKey);
|
|
55
52
|
pubKey = base58Decode.toString('hex');
|
|
56
53
|
}
|
|
57
|
-
return
|
|
58
|
-
}
|
|
54
|
+
return sdk_core_1.isValidEd25519PublicKey(pubKey);
|
|
55
|
+
}
|
|
59
56
|
/** @inheritdoc */
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
isValidSignature(signature) {
|
|
58
|
+
const signatureU8a = util_1.u8aToU8a(signature);
|
|
62
59
|
return [64, 65, 66].includes(signatureU8a.length);
|
|
63
|
-
}
|
|
60
|
+
}
|
|
64
61
|
/**
|
|
65
62
|
* Verifies the signature on a given message
|
|
66
63
|
*
|
|
@@ -69,36 +66,36 @@ var Utils = /** @class */ (function () {
|
|
|
69
66
|
* @param {string} address the address of the signer
|
|
70
67
|
* @returns {boolean} whether the signature is valid or not
|
|
71
68
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
verifySignature(signedMessage, signature, address) {
|
|
70
|
+
const publicKey = keyring_1.decodeAddress(address);
|
|
71
|
+
const hexPublicKey = util_1.u8aToHex(publicKey);
|
|
75
72
|
return util_crypto_1.signatureVerify(signedMessage, signature, hexPublicKey).isValid;
|
|
76
|
-
}
|
|
73
|
+
}
|
|
77
74
|
/** @inheritdoc */
|
|
78
|
-
|
|
75
|
+
isValidTransactionId(txId) {
|
|
79
76
|
return util_1.isHex(txId, 256);
|
|
80
|
-
}
|
|
77
|
+
}
|
|
81
78
|
/**
|
|
82
79
|
* decodeSeed decodes a dot seed
|
|
83
80
|
*
|
|
84
81
|
* @param {string} seed - the seed to be validated.
|
|
85
82
|
* @returns {Seed} - the object Seed
|
|
86
83
|
*/
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
decodeSeed(seed) {
|
|
85
|
+
const decoded = hi_base32_1.default.decode.asBytes(seed);
|
|
89
86
|
return {
|
|
90
87
|
seed: Buffer.from(decoded),
|
|
91
88
|
};
|
|
92
|
-
}
|
|
89
|
+
}
|
|
93
90
|
/**
|
|
94
91
|
* Helper function to capitalize the first letter of a string
|
|
95
92
|
*
|
|
96
93
|
* @param {string} val
|
|
97
94
|
* @returns {string}
|
|
98
95
|
*/
|
|
99
|
-
|
|
96
|
+
capitalizeFirstLetter(val) {
|
|
100
97
|
return val.charAt(0).toUpperCase() + val.slice(1);
|
|
101
|
-
}
|
|
98
|
+
}
|
|
102
99
|
/**
|
|
103
100
|
* Helper function to decode the internal method hex in case of a proxy transaction
|
|
104
101
|
*
|
|
@@ -106,12 +103,12 @@ var Utils = /** @class */ (function () {
|
|
|
106
103
|
* @param { metadataRpc: string; registry: TypeRegistry } options
|
|
107
104
|
* @returns {TransferArgs}
|
|
108
105
|
*/
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
decodeCallMethod(tx, options) {
|
|
107
|
+
const { registry } = options;
|
|
108
|
+
let methodCall;
|
|
112
109
|
if (typeof tx === 'string') {
|
|
113
110
|
try {
|
|
114
|
-
|
|
111
|
+
const payload = types_1.createTypeUnsafe(registry, 'ExtrinsicPayload', [
|
|
115
112
|
tx,
|
|
116
113
|
{ version: Extrinsic_1.EXTRINSIC_VERSION },
|
|
117
114
|
]);
|
|
@@ -126,22 +123,22 @@ var Utils = /** @class */ (function () {
|
|
|
126
123
|
else {
|
|
127
124
|
methodCall = registry.createType('Call', tx.method);
|
|
128
125
|
}
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
const method = methodCall.args[PROXY_METHOD_ARG];
|
|
127
|
+
const decodedArgs = method.toJSON();
|
|
131
128
|
return decodedArgs.args;
|
|
132
|
-
}
|
|
129
|
+
}
|
|
133
130
|
/**
|
|
134
131
|
* keyPairFromSeed generates an object with secretKey and publicKey using the polkadot sdk
|
|
135
132
|
* @param seed 32 bytes long seed
|
|
136
133
|
* @returns KeyPair
|
|
137
134
|
*/
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
135
|
+
keyPairFromSeed(seed) {
|
|
136
|
+
const keyring = new keyring_1.Keyring({ type: 'ed25519' });
|
|
137
|
+
const keyringPair = keyring.addFromSeed(seed);
|
|
138
|
+
const pairJson = keyringPair.toJson();
|
|
139
|
+
const decodedKeyPair = decode_1.decodePair('', util_crypto_1.base64Decode(pairJson.encoded), pairJson.encoding.type);
|
|
143
140
|
return new _1.KeyPair({ prv: Buffer.from(decodedKeyPair.secretKey).toString('hex') });
|
|
144
|
-
}
|
|
141
|
+
}
|
|
145
142
|
/**
|
|
146
143
|
* Signing function. Implement this on the OFFLINE signing device.
|
|
147
144
|
*
|
|
@@ -152,16 +149,16 @@ var Utils = /** @class */ (function () {
|
|
|
152
149
|
* @param {HexString} options.metadataRpc - metadata that is needed for dot to sign
|
|
153
150
|
* @param {TypeRegistry} options.registry - metadata that is needed for dot to sign
|
|
154
151
|
*/
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
152
|
+
createSignedTx(pair, signingPayload, transaction, options) {
|
|
153
|
+
const { registry, metadataRpc } = options;
|
|
154
|
+
const { signature } = registry
|
|
158
155
|
.createType('ExtrinsicPayload', signingPayload, {
|
|
159
156
|
version: Extrinsic_1.EXTRINSIC_VERSION,
|
|
160
157
|
})
|
|
161
|
-
.sign(pair)
|
|
158
|
+
.sign(pair);
|
|
162
159
|
// Serialize a signed transaction.
|
|
163
160
|
return this.serializeSignedTransaction(transaction, signature, metadataRpc, registry);
|
|
164
|
-
}
|
|
161
|
+
}
|
|
165
162
|
/**
|
|
166
163
|
* Serializes the signed transaction
|
|
167
164
|
*
|
|
@@ -171,12 +168,12 @@ var Utils = /** @class */ (function () {
|
|
|
171
168
|
* @param registry Transaction registry
|
|
172
169
|
* @returns string Serialized transaction
|
|
173
170
|
*/
|
|
174
|
-
|
|
171
|
+
serializeSignedTransaction(transaction, signature, metadataRpc, registry) {
|
|
175
172
|
return txwrapper_polkadot_1.construct.signedTx(transaction, signature, {
|
|
176
|
-
metadataRpc
|
|
177
|
-
registry
|
|
173
|
+
metadataRpc,
|
|
174
|
+
registry,
|
|
178
175
|
});
|
|
179
|
-
}
|
|
176
|
+
}
|
|
180
177
|
/**
|
|
181
178
|
* Decodes the dot address from the given format
|
|
182
179
|
*
|
|
@@ -184,10 +181,10 @@ var Utils = /** @class */ (function () {
|
|
|
184
181
|
* @param {number} [ss58Format]
|
|
185
182
|
* @returns {string}
|
|
186
183
|
*/
|
|
187
|
-
|
|
188
|
-
|
|
184
|
+
decodeDotAddress(address, ss58Format) {
|
|
185
|
+
const keypair = new _1.KeyPair({ pub: Buffer.from(keyring_1.decodeAddress(address, undefined, ss58Format)).toString('hex') });
|
|
189
186
|
return keypair.getAddress();
|
|
190
|
-
}
|
|
187
|
+
}
|
|
191
188
|
/**
|
|
192
189
|
* Decodes the dot address from the given format
|
|
193
190
|
*
|
|
@@ -195,58 +192,58 @@ var Utils = /** @class */ (function () {
|
|
|
195
192
|
* @param {number} [ss58Format]
|
|
196
193
|
* @returns {string}
|
|
197
194
|
*/
|
|
198
|
-
|
|
195
|
+
encodeDotAddress(address, ss58Format) {
|
|
199
196
|
return keyring_1.encodeAddress(address, ss58Format);
|
|
200
|
-
}
|
|
197
|
+
}
|
|
201
198
|
/**
|
|
202
199
|
* Retrieves the txHash of a signed txHex
|
|
203
200
|
*
|
|
204
201
|
* @param txHex signed transaction hex
|
|
205
202
|
* @returns {string}
|
|
206
203
|
*/
|
|
207
|
-
|
|
204
|
+
getTxHash(txHex) {
|
|
208
205
|
return txwrapper_polkadot_1.construct.txHash(txHex);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
206
|
+
}
|
|
207
|
+
getMaterial(coinConfig) {
|
|
208
|
+
const networkConfig = coinConfig.network;
|
|
209
|
+
const { specName, specVersion, chainName, txVersion, genesisHash } = networkConfig;
|
|
213
210
|
return {
|
|
214
|
-
specName
|
|
215
|
-
specVersion
|
|
216
|
-
chainName
|
|
211
|
+
specName,
|
|
212
|
+
specVersion,
|
|
213
|
+
chainName,
|
|
217
214
|
metadata: networkConfig.metadataRpc,
|
|
218
|
-
txVersion
|
|
219
|
-
genesisHash
|
|
215
|
+
txVersion,
|
|
216
|
+
genesisHash,
|
|
220
217
|
};
|
|
221
|
-
}
|
|
222
|
-
|
|
218
|
+
}
|
|
219
|
+
isSigningPayload(payload) {
|
|
223
220
|
return payload.blockHash !== undefined;
|
|
224
|
-
}
|
|
225
|
-
|
|
221
|
+
}
|
|
222
|
+
isProxyTransfer(arg) {
|
|
226
223
|
return arg.real !== undefined;
|
|
227
|
-
}
|
|
228
|
-
|
|
224
|
+
}
|
|
225
|
+
isTransfer(arg) {
|
|
229
226
|
var _a;
|
|
230
227
|
return ((_a = arg.dest) === null || _a === void 0 ? void 0 : _a.id) !== undefined && arg.value !== undefined;
|
|
231
|
-
}
|
|
228
|
+
}
|
|
232
229
|
/**
|
|
233
230
|
* extracts and returns the signature in hex format given a raw signed transaction
|
|
234
231
|
*
|
|
235
232
|
* @param {string} rawTx signed raw transaction
|
|
236
233
|
* @param options registry dot registry used to retrieve the signature
|
|
237
234
|
*/
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
235
|
+
recoverSignatureFromRawTx(rawTx, options) {
|
|
236
|
+
const { registry } = options;
|
|
237
|
+
const methodCall = registry.createType('Extrinsic', rawTx, {
|
|
241
238
|
isSigned: true,
|
|
242
239
|
});
|
|
243
|
-
|
|
240
|
+
let signature = util_1.u8aToHex(methodCall.signature);
|
|
244
241
|
// remove 0x from the signature since this is how it's returned from TSS signing
|
|
245
242
|
if (signature.startsWith('0x')) {
|
|
246
243
|
signature = signature.substr(2);
|
|
247
244
|
}
|
|
248
245
|
return signature;
|
|
249
|
-
}
|
|
246
|
+
}
|
|
250
247
|
/**
|
|
251
248
|
* Decodes the dot address from the given format
|
|
252
249
|
*
|
|
@@ -254,20 +251,19 @@ var Utils = /** @class */ (function () {
|
|
|
254
251
|
* @param {number} [ss58Format]
|
|
255
252
|
* @returns {KeyPair}
|
|
256
253
|
*/
|
|
257
|
-
|
|
254
|
+
decodeDotAddressToKeyPair(address, ss58Format) {
|
|
258
255
|
return new _1.KeyPair({ pub: Buffer.from(keyring_1.decodeAddress(address, undefined, ss58Format)).toString('hex') });
|
|
259
|
-
}
|
|
256
|
+
}
|
|
260
257
|
/**
|
|
261
258
|
* Checks whether the given input is a hex string with with 0 value
|
|
262
259
|
* used to check whether a given transaction is immortal or mortal
|
|
263
260
|
* @param hexValue
|
|
264
261
|
*/
|
|
265
|
-
|
|
262
|
+
isZeroHex(hexValue) {
|
|
266
263
|
return hexValue === '0x00';
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
}());
|
|
264
|
+
}
|
|
265
|
+
}
|
|
270
266
|
exports.Utils = Utils;
|
|
271
|
-
|
|
267
|
+
const utils = new Utils();
|
|
272
268
|
exports.default = utils;
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3QvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBQTBFO0FBQzFFLHdEQUEyRDtBQUUzRCxvRUFBMkU7QUFDM0UsdUNBQXFFO0FBQ3JFLHFEQUFzRTtBQUN0RSw2Q0FBNkQ7QUFHN0Qsb0VBQTBEO0FBQzFELHdEQUErQjtBQUMvQixzQkFBNEI7QUFJNUIsd0RBQTZCO0FBRTdCLHlDQUEyRztBQUMzRyw4Q0FBd0I7QUFDeEIsK0NBQWdEO0FBRWhELElBQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQzNCO0lBQUE7SUFvUkEsQ0FBQztJQW5SQyxrQkFBa0I7SUFDbEIsOEJBQWMsR0FBZCxVQUFlLE9BQWU7UUFDNUIsSUFBSTtZQUNGLHVCQUFhLENBQUMsWUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzRSxPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBYyxHQUFkLFVBQWUsSUFBWTtRQUN6QixPQUFPLFlBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQ0FBaUIsR0FBakIsVUFBa0IsR0FBVztRQUMzQixJQUFJO1lBQ0YsSUFBTSxVQUFVLEdBQUcsZUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sVUFBVSxDQUFDLE1BQU0sS0FBSyxtQkFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1NBQzVEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLEtB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VUFBbUI7UUFDNUQsT0FBTyxJQUFJLFVBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUFhLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx5QkFBUyxHQUFULFVBQVUsUUFBZ0I7UUFDeEIsT0FBTyxRQUFRLEtBQUssTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFDSCxZQUFDO0FBQUQsQ0FBQyxBQXBSRCxJQW9SQztBQXBSWSxzQkFBSztBQXNSbEIsSUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWNvZGVBZGRyZXNzLCBlbmNvZGVBZGRyZXNzLCBLZXlyaW5nIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcnO1xuaW1wb3J0IHsgZGVjb2RlUGFpciB9IGZyb20gJ0Bwb2xrYWRvdC9rZXlyaW5nL3BhaXIvZGVjb2RlJztcbmltcG9ydCB7IEtleXJpbmdQYWlyIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcvdHlwZXMnO1xuaW1wb3J0IHsgRVhUUklOU0lDX1ZFUlNJT04gfSBmcm9tICdAcG9sa2Fkb3QvdHlwZXMvZXh0cmluc2ljL3Y0L0V4dHJpbnNpYyc7XG5pbXBvcnQgeyBoZXhUb1U4YSwgaXNIZXgsIHU4YVRvSGV4LCB1OGFUb1U4YSB9IGZyb20gJ0Bwb2xrYWRvdC91dGlsJztcbmltcG9ydCB7IGJhc2U2NERlY29kZSwgc2lnbmF0dXJlVmVyaWZ5IH0gZnJvbSAnQHBvbGthZG90L3V0aWwtY3J5cHRvJztcbmltcG9ydCB7IGlzVmFsaWRFZDI1NTE5UHVibGljS2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY3J5cHRvJztcbmltcG9ydCB7IFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IERlY29kZWRTaWduZWRUeCwgRGVjb2RlZFNpZ25pbmdQYXlsb2FkLCBUeXBlUmVnaXN0cnkgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlL2xpYi90eXBlcyc7XG5pbXBvcnQgeyBjb25zdHJ1Y3QgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgYmFzZTMyIGZyb20gJ2hpLWJhc2UzMic7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBCYXNlVXRpbHMgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBTZWVkIH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHsgSGV4U3RyaW5nLCBNYXRlcmlhbCwgUHJveHlBcmdzLCBQcm94eUNhbGxBcmdzLCBUcmFuc2ZlckFyZ3MsIFR4TWV0aG9kIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgRG90TmV0d29yayB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IGNyZWF0ZVR5cGVVbnNhZmUsIEdlbmVyaWNDYWxsLCBHZW5lcmljRXh0cmluc2ljLCBHZW5lcmljRXh0cmluc2ljUGF5bG9hZCB9IGZyb20gJ0Bwb2xrYWRvdC90eXBlcyc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCB7IGlzQmFzZTU4IH0gZnJvbSAnLi8uLi8uLi91dGlscy9jcnlwdG8nO1xuXG5jb25zdCBQUk9YWV9NRVRIT0RfQVJHID0gMjtcbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgZW5jb2RlQWRkcmVzcyhpc0hleChhZGRyZXNzKSA/IGhleFRvVThhKGFkZHJlc3MpIDogZGVjb2RlQWRkcmVzcyhhZGRyZXNzKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNIZXgoaGFzaCwgMjU2KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkUHJ2ID0gaGV4VG9VOGEoa2V5KTtcbiAgICAgIHJldHVybiBkZWNvZGVkUHJ2Lmxlbmd0aCA9PT0gbmFjbC5zaWduLnNlY3JldEtleUxlbmd0aCAvIDI7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHB1YktleSA9IGtleTtcblxuICAgIC8vIGNvbnZlcnQgYmFzZTU4IHB1YiBrZXkgdG8gaGV4IGZvcm1hdFxuICAgIC8vIHRzcyBjb21tb24gcHViIGlzIGluIGJhc2U1OCBmb3JtYXQgYW5kIGRlY29kZXMgdG8gbGVuZ3RoIG9mIDMyXG4gICAgaWYgKGlzQmFzZTU4KHB1YktleSwgMzIpKSB7XG4gICAgICBjb25zdCBiYXNlNThEZWNvZGUgPSBiczU4LmRlY29kZShwdWJLZXkpO1xuICAgICAgcHViS2V5ID0gYmFzZTU4RGVjb2RlLnRvU3RyaW5nKCdoZXgnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkocHViS2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2lnbmF0dXJlVThhID0gdThhVG9VOGEoc2lnbmF0dXJlKTtcbiAgICByZXR1cm4gWzY0LCA2NSwgNjZdLmluY2x1ZGVzKHNpZ25hdHVyZVU4YS5sZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoZSBzaWduYXR1cmUgb24gYSBnaXZlbiBtZXNzYWdlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduZWRNZXNzYWdlIHRoZSBzaWduZWQgbWVzc2FnZSBmb3IgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBhZGRyZXNzIG9mIHRoZSBzaWduZXJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHdoZXRoZXIgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCBvciBub3RcbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShzaWduZWRNZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBkZWNvZGVBZGRyZXNzKGFkZHJlc3MpO1xuICAgIGNvbnN0IGhleFB1YmxpY0tleSA9IHU4YVRvSGV4KHB1YmxpY0tleSk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlVmVyaWZ5KHNpZ25lZE1lc3NhZ2UsIHNpZ25hdHVyZSwgaGV4UHVibGljS2V5KS5pc1ZhbGlkO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0hleCh0eElkLCAyNTYpO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZVNlZWQgZGVjb2RlcyBhIGRvdCBzZWVkXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWVkIC0gdGhlIHNlZWQgdG8gYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyB7U2VlZH0gLSB0aGUgb2JqZWN0IFNlZWRcbiAgICovXG4gIGRlY29kZVNlZWQoc2VlZDogc3RyaW5nKTogU2VlZCB7XG4gICAgY29uc3QgZGVjb2RlZCA9IGJhc2UzMi5kZWNvZGUuYXNCeXRlcyhzZWVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2VlZDogQnVmZmVyLmZyb20oZGVjb2RlZCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIGEgc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGNhcGl0YWxpemVGaXJzdExldHRlcih2YWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbC5zbGljZSgxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGVjb2RlIHRoZSBpbnRlcm5hbCBtZXRob2QgaGV4IGluIGNhc2Ugb2YgYSBwcm94eSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IFVuc2lnbmVkVHJhbnNhY3Rpb259IHR4XG4gICAqIEBwYXJhbSB7IG1ldGFkYXRhUnBjOiBzdHJpbmc7IHJlZ2lzdHJ5OiBUeXBlUmVnaXN0cnkgfSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckFyZ3N9XG4gICAqL1xuICBkZWNvZGVDYWxsTWV0aG9kKFxuICAgIHR4OiBzdHJpbmcgfCBVbnNpZ25lZFRyYW5zYWN0aW9uLFxuICAgIG9wdGlvbnM6IHsgbWV0YWRhdGFScGM6IHN0cmluZzsgcmVnaXN0cnk6IFR5cGVSZWdpc3RyeSB9LFxuICApOiBUcmFuc2ZlckFyZ3Mge1xuICAgIGNvbnN0IHsgcmVnaXN0cnkgfSA9IG9wdGlvbnM7XG4gICAgbGV0IG1ldGhvZENhbGw6IEdlbmVyaWNDYWxsIHwgR2VuZXJpY0V4dHJpbnNpYztcbiAgICBpZiAodHlwZW9mIHR4ID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogR2VuZXJpY0V4dHJpbnNpY1BheWxvYWQgPSBjcmVhdGVUeXBlVW5zYWZlKHJlZ2lzdHJ5LCAnRXh0cmluc2ljUGF5bG9hZCcsIFtcbiAgICAgICAgICB0eCxcbiAgICAgICAgICB7IHZlcnNpb246IEVYVFJJTlNJQ19WRVJTSU9OIH0sXG4gICAgICAgIF0pO1xuICAgICAgICBtZXRob2RDYWxsID0gY3JlYXRlVHlwZVVuc2FmZShyZWdpc3RyeSwgJ0NhbGwnLCBbcGF5bG9hZC5tZXRob2RdKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbWV0aG9kQ2FsbCA9IHJlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0V4dHJpbnNpYycsIGhleFRvVThhKHR4KSwge1xuICAgICAgICAgIGlzU2lnbmVkOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWV0aG9kQ2FsbCA9IHJlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0NhbGwnLCB0eC5tZXRob2QpO1xuICAgIH1cbiAgICBjb25zdCBtZXRob2QgPSBtZXRob2RDYWxsLmFyZ3NbUFJPWFlfTUVUSE9EX0FSR107XG4gICAgY29uc3QgZGVjb2RlZEFyZ3MgPSBtZXRob2QudG9KU09OKCkgYXMgdW5rbm93biBhcyBQcm94eUNhbGxBcmdzO1xuICAgIHJldHVybiBkZWNvZGVkQXJncy5hcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIGtleVBhaXJGcm9tU2VlZCBnZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggc2VjcmV0S2V5IGFuZCBwdWJsaWNLZXkgdXNpbmcgdGhlIHBvbGthZG90IHNka1xuICAgKiBAcGFyYW0gc2VlZCAzMiBieXRlcyBsb25nIHNlZWRcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAga2V5UGFpckZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlyaW5nID0gbmV3IEtleXJpbmcoeyB0eXBlOiAnZWQyNTUxOScgfSk7XG4gICAgY29uc3Qga2V5cmluZ1BhaXIgPSBrZXlyaW5nLmFkZEZyb21TZWVkKHNlZWQpO1xuICAgIGNvbnN0IHBhaXJKc29uID0ga2V5cmluZ1BhaXIudG9Kc29uKCk7XG4gICAgY29uc3QgZGVjb2RlZEtleVBhaXIgPSBkZWNvZGVQYWlyKCcnLCBiYXNlNjREZWNvZGUocGFpckpzb24uZW5jb2RlZCksIHBhaXJKc29uLmVuY29kaW5nLnR5cGUpO1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHBydjogQnVmZmVyLmZyb20oZGVjb2RlZEtleVBhaXIuc2VjcmV0S2V5KS50b1N0cmluZygnaGV4JykgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbmluZyBmdW5jdGlvbi4gSW1wbGVtZW50IHRoaXMgb24gdGhlIE9GRkxJTkUgc2lnbmluZyBkZXZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5cmluZ1BhaXJ9IHBhaXIgLSBUaGUgc2lnbmluZyBwYWlyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmluZ1BheWxvYWQgLSBQYXlsb2FkIHRvIHNpZ24uXG4gICAqIEBwYXJhbSB7VW5zaWduZWRUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24gLSByYXcgdHJhbnNhY3Rpb24gdG8gc2lnblxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge0hleFN0cmluZ30gb3B0aW9ucy5tZXRhZGF0YVJwYyAtIG1ldGFkYXRhIHRoYXQgaXMgbmVlZGVkIGZvciBkb3QgdG8gc2lnblxuICAgKiBAcGFyYW0ge1R5cGVSZWdpc3RyeX0gb3B0aW9ucy5yZWdpc3RyeSAtIG1ldGFkYXRhIHRoYXQgaXMgbmVlZGVkIGZvciBkb3QgdG8gc2lnblxuICAgKi9cbiAgY3JlYXRlU2lnbmVkVHgoXG4gICAgcGFpcjogS2V5cmluZ1BhaXIsXG4gICAgc2lnbmluZ1BheWxvYWQ6IHN0cmluZyxcbiAgICB0cmFuc2FjdGlvbjogVW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICBvcHRpb25zOiB7IG1ldGFkYXRhUnBjOiBIZXhTdHJpbmc7IHJlZ2lzdHJ5OiBUeXBlUmVnaXN0cnkgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5LCBtZXRhZGF0YVJwYyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gcmVnaXN0cnlcbiAgICAgIC5jcmVhdGVUeXBlKCdFeHRyaW5zaWNQYXlsb2FkJywgc2lnbmluZ1BheWxvYWQsIHtcbiAgICAgICAgdmVyc2lvbjogRVhUUklOU0lDX1ZFUlNJT04sXG4gICAgICB9KVxuICAgICAgLnNpZ24ocGFpcik7XG5cbiAgICAvLyBTZXJpYWxpemUgYSBzaWduZWQgdHJhbnNhY3Rpb24uXG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIHNpZ25hdHVyZSwgbWV0YWRhdGFScGMsIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIFRyYW5zYWN0aW9uIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIFNpZ25hdHVyZSBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0gbWV0YWRhdGFScGMgTmV0d29yayBtZXRhZGF0YVxuICAgKiBAcGFyYW0gcmVnaXN0cnkgVHJhbnNhY3Rpb24gcmVnaXN0cnlcbiAgICogQHJldHVybnMgc3RyaW5nIFNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBzaWduYXR1cmUsIG1ldGFkYXRhUnBjOiBgMHgke3N0cmluZ31gLCByZWdpc3RyeSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdC5zaWduZWRUeCh0cmFuc2FjdGlvbiwgc2lnbmF0dXJlLCB7XG4gICAgICBtZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIGRvdCBhZGRyZXNzIGZyb20gdGhlIGdpdmVuIGZvcm1hdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3NzNThGb3JtYXRdXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBkZWNvZGVEb3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgc3M1OEZvcm1hdD86IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5cGFpciA9IG5ldyBLZXlQYWlyKHsgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGFkZHJlc3MsIHVuZGVmaW5lZCwgc3M1OEZvcm1hdCkpLnRvU3RyaW5nKCdoZXgnKSB9KTtcbiAgICByZXR1cm4ga2V5cGFpci5nZXRBZGRyZXNzKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUgZG90IGFkZHJlc3MgZnJvbSB0aGUgZ2l2ZW4gZm9ybWF0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc3M1OEZvcm1hdF1cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGVuY29kZURvdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBzczU4Rm9ybWF0PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5jb2RlQWRkcmVzcyhhZGRyZXNzLCBzczU4Rm9ybWF0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHR4SGFzaCBvZiBhIHNpZ25lZCB0eEhleFxuICAgKlxuICAgKiBAcGFyYW0gdHhIZXggc2lnbmVkIHRyYW5zYWN0aW9uIGhleFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0VHhIYXNoKHR4SGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb25zdHJ1Y3QudHhIYXNoKHR4SGV4KTtcbiAgfVxuXG4gIGdldE1hdGVyaWFsKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogTWF0ZXJpYWwge1xuICAgIGNvbnN0IG5ldHdvcmtDb25maWcgPSBjb2luQ29uZmlnLm5ldHdvcmsgYXMgRG90TmV0d29yaztcbiAgICBjb25zdCB7IHNwZWNOYW1lLCBzcGVjVmVyc2lvbiwgY2hhaW5OYW1lLCB0eFZlcnNpb24sIGdlbmVzaXNIYXNoIH0gPSBuZXR3b3JrQ29uZmlnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNwZWNOYW1lLFxuICAgICAgc3BlY1ZlcnNpb24sXG4gICAgICBjaGFpbk5hbWUsXG4gICAgICBtZXRhZGF0YTogbmV0d29ya0NvbmZpZy5tZXRhZGF0YVJwYyxcbiAgICAgIHR4VmVyc2lvbixcbiAgICAgIGdlbmVzaXNIYXNoLFxuICAgIH0gYXMgTWF0ZXJpYWw7XG4gIH1cblxuICBpc1NpZ25pbmdQYXlsb2FkKHBheWxvYWQ6IERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeCk6IHBheWxvYWQgaXMgRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHtcbiAgICByZXR1cm4gKHBheWxvYWQgYXMgRGVjb2RlZFNpZ25pbmdQYXlsb2FkKS5ibG9ja0hhc2ggIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlzUHJveHlUcmFuc2Zlcihhcmc6IFR4TWV0aG9kWydhcmdzJ10pOiBhcmcgaXMgUHJveHlBcmdzIHtcbiAgICByZXR1cm4gKGFyZyBhcyBQcm94eUFyZ3MpLnJlYWwgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlzVHJhbnNmZXIoYXJnOiBUeE1ldGhvZFsnYXJncyddKTogYXJnIGlzIFRyYW5zZmVyQXJncyB7XG4gICAgcmV0dXJuIChhcmcgYXMgVHJhbnNmZXJBcmdzKS5kZXN0Py5pZCAhPT0gdW5kZWZpbmVkICYmIChhcmcgYXMgVHJhbnNmZXJBcmdzKS52YWx1ZSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIGFuZCByZXR1cm5zIHRoZSBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdCBnaXZlbiBhIHJhdyBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1R4IHNpZ25lZCByYXcgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgcmVnaXN0cnkgZG90IHJlZ2lzdHJ5IHVzZWQgdG8gcmV0cmlldmUgdGhlIHNpZ25hdHVyZVxuICAgKi9cbiAgcmVjb3ZlclNpZ25hdHVyZUZyb21SYXdUeChyYXdUeDogc3RyaW5nLCBvcHRpb25zOiB7IHJlZ2lzdHJ5OiBUeXBlUmVnaXN0cnkgfSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyByZWdpc3RyeSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBtZXRob2RDYWxsID0gcmVnaXN0cnkuY3JlYXRlVHlwZSgnRXh0cmluc2ljJywgcmF3VHgsIHtcbiAgICAgIGlzU2lnbmVkOiB0cnVlLFxuICAgIH0pO1xuICAgIGxldCBzaWduYXR1cmUgPSB1OGFUb0hleChtZXRob2RDYWxsLnNpZ25hdHVyZSkgYXMgc3RyaW5nO1xuXG4gICAgLy8gcmVtb3ZlIDB4IGZyb20gdGhlIHNpZ25hdHVyZSBzaW5jZSB0aGlzIGlzIGhvdyBpdCdzIHJldHVybmVkIGZyb20gVFNTIHNpZ25pbmdcbiAgICBpZiAoc2lnbmF0dXJlLnN0YXJ0c1dpdGgoJzB4JykpIHtcbiAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZS5zdWJzdHIoMik7XG4gICAgfVxuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUgZG90IGFkZHJlc3MgZnJvbSB0aGUgZ2l2ZW4gZm9ybWF0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc3M1OEZvcm1hdF1cbiAgICogQHJldHVybnMge0tleVBhaXJ9XG4gICAqL1xuICBkZWNvZGVEb3RBZGRyZXNzVG9LZXlQYWlyKGFkZHJlc3M6IHN0cmluZywgc3M1OEZvcm1hdD86IG51bWJlcik6IEtleVBhaXIge1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyhhZGRyZXNzLCB1bmRlZmluZWQsIHNzNThGb3JtYXQpKS50b1N0cmluZygnaGV4JykgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGlucHV0IGlzIGEgaGV4IHN0cmluZyB3aXRoIHdpdGggMCB2YWx1ZVxuICAgKiB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiB0cmFuc2FjdGlvbiBpcyBpbW1vcnRhbCBvciBtb3J0YWxcbiAgICogQHBhcmFtIGhleFZhbHVlXG4gICAqL1xuICBpc1plcm9IZXgoaGV4VmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoZXhWYWx1ZSA9PT0gJzB4MDAnO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3QvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0NBQTBFO0FBQzFFLDBEQUEyRDtBQUUzRCxzRUFBMkU7QUFDM0UseUNBQXFFO0FBQ3JFLHVEQUFzRTtBQUd0RSxzRUFBMEQ7QUFDMUQsMERBQStCO0FBQy9CLHdCQUE0QjtBQUM1Qiw4Q0FBcUY7QUFFckYsMERBQTZCO0FBRTdCLDJDQUEyRztBQUMzRyxnREFBd0I7QUFFeEIsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDM0IsTUFBYSxLQUFLO0lBQ2hCLGtCQUFrQjtJQUNsQixjQUFjLENBQUMsT0FBZTtRQUM1QixJQUFJO1lBQ0YsdUJBQWEsQ0FBQyxZQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sWUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsSUFBSTtZQUNGLE1BQU0sVUFBVSxHQUFHLGVBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxPQUFPLFVBQVUsQ0FBQyxNQUFNLEtBQUssbUJBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztTQUM1RDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFD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LE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlQWRkcmVzcywgZW5jb2RlQWRkcmVzcywgS2V5cmluZyB9IGZyb20gJ0Bwb2xrYWRvdC9rZXlyaW5nJztcbmltcG9ydCB7IGRlY29kZVBhaXIgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZy9wYWlyL2RlY29kZSc7XG5pbXBvcnQgeyBLZXlyaW5nUGFpciB9IGZyb20gJ0Bwb2xrYWRvdC9rZXlyaW5nL3R5cGVzJztcbmltcG9ydCB7IEVYVFJJTlNJQ19WRVJTSU9OIH0gZnJvbSAnQHBvbGthZG90L3R5cGVzL2V4dHJpbnNpYy92NC9FeHRyaW5zaWMnO1xuaW1wb3J0IHsgaGV4VG9VOGEsIGlzSGV4LCB1OGFUb0hleCwgdThhVG9VOGEgfSBmcm9tICdAcG9sa2Fkb3QvdXRpbCc7XG5pbXBvcnQgeyBiYXNlNjREZWNvZGUsIHNpZ25hdHVyZVZlcmlmeSB9IGZyb20gJ0Bwb2xrYWRvdC91dGlsLWNyeXB0byc7XG5pbXBvcnQgeyBVbnNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZSc7XG5pbXBvcnQgeyBEZWNvZGVkU2lnbmVkVHgsIERlY29kZWRTaWduaW5nUGF5bG9hZCwgVHlwZVJlZ2lzdHJ5IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZS9saWIvdHlwZXMnO1xuaW1wb3J0IHsgY29uc3RydWN0IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IGJhc2UzMiBmcm9tICdoaS1iYXNlMzInO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4nO1xuaW1wb3J0IHsgQmFzZVV0aWxzLCBpc0Jhc2U1OCwgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksIFNlZWQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgSGV4U3RyaW5nLCBNYXRlcmlhbCwgUHJveHlBcmdzLCBQcm94eUNhbGxBcmdzLCBUcmFuc2ZlckFyZ3MsIFR4TWV0aG9kIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgRG90TmV0d29yayB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IGNyZWF0ZVR5cGVVbnNhZmUsIEdlbmVyaWNDYWxsLCBHZW5lcmljRXh0cmluc2ljLCBHZW5lcmljRXh0cmluc2ljUGF5bG9hZCB9IGZyb20gJ0Bwb2xrYWRvdC90eXBlcyc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcblxuY29uc3QgUFJPWFlfTUVUSE9EX0FSRyA9IDI7XG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGVuY29kZUFkZHJlc3MoaXNIZXgoYWRkcmVzcykgPyBoZXhUb1U4YShhZGRyZXNzKSA6IGRlY29kZUFkZHJlc3MoYWRkcmVzcykpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzSGV4KGhhc2gsIDI1Nik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFBydiA9IGhleFRvVThhKGtleSk7XG4gICAgICByZXR1cm4gZGVjb2RlZFBydi5sZW5ndGggPT09IG5hY2wuc2lnbi5zZWNyZXRLZXlMZW5ndGggLyAyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBwdWJLZXkgPSBrZXk7XG5cbiAgICAvLyBjb252ZXJ0IGJhc2U1OCBwdWIga2V5IHRvIGhleCBmb3JtYXRcbiAgICAvLyB0c3MgY29tbW9uIHB1YiBpcyBpbiBiYXNlNTggZm9ybWF0IGFuZCBkZWNvZGVzIHRvIGxlbmd0aCBvZiAzMlxuICAgIGlmIChpc0Jhc2U1OChwdWJLZXksIDMyKSkge1xuICAgICAgY29uc3QgYmFzZTU4RGVjb2RlID0gYnM1OC5kZWNvZGUocHViS2V5KTtcbiAgICAgIHB1YktleSA9IGJhc2U1OERlY29kZS50b1N0cmluZygnaGV4Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1YktleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNpZ25hdHVyZVU4YSA9IHU4YVRvVThhKHNpZ25hdHVyZSk7XG4gICAgcmV0dXJuIFs2NCwgNjUsIDY2XS5pbmNsdWRlcyhzaWduYXR1cmVVOGEubGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgc2lnbmF0dXJlIG9uIGEgZ2l2ZW4gbWVzc2FnZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmVkTWVzc2FnZSB0aGUgc2lnbmVkIG1lc3NhZ2UgZm9yIHRoZSBzaWduYXR1cmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSB0aGUgc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyBvZiB0aGUgc2lnbmVyXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB3aGV0aGVyIHRoZSBzaWduYXR1cmUgaXMgdmFsaWQgb3Igbm90XG4gICAqL1xuICB2ZXJpZnlTaWduYXR1cmUoc2lnbmVkTWVzc2FnZTogc3RyaW5nLCBzaWduYXR1cmU6IHN0cmluZywgYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHVibGljS2V5ID0gZGVjb2RlQWRkcmVzcyhhZGRyZXNzKTtcbiAgICBjb25zdCBoZXhQdWJsaWNLZXkgPSB1OGFUb0hleChwdWJsaWNLZXkpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZVZlcmlmeShzaWduZWRNZXNzYWdlLCBzaWduYXR1cmUsIGhleFB1YmxpY0tleSkuaXNWYWxpZDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNIZXgodHhJZCwgMjU2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWNvZGVTZWVkIGRlY29kZXMgYSBkb3Qgc2VlZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VlZCAtIHRoZSBzZWVkIHRvIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMge1NlZWR9IC0gdGhlIG9iamVjdCBTZWVkXG4gICAqL1xuICBkZWNvZGVTZWVkKHNlZWQ6IHN0cmluZyk6IFNlZWQge1xuICAgIGNvbnN0IGRlY29kZWQgPSBiYXNlMzIuZGVjb2RlLmFzQnl0ZXMoc2VlZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZWQ6IEJ1ZmZlci5mcm9tKGRlY29kZWQpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBhIHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWwuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWwuc2xpY2UoMSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGRlY29kZSB0aGUgaW50ZXJuYWwgbWV0aG9kIGhleCBpbiBjYXNlIG9mIGEgcHJveHkgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBVbnNpZ25lZFRyYW5zYWN0aW9ufSB0eFxuICAgKiBAcGFyYW0geyBtZXRhZGF0YVJwYzogc3RyaW5nOyByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5IH0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJBcmdzfVxuICAgKi9cbiAgZGVjb2RlQ2FsbE1ldGhvZChcbiAgICB0eDogc3RyaW5nIHwgVW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICBvcHRpb25zOiB7IG1ldGFkYXRhUnBjOiBzdHJpbmc7IHJlZ2lzdHJ5OiBUeXBlUmVnaXN0cnkgfSxcbiAgKTogVHJhbnNmZXJBcmdzIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5IH0gPSBvcHRpb25zO1xuICAgIGxldCBtZXRob2RDYWxsOiBHZW5lcmljQ2FsbCB8IEdlbmVyaWNFeHRyaW5zaWM7XG4gICAgaWYgKHR5cGVvZiB0eCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IEdlbmVyaWNFeHRyaW5zaWNQYXlsb2FkID0gY3JlYXRlVHlwZVVuc2FmZShyZWdpc3RyeSwgJ0V4dHJpbnNpY1BheWxvYWQnLCBbXG4gICAgICAgICAgdHgsXG4gICAgICAgICAgeyB2ZXJzaW9uOiBFWFRSSU5TSUNfVkVSU0lPTiB9LFxuICAgICAgICBdKTtcbiAgICAgICAgbWV0aG9kQ2FsbCA9IGNyZWF0ZVR5cGVVbnNhZmUocmVnaXN0cnksICdDYWxsJywgW3BheWxvYWQubWV0aG9kXSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG1ldGhvZENhbGwgPSByZWdpc3RyeS5jcmVhdGVUeXBlKCdFeHRyaW5zaWMnLCBoZXhUb1U4YSh0eCksIHtcbiAgICAgICAgICBpc1NpZ25lZDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1ldGhvZENhbGwgPSByZWdpc3RyeS5jcmVhdGVUeXBlKCdDYWxsJywgdHgubWV0aG9kKTtcbiAgICB9XG4gICAgY29uc3QgbWV0aG9kID0gbWV0aG9kQ2FsbC5hcmdzW1BST1hZX01FVEhPRF9BUkddO1xuICAgIGNvbnN0IGRlY29kZWRBcmdzID0gbWV0aG9kLnRvSlNPTigpIGFzIHVua25vd24gYXMgUHJveHlDYWxsQXJncztcbiAgICByZXR1cm4gZGVjb2RlZEFyZ3MuYXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBrZXlQYWlyRnJvbVNlZWQgZ2VuZXJhdGVzIGFuIG9iamVjdCB3aXRoIHNlY3JldEtleSBhbmQgcHVibGljS2V5IHVzaW5nIHRoZSBwb2xrYWRvdCBzZGtcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIEtleVBhaXJcbiAgICovXG4gIGtleVBhaXJGcm9tU2VlZChzZWVkOiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5cmluZyA9IG5ldyBLZXlyaW5nKHsgdHlwZTogJ2VkMjU1MTknIH0pO1xuICAgIGNvbnN0IGtleXJpbmdQYWlyID0ga2V5cmluZy5hZGRGcm9tU2VlZChzZWVkKTtcbiAgICBjb25zdCBwYWlySnNvbiA9IGtleXJpbmdQYWlyLnRvSnNvbigpO1xuICAgIGNvbnN0IGRlY29kZWRLZXlQYWlyID0gZGVjb2RlUGFpcignJywgYmFzZTY0RGVjb2RlKHBhaXJKc29uLmVuY29kZWQpLCBwYWlySnNvbi5lbmNvZGluZy50eXBlKTtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwcnY6IEJ1ZmZlci5mcm9tKGRlY29kZWRLZXlQYWlyLnNlY3JldEtleSkudG9TdHJpbmcoJ2hleCcpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25pbmcgZnVuY3Rpb24uIEltcGxlbWVudCB0aGlzIG9uIHRoZSBPRkZMSU5FIHNpZ25pbmcgZGV2aWNlLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleXJpbmdQYWlyfSBwYWlyIC0gVGhlIHNpZ25pbmcgcGFpci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25pbmdQYXlsb2FkIC0gUGF5bG9hZCB0byBzaWduLlxuICAgKiBAcGFyYW0ge1Vuc2lnbmVkVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uIC0gcmF3IHRyYW5zYWN0aW9uIHRvIHNpZ25cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHBhcmFtIHtIZXhTdHJpbmd9IG9wdGlvbnMubWV0YWRhdGFScGMgLSBtZXRhZGF0YSB0aGF0IGlzIG5lZWRlZCBmb3IgZG90IHRvIHNpZ25cbiAgICogQHBhcmFtIHtUeXBlUmVnaXN0cnl9IG9wdGlvbnMucmVnaXN0cnkgLSBtZXRhZGF0YSB0aGF0IGlzIG5lZWRlZCBmb3IgZG90IHRvIHNpZ25cbiAgICovXG4gIGNyZWF0ZVNpZ25lZFR4KFxuICAgIHBhaXI6IEtleXJpbmdQYWlyLFxuICAgIHNpZ25pbmdQYXlsb2FkOiBzdHJpbmcsXG4gICAgdHJhbnNhY3Rpb246IFVuc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgb3B0aW9uczogeyBtZXRhZGF0YVJwYzogSGV4U3RyaW5nOyByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5IH0sXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgeyByZWdpc3RyeSwgbWV0YWRhdGFScGMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgeyBzaWduYXR1cmUgfSA9IHJlZ2lzdHJ5XG4gICAgICAuY3JlYXRlVHlwZSgnRXh0cmluc2ljUGF5bG9hZCcsIHNpZ25pbmdQYXlsb2FkLCB7XG4gICAgICAgIHZlcnNpb246IEVYVFJJTlNJQ19WRVJTSU9OLFxuICAgICAgfSlcbiAgICAgIC5zaWduKHBhaXIpO1xuXG4gICAgLy8gU2VyaWFsaXplIGEgc2lnbmVkIHRyYW5zYWN0aW9uLlxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBzaWduYXR1cmUsIG1ldGFkYXRhUnBjLCByZWdpc3RyeSk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyB0aGUgc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiBUcmFuc2FjdGlvbiB0byBzZXJpYWxpemVcbiAgICogQHBhcmFtIHNpZ25hdHVyZSBTaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIG1ldGFkYXRhUnBjIE5ldHdvcmsgbWV0YWRhdGFcbiAgICogQHBhcmFtIHJlZ2lzdHJ5IFRyYW5zYWN0aW9uIHJlZ2lzdHJ5XG4gICAqIEByZXR1cm5zIHN0cmluZyBTZXJpYWxpemVkIHRyYW5zYWN0aW9uXG4gICAqL1xuICBzZXJpYWxpemVTaWduZWRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwgc2lnbmF0dXJlLCBtZXRhZGF0YVJwYzogYDB4JHtzdHJpbmd9YCwgcmVnaXN0cnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb25zdHJ1Y3Quc2lnbmVkVHgodHJhbnNhY3Rpb24sIHNpZ25hdHVyZSwge1xuICAgICAgbWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRoZSBkb3QgYWRkcmVzcyBmcm9tIHRoZSBnaXZlbiBmb3JtYXRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3NcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzczU4Rm9ybWF0XVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZGVjb2RlRG90QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIHNzNThGb3JtYXQ/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleXBhaXIgPSBuZXcgS2V5UGFpcih7IHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyhhZGRyZXNzLCB1bmRlZmluZWQsIHNzNThGb3JtYXQpKS50b1N0cmluZygnaGV4JykgfSk7XG4gICAgcmV0dXJuIGtleXBhaXIuZ2V0QWRkcmVzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIGRvdCBhZGRyZXNzIGZyb20gdGhlIGdpdmVuIGZvcm1hdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3NzNThGb3JtYXRdXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBlbmNvZGVEb3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgc3M1OEZvcm1hdD86IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVuY29kZUFkZHJlc3MoYWRkcmVzcywgc3M1OEZvcm1hdCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSB0eEhhc2ggb2YgYSBzaWduZWQgdHhIZXhcbiAgICpcbiAgICogQHBhcmFtIHR4SGV4IHNpZ25lZCB0cmFuc2FjdGlvbiBoZXhcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGdldFR4SGFzaCh0eEhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29uc3RydWN0LnR4SGFzaCh0eEhleCk7XG4gIH1cblxuICBnZXRNYXRlcmlhbChjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPik6IE1hdGVyaWFsIHtcbiAgICBjb25zdCBuZXR3b3JrQ29uZmlnID0gY29pbkNvbmZpZy5uZXR3b3JrIGFzIERvdE5ldHdvcms7XG4gICAgY29uc3QgeyBzcGVjTmFtZSwgc3BlY1ZlcnNpb24sIGNoYWluTmFtZSwgdHhWZXJzaW9uLCBnZW5lc2lzSGFzaCB9ID0gbmV0d29ya0NvbmZpZztcblxuICAgIHJldHVybiB7XG4gICAgICBzcGVjTmFtZSxcbiAgICAgIHNwZWNWZXJzaW9uLFxuICAgICAgY2hhaW5OYW1lLFxuICAgICAgbWV0YWRhdGE6IG5ldHdvcmtDb25maWcubWV0YWRhdGFScGMsXG4gICAgICB0eFZlcnNpb24sXG4gICAgICBnZW5lc2lzSGFzaCxcbiAgICB9IGFzIE1hdGVyaWFsO1xuICB9XG5cbiAgaXNTaWduaW5nUGF5bG9hZChwYXlsb2FkOiBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfCBEZWNvZGVkU2lnbmVkVHgpOiBwYXlsb2FkIGlzIERlY29kZWRTaWduaW5nUGF5bG9hZCB7XG4gICAgcmV0dXJuIChwYXlsb2FkIGFzIERlY29kZWRTaWduaW5nUGF5bG9hZCkuYmxvY2tIYXNoICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBpc1Byb3h5VHJhbnNmZXIoYXJnOiBUeE1ldGhvZFsnYXJncyddKTogYXJnIGlzIFByb3h5QXJncyB7XG4gICAgcmV0dXJuIChhcmcgYXMgUHJveHlBcmdzKS5yZWFsICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBpc1RyYW5zZmVyKGFyZzogVHhNZXRob2RbJ2FyZ3MnXSk6IGFyZyBpcyBUcmFuc2ZlckFyZ3Mge1xuICAgIHJldHVybiAoYXJnIGFzIFRyYW5zZmVyQXJncykuZGVzdD8uaWQgIT09IHVuZGVmaW5lZCAmJiAoYXJnIGFzIFRyYW5zZmVyQXJncykudmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBhbmQgcmV0dXJucyB0aGUgc2lnbmF0dXJlIGluIGhleCBmb3JtYXQgZ2l2ZW4gYSByYXcgc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdUeCBzaWduZWQgcmF3IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIHJlZ2lzdHJ5IGRvdCByZWdpc3RyeSB1c2VkIHRvIHJldHJpZXZlIHRoZSBzaWduYXR1cmVcbiAgICovXG4gIHJlY292ZXJTaWduYXR1cmVGcm9tUmF3VHgocmF3VHg6IHN0cmluZywgb3B0aW9uczogeyByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5IH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgcmVnaXN0cnkgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgbWV0aG9kQ2FsbCA9IHJlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0V4dHJpbnNpYycsIHJhd1R4LCB7XG4gICAgICBpc1NpZ25lZDogdHJ1ZSxcbiAgICB9KTtcbiAgICBsZXQgc2lnbmF0dXJlID0gdThhVG9IZXgobWV0aG9kQ2FsbC5zaWduYXR1cmUpIGFzIHN0cmluZztcblxuICAgIC8vIHJlbW92ZSAweCBmcm9tIHRoZSBzaWduYXR1cmUgc2luY2UgdGhpcyBpcyBob3cgaXQncyByZXR1cm5lZCBmcm9tIFRTUyBzaWduaW5nXG4gICAgaWYgKHNpZ25hdHVyZS5zdGFydHNXaXRoKCcweCcpKSB7XG4gICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmUuc3Vic3RyKDIpO1xuICAgIH1cbiAgICByZXR1cm4gc2lnbmF0dXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIGRvdCBhZGRyZXNzIGZyb20gdGhlIGdpdmVuIGZvcm1hdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3NzNThGb3JtYXRdXG4gICAqIEByZXR1cm5zIHtLZXlQYWlyfVxuICAgKi9cbiAgZGVjb2RlRG90QWRkcmVzc1RvS2V5UGFpcihhZGRyZXNzOiBzdHJpbmcsIHNzNThGb3JtYXQ/OiBudW1iZXIpOiBLZXlQYWlyIHtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3MoYWRkcmVzcywgdW5kZWZpbmVkLCBzczU4Rm9ybWF0KSkudG9TdHJpbmcoJ2hleCcpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBpbnB1dCBpcyBhIGhleCBzdHJpbmcgd2l0aCB3aXRoIDAgdmFsdWVcbiAgICogdXNlZCB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gdHJhbnNhY3Rpb24gaXMgaW1tb3J0YWwgb3IgbW9ydGFsXG4gICAqIEBwYXJhbSBoZXhWYWx1ZVxuICAgKi9cbiAgaXNaZXJvSGV4KGhleFZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGV4VmFsdWUgPT09ICcweDAwJztcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
2
|
import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
|
|
3
|
-
import { TransactionType } from '
|
|
3
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
4
4
|
import { Transaction } from './transaction';
|
|
5
5
|
import { TransactionBuilder } from './transactionBuilder';
|
|
6
6
|
export declare class WithdrawUnstakedBuilder extends TransactionBuilder {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdrawUnstakedBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/withdrawUnstakedBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGxG,OAAO,
|
|
1
|
+
{"version":3,"file":"withdrawUnstakedBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/withdrawUnstakedBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGxG,OAAO,EAA2B,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,uBAAwB,SAAQ,kBAAkB;IAC7D,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAExB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;;;;OAQG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAYjD,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;;;OAQG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAM1C,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,GAAG,IAAI;IAarF,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAWjE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzC,OAAO,CAAC,cAAc;CAWvB"}
|
|
@@ -1,35 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
4
|
};
|
|
20
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
6
|
exports.WithdrawUnstakedBuilder = void 0;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
function WithdrawUnstakedBuilder(_coinConfig) {
|
|
32
|
-
return _super.call(this, _coinConfig) || this;
|
|
7
|
+
const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
10
|
+
const iface_1 = require("./iface");
|
|
11
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
12
|
+
const txnSchema_1 = require("./txnSchema");
|
|
13
|
+
class WithdrawUnstakedBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
14
|
+
constructor(_coinConfig) {
|
|
15
|
+
super(_coinConfig);
|
|
33
16
|
}
|
|
34
17
|
/**
|
|
35
18
|
*
|
|
@@ -40,20 +23,16 @@ var WithdrawUnstakedBuilder = /** @class */ (function (_super) {
|
|
|
40
23
|
*
|
|
41
24
|
* @see https://polkadot.js.org/docs/substrate/extrinsics/#withdrawunbondednum_slashing_spans-u32
|
|
42
25
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
26
|
+
buildTransaction() {
|
|
27
|
+
const baseTxInfo = this.createBaseTxInfo();
|
|
45
28
|
// TODO: The method changes the args type from number to string, verify it doesn't break anything
|
|
46
29
|
return txwrapper_polkadot_1.methods.staking.withdrawUnbonded({
|
|
47
30
|
numSlashingSpans: this._numSlashingSpans,
|
|
48
31
|
}, baseTxInfo.baseTxInfo, baseTxInfo.options);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
},
|
|
54
|
-
enumerable: false,
|
|
55
|
-
configurable: true
|
|
56
|
-
});
|
|
32
|
+
}
|
|
33
|
+
get transactionType() {
|
|
34
|
+
return sdk_core_1.TransactionType.StakingWithdraw;
|
|
35
|
+
}
|
|
57
36
|
/**
|
|
58
37
|
*
|
|
59
38
|
* The number of slashing spans.
|
|
@@ -63,50 +42,49 @@ var WithdrawUnstakedBuilder = /** @class */ (function (_super) {
|
|
|
63
42
|
*
|
|
64
43
|
* @see https://polkadot.js.org/docs/substrate/extrinsics/#withdrawunbondednum_slashing_spans-u32
|
|
65
44
|
*/
|
|
66
|
-
|
|
45
|
+
slashingSpans(slashingSpans) {
|
|
67
46
|
this.validateValue(new bignumber_js_1.default(slashingSpans));
|
|
68
47
|
this._numSlashingSpans = slashingSpans;
|
|
69
48
|
return this;
|
|
70
|
-
}
|
|
49
|
+
}
|
|
71
50
|
/** @inheritdoc */
|
|
72
|
-
|
|
51
|
+
validateDecodedTransaction(decodedTxn) {
|
|
73
52
|
var _a;
|
|
74
53
|
if (((_a = decodedTxn.method) === null || _a === void 0 ? void 0 : _a.name) === iface_1.MethodNames.WithdrawUnbonded) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
54
|
+
const txMethod = decodedTxn.method.args;
|
|
55
|
+
const value = txMethod.numSlashingSpans;
|
|
56
|
+
const validationResult = txnSchema_1.WithdrawUnstakedTransactionSchema.validate({ value });
|
|
78
57
|
if (validationResult.error) {
|
|
79
|
-
throw new
|
|
58
|
+
throw new sdk_core_1.InvalidTransactionError(`WithdrawUnstaked Transaction validation failed: ${validationResult.error.message}`);
|
|
80
59
|
}
|
|
81
60
|
}
|
|
82
|
-
}
|
|
61
|
+
}
|
|
83
62
|
/** @inheritdoc */
|
|
84
|
-
|
|
63
|
+
fromImplementation(rawTransaction) {
|
|
85
64
|
var _a, _b;
|
|
86
|
-
|
|
65
|
+
const tx = super.fromImplementation(rawTransaction);
|
|
87
66
|
if (((_a = this._method) === null || _a === void 0 ? void 0 : _a.name) === iface_1.MethodNames.WithdrawUnbonded) {
|
|
88
|
-
|
|
67
|
+
const txMethod = this._method.args;
|
|
89
68
|
this.slashingSpans(txMethod.numSlashingSpans);
|
|
90
69
|
}
|
|
91
70
|
else {
|
|
92
|
-
throw new
|
|
71
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${(_b = this._method) === null || _b === void 0 ? void 0 : _b.name}. Expected withdrawUnbonded`);
|
|
93
72
|
}
|
|
94
73
|
return tx;
|
|
95
|
-
}
|
|
74
|
+
}
|
|
96
75
|
/** @inheritdoc */
|
|
97
|
-
|
|
98
|
-
|
|
76
|
+
validateTransaction(_) {
|
|
77
|
+
super.validateTransaction(_);
|
|
99
78
|
this.validateFields(this._numSlashingSpans);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
value
|
|
79
|
+
}
|
|
80
|
+
validateFields(value) {
|
|
81
|
+
const validationResult = txnSchema_1.WithdrawUnstakedTransactionSchema.validate({
|
|
82
|
+
value,
|
|
104
83
|
});
|
|
105
84
|
if (validationResult.error) {
|
|
106
|
-
throw new
|
|
85
|
+
throw new sdk_core_1.InvalidTransactionError(`WithdrawUnstaked Builder Transaction validation failed: ${validationResult.error.message}`);
|
|
107
86
|
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
}(transactionBuilder_1.TransactionBuilder));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
111
89
|
exports.WithdrawUnstakedBuilder = WithdrawUnstakedBuilder;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aGRyYXdVbnN0YWtlZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3Qvd2l0aGRyYXdVbnN0YWtlZEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsc0VBQXdEO0FBQ3hELGdFQUFxQztBQUNyQyw4Q0FBMkU7QUFDM0UsbUNBQTREO0FBRTVELDZEQUEwRDtBQUMxRCwyQ0FBZ0U7QUFFaEUsTUFBYSx1QkFBd0IsU0FBUSx1Q0FBa0I7SUFHN0QsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ08sZ0JBQWdCO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNDLGlHQUFpRztRQUNqRyxPQUFPLDRCQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUNyQztZQUNFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7U0FDekMsRUFDRCxVQUFVLENBQUMsVUFBVSxFQUNyQixVQUFVLENBQUMsT0FBTyxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGFBQWEsQ0FBQyxhQUFxQjtRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxhQUFhLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDBCQUEwQixDQUFDLFVBQW1EOztRQUM1RSxJQUFJLENBQUEsTUFBQSxVQUFVLENBQUMsTUFBTSwwQ0FBRSxJQUFJLE1BQUssbUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRTtZQUM1RCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQXVDLENBQUM7WUFDM0UsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1lBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsNkNBQWlDLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMvRSxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRTtnQkFDMUIsTUFBTSxJQUFJLGtDQUF1QixDQUMvQixtREFBbUQsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUNwRixDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxjQUFzQjs7UUFDakQsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLElBQUksTUFBSyxtQkFBVyxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBNEIsQ0FBQztZQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQy9DO2FBQU07WUFDTCxNQUFNLElBQUksa0NBQXVCLENBQUMsNkJBQTZCLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2pIO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLENBQWM7UUFDaEMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFhO1FBQ2xDLE1BQU0sZ0JBQWdCLEdBQUcsNkNBQWlDLENBQUMsUUFBUSxDQUFDO1lBQ2xFLEtBQUs7U0FDTixDQUFDLENBQUM7UUFFSCxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRTtZQUMxQixNQUFNLElBQUksa0NBQXVCLENBQy9CLDJEQUEyRCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQzVGLENBQUM7U0FDSDtJQUNILENBQUM7Q0FDRjtBQTFGRCwwREEwRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgRGVjb2RlZFNpZ25lZFR4LCBEZWNvZGVkU2lnbmluZ1BheWxvYWQsIFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IG1ldGhvZHMgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IE1ldGhvZE5hbWVzLCBXaXRoZHJhd1Vuc3Rha2VkQXJncyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFdpdGhkcmF3VW5zdGFrZWRUcmFuc2FjdGlvblNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcblxuZXhwb3J0IGNsYXNzIFdpdGhkcmF3VW5zdGFrZWRCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9udW1TbGFzaGluZ1NwYW5zOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEZyZWVzIHVwIGFueSB1bmxvY2tlZCBjaHVua3MuXG4gICAqIFRoZSBiYWxhbmNlIGNhbiBub3cgYmUgdXNlZCBieSB0aGUgc3Rhc2ggYWNjb3VudCB0byBkbyB3aGF0ZXZlciBpdCB3YW50cy5cbiAgICpcbiAgICogQHJldHVybnMge1Vuc2lnbmVkVHJhbnNhY3Rpb259IGFuIHVuc2lnbmVkIERvdCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcG9sa2Fkb3QuanMub3JnL2RvY3Mvc3Vic3RyYXRlL2V4dHJpbnNpY3MvI3dpdGhkcmF3dW5ib25kZWRudW1fc2xhc2hpbmdfc3BhbnMtdTMyXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRUcmFuc2FjdGlvbigpOiBVbnNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBiYXNlVHhJbmZvID0gdGhpcy5jcmVhdGVCYXNlVHhJbmZvKCk7XG4gICAgLy8gVE9ETzogVGhlIG1ldGhvZCBjaGFuZ2VzIHRoZSBhcmdzIHR5cGUgZnJvbSBudW1iZXIgdG8gc3RyaW5nLCB2ZXJpZnkgaXQgZG9lc24ndCBicmVhayBhbnl0aGluZ1xuICAgIHJldHVybiBtZXRob2RzLnN0YWtpbmcud2l0aGRyYXdVbmJvbmRlZChcbiAgICAgIHtcbiAgICAgICAgbnVtU2xhc2hpbmdTcGFuczogdGhpcy5fbnVtU2xhc2hpbmdTcGFucyxcbiAgICAgIH0sXG4gICAgICBiYXNlVHhJbmZvLmJhc2VUeEluZm8sXG4gICAgICBiYXNlVHhJbmZvLm9wdGlvbnMsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVGhlIG51bWJlciBvZiBzbGFzaGluZyBzcGFucy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNsYXNoaW5nU3BhbnNcbiAgICogQHJldHVybnMge1dpdGhkcmF3VW5zdGFrZWRCdWlsZGVyfSBUaGlzIHdpdGhkcmF3VW5zdGFrZWQgYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BvbGthZG90LmpzLm9yZy9kb2NzL3N1YnN0cmF0ZS9leHRyaW5zaWNzLyN3aXRoZHJhd3VuYm9uZGVkbnVtX3NsYXNoaW5nX3NwYW5zLXUzMlxuICAgKi9cbiAgc2xhc2hpbmdTcGFucyhzbGFzaGluZ1NwYW5zOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihzbGFzaGluZ1NwYW5zKSk7XG4gICAgdGhpcy5fbnVtU2xhc2hpbmdTcGFucyA9IHNsYXNoaW5nU3BhbnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oZGVjb2RlZFR4bjogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4KTogdm9pZCB7XG4gICAgaWYgKGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5XaXRoZHJhd1VuYm9uZGVkKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgdW5rbm93biBhcyBXaXRoZHJhd1Vuc3Rha2VkQXJncztcbiAgICAgIGNvbnN0IHZhbHVlID0gdHhNZXRob2QubnVtU2xhc2hpbmdTcGFucztcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBXaXRoZHJhd1Vuc3Rha2VkVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoeyB2YWx1ZSB9KTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgV2l0aGRyYXdVbnN0YWtlZCBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBpZiAodGhpcy5fbWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5XaXRoZHJhd1VuYm9uZGVkKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IHRoaXMuX21ldGhvZC5hcmdzIGFzIFdpdGhkcmF3VW5zdGFrZWRBcmdzO1xuICAgICAgdGhpcy5zbGFzaGluZ1NwYW5zKHR4TWV0aG9kLm51bVNsYXNoaW5nU3BhbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgVHJhbnNhY3Rpb24gVHlwZTogJHt0aGlzLl9tZXRob2Q/Lm5hbWV9LiBFeHBlY3RlZCB3aXRoZHJhd1VuYm9uZGVkYCk7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKF86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbihfKTtcbiAgICB0aGlzLnZhbGlkYXRlRmllbGRzKHRoaXMuX251bVNsYXNoaW5nU3BhbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpZWxkcyh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IFdpdGhkcmF3VW5zdGFrZWRUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICB2YWx1ZSxcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBXaXRoZHJhd1Vuc3Rha2VkIEJ1aWxkZXIgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|