UNPKG

bitgo

Version:
2 lines • 27.2 MB
/*! For license information please see BitGoJS.min.js.LICENSE.txt */ !function webpackUniversalModuleDefinition(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory(require("proxy-agent"),require("wasmer_wasi_js_bg.wasm")):"function"==typeof define&&define.amd?define(["proxy-agent","wasmer_wasi_js_bg.wasm"],factory):"object"==typeof exports?exports.BitGoJS=factory(require("proxy-agent"),require("wasmer_wasi_js_bg.wasm")):root.BitGoJS=factory(root["proxy-agent"],root["wasmer_wasi_js_bg.wasm"])}(self,((__WEBPACK_EXTERNAL_MODULE__35300__,__WEBPACK_EXTERNAL_MODULE__34603__)=>(()=>{var __webpack_modules__={48713:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CosmosCoin=void 0;const sdk_core_1=__webpack_require__(62330),sdk_lib_mpc_1=__webpack_require__(58006),utxo_lib_1=__webpack_require__(76736),bignumber_js_1=__webpack_require__(6391),buffer_1=__webpack_require__(48834),crypto_1=__webpack_require__(5634),_=__webpack_require__(76635),querystring=__webpack_require__(56642),request=__webpack_require__(139),url=__webpack_require__(883),constants_1=__webpack_require__(28987),utils_1=__webpack_require__(24651);class CosmosCoin extends sdk_core_1.BaseCoin{constructor(bitgo,staticsCoin){if(super(bitgo),!staticsCoin)throw new Error("missing required constructor parameter staticsCoin");this._staticsCoin=staticsCoin}static createInstance(bitgo,staticsCoin){return new CosmosCoin(bitgo,staticsCoin)}getBuilder(){throw new Error("Method not implemented.")}getBaseFactor(){throw new Error("Method not implemented")}getChain(){return this._staticsCoin.name}getFamily(){return this._staticsCoin.family}getFullName(){return this._staticsCoin.fullName}supportsTss(){return!0}getMPCAlgorithm(){return"ecdsa"}isValidPub(pub){return utils_1.default.isValidPublicKey(pub)}isValidPrv(prv){return utils_1.default.isValidPrivateKey(prv)}isValidAddress(address){throw new Error("Method not implemented.")}async recover(params,openSSLBytes){if(!params.bitgoKey)throw new Error("missing bitgoKey");if(!params.recoveryDestination||!this.isValidAddress(params.recoveryDestination))throw new Error("invalid recoveryDestination");if(!params.userKey)throw new Error("missing userKey");if(!params.backupKey)throw new Error("missing backupKey");if(!params.walletPassphrase)throw new Error("missing wallet passphrase");if(!openSSLBytes)throw new Error("missing openSSLBytes");const userKey=params.userKey.replace(/\s/g,""),backupKey=params.backupKey.replace(/\s/g,""),bitgoKey=params.bitgoKey.replace(/\s/g,""),MPC=new sdk_core_1.Ecdsa,chainId=await this.getChainId(),publicKey=MPC.deriveUnhardened(bitgoKey,constants_1.ROOT_PATH).slice(0,66),senderAddress=this.getAddressFromPublicKey(publicKey),[accountNumber,sequenceNo]=await this.getAccountDetails(senderAddress),balance=new bignumber_js_1.BigNumber(await this.getAccountBalance(senderAddress)),gasBudget={amount:[{denom:this.getDenomination(),amount:this.getGasAmountDetails().gasAmount}],gasLimit:this.getGasAmountDetails().gasLimit},gasAmount=new bignumber_js_1.BigNumber(gasBudget.amount[0].amount),actualBalance=balance.minus(gasAmount);if(actualBalance.isLessThanOrEqualTo(0))throw new Error("Did not have enough funds to recover");const amount=[{denom:this.getDenomination(),amount:actualBalance.toFixed()}],sendMessage=[{fromAddress:senderAddress,toAddress:params.recoveryDestination,amount}],txnBuilder=this.getBuilder().getTransferBuilder();txnBuilder.messages(sendMessage).gasBudget(gasBudget).publicKey(publicKey).sequence(Number(sequenceNo)).accountNumber(Number(accountNumber)).chainId(chainId);const unsignedTransaction=await txnBuilder.build();let serializedTx=unsignedTransaction.toBroadcastFormat();const signableHex=unsignedTransaction.signablePayload.toString("hex");let signature;if(sdk_core_1.ECDSAUtils.isGG18SigningMaterial(userKey,params.walletPassphrase)){const[userKeyCombined,backupKeyCombined]=(()=>{const[userKeyCombined,backupKeyCombined]=this.getKeyCombinedFromTssKeyShares(userKey,backupKey,params.walletPassphrase);return[userKeyCombined,backupKeyCombined]})();if(!userKeyCombined||!backupKeyCombined)throw new Error("Missing combined key shares for user or backup");signature=await this.signRecoveryTSS(userKeyCombined,backupKeyCombined,signableHex,openSSLBytes)}else{const{userKeyShare,backupKeyShare,commonKeyChain}=await sdk_core_1.ECDSAUtils.getMpcV2RecoveryKeyShares(userKey,backupKey,params.walletPassphrase);if(!userKeyShare||!backupKeyShare||!commonKeyChain)throw new Error("Missing combined key shares for user or backup or common");const message=unsignedTransaction.signablePayload,messageHash=(utils_1.default.getHashFunction()||(0,crypto_1.createHash)("sha256")).update(message).digest();signature=await sdk_core_1.ECDSAUtils.signRecoveryMpcV2(messageHash,userKeyShare,backupKeyShare,commonKeyChain)}const signableBuffer=buffer_1.Buffer.from(signableHex,"hex");MPC.verify(signableBuffer,signature,this.getHashFunction());const cosmosKeyPair=this.getKeyPair(publicKey);txnBuilder.addSignature({pub:cosmosKeyPair.getKeys().pub},buffer_1.Buffer.from(signature.r+signature.s,"hex"));return serializedTx=(await txnBuilder.build()).toBroadcastFormat(),{serializedTx}}async redelegate(params,openSSLBytes){if(!params.bitgoKey)throw new Error("missing bitgoKey");if(!params.validatorSrcAddress||!this.isValidAddress(params.validatorSrcAddress))throw new Error("invalid validatorSrcAddress");if(!params.validatorDstAddress||!this.isValidAddress(params.validatorDstAddress))throw new Error("invalid validatorDstAddress");if(!params.userKey)throw new Error("missing userKey");if(!params.backupKey)throw new Error("missing backupKey");if(!params.walletPassphrase)throw new Error("missing wallet passphrase");if(!params.amountToRedelegate)throw new Error("missing amountToRedelegate");if(!openSSLBytes)throw new Error("missing openSSLBytes");const bitgoKey=params.bitgoKey.replace(/\s/g,""),MPC=new sdk_core_1.Ecdsa,chainId=await this.getChainId(),publicKey=MPC.deriveUnhardened(bitgoKey,constants_1.ROOT_PATH).slice(0,66),senderAddress=this.getAddressFromPublicKey(publicKey),[accountNumber,sequenceNo]=await this.getAccountDetails(senderAddress),gasBudget={amount:[{denom:this.getDenomination(),amount:this.getGasAmountDetails().gasAmount}],gasLimit:this.getGasAmountDetails().gasLimit},amount={denom:this.getDenomination(),amount:new bignumber_js_1.BigNumber(params.amountToRedelegate).toFixed()},sendMessage=[{delegatorAddress:senderAddress,validatorSrcAddress:params.validatorSrcAddress,validatorDstAddress:params.validatorDstAddress,amount}],txnBuilder=this.getBuilder().getStakingRedelegateBuilder();txnBuilder.messages(sendMessage).gasBudget(gasBudget).publicKey(publicKey).sequence(Number(sequenceNo)).accountNumber(Number(accountNumber)).chainId(chainId);const unsignedTransaction=await txnBuilder.build();let serializedTx=unsignedTransaction.toBroadcastFormat();const signableHex=unsignedTransaction.signablePayload.toString("hex"),userKey=params.userKey.replace(/\s/g,""),backupKey=params.backupKey.replace(/\s/g,""),[userKeyCombined,backupKeyCombined]=(()=>{const[userKeyCombined,backupKeyCombined]=this.getKeyCombinedFromTssKeyShares(userKey,backupKey,params.walletPassphrase);return[userKeyCombined,backupKeyCombined]})();if(!userKeyCombined||!backupKeyCombined)throw new Error("Missing combined key shares for user or backup");const signature=await this.signRecoveryTSS(userKeyCombined,backupKeyCombined,signableHex,openSSLBytes),signableBuffer=buffer_1.Buffer.from(signableHex,"hex");MPC.verify(signableBuffer,signature,this.getHashFunction());const cosmosKeyPair=this.getKeyPair(publicKey);txnBuilder.addSignature({pub:cosmosKeyPair.getKeys().pub},buffer_1.Buffer.from(signature.r+signature.s,"hex"));return serializedTx=(await txnBuilder.build()).toBroadcastFormat(),{serializedTx}}getKeyCombinedFromTssKeyShares(userPublicOrPrivateKeyShare,backupPrivateOrPublicKeyShare,walletPassphrase){let backupPrv,userPrv;try{backupPrv=this.bitgo.decrypt({input:backupPrivateOrPublicKeyShare,password:walletPassphrase}),userPrv=this.bitgo.decrypt({input:userPublicOrPrivateKeyShare,password:walletPassphrase})}catch(e){throw new Error(`Error decrypting backup keychain: ${e.message}`)}const userSigningMaterial=JSON.parse(userPrv),backupSigningMaterial=JSON.parse(backupPrv);if(!userSigningMaterial.backupNShare)throw new Error("Invalid user key - missing backupNShare");if(!backupSigningMaterial.userNShare)throw new Error("Invalid backup key - missing userNShare");const MPC=new sdk_core_1.Ecdsa,userKeyCombined=MPC.keyCombine(userSigningMaterial.pShare,[userSigningMaterial.bitgoNShare,userSigningMaterial.backupNShare]),userSigningKeyDerived=MPC.keyDerive(userSigningMaterial.pShare,[userSigningMaterial.bitgoNShare,userSigningMaterial.backupNShare],"m/0"),userKeyDerivedCombined={xShare:userSigningKeyDerived.xShare,yShares:userKeyCombined.yShares},backupKeyCombined=MPC.keyCombine(backupSigningMaterial.pShare,[userSigningKeyDerived.nShares[2],backupSigningMaterial.bitgoNShare]);if(userKeyDerivedCombined.xShare.y!==backupKeyCombined.xShare.y||userKeyDerivedCombined.xShare.chaincode!==backupKeyCombined.xShare.chaincode)throw new Error("Common keychains do not match");return[userKeyDerivedCombined,backupKeyCombined]}async signRecoveryTSS(userKeyCombined,backupKeyCombined,txHex,openSSLBytes,{rangeProofChallenge}={}){const MPC=new sdk_core_1.Ecdsa,signerOneIndex=userKeyCombined.xShare.i,signerTwoIndex=backupKeyCombined.xShare.i;rangeProofChallenge=null!=rangeProofChallenge?rangeProofChallenge:sdk_lib_mpc_1.EcdsaTypes.serializeNtildeWithProofs(await sdk_lib_mpc_1.EcdsaRangeProof.generateNtilde(openSSLBytes));const userToBackupPaillierChallenge=await sdk_lib_mpc_1.EcdsaPaillierProof.generateP((0,sdk_core_1.hexToBigInt)(userKeyCombined.yShares[signerTwoIndex].n)),backupToUserPaillierChallenge=await sdk_lib_mpc_1.EcdsaPaillierProof.generateP((0,sdk_core_1.hexToBigInt)(backupKeyCombined.yShares[signerOneIndex].n)),userXShare=MPC.appendChallenge(userKeyCombined.xShare,rangeProofChallenge,sdk_lib_mpc_1.EcdsaTypes.serializePaillierChallenge({p:userToBackupPaillierChallenge})),userYShare=MPC.appendChallenge(userKeyCombined.yShares[signerTwoIndex],rangeProofChallenge,sdk_lib_mpc_1.EcdsaTypes.serializePaillierChallenge({p:backupToUserPaillierChallenge})),backupXShare=MPC.appendChallenge(backupKeyCombined.xShare,rangeProofChallenge,sdk_lib_mpc_1.EcdsaTypes.serializePaillierChallenge({p:backupToUserPaillierChallenge})),backupYShare=MPC.appendChallenge(backupKeyCombined.yShares[signerOneIndex],rangeProofChallenge,sdk_lib_mpc_1.EcdsaTypes.serializePaillierChallenge({p:userToBackupPaillierChallenge})),signShares=await MPC.signShare(userXShare,userYShare),signConvertS21=await MPC.signConvertStep1({xShare:backupXShare,yShare:backupYShare,kShare:signShares.kShare}),signConvertS12=await MPC.signConvertStep2({aShare:signConvertS21.aShare,wShare:signShares.wShare}),signConvertS21_2=await MPC.signConvertStep3({muShare:signConvertS12.muShare,bShare:signConvertS21.bShare}),[signCombineOne,signCombineTwo]=[MPC.signCombine({gShare:signConvertS12.gShare,signIndex:{i:signConvertS12.muShare.i,j:signConvertS12.muShare.j}}),MPC.signCombine({gShare:signConvertS21_2.gShare,signIndex:{i:signConvertS21_2.signIndex.i,j:signConvertS21_2.signIndex.j}})],MESSAGE=buffer_1.Buffer.from(txHex,"hex"),[signA,signB]=[MPC.sign(MESSAGE,signCombineOne.oShare,signCombineTwo.dShare,this.getHashFunction()),MPC.sign(MESSAGE,signCombineTwo.oShare,signCombineOne.dShare,this.getHashFunction())];return MPC.constructSignature([signA,signB])}async verifyTransaction(params){var _a;let totalAmount=new bignumber_js_1.BigNumber(0);const{txPrebuild,txParams}=params,rawTx=txPrebuild.txHex;if(!rawTx)throw new Error("missing required tx prebuild property txHex");const transaction=await this.getBuilder().from(rawTx).build(),explainedTx=transaction.explainTransaction();if(txParams.recipients&&txParams.recipients.length>0){const filteredRecipients=null===(_a=txParams.recipients)||void 0===_a?void 0:_a.map((recipient=>_.pick(recipient,["address","amount"]))),filteredOutputs=explainedTx.outputs.map((output=>_.pick(output,["address","amount"])));if(!_.isEqual(filteredOutputs,filteredRecipients))throw new Error("Tx outputs does not match with expected txParams recipients");if(transaction.type!==sdk_core_1.TransactionType.StakingWithdraw&&transaction.type!==sdk_core_1.TransactionType.ContractCall){for(const recipients of txParams.recipients)totalAmount=totalAmount.plus(recipients.amount);if(!totalAmount.isEqualTo(explainedTx.outputAmount))throw new Error("Tx total amount does not match with expected total amount field")}}return!0}async explainTransaction(options){if(!options.txHex)throw new Error("missing required txHex parameter");try{const transactionBuilder=this.getBuilder().from(options.txHex);return(await transactionBuilder.build()).explainTransaction()}catch(e){throw new Error("Invalid transaction: "+e.message)}}async signTransaction(params){var _a;const txHex=null===(_a=null==params?void 0:params.txPrebuild)||void 0===_a?void 0:_a.txHex,privateKey=null==params?void 0:params.prv;if(!txHex)throw new sdk_core_1.SigningError("missing required txPrebuild parameter: params.txPrebuild.txHex");if(!privateKey)throw new sdk_core_1.SigningError("missing required prv parameter: params.prv");const txBuilder=this.getBuilder().from(params.txPrebuild.txHex);txBuilder.sign({key:params.prv});const transaction=await txBuilder.build();if(!transaction)throw new sdk_core_1.SigningError("Failed to build signed transaction");return{txHex:transaction.toBroadcastFormat()}}async parseTransaction(params){const transactionExplanation=await this.explainTransaction({txHex:params.txHex});if(!transactionExplanation)throw new Error("Invalid transaction");if(transactionExplanation.outputs.length<=0)return{inputs:[],outputs:[]};const senderAddress=transactionExplanation.outputs[0].address,feeAmount=new bignumber_js_1.BigNumber(""===transactionExplanation.fee.fee?"0":transactionExplanation.fee.fee);return{inputs:[{address:senderAddress,amount:new bignumber_js_1.BigNumber(transactionExplanation.outputAmount).plus(feeAmount).toFixed()}],outputs:transactionExplanation.outputs.map((output=>({address:output.address,amount:new bignumber_js_1.BigNumber(output.amount).toFixed()})))}}getPublicNodeUrl(){throw new Error("Method not implemented.")}async getAccountFromNode(senderAddress){const nodeUrl=this.getPublicNodeUrl(),fullEndpoint=nodeUrl+"/cosmos/auth/v1beta1/accounts/"+senderAddress;try{return await request.get(fullEndpoint).send()}catch(e){console.debug(e)}throw new Error(`Unable to call endpoint ${"/cosmos/auth/v1beta1/accounts/"+senderAddress} from node: ${nodeUrl}`)}async getBalanceFromNode(senderAddress){const nodeUrl=this.getPublicNodeUrl(),fullEndpoint=nodeUrl+"/cosmos/bank/v1beta1/balances/"+senderAddress;try{return await request.get(fullEndpoint).send()}catch(e){console.debug(e)}throw new Error(`Unable to call endpoint ${"/cosmos/bank/v1beta1/balances/"+senderAddress} from node: ${nodeUrl}`)}async getChainIdFromNode(){const nodeUrl=this.getPublicNodeUrl(),fullEndpoint=nodeUrl+"/cosmos/base/tendermint/v1beta1/blocks/latest";try{return await request.get(fullEndpoint).send()}catch(e){console.debug(e)}throw new Error(`Unable to call endpoint /cosmos/base/tendermint/v1beta1/blocks/latest from node: ${nodeUrl}`)}async getAccountBalance(senderAddress){const response=await this.getBalanceFromNode(senderAddress);if(200!==response.status)throw new Error("Account not found");return response.body.balances.find((item=>item.denom===this.getDenomination())).amount}async getChainId(){const response=await this.getChainIdFromNode();if(200!==response.status)throw new Error("Account not found");return response.body.block.header.chain_id}async getAccountDetails(senderAddress){const response=await this.getAccountFromNode(senderAddress);if(200!==response.status)throw new Error("Account not found");return[response.body.account.account_number,response.body.account.sequence]}generateKeyPair(seed){seed||(seed=(0,crypto_1.randomBytes)(64));const extendedKey=utxo_lib_1.bip32.fromSeed(seed);return{pub:extendedKey.neutered().toBase58(),prv:extendedKey.toBase58()}}getAddressFromPublicKey(pubKey){throw new Error("Method not implemented")}async isWalletAddress(params){const addressDetails=this.getAddressDetails(params.address);if(!this.isValidAddress(addressDetails.address))throw new sdk_core_1.InvalidAddressError(`invalid address: ${addressDetails.address}`);const rootAddress=params.coinSpecific.rootAddress;if(addressDetails.address!==rootAddress)throw new sdk_core_1.UnexpectedAddressError(`address validation failure: ${addressDetails.address} vs ${rootAddress}`);return!0}getHashFunction(){return utils_1.default.getHashFunction()}getAddressDetails(address){const destinationDetails=url.parse(address),destinationAddress=destinationDetails.pathname||"";if(destinationDetails.pathname===address)return{address,memoId:void 0};if(!destinationDetails.query)throw new sdk_core_1.InvalidAddressError(`invalid address: ${address}`);const queryDetails=querystring.parse(destinationDetails.query);if(!queryDetails.memoId)throw new sdk_core_1.InvalidAddressError(`invalid address: ${address}`);if(Array.isArray(queryDetails.memoId))throw new sdk_core_1.InvalidAddressError(`memoId may only be given at most once, but found ${queryDetails.memoId.length} instances in address ${address}`);if(Array.isArray(queryDetails.memoId)&&1!==queryDetails.memoId.length)throw new sdk_core_1.InvalidAddressError(`invalid address '${address}', must contain exactly one memoId`);const[memoId]=_.castArray(queryDetails.memoId)||void 0;if(!this.isValidMemoId(memoId))throw new sdk_core_1.InvalidMemoIdError(`invalid address: '${address}', memoId is not valid`);return{address:destinationAddress,memoId}}isValidMemoId(memoId){return utils_1.default.isValidMemoId(memoId)}getDenomination(){throw new Error("Method not implemented")}getGasAmountDetails(){throw new Error("Method not implemented")}getKeyPair(publicKey){throw new Error("Method not implemented")}}exports.CosmosCoin=CosmosCoin},12799:function(__unused_webpack_module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.CosmosCoin=void 0,__exportStar(__webpack_require__(94220),exports);var cosmosCoin_1=__webpack_require__(48713);Object.defineProperty(exports,"CosmosCoin",{enumerable:!0,get:function(){return cosmosCoin_1.CosmosCoin}})},20826:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ContractCallBuilder=void 0;const sdk_core_1=__webpack_require__(62330),constants=__webpack_require__(28987),transactionBuilder_1=__webpack_require__(43036);class ContractCallBuilder extends transactionBuilder_1.CosmosTransactionBuilder{constructor(_coinConfig,utils){super(_coinConfig,utils),this._utils=utils}get transactionType(){return sdk_core_1.TransactionType.ContractCall}messages(messages){return this._messages=messages.map((executeContractMessage=>(this._utils.validateExecuteContractMessage(executeContractMessage,this.transactionType),{typeUrl:constants.executeContractMsgTypeUrl,value:executeContractMessage}))),this}}exports.ContractCallBuilder=ContractCallBuilder},91633:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StakingActivateBuilder=void 0;const sdk_core_1=__webpack_require__(62330),constants=__webpack_require__(28987),transactionBuilder_1=__webpack_require__(43036);class StakingActivateBuilder extends transactionBuilder_1.CosmosTransactionBuilder{constructor(_coinConfig,utils){super(_coinConfig,utils),this._utils=utils}get transactionType(){return sdk_core_1.TransactionType.StakingActivate}messages(delegateMessages){return this._messages=delegateMessages.map((delegateMessage=>(this._utils.validateDelegateOrUndelegateMessage(delegateMessage),{typeUrl:constants.delegateMsgTypeUrl,value:delegateMessage}))),this}}exports.StakingActivateBuilder=StakingActivateBuilder},21781:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StakingDeactivateBuilder=void 0;const sdk_core_1=__webpack_require__(62330),constants=__webpack_require__(28987),transactionBuilder_1=__webpack_require__(43036);class StakingDeactivateBuilder extends transactionBuilder_1.CosmosTransactionBuilder{constructor(_coinConfig,utils){super(_coinConfig,utils),this._utils=utils}get transactionType(){return sdk_core_1.TransactionType.StakingDeactivate}messages(undelegateMessages){return this._messages=undelegateMessages.map((undelegateMessage=>(this._utils.validateDelegateOrUndelegateMessage(undelegateMessage),{typeUrl:constants.undelegateMsgTypeUrl,value:undelegateMessage}))),this}}exports.StakingDeactivateBuilder=StakingDeactivateBuilder},45932:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StakingRedelegateBuilder=void 0;const sdk_core_1=__webpack_require__(62330),constants=__webpack_require__(28987),transactionBuilder_1=__webpack_require__(43036);class StakingRedelegateBuilder extends transactionBuilder_1.CosmosTransactionBuilder{constructor(_coinConfig,utils){super(_coinConfig,utils),this._utils=utils}get transactionType(){return sdk_core_1.TransactionType.StakingRedelegate}messages(redelegateMessages){return this._messages=redelegateMessages.map((redelegateMessage=>(this._utils.validateRedelegateMessage(redelegateMessage),{typeUrl:constants.redelegateTypeUrl,value:redelegateMessage}))),this}}exports.StakingRedelegateBuilder=StakingRedelegateBuilder},51137:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StakingWithdrawRewardsBuilder=void 0;const sdk_core_1=__webpack_require__(62330),constants=__webpack_require__(28987),transactionBuilder_1=__webpack_require__(43036);class StakingWithdrawRewardsBuilder extends transactionBuilder_1.CosmosTransactionBuilder{constructor(_coinConfig,utils){super(_coinConfig,utils),this._utils=utils}get transactionType(){return sdk_core_1.TransactionType.StakingWithdraw}messages(withdrawRewardsMessages){return this._messages=withdrawRewardsMessages.map((withdrawRewardsMessage=>(this._utils.validateWithdrawRewardsMessage(withdrawRewardsMessage),{typeUrl:constants.withdrawDelegatorRewardMsgTypeUrl,value:withdrawRewardsMessage}))),this}}exports.StakingWithdrawRewardsBuilder=StakingWithdrawRewardsBuilder},28987:(__unused_webpack_module,exports)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ROOT_PATH=exports.UNAVAILABLE_TEXT=exports.executeContractMsgTypeUrl=exports.withdrawDelegatorRewardMsgTypeUrl=exports.redelegateTypeUrl=exports.undelegateMsgTypeUrl=exports.delegateMsgTypeUrl=exports.sendMsgTypeUrl=exports.DEFAULT_SEED_SIZE_BYTES=void 0,exports.DEFAULT_SEED_SIZE_BYTES=16,exports.sendMsgTypeUrl="/cosmos.bank.v1beta1.MsgSend",exports.delegateMsgTypeUrl="/cosmos.staking.v1beta1.MsgDelegate",exports.undelegateMsgTypeUrl="/cosmos.staking.v1beta1.MsgUndelegate",exports.redelegateTypeUrl="/cosmos.staking.v1beta1.MsgBeginRedelegate",exports.withdrawDelegatorRewardMsgTypeUrl="/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward",exports.executeContractMsgTypeUrl="/cosmwasm.wasm.v1.MsgExecuteContract",exports.UNAVAILABLE_TEXT="UNAVAILABLE",exports.ROOT_PATH="m/0"},10106:(__unused_webpack_module,exports)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PubKeyType=exports.PubKeyTypeUrl=void 0,function(PubKeyTypeUrl){PubKeyTypeUrl.secp256k1="/cosmos.crypto.secp256k1.PubKey",PubKeyTypeUrl.ethSecp256k1="/ethermint.crypto.v1.ethsecp256k1.PubKey"}(exports.PubKeyTypeUrl||(exports.PubKeyTypeUrl={})),function(PubKeyType){PubKeyType.secp256k1="tendermint/PubKeySecp256k1",PubKeyType.ethSecp256k1="tendermint/PubKeyEthSecp256k1"}(exports.PubKeyType||(exports.PubKeyType={}))},94220:function(__unused_webpack_module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__exportStar=this&&this.__exportStar||function(m,exports){for(var p in m)"default"===p||Object.prototype.hasOwnProperty.call(exports,p)||__createBinding(exports,m,p)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.CosmosConstants=exports.CosmosUtils=exports.StakingRedelegateBuilder=exports.CosmosTransferBuilder=exports.CosmosTransactionBuilder=exports.CosmosTransaction=exports.CosmosKeyPair=exports.ContractCallBuilder=exports.StakingWithdrawRewardsBuilder=exports.StakingDeactivateBuilder=exports.StakingActivateBuilder=void 0;const CosmosConstants=__webpack_require__(28987);exports.CosmosConstants=CosmosConstants,__exportStar(__webpack_require__(10106),exports);var StakingActivateBuilder_1=__webpack_require__(91633);Object.defineProperty(exports,"StakingActivateBuilder",{enumerable:!0,get:function(){return StakingActivateBuilder_1.StakingActivateBuilder}});var StakingDeactivateBuilder_1=__webpack_require__(21781);Object.defineProperty(exports,"StakingDeactivateBuilder",{enumerable:!0,get:function(){return StakingDeactivateBuilder_1.StakingDeactivateBuilder}});var StakingWithdrawRewardsBuilder_1=__webpack_require__(51137);Object.defineProperty(exports,"StakingWithdrawRewardsBuilder",{enumerable:!0,get:function(){return StakingWithdrawRewardsBuilder_1.StakingWithdrawRewardsBuilder}});var ContractCallBuilder_1=__webpack_require__(20826);Object.defineProperty(exports,"ContractCallBuilder",{enumerable:!0,get:function(){return ContractCallBuilder_1.ContractCallBuilder}});var keyPair_1=__webpack_require__(47935);Object.defineProperty(exports,"CosmosKeyPair",{enumerable:!0,get:function(){return keyPair_1.CosmosKeyPair}});var transaction_1=__webpack_require__(51981);Object.defineProperty(exports,"CosmosTransaction",{enumerable:!0,get:function(){return transaction_1.CosmosTransaction}});var transactionBuilder_1=__webpack_require__(43036);Object.defineProperty(exports,"CosmosTransactionBuilder",{enumerable:!0,get:function(){return transactionBuilder_1.CosmosTransactionBuilder}});var transferBuilder_1=__webpack_require__(53128);Object.defineProperty(exports,"CosmosTransferBuilder",{enumerable:!0,get:function(){return transferBuilder_1.CosmosTransferBuilder}});var StakingRedelegateBuilder_1=__webpack_require__(45932);Object.defineProperty(exports,"StakingRedelegateBuilder",{enumerable:!0,get:function(){return StakingRedelegateBuilder_1.StakingRedelegateBuilder}});var utils_1=__webpack_require__(24651);Object.defineProperty(exports,"CosmosUtils",{enumerable:!0,get:function(){return utils_1.CosmosUtils}})},47935:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CosmosKeyPair=void 0;const sdk_core_1=__webpack_require__(62330),utxo_lib_1=__webpack_require__(76736),crypto_1=__webpack_require__(5634),constants_1=__webpack_require__(28987);class CosmosKeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair{constructor(source){if(super(source),source)if((0,sdk_core_1.isSeed)(source))this.hdNode=utxo_lib_1.bip32.fromSeed(source.seed);else if((0,sdk_core_1.isPrivateKey)(source))this.recordKeysFromPrivateKey(source.prv);else{if(!(0,sdk_core_1.isPublicKey)(source))throw new Error("Invalid key pair options");this.recordKeysFromPublicKey(source.pub)}else{const seed=(0,crypto_1.randomBytes)(constants_1.DEFAULT_SEED_SIZE_BYTES);this.hdNode=utxo_lib_1.bip32.fromSeed(seed)}this.hdNode&&(this.keyPair=sdk_core_1.Secp256k1ExtendedKeyPair.toKeyPair(this.hdNode))}getKeys(){var _a;return{pub:this.getPublicKey({compressed:!0}).toString("hex"),prv:null===(_a=this.getPrivateKey())||void 0===_a?void 0:_a.toString("hex")}}}exports.CosmosKeyPair=CosmosKeyPair},51981:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";var Buffer=__webpack_require__(48834).Buffer;Object.defineProperty(exports,"__esModule",{value:!0}),exports.CosmosTransaction=void 0;const sdk_core_1=__webpack_require__(62330),encoding_1=__webpack_require__(20302),proto_signing_1=__webpack_require__(39649),tx_1=__webpack_require__(82840),constants_1=__webpack_require__(28987);class CosmosTransaction extends sdk_core_1.BaseTransaction{constructor(_coinConfig,utils){super(_coinConfig),this._utils=utils}get cosmosLikeTransaction(){return this._cosmosLikeTransaction}set cosmosLikeTransaction(cosmosLikeTransaction){this._cosmosLikeTransaction=cosmosLikeTransaction}get chainId(){return this._chainId}set chainId(chainId){this._chainId=chainId}get accountNumber(){return this._accountNumber}set accountNumber(accountNumber){this._accountNumber=accountNumber}get id(){var _a;return this._id?this._id:void 0!==(null===(_a=this._cosmosLikeTransaction)||void 0===_a?void 0:_a.hash)?this._cosmosLikeTransaction.hash:constants_1.UNAVAILABLE_TEXT}canSign(key){return!0}toBroadcastFormat(){if(!this._cosmosLikeTransaction)throw new sdk_core_1.InvalidTransactionError("Empty transaction");return this.serialize()}toJson(){if(!this._cosmosLikeTransaction)throw new sdk_core_1.ParseTransactionError("Empty transaction");const tx=this._cosmosLikeTransaction;return{id:this.id,type:this._type,sequence:tx.sequence,sendMessages:tx.sendMessages,gasBudget:tx.gasBudget,publicKey:tx.publicKey,signature:tx.signature,accountNumber:this._accountNumber,chainId:this._chainId,hash:tx.hash,memo:tx.memo}}addSignature(signature){this._signatures=[],this._signatures.push(signature)}explainTransaction(){const result=this.toJson(),explanationResult={displayOrder:["id","outputs","outputAmount","changeOutputs","changeAmount","fee","type"],id:this.id,outputs:[],outputAmount:"0",changeOutputs:[],changeAmount:"0",fee:{fee:this.cosmosLikeTransaction.gasBudget.amount[0].amount},type:this.type};return this.explainTransactionInternal(result,explanationResult)}set transactionType(transactionType){this._type=transactionType}serialize(){var _a;const txRaw=this._utils.createTxRawFromCosmosLikeTransaction(this.cosmosLikeTransaction);if(void 0!==(null===(_a=this.cosmosLikeTransaction)||void 0===_a?void 0:_a.publicKey)&&this._signatures.length>0){const signedRawTx=this._utils.createSignedTxRaw(this.cosmosLikeTransaction.publicKey,this._signatures[0],txRaw);return(0,encoding_1.toBase64)(tx_1.TxRaw.encode(signedRawTx).finish())}return(0,encoding_1.toBase64)(tx_1.TxRaw.encode(txRaw).finish())}get signablePayload(){return Buffer.from((0,proto_signing_1.makeSignBytes)(this._utils.createSignDoc(this.cosmosLikeTransaction,this._accountNumber,this._chainId)))}explainTransactionInternal(json,explanationResult){let outputs,outputAmount;switch(json.type){case sdk_core_1.TransactionType.Send:explanationResult.type=sdk_core_1.TransactionType.Send,outputAmount=BigInt(0),outputs=json.sendMessages.map((message=>{const sendMessage=message.value;return outputAmount+=BigInt(sendMessage.amount[0].amount),{address:sendMessage.toAddress,amount:sendMessage.amount[0].amount}}));break;case sdk_core_1.TransactionType.StakingActivate:explanationResult.type=sdk_core_1.TransactionType.StakingActivate,outputAmount=BigInt(0),outputs=json.sendMessages.map((message=>{const delegateMessage=message.value;return outputAmount+=BigInt(delegateMessage.amount.amount),{address:delegateMessage.validatorAddress,amount:delegateMessage.amount.amount}}));break;case sdk_core_1.TransactionType.StakingDeactivate:explanationResult.type=sdk_core_1.TransactionType.StakingDeactivate,outputAmount=BigInt(0),outputs=json.sendMessages.map((message=>{const delegateMessage=message.value;return outputAmount+=BigInt(delegateMessage.amount.amount),{address:delegateMessage.validatorAddress,amount:delegateMessage.amount.amount}}));break;case sdk_core_1.TransactionType.StakingWithdraw:explanationResult.type=sdk_core_1.TransactionType.StakingWithdraw,outputs=json.sendMessages.map((message=>({address:message.value.validatorAddress,amount:constants_1.UNAVAILABLE_TEXT})));break;case sdk_core_1.TransactionType.ContractCall:explanationResult.type=sdk_core_1.TransactionType.ContractCall,outputAmount=BigInt(0),outputs=json.sendMessages.map((message=>{var _a,_b,_c,_d,_e,_f;const executeContractMessage=message.value;return outputAmount+=BigInt(null!==(_c=null===(_b=null===(_a=executeContractMessage.funds)||void 0===_a?void 0:_a[0])||void 0===_b?void 0:_b.amount)&&void 0!==_c?_c:"0"),{address:executeContractMessage.contract,amount:null!==(_f=null===(_e=null===(_d=executeContractMessage.funds)||void 0===_d?void 0:_d[0])||void 0===_e?void 0:_e.amount)&&void 0!==_f?_f:"0"}}));break;case sdk_core_1.TransactionType.StakingRedelegate:explanationResult.type=sdk_core_1.TransactionType.StakingRedelegate,outputAmount=BigInt(0),outputs=json.sendMessages.map((message=>{const redelegateMessage=message.value;return outputAmount+=BigInt(redelegateMessage.amount.amount),{address:redelegateMessage.validatorDstAddress,amount:redelegateMessage.amount.amount}}));break;default:throw new sdk_core_1.InvalidTransactionError("Transaction type not supported")}return json.memo&&outputs.forEach((output=>{output.memo=json.memo})),{...explanationResult,outputAmount:null==outputAmount?void 0:outputAmount.toString(),outputs}}loadInputsAndOutputs(){if(void 0===this.type||!this.cosmosLikeTransaction)throw new sdk_core_1.InvalidTransactionError("Transaction type or cosmosLikeTransaction is not set");const outputs=[],inputs=[];switch(this.type){case sdk_core_1.TransactionType.Send:this.cosmosLikeTransaction.sendMessages.forEach((message=>{const sendMessage=message.value;inputs.push({address:sendMessage.fromAddress,value:sendMessage.amount[0].amount,coin:this._coinConfig.name}),outputs.push({address:sendMessage.toAddress,value:sendMessage.amount[0].amount,coin:this._coinConfig.name})}));break;case sdk_core_1.TransactionType.StakingActivate:case sdk_core_1.TransactionType.StakingDeactivate:this.cosmosLikeTransaction.sendMessages.forEach((message=>{const delegateMessage=message.value;inputs.push({address:delegateMessage.delegatorAddress,value:delegateMessage.amount.amount,coin:this._coinConfig.name}),outputs.push({address:delegateMessage.validatorAddress,value:delegateMessage.amount.amount,coin:this._coinConfig.name})}));break;case sdk_core_1.TransactionType.StakingWithdraw:this.cosmosLikeTransaction.sendMessages.forEach((message=>{const withdrawMessage=message.value;inputs.push({address:withdrawMessage.delegatorAddress,value:constants_1.UNAVAILABLE_TEXT,coin:this._coinConfig.name}),outputs.push({address:withdrawMessage.validatorAddress,value:constants_1.UNAVAILABLE_TEXT,coin:this._coinConfig.name})}));break;case sdk_core_1.TransactionType.ContractCall:this.cosmosLikeTransaction.sendMessages.forEach((message=>{var _a,_b,_c,_d,_e,_f;const executeContractMessage=message.value;inputs.push({address:executeContractMessage.sender,value:null!==(_c=null===(_b=null===(_a=executeContractMessage.funds)||void 0===_a?void 0:_a[0])||void 0===_b?void 0:_b.amount)&&void 0!==_c?_c:"0",coin:this._coinConfig.name}),outputs.push({address:executeContractMessage.contract,value:null!==(_f=null===(_e=null===(_d=executeContractMessage.funds)||void 0===_d?void 0:_d[0])||void 0===_e?void 0:_e.amount)&&void 0!==_f?_f:"0",coin:this._coinConfig.name})}));break;case sdk_core_1.TransactionType.StakingRedelegate:this.cosmosLikeTransaction.sendMessages.forEach((message=>{const redelegateMessage=message.value;inputs.push({address:redelegateMessage.delegatorAddress,value:redelegateMessage.amount.amount,coin:this._coinConfig.name}),outputs.push({address:redelegateMessage.validatorDstAddress,value:redelegateMessage.amount.amount,coin:this._coinConfig.name})}));break;default:throw new sdk_core_1.InvalidTransactionError("Transaction type not supported")}this._inputs=inputs,this._outputs=outputs}enrichTransactionDetailsFromRawTransaction(rawTransaction){this._utils.isValidHexString(rawTransaction)?this.cosmosLikeTransaction=this._utils.deserializeTransaction((0,encoding_1.toBase64)((0,encoding_1.fromHex)(rawTransaction))):this.cosmosLikeTransaction=this._utils.deserializeTransaction(rawTransaction),this.cosmosLikeTransaction.signature&&this.addSignature(Buffer.from(this.cosmosLikeTransaction.signature).toString("hex"));const typeUrl=this.cosmosLikeTransaction.sendMessages[0].typeUrl,transactionType=this._utils.getTransactionTypeFromTypeUrl(typeUrl);if(void 0===transactionType)throw new Error("Transaction type is not supported "+typeUrl);this.transactionType=transactionType}}exports.CosmosTransaction=CosmosTransaction},43036:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";var Buffer=__webpack_require__(48834).Buffer;Object.defineProperty(exports,"__esModule",{value:!0}),exports.CosmosTransactionBuilder=void 0;const sdk_core_1=__webpack_require__(62330),crypto_1=__webpack_require__(29669),proto_signing_1=__webpack_require__(39649),keyPair_1=__webpack_require__(47935),transaction_1=__webpack_require__(51981);class CosmosTransactionBuilder extends sdk_core_1.BaseTransactionBuilder{constructor(_coinConfig,_utils){super(_coinConfig),this._transaction=new transaction_1.CosmosTransaction(_coinConfig,_utils)}get transaction(){return this._transaction}set transaction(transaction){this._transaction=transaction}addSignature(publicKey,signature){this._signature=signature,this._publicKey=publicKey.pub}sequence(sequence){return this._utils.validateSequence(sequence),this._sequence=sequence,this}publicKey(publicKey){return this._publicKey=publicKey,this}accountNumber(accountNumber){return this._accountNumber=accountNumber,this}chainId(chainId){return this._chainId=chainId,this}memo(memo){return this._memo=memo,this}signImplementation(key){if(this.validateKey(key),void 0===this._accountNumber)throw new sdk_core_1.SigningError("accountNumber is required before signing");if(void 0===this._chainId)throw new sdk_core_1.SigningError("chainId is required before signing");return this._signer=new keyPair_1.CosmosKeyPair({prv:key.key}),this._publicKey=this._signer.getKeys().pub,this.transaction}validateValue(value){if(value.isLessThan(0))throw new sdk_core_1.BuildTransactionError("Value cannot be less than zero")}validateKey(key){try{new keyPair_1.CosmosKeyPair({prv:key.key})}catch{throw new sdk_core_1.BuildTransactionError("Key validation failed")}}gasBudget(gasBudget){return this._utils.validateGasBudget(gasBudget),this._gasBudget=gasBudget,this}initBuilder(tx){this._transaction=tx;const txData=tx.toJson();this.gasBudget(txData.gasBudget),this.messages(txData.sendMessages.map((message=>message.value))),this.sequence(txData.sequence),this.publicKey(txData.publicKey),this.accountNumber(txData.accountNumber),this.chainId(txData.chainId),this.memo(txData.memo),tx.signature&&tx.signature.length>0&&this.addSignature({pub:txData.publicKey},Buffer.from(tx.signature[0],"hex"))}fromImplementation(rawTransaction){const tx=new transaction_1.CosmosTransaction(this._coinConfig,this._utils);return tx.enrichTransactionDetailsFromRawTransaction(rawTransaction),this.initBuilder(tx),this.transaction}async buildImplementation(){var _a;this.transaction.transactionType=this.transactionType,this._accountNumber&&(this.transaction.accountNumber=this._accountNumber),this._chainId&&(this.transaction.chainId=this._chainId),this.transaction.cosmosLikeTransaction=this._utils.createTransaction(this._sequence,this._messages,this._gasBudget,this._publicKey,this._memo);const privateKey=null===(_a=this._signer)||void 0===_a?void 0:_a.getPrivateKey();if(void 0!==privateKey&&void 0!==this.transaction.cosmosLikeTransaction.publicKey){const signDoc=this._utils.createSignDoc(this.transaction.cosmosLikeTransaction,this._accountNumber,this._chainId),txnHash=Uint8Array.from(this._utils.getHashFunction().update((0,proto_signing_1.makeSignBytes)(signDoc)).digest()),signature=await crypto_1.Secp256k1.createSignature(txnHash,privateKey),compressedSig=Buffer.concat([signature.r(),signature.s()]);this.addSignature({pub:this.transaction.cosmosLikeTransaction.publicKey},compressedSig)}return void 0!==this._signature&&(this.transaction.addSignature(this._signature.toString("hex")),this.transaction.cosmosLikeTransaction=this._utils.createTransactionWithHash(this._sequence,this._messages,this._gasBudget,this._publicKey,this._signature,this._memo)),this.transaction.loadInputsAndOutputs(),this.transaction}validateAddress(address,addressFormat){if(!this._utils.isValidAddress(address.address)&&!this._utils.isValidValidatorAddress(address.address))throw new sdk_core_1.BuildTransactionError("transactionBuilder: address isValidAddress check failed: "+address.address)}validateRawTransaction(rawTransaction){if(!rawTransaction)throw new sdk_core_1.InvalidTransactionError("Invalid raw transaction: Undefined rawTransaction");const cosmosTransaction=this._utils.deserializeTransaction(rawTransaction);this._utils.validateTransaction(cosmosTransaction)}validateTransaction(transaction){this._utils.validateTransaction({sequence:this._sequence,sendMessages:this._messages,gasBudget:this._gasBudget,publicKey:this._publicKey})}}exports.CosmosTransactionBuilder=CosmosTransactionBuilder},53128:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CosmosTransferBuilder=void 0;const sdk_core_1=__webpack_require__(62330),constants=__webpack_require__(28987),transactionBuilder_1=__webpack_require__(43036);class CosmosTransferBuilder extends transactionBuilder_1.CosmosTransactionBuilder{constructor(_coinConfig,utils){super(_coinConfig,utils),this._utils=utils}get transactionType(){return sdk_core_1.TransactionType.Send}messages(sendMessages){return this._messages=sendMessages.map((sendMessage=>(this._utils.validateSendMessage(sendMessage),{typeUrl:constants.sendMsgTypeUrl,value:sendMessage}))),this}}exports.CosmosTransferBuilder=CosmosTransferBuilder},24651:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";var Buffer=__webpack_require__(48834).Buffer;Object.defineProperty(exports,"__esModule",{value:!0}),exports.CosmosUtils=void 0;const sdk_core_1=__webpack_require__(62330),amino_1=__webpack_require__(83321),encoding_1=__webpack_require__(20302),proto_signing_1=__webpack_require__(39649),stargate_1=__webpack_require__(56594),bignumber_js_1=__webpack_require__(6391),tx_1=__webpack_require__(82840),tx_2=__webpack_require__(34868),crypto_1=__webpack_require__(5634),constants=__webpack_require__(28987),keyPair_1=__webpack_require__(47935);class CosmosUtils{constructor(){this.registry=new proto_signing_1.Registry([...stargate_1.defaultRegistryTypes]),this.registry.register(constants.executeContractMsgTypeUrl,tx_2.MsgExecuteContract)}isValidBlockId(hash){return this.validateBlake2b(hash)}isValidPrivateKey(key){try{return new keyPair_1.CosmosKeyPair({prv:key}),!0}catch{return!1}}isValidPublicKey(key){try{return new keyPair_1.CosmosKeyPair({pub:key}),!0}catch{return!1}}isValidSignature(signature){throw new sdk_core_1.NotImplementedError("isValidSignature not implemented")}isValidTransactionId(txId){return this.validateBlake2b(txId)}validateBlake2b(hash){return 64===(null==hash?void 0:hash.length)&&null!==hash.match(/^[a-zA-Z0-9]+$/)}isValidAmounts(amounts){for(const amount of amounts)if(!this.isValidAmount(amount))return!1;return!0}isValidAmount(amount){const bigNumberAmount=new bignumber_js_1.default(amount);return!(!bigNumberAmount.isInteger()||bigNumberAmount.isLessThanOrEqualTo(0))}getDecodedTxFromRawBase64(txRaw){try{return(0,proto_signing_1.decodeTxRaw)((0,encoding_1.fromBase64)(txRaw))}catch(e){throw new sdk_core_1.ParseTransactionError("Error decoding TxRaw base64 encoded string: "+e.message)}}getEncodedMessagesFromDecodedTx(decodedTx){return decodedTx.body.messages}validateSequence(sequence){if(sequence<0)throw new sdk_core_1.InvalidTransactionError("Invalid sequence: less than zero")}getSequenceFromDecodedTx(decodedTx){return Number(decodedTx.authInfo.signerInfos[0].sequence)}getTypeUrlFromDecodedTx(decodedTx){return this.getEncodedMessagesFromDecodedTx(decodedTx)[0].typeUrl}getGasBudgetFromDecodedTx(decodedTx){var _a,_b;return{amount:null===(_a=decodedTx.authInfo.fee)||void 0===_a?void 0:_a.amount,gasLimit:Number(null===(_b=decodedTx.authInfo.fee)||void 0===_b?void 0:_b.gasLimit)}}getPublicKeyFromDecodedTx(decodedTx){var _a,_b,_c,_d;if(null===(_b=null===(_a=decodedTx.authInfo.signerInfos)||void 0===_a?void 0:_a[0].publicKey)||void 0===_b?void 0:_b.value)return(0,encoding_1.toHex)((0,encoding_1.fromBase64)(null===(_d=(0,proto_signing_1.decodePubkey)(null===(_c=decodedTx.authInfo.signerInfos)||void 0===_c?void 0:_c[0].publicKey))||void 0===_d?void 0:_d.value))}getSendMessageDataFromDecodedTx(decodedTx){return decodedTx.body.messages.map((message=>{const value=this.registry.decode(message);return{value:{fromAddress:value.fromAddress,toAddress:value.toAddress,amount:value.amount},typeUrl:message.typeUrl}}))}getDelegateOrUndelegateMessageDataFromDecodedTx(decodedTx){return decodedTx.body.messages.map((message=>{const value=this.registry.decode(message);return{value:{delegatorAddress:value.delegatorAddress,validatorAddress:value.validatorAddress,amount:value.amount},typeUrl:message.typeUrl}}))}getRedelegateMessageDataFromDecodedTx(decodedTx){return decodedTx.body.messages.map((message=>{const value=this.registry.decode(message);return{value:{delegatorAddress:value.delegatorAddress,validatorSrcAddress:value.validatorSrcAddress,validatorDstAddress:value.validatorDstAddress,amount:value.amount},typeUrl:message.typeUrl}}))}getWithdrawRewardsMessageDataFromDecodedTx(decodedTx){return decodedTx.body.messages.map((message=>{const value=this.registry.decode(message);return{value:{delegatorAddress:value.delegatorAddress,validatorAddress:value.validatorAddress},typeUrl:message.typeUrl}}))}getWithdrawDelegatorRewardsMessageDataFromDecodedTx(decodedTx){return decodedTx.body.messages.map((message=>{const value=this.registry.decode(message);return{value:{delegatorAddress:value.delegatorAddress,validatorAddress:value.validatorAddress},typeUrl:message.typeUrl}}))}getCosmosLikeAddressFromHex(prefix,addressHex){return 0===addressHex.indexOf("0x")&&(addressHex=addressHex.slice(2)),(0,encoding_1.toBech32)(prefix,(0,encoding_1.fromHex)(addressHex))}getEvmLikeAddressFromCosmos(cosmosLikeAddress){return"0x"+(0,encoding_1.toHex)((0,encoding_1.fromBech32)(cosmosLikeAddress).data)}getExecuteContractMessageDataFromDecodedTx(decodedTx){return decodedTx.body.messages.map((message=>{const value=this.registry.decode(message);return{value:{sender:value.sender,contract:value.contract,msg:value.msg,funds:value.funds},typeUrl:message.typeUrl}}))}getTransactionTypeFromTypeUrl(typeUrl){switch(typeUrl){case constants.sendMsgTypeUrl:return sdk_core_1.TransactionType.Send;case constants.delegateMsgTypeUrl:return sdk_core_1.TransactionType.StakingActivate;case constants.undelegateMsgTypeUrl:return sdk_core_1.TransactionType.StakingDeactivate;case constants.withdrawDelegatorRewardMsgTypeUrl:return sdk_core_1.TransactionType.StakingWithdraw;case constants.executeContractMsgTypeUrl:return sdk_core_1.TransactionType.ContractCall;case constants.redelegateTypeUrl:return sdk_core_1.TransactionType.StakingRedelegate;default:return}}getEncodedPubkey(pubkey){return(0,proto_signing_1.encodePubkey)((0,amino_1.encodeSecp256k1Pubkey)((0,encoding_1.fromHex)(pubkey)))}createTxRawFromCosmosLikeTransaction(cosmosLikeTransaction){if(!cosmosLikeTransaction.publicKey)throw new Error("publicKey is required to create a txRaw");const encodedPublicKey=this.getEncodedPubkey(cosmosLikeTransaction.publicKey),messages=cosmosLikeTransaction.sendMessages;let txBodyValue;txBodyValue=cosmosLikeTransaction.memo?{memo:cosmosLikeTransaction.memo,messages}:{messages};const txBodyBytes=this.registry.encodeTxBody(txBodyValue),sequence=cosmosLikeTransaction.sequence,authInfoBytes=(0,proto_signing_1.makeAuthInfoBytes)([{pubkey:encodedPublicKey,sequence}],cosmosLikeTransaction.gasBudget.amount,cosmosLikeTransaction.gasBudget.gasLimit,void 0,void 0,void 0);return tx_1.TxRaw.fromPartial({bodyBytes:txBodyBytes,authInfoBytes})}createSignedTxRaw(publicKeyHex,signatureHex,unsignedTx){const stdSignature=(0,amino_1.encodeSecp256k1Signature)((0,encoding_1.fromHex)(publicKeyHex),(0,encoding_1.fromHex)(signatureHex));return tx_1.TxRaw.fromPartial({bodyBytes:unsignedTx.bodyBytes,authInfoBytes:unsignedTx.authInfoBytes,signatures:[(0,encoding_1.fromBase64)(stdSignature.signature)]})}isSignedRawTx(rawTransaction){return this.getDecodedTxFromRawBase64(rawTransaction).signatures.length>0}validatePublicKey(publicKey){if(void 0!==publicKey)try{new keyPair_1.CosmosKeyPair({pub:publicKey})}catch{throw new sdk_core_1.InvalidTransactionError("Invalid Public Key")}}createSignDoc(cosmosLikeTransaction,accountNumber,chainId){if(!accountNumber)throw new Error("accountNumber is required to create a sign doc");if(!chainId)throw new Error("chainId is required to create a sign doc");if(!cosmosLikeTransaction)throw new Error("cosmosLikeTransaction is required to create a sign doc");const txRaw=this.createTxRawFromCosmosLikeT