@wowok/wowok 3.0.2 → 3.0.4
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/dist/esm/Transaction-DY5xZw9i.mjs +1 -0
- package/dist/esm/arb-CUXq4EWJ.mjs +1 -0
- package/dist/esm/bcs/index.mjs +1 -1
- package/dist/esm/bcs-Cjvfeyqf.mjs +1 -1
- package/dist/esm/call-BQMw_Z9s.mjs +1 -0
- package/dist/esm/client/index.d.mts +3 -3
- package/dist/esm/client/index.mjs +1 -1
- package/dist/esm/{client-CYziyi68.mjs → client-cokX3t3P.mjs} +1 -1
- package/dist/esm/common-BLQJxJvT.mjs +1 -0
- package/dist/esm/config-Dwoyt1sO.d.mts +69 -0
- package/dist/esm/cryptography/index.d.mts +1 -1
- package/dist/esm/cryptography/index.mjs +1 -1
- package/dist/esm/{ed25519-CQkeZzxT.mjs → ed25519-Cjw5WOqY.mjs} +1 -1
- package/dist/esm/exception-CSxqQRN7.mjs +1 -0
- package/dist/esm/{falcon512-Dl5rncUq.mjs → falcon512-CnEZ-g-L.mjs} +1 -1
- package/dist/esm/fund-approval-Dy-heIpQ.mjs +1 -0
- package/dist/esm/fund-approval-EBi-SfjX.d.mts +53 -0
- package/dist/esm/graphql/index.d.mts +1 -1
- package/dist/esm/graphql/index.mjs +1 -1
- package/dist/esm/graphql/schema/index.d.mts +1 -1
- package/dist/esm/{graphql-CUsco9b3.mjs → graphql-Cv2Zjkh8.mjs} +1 -1
- package/dist/esm/grpc/index.d.mts +1 -1
- package/dist/esm/grpc/index.mjs +1 -1
- package/dist/esm/grpc-CUKHF1or.mjs +1 -0
- package/dist/esm/{index-DCFY4cxp.d.mts → index-Bss9JH4A.d.mts} +147 -27
- package/dist/esm/index.d.mts +4 -3
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/jsonRpc/index.d.mts +1 -1
- package/dist/esm/jsonRpc/index.mjs +1 -1
- package/dist/esm/jsonRpc-BDzKq1WK.mjs +1 -0
- package/dist/esm/{keypair-Y6T-6uC9.mjs → keypair-IIyGelNr.mjs} +1 -1
- package/dist/esm/keypairs/ed25519/index.d.mts +1 -1
- package/dist/esm/keypairs/ed25519/index.mjs +1 -1
- package/dist/esm/keypairs/falcon512/index.d.mts +1 -1
- package/dist/esm/keypairs/falcon512/index.mjs +1 -1
- package/dist/esm/keypairs/passkey/index.d.mts +1 -1
- package/dist/esm/keypairs/passkey/index.mjs +1 -1
- package/dist/esm/keypairs/secp256k1/index.d.mts +1 -1
- package/dist/esm/keypairs/secp256k1/index.mjs +1 -1
- package/dist/esm/keypairs/secp256r1/index.d.mts +1 -1
- package/dist/esm/keypairs/secp256r1/index.mjs +1 -1
- package/dist/esm/{logger-Cs5Mf7Mf.mjs → logger-Da7dKX2V.mjs} +1 -1
- package/dist/esm/messenger-BxoZnri2.mjs +1 -0
- package/dist/esm/{messenger-api-D6aPgQqj.mjs → messenger-api-k2rGNPPD.mjs} +1 -1
- package/dist/esm/multisig/index.d.mts +1 -1
- package/dist/esm/multisig/index.mjs +1 -1
- package/dist/esm/network-CGWSsrLB.mjs +1 -0
- package/dist/esm/object-VP6MlaCJ.mjs +1 -0
- package/dist/esm/passkey-JT2Sem2D.mjs +1 -0
- package/dist/esm/proof-D9SjsE8n.mjs +1 -0
- package/dist/esm/{publickey-Kr58241y.mjs → publickey-BZ3tMxym.mjs} +1 -1
- package/dist/esm/{publickey-CZRptlhE.mjs → publickey-Bhgj2pBz.mjs} +1 -1
- package/dist/esm/{publickey-CQJKhU0a.mjs → publickey-CHe6yvVh.mjs} +1 -1
- package/dist/esm/publickey-CvXcTL6j.mjs +1 -0
- package/dist/esm/{publickey-CcBVAm0Y.mjs → publickey-DLn5vuqp.mjs} +1 -1
- package/dist/esm/{publickey-Co-74gWq.mjs → publickey-DkfqbEPz.mjs} +1 -1
- package/dist/esm/{received-Dldrb1fk.mjs → received-DGwKBzFf.mjs} +1 -1
- package/dist/esm/secp256k1-rxTNgrNr.mjs +1 -0
- package/dist/esm/secp256r1--MEt4hQe.mjs +1 -0
- package/dist/esm/service-o4c33u4H.mjs +1 -0
- package/dist/esm/storage-D1bEi2b7.mjs +1 -1
- package/dist/esm/transactions/index.d.mts +1 -1
- package/dist/esm/transactions/index.mjs +1 -1
- package/dist/esm/{transactions-_w64QTEl.mjs → transactions-B0rmtDin.mjs} +1 -1
- package/dist/esm/{types-D7yrbH5u.d.mts → types-C7yfY8U4.d.mts} +8 -8
- package/dist/esm/util-DUArS_ez.mjs +1 -0
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/{utils-CtyqDDA5.mjs → utils-DL1Wk3E9.mjs} +1 -1
- package/dist/esm/verify/index.d.mts +1 -1
- package/dist/esm/verify/index.mjs +1 -1
- package/dist/esm/w/call/allocation.d.mts +1 -1
- package/dist/esm/w/call/allocation.mjs +1 -1
- package/dist/esm/w/call/arbitration.d.mts +1 -1
- package/dist/esm/w/call/arbitration.mjs +1 -1
- package/dist/esm/w/call/base.d.mts +1 -1
- package/dist/esm/w/call/base.mjs +1 -1
- package/dist/esm/w/call/demand.d.mts +1 -1
- package/dist/esm/w/call/demand.mjs +1 -1
- package/dist/esm/w/call/guard.d.mts +2 -2
- package/dist/esm/w/call/guard.mjs +1 -1
- package/dist/esm/w/call/index.d.mts +1 -1
- package/dist/esm/w/call/index.mjs +1 -1
- package/dist/esm/w/call/machine.d.mts +1 -1
- package/dist/esm/w/call/machine.mjs +1 -1
- package/dist/esm/w/call/passport.d.mts +1 -1
- package/dist/esm/w/call/passport.mjs +1 -1
- package/dist/esm/w/call/payment.d.mts +1 -1
- package/dist/esm/w/call/payment.mjs +1 -1
- package/dist/esm/w/call/permission.d.mts +1 -1
- package/dist/esm/w/call/permission.mjs +1 -1
- package/dist/esm/w/call/progress.d.mts +1 -1
- package/dist/esm/w/call/progress.mjs +1 -1
- package/dist/esm/w/call/repository.d.mts +1 -1
- package/dist/esm/w/call/repository.mjs +1 -1
- package/dist/esm/w/call/reward.d.mts +1 -1
- package/dist/esm/w/call/reward.mjs +1 -1
- package/dist/esm/w/call/service.d.mts +1 -1
- package/dist/esm/w/call/service.mjs +1 -1
- package/dist/esm/w/call/treasury.d.mts +1 -1
- package/dist/esm/w/call/treasury.mjs +1 -1
- package/dist/esm/w/common.d.mts +2 -2
- package/dist/esm/w/common.mjs +1 -1
- package/dist/esm/w/index.d.mts +4 -3
- package/dist/esm/w/index.mjs +1 -1
- package/dist/esm/w/local/account.d.mts +1 -1
- package/dist/esm/w/local/account.mjs +1 -1
- package/dist/esm/w/local/cache.mjs +1 -1
- package/dist/esm/w/local/config.d.mts +1 -1
- package/dist/esm/w/local/config.mjs +1 -1
- package/dist/esm/w/local/evm/networks.mjs +1 -1
- package/dist/esm/w/local/evm-account.mjs +1 -1
- package/dist/esm/w/local/fund-approval.d.mts +2 -0
- package/dist/esm/w/local/fund-approval.mjs +1 -0
- package/dist/esm/w/local/index.d.mts +4 -3
- package/dist/esm/w/local/index.mjs +1 -1
- package/dist/esm/w/local/local.mjs +1 -1
- package/dist/esm/w/local/secure-storage.mjs +1 -1
- package/dist/esm/w/local/storage.mjs +1 -1
- package/dist/esm/w/local/token.d.mts +1 -1
- package/dist/esm/w/local/token.mjs +1 -1
- package/dist/esm/w/local/util.mjs +1 -1
- package/dist/esm/w/local/wip.mjs +1 -1
- package/dist/esm/w/messenger/index.d.mts +1 -1
- package/dist/esm/w/messenger/index.mjs +1 -1
- package/dist/esm/w/messenger/messenger-api.d.mts +1 -1
- package/dist/esm/w/messenger/messenger-api.mjs +1 -1
- package/dist/esm/w/messenger/messenger.d.mts +1 -1
- package/dist/esm/w/messenger/messenger.mjs +1 -1
- package/dist/esm/w/messenger/pq/crypto.mjs +1 -1
- package/dist/esm/w/messenger/pq/erasure.mjs +1 -1
- package/dist/esm/w/messenger/reply.d.mts +1 -1
- package/dist/esm/w/messenger/storage.d.mts +1 -1
- package/dist/esm/w/messenger/storage.mjs +1 -1
- package/dist/esm/w/messenger/types.d.mts +1 -1
- package/dist/esm/w/messenger/types.mjs +1 -1
- package/dist/esm/w/query/index.d.mts +2 -2
- package/dist/esm/w/query/index.mjs +1 -1
- package/dist/esm/w/query/object.d.mts +1 -1
- package/dist/esm/w/query/object.mjs +1 -1
- package/dist/esm/w-C77YSXfT.mjs +1 -0
- package/package.json +20 -10
- package/dist/esm/Transaction-D1AlW3t_.mjs +0 -1
- package/dist/esm/arb-D0c_1-0E.mjs +0 -1
- package/dist/esm/base-C-bmf-9P.mjs +0 -1
- package/dist/esm/call-B89EWeo5.mjs +0 -1
- package/dist/esm/common-BXJtePqk.mjs +0 -1
- package/dist/esm/config-DyKCZw0u.d.mts +0 -38
- package/dist/esm/exception-Xd2RFs2i.mjs +0 -1
- package/dist/esm/grpc-IoJ51B_A.mjs +0 -1
- package/dist/esm/jsonRpc-1qOo1zjv.mjs +0 -1
- package/dist/esm/messenger-CjfCX1gd.mjs +0 -1
- package/dist/esm/network-y8yMus5q.mjs +0 -1
- package/dist/esm/object-C5tKBfgP.mjs +0 -1
- package/dist/esm/passkey-C1gbCkoK.mjs +0 -1
- package/dist/esm/passport-CLMoL1-c.mjs +0 -1
- package/dist/esm/proof-BRpLwdbL.mjs +0 -1
- package/dist/esm/publickey-x1pzVVw_.mjs +0 -1
- package/dist/esm/query-Co2trHrE.mjs +0 -1
- package/dist/esm/secp256k1-Pg5TWkCH.mjs +0 -1
- package/dist/esm/secp256r1-VjWddrx1.mjs +0 -1
- package/dist/esm/service-78UXm0js.mjs +0 -1
- package/dist/esm/util-IEjKV3n4.mjs +0 -1
- package/dist/esm/w-BImJL-ey.mjs +0 -1
- /package/dist/esm/{rolldown-runtime-D7D4PA-g.mjs → chunk-D7D4PA-g.mjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as a107a}from'./client-cokX3t3P.mjs';import{t as a107b}from'./Transaction-DY5xZw9i.mjs';import{o as a107c}from'./exception-CSxqQRN7.mjs';import{a as a107d}from'./network-CGWSsrLB.mjs';import{d as a107e,i as a107f}from'./storage-D1bEi2b7.mjs';import{Config}from'./w/local/config.mjs';import{r as a107g}from'./logger-Da7dKX2V.mjs';import{Account}from'./w/local/account.mjs';import{c as a107h,l as a107i,o as a107j,p as a107k}from'./fund-approval-Dy-heIpQ.mjs';import{bigIntToBytes,bytesToHex,hexToBytes as a107l}from'./w/local/evm/rlp.mjs';import{registerBridgeEvmNetworks}from'./w/local/evm/networks.mjs';import{EvmAccount}from'./w/local/evm-account.mjs';import{keccak_256}from'@noble/hashes/sha3.js';const BRIDGE_ETH_V2_SIG='bridgeETHV2(bytes,uint8)',BRIDGE_ETH_V2_SELECTOR='b4b7068c',BRIDGE_ETH_V1_SELECTOR='9449ebd2',BRIDGE_ERC20_V1_SELECTOR='212afaff',BRIDGE_ERC20_V2_SIG='bridgeERC20V2(uint8,uint256,bytes,uint8)',BRIDGE_ERC20_V2_SELECTOR='0bdba58b',TRANSFER_BRIDGED_V2_SIG='transferBridgedTokensWithSignaturesV2(bytes[],(uint8,uint8,uint64,uint8,bytes))',TRANSFER_BRIDGED_V2_SELECTOR='9c3ecefb',TRANSFER_BRIDGED_V1_SIG='transferBridgedTokensWithSignatures(bytes[],(uint8,uint8,uint64,uint8,bytes))',APPROVE_SIG='approve(address,uint256)',APPROVE_SELECTOR='095ea7b3',IS_TRANSFER_PROCESSED_SIG='isTransferProcessed(uint64)',IS_TRANSFER_PROCESSED_SELECTOR='5458ea9e',WORD_SIZE=0x20;function uintWord(a){const b=bigIntToBytes(BigInt(a)),c=new Uint8Array(WORD_SIZE);return c['set'](b,WORD_SIZE-b['length']),c;}function addressWord(a){const b=a107l(a['startsWith']('0x')?a['slice'](0x2):a);if(b['length']!==0x14)throw new Error('Invalid\x20EVM\x20address\x20length:\x20'+a);const c=new Uint8Array(WORD_SIZE);return c['set'](b,WORD_SIZE-0x14),c;}function padToWord(a){const b=a['length']%WORD_SIZE;if(b===0x0)return a;const c=new Uint8Array(a['length']+WORD_SIZE-b);return c['set'](a,0x0),c;}function concat(...b){const c=b['reduce']((f,g)=>f+g['length'],0x0),d=new Uint8Array(c);let e=0x0;for(const f of b){d['set'](f,e),e+=f['length'];}return d;}function encodeBytes(a){return concat(uintWord(BigInt(a['length'])),padToWord(a));}function computeSelector(a){return bytesToHex(keccak_256(new TextEncoder()['encode'](a))['slice'](0x0,0x4));}function computeEventTopic(a){return'0x'+bytesToHex(keccak_256(new TextEncoder()['encode'](a)));}function encodeBridgeETHV2(a,b){const c=a107l(a['startsWith']('0x')?a['slice'](0x2):a);if(c['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes,\x20got\x20'+c['length']);const d=uintWord(0x40n),e=uintWord(b),f=encodeBytes(c);return'0x'+bytesToHex(concat(a107l(BRIDGE_ETH_V2_SELECTOR),d,e,f));}function encodeBridgeETH(a,b){const c=a107l(a['startsWith']('0x')?a['slice'](0x2):a);if(c['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes,\x20got\x20'+c['length']);const d=uintWord(0x40n),e=uintWord(b),f=encodeBytes(c);return'0x'+bytesToHex(concat(a107l(BRIDGE_ETH_V1_SELECTOR),d,e,f));}function encodeBridgeERC20V2(a,b,c,d){const e=a107l(c['startsWith']('0x')?c['slice'](0x2):c);if(e['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes');const f=uintWord(0x80n),g=encodeBytes(e);return'0x'+bytesToHex(concat(a107l(BRIDGE_ERC20_V2_SELECTOR),uintWord(a),uintWord(b),f,uintWord(d),g));}function encodeBridgeERC20(a,b,c,d){const e=a107l(c['startsWith']('0x')?c['slice'](0x2):c);if(e['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes');const f=uintWord(0x80n),g=encodeBytes(e);return'0x'+bytesToHex(concat(a107l(BRIDGE_ERC20_V1_SELECTOR),uintWord(a),uintWord(b),f,uintWord(d),g));}function encodeMessage(a){return concat(uintWord(a['messageType']),uintWord(a['version']),uintWord(a['nonce']),uintWord(a['chainID']),uintWord(0xa0n),encodeBytes(a['payload']));}function encodeBytesArray(a){const b=a['length'],c=b*0x20,d=[];let e=0x0n;for(const g of a){d['push'](BigInt(c)+e),e+=BigInt(0x20+Math['ceil'](g['length']/0x20)*0x20);}const f=[uintWord(BigInt(b))];for(const h of d)f['push'](uintWord(h));for(const i of a)f['push'](encodeBytes(i));return concat(...f);}function encodeTransferBridgedTokensWithSignatures(a,b,c=!![]){const d=c?TRANSFER_BRIDGED_V2_SELECTOR:computeSelector(TRANSFER_BRIDGED_V1_SIG),e=encodeBytesArray(a),f=encodeMessage(b),g=uintWord(0x40n),h=uintWord(BigInt(0x40+e['length']));return'0x'+bytesToHex(concat(a107l(d),g,h,e,f));}function encodeApprove(a,b){return'0x'+bytesToHex(concat(a107l(APPROVE_SELECTOR),addressWord(a),uintWord(b)));}function encodeTokenTransferPayloadV2(a){const {senderAddress:b,targetChain:c,recipientAddress:d,tokenID:e,amount:f,timestampMs:g}=a;if(b['length']!==0x20)throw new Error('senderAddress\x20must\x20be\x2032\x20bytes');if(d['length']!==0x14)throw new Error('recipientAddress\x20must\x20be\x2020\x20bytes');const h=new Uint8Array(0x48);let i=0x0;h[i++]=0x20,h['set'](b,i),i+=0x20,h[i++]=c,h[i++]=0x14,h['set'](d,i),i+=0x14,h[i++]=e;const j=bigIntToBytes(f);h['set'](j,i+0x8-j['length']),i+=0x8;const k=bigIntToBytes(g);return h['set'](k,i+0x8-k['length']),h;}function encodeIsTransferProcessed(a){return'0x'+bytesToHex(concat(a107l(IS_TRANSFER_PROCESSED_SELECTOR),uintWord(a)));}function verifySelectors(){const a=[[BRIDGE_ETH_V2_SIG,BRIDGE_ETH_V2_SELECTOR],[BRIDGE_ERC20_V2_SIG,BRIDGE_ERC20_V2_SELECTOR],[TRANSFER_BRIDGED_V2_SIG,TRANSFER_BRIDGED_V2_SELECTOR],[APPROVE_SIG,APPROVE_SELECTOR],[IS_TRANSFER_PROCESSED_SIG,IS_TRANSFER_PROCESSED_SELECTOR]];for(const [b,c]of a){const d=computeSelector(b);if(d!==c)throw new Error('ABI\x20selector\x20mismatch\x20for\x20'+b+':\x20expected\x20'+c+',\x20got\x20'+d);}}verifySelectors();const TOKENS_DEPOSITED_V2_TOPIC=computeEventTopic('TokensDepositedV2(uint8,uint64,uint8,uint8,uint64,address,bytes,uint256)'),TOKENS_DEPOSITED_TOPIC=computeEventTopic('TokensDeposited(uint8,uint64,uint8,uint8,uint64,address,bytes)'),TOKENS_CLAIMED_TOPIC=computeEventTopic('TokensClaimed(uint8,uint64,uint8,uint8,uint64,address,bytes)'),ERC20_TRANSFER_TOPIC=computeEventTopic('Transfer(address,address,uint256)');async function depositEth(a,b){try{const c=b['destinationChainId']??0x0,d=b['version']!=='v1'?encodeBridgeETHV2(b['recipientWowAddress'],c):encodeBridgeETH(b['recipientWowAddress'],c),f={'to':b['bridgeProxyAddress'],'value':a,'data':d,'network':b['network'],'rpcUrl':b['rpcUrl'],'gasLimit':0x3d090n},g=EvmAccount['Instance']();await g['active']();const h=await g['sign_and_send'](f,b['rpcUrl']);if(h['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20deposit\x20transaction\x20reverted','revertReason':'txHash:\x20'+h['transactionHash']}};return{'success':!![],'txHash':h['transactionHash']};}catch(i){return{'success':![],'error':{'code':'UNKNOWN','message':'ETH\x20deposit\x20failed:\x20'+(i?.['message']??String(i)),'raw':i}};}}async function depositErc20(a,b){try{const c=EvmAccount['Instance']();await c['active']();const d=b['destinationChainId']??0x0,f={'to':b['tokenAddress'],'data':encodeApprove(b['bridgeProxyAddress'],a),'network':b['network'],'rpcUrl':b['rpcUrl']},g=await c['sign_and_send'](f,b['rpcUrl']);if(g['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ERC20\x20approve\x20reverted','revertReason':'txHash:\x20'+g['transactionHash']}};const h=b['version']!=='v1'?encodeBridgeERC20V2(b['tokenId'],a,b['recipientWowAddress'],d):encodeBridgeERC20(b['tokenId'],a,b['recipientWowAddress'],d),i={'to':b['bridgeProxyAddress'],'value':0x0n,'data':h,'network':b['network'],'rpcUrl':b['rpcUrl']},j=await c['sign_and_send'](i,b['rpcUrl']);if(j['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ERC20\x20deposit\x20transaction\x20reverted','revertReason':'txHash:\x20'+j['transactionHash']}};return{'success':!![],'txHash':j['transactionHash']};}catch(k){return{'success':![],'error':{'code':'UNKNOWN','message':'ERC20\x20deposit\x20failed:\x20'+(k?.['message']??String(k)),'raw':k}};}}async function depositFromEth(a,b){if(a['tokenAddress']){if(a['tokenId']===void 0x0)return{'success':![],'error':{'code':'INVALID_PARAM','message':'tokenId\x20is\x20required\x20for\x20ERC20\x20deposit'}};return depositErc20(a['amount'],{...b,'tokenAddress':a['tokenAddress'],'tokenId':a['tokenId']});}return depositEth(a['amount'],b);}const BRIDGE_PACKAGE_ID='0xb',BRIDGE_OBJECT_ID='0x9',MESSAGE_KEY_TYPE=BRIDGE_PACKAGE_ID+'::message::BridgeMessageKey';let cachedRecordsId;function recordToAbiMessage(a){return{'messageType':a['message']['messageType'],'version':a['message']['messageVersion'],'nonce':a['message']['seqNum'],'chainID':a['message']['sourceChain'],'payload':a['message']['payload']};}async function getBridgeRecordsId(a){if(cachedRecordsId)return cachedRecordsId;try{const b=((await a['getObject']({'objectId':BRIDGE_OBJECT_ID,'options':{'showContent':!![]}}))?.['data']?.['content'])?.['fields']?.['inner']?.['fields']?.['id']?.['id'];if(!b)return void 0x0;const c=((await a['getDynamicFieldObject']({'parentId':b,'name':{'type':'u64','value':'1'}}))?.['data']?.['content'])?.['fields']?.['value']?.['fields']?.['token_transfer_records']?.['fields']?.['id']?.['id'];return cachedRecordsId=c,c;}catch{return;}}async function readBridgeRecord(a,b,c,d=0x0){const e=await getBridgeRecordsId(a);if(!e)return void 0x0;let f;try{f=await a['getDynamicFieldObject']({'parentId':e,'name':{'type':MESSAGE_KEY_TYPE,'value':{'source_chain':String(b),'message_type':String(d),'bridge_seq_num':String(c)}}});}catch{return;}const g=f?.['data']?.['content']?.['fields']?.['value']?.['fields']?.['value']?.['fields'];if(!g)return;return parseBridgeRecord(g);}async function readNextTokenTransferSeq(a){try{const b=((await a['getObject']({'objectId':BRIDGE_OBJECT_ID,'options':{'showContent':!![]}}))?.['data']?.['content'])?.['fields']?.['inner']?.['fields']?.['id']?.['id'];if(!b)return void 0x0;const c=(((await a['getDynamicFieldObject']({'parentId':b,'name':{'type':'u64','value':'1'}}))?.['data']?.['content'])?.['fields']?.['value']?.['fields']?.['sequence_nums'])?.['fields']?.['contents']??[];for(const d of c)if(Number(d?.['fields']?.['key'])===0x0)return BigInt(d?.['fields']?.['value']??0x0);return 0x0n;}catch{return;}}function parseBridgeRecord(a){const b=a?.['message']?.['fields']??a?.['message']??{},c=a?.['verified_signatures'],d=Array['isArray'](c)?c:c&&typeof c==='object'&&'Some'in c?c['Some']:[];return{'message':{'messageType':toNumber(b['message_type']),'messageVersion':toNumber(b['message_version']),'seqNum':toBigInt(b['seq_num']),'sourceChain':toNumber(b['source_chain']),'payload':toBytes(b['payload'])},'verifiedSignatures':Array['isArray'](d)?d['map'](e=>toBytes(e)):[],'claimed':!!a?.['claimed']};}function toNumber(a){if(typeof a==='number')return a;if(typeof a==='string')return Number(a);return 0x0;}function toBigInt(a){if(typeof a==='bigint')return a;if(typeof a==='number')return BigInt(a);if(typeof a==='string')return BigInt(a);return 0x0n;}function toBytes(a){if(a instanceof Uint8Array)return a;if(Array['isArray'](a))return Uint8Array['from'](a['map'](b=>Number(b)));if(typeof a==='string'){if(/^0x/i['test'](a)){const b=a['slice'](0x2),c=new Uint8Array(Math['ceil'](b['length']/0x2));for(let d=0x0;d<c['length'];d++){const e=b['slice'](d*0x2,d*0x2+0x2);c[d]=parseInt(e,0x10)||0x0;}return c;}try{return new Uint8Array(Buffer['from'](a,'base64'));}catch{return new Uint8Array(0x0);}}return new Uint8Array(0x0);}function buildClaimMessage(a){const b=encodeTokenTransferPayloadV2({'senderAddress':a['senderAddress'],'targetChain':a['targetChain'],'recipientAddress':a['recipientAddress'],'tokenID':a['tokenId'],'amount':a['amount'],'timestampMs':a['timestampMs']});return{'messageType':a['messageType'],'version':a['version'],'nonce':a['nonce'],'chainID':a['sourceChain'],'payload':b};}function signaturesToBytes(a){return a['map'](b=>{const c=a107l(b['signature']['startsWith']('0x')?b['signature']['slice'](0x2):b['signature']);if(c['length']!==0x41)throw new Error('Invalid\x20signature\x20length:\x20'+c['length']+'\x20(expected\x2065)');return c;});}async function claimOnEth(a,b){try{const c=b['useV2']??!![];if(await isEvmNonceAlreadyProcessed({'bridgeProxyAddress':b['bridgeProxyAddress'],'network':b['network'],'rpcUrl':b['rpcUrl']},a['message']['nonce']))return{'success':![],'error':{'code':'ALREADY_PROCESSED','message':buildAlreadyProcessedMessage(a['message']['nonce'])}};let d=a['message'],f,g;const h=b['wowClient']?await readBridgeRecord(b['wowClient'],a['message']['chainID'],a['message']['nonce'],a['message']['messageType']):void 0x0;if(h&&h['verifiedSignatures']['length']>0x0)d=recordToAbiMessage(h),f=h['verifiedSignatures'];else{g=await b['nodeClient']['signWowToEth'](a['wowTxDigest'],a['eventIndex']);g['length']===0x0&&(console['warn']('tx_digest\x20路径未收集到签名,回退到\x20seq\x20路径:',a['message']['chainID'],a['message']['messageType'],a['message']['nonce']),g=await b['nodeClient']['signWowTokenTransfer'](a['message']['chainID'],a['message']['messageType'],a['message']['nonce']));if(g['length']===0x0)return{'success':![],'error':{'code':'NO_SIGNATURES','message':buildNoSignaturesMessage(a['message']['chainID'],a['message']['messageType'],a['message']['nonce'])}};d=g[0x0]['action']?messageFromActionData(g[0x0]['action'],a['message']):a['message'],f=signaturesToBytes(g);}const i=encodeTransferBridgedTokensWithSignatures(f,d,c),j={'to':b['bridgeProxyAddress'],'value':0x0n,'data':i,'network':b['network'],'rpcUrl':b['rpcUrl']},k=EvmAccount['Instance']();await k['active']();const l=await k['sign_and_send'](j,b['rpcUrl']);if(l['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20transaction\x20reverted','revertReason':'txHash:\x20'+l['transactionHash']}};return{'success':!![],'txHash':l['transactionHash']};}catch(m){return wrapBridgeError(m,'UNKNOWN','ETH\x20claim\x20failed');}}function bridgeChainNameToId(a){switch(a){case'WowMainnet':return 0x0;case'EthMainnet':return 0xa;default:throw new Error('Unknown\x20bridge\x20chain\x20name:\x20'+a);}}function messageFromActionData(a,b){if(!a||typeof a!=='object')return b;const c=a;if(c['WowToEthTokenTransferV2']){const d=c['WowToEthTokenTransferV2'],e=d['wow_address']['startsWith']('0x')?d['wow_address']['slice'](0x2):d['wow_address'],f=d['eth_address']['startsWith']('0x')?d['eth_address']['slice'](0x2):d['eth_address'],g=a107l(e),h=a107l(f),i=encodeTokenTransferPayloadV2({'senderAddress':g,'targetChain':bridgeChainNameToId(d['eth_chain_id']),'recipientAddress':h,'tokenID':d['token_id'],'amount':BigInt(d['amount_adjusted']),'timestampMs':BigInt(d['timestamp_ms'])});return{'messageType':0x0,'version':0x2,'nonce':BigInt(d['nonce']),'chainID':bridgeChainNameToId(d['wow_chain_id']),'payload':i};}return console['warn']('[claimOnEthBySeq]\x20Unknown\x20action\x20data\x20type,\x20falling\x20back\x20to\x20local\x20message:',Object['keys'](c)),b;}async function claimOnEthBySeq(a,b){try{const c=b['useV2']??!![];if(await isEvmNonceAlreadyProcessed({'bridgeProxyAddress':b['bridgeProxyAddress'],'network':b['network'],'rpcUrl':b['rpcUrl']},a['seqNum']))return{'success':![],'error':{'code':'ALREADY_PROCESSED','message':buildAlreadyProcessedMessage(a['seqNum'])}};let d=a['message'],f;const g=b['wowClient']?await readBridgeRecord(b['wowClient'],a['sourceChain'],a['seqNum'],a['messageType']):void 0x0;if(g&&g['verifiedSignatures']['length']>0x0)d=recordToAbiMessage(g),f=g['verifiedSignatures'];else{const m=await b['nodeClient']['signWowTokenTransfer'](a['sourceChain'],a['messageType'],a['seqNum']);if(m['length']===0x0)return{'success':![],'error':{'code':'NO_SIGNATURES','message':buildNoSignaturesMessage(a['sourceChain'],a['messageType'],a['seqNum'])}};d=m[0x0]['action']?messageFromActionData(m[0x0]['action'],a['message']):a['message'],f=signaturesToBytes(m);}const h=encodeTransferBridgedTokensWithSignatures(f,d,c),i={'to':b['bridgeProxyAddress'],'value':0x0n,'data':h,'network':b['network'],'rpcUrl':b['rpcUrl']},j=EvmAccount['Instance']();await j['active']();let k;try{await j['ethCall'](i);}catch(n){const o=n?.['message']??String(n);if(o['includes']('execution\x20reverted')||o['includes']('reverted\x20with\x20reason'))k=o;else console['warn']('\x20\x20[claimOnEthBySeq]\x20eth_call\x20warning\x20(skipped):',o['slice'](0x0,0x78));}if(k)return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20reverted','revertReason':k}};const l=await j['sign_and_send'](i,b['rpcUrl']);if(l['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20transaction\x20reverted','revertReason':'txHash:\x20'+l['transactionHash']}};return{'success':!![],'txHash':l['transactionHash']};}catch(p){return wrapBridgeError(p,'UNKNOWN','ETH\x20claim\x20(by\x20seq)\x20failed');}}async function isEvmNonceAlreadyProcessed(a,b){try{const c=EvmAccount['Instance']();await c['active']();const d=encodeIsTransferProcessed(b),f=(await c['ethCall']({'to':a['bridgeProxyAddress'],'value':0x0n,'data':d,'network':a['network'],'rpcUrl':a['rpcUrl']}))['replace'](/^0x/,'');return(f['length']>=0x2?f['slice'](-0x2):'')==='01';}catch(g){return console['warn']('\x20\x20[claim\x20precheck]\x20isTransferProcessed('+b+')\x20query\x20failed\x20(skipped):',(g?.['message']??String(g))['slice'](0x0,0x78)),![];}}function buildAlreadyProcessedMessage(a){return['EVM\x20bridge\x20has\x20already\x20processed\x20nonce\x20(seq)\x20'+a+'\x20(isTransferProcessed=true).','This\x20transfer\x20CANNOT\x20be\x20claimed,\x20and\x20the\x20WOW-side\x20funds\x20are\x20PERMANENTLY\x20LOCKED.','Do\x20NOT\x20retry\x20the\x20claim.','This\x20usually\x20means\x20the\x20WOW\x20bridge\x20seq\x20collided\x20with\x20an\x20old\x20EVM\x20nonce','left\x20over\x20from\x20a\x20previous\x20chain\x20generation\x20(re-genesis).']['join']('\x0a');}function buildNoSignaturesMessage(a,b,c){return['No\x20signatures\x20collected\x20for\x20seq='+c+'\x20(sourceChain='+a+',\x20messageType='+b+').','Possible\x20reasons:','\x20\x201)\x20Bridge\x20nodes\x20are\x20not\x20reachable\x20or\x20not\x20synced','\x20\x202)\x20The\x20seq\x20'+c+'\x20does\x20not\x20exist\x20on\x20source\x20chain','\x20\x203)\x20The\x20message\x20has\x20already\x20expired','\x20\x204)\x20Insufficient\x20quorum\x20(need\x202/3\x20of\x20total\x20committee\x20weight)','Check\x20node\x20health\x20with\x20nodeClient.pingAll().']['join']('\x0a');}function wrapBridgeError(a,b,c){return{'success':![],'error':{'code':b,'message':c+':\x20'+(a?.['message']??String(a)),'raw':a}};}const BRIDGE_PACKAGE$1='0xb',DEFAULT_BRIDGE_OBJECT_ID$1='0x9',CLOCK_OBJECT_ID$1='0x6',EVM_ADDRESS_LENGTH=0x14,TOKEN_DEPOSITED_EVENT_V2_TYPE=BRIDGE_PACKAGE$1+'::bridge::TokenDepositedEventV2';async function depositFromWow(a,b){if(!a['tokenType']||a['tokenType']['split']('::')['length']<0x3)a107c('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['amount']<=0x0n)a107c('invalid\x20parameter','amount\x20must\x20be\x20positive');const c=parseEvmAddress(a['recipientEthAddress']),d=a['destinationChainId']??0xa,f=a['bridgeObjectId']??DEFAULT_BRIDGE_OBJECT_ID$1,g=new a107b(),h=await Account['Instance']()['get_coin_object'](g,a['amount'],a['tokenType'],await getEnvAccount$1(b),b['network']);if(!h)a107c('fail','Failed\x20to\x20get\x20coin\x20object');g['moveCall']({'target':BRIDGE_PACKAGE$1+'::bridge::send_token_v2','arguments':[g['object'](f),g['pure']['u8'](d),g['pure']['vector']('u8',c),h,g['object'](CLOCK_OBJECT_ID$1)],'typeArguments':[a['tokenType']]});const i=await Account['Instance']()['sign_and_commit'](g,await getEnvAccount$1(b),b['network']);if(!i||!i['digest'])a107c('fail','WOW\x20deposit\x20transaction\x20failed');let j=i;if(!i['events']||i['events']['length']===0x0){const {WowClient:l}=await import('./client/index.mjs'),{Config:m}=await import('./w/local/config.mjs'),n=await m['Instance']()['network_get'](b['network']),o=new l({'url':a107d(n),'network':n});let p;for(let q=0x0;q<0xa;q++){try{j=await o['getTransactionBlock']({'digest':i['digest'],'options':{'showEvents':!![],'showEffects':!![]}});if(j['events']&&j['events']['length']>0x0)break;}catch(r){p=r;}await new Promise(s=>setTimeout(s,0x3e8*(q+0x1)));}if(!j['events']||j['events']['length']===0x0)throw p??new Error('Failed\x20to\x20fetch\x20events\x20for\x20tx\x20'+i['digest']);}const k=parseSeqNumFromReceipt(j);if(k===void 0x0)a107c('fail','Failed\x20to\x20parse\x20seqNum\x20from\x20WOW\x20tx\x20'+i['digest']);return{'digest':i['digest'],'seqNum':k,'receipt':i};}function parseEvmAddress(a){let b=a;if(b['startsWith']('0x')||b['startsWith']('0X'))b=b['slice'](0x2);if(b['length']!==EVM_ADDRESS_LENGTH*0x2)a107c('invalid\x20parameter','Invalid\x20EVM\x20address:\x20'+a+'\x20(expected\x2020\x20bytes)');const c=new Uint8Array(EVM_ADDRESS_LENGTH);for(let d=0x0;d<EVM_ADDRESS_LENGTH;d++)c[d]=parseInt(b['slice'](d*0x2,d*0x2+0x2),0x10);return c;}function normalizeEventType$1(a){const b=a['split']('::');if(b['length']>0x0&&b[0x0]['startsWith']('0x')){const c=b[0x0]['toLowerCase']()['replace'](/^0x0+/,'0x');b[0x0]=c==='0x'?'0x0':c;}return b['join']('::');}function parseSeqNumFromReceipt(a){const b=a['events'];if(!b||b['length']===0x0)return void 0x0;const c=normalizeEventType$1(TOKEN_DEPOSITED_EVENT_V2_TYPE);for(const d of b){if(normalizeEventType$1(d['type'])!==c)continue;const e=d['parsedJson'];if(!e)continue;const f=e['seq_num'];if(typeof f==='string'||typeof f==='number')return BigInt(f);}}async function getEnvAccount$1(a){return a['account']??void 0x0;}const BRIDGE_PACKAGE='0xb',CLOCK_OBJECT_ID='0x6',TOKEN_TRANSFER_APPROVED_TYPE=BRIDGE_PACKAGE+'::bridge::TokenTransferApproved',TOKEN_TRANSFER_CLAIMED_TYPE=BRIDGE_PACKAGE+'::bridge::TokenTransferClaimed',DEFAULT_BRIDGE_OBJECT_ID='0x9';async function claimOnWow(a,b){if(!a['tokenType']||a['tokenType']['split']('::')['length']<0x3)a107c('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['bridgeSeqNum']<0x0n)a107c('invalid\x20parameter','bridgeSeqNum\x20must\x20be\x20non-negative');const c=a['sourceChainId']??0xa,d=a['bridgeObjectId']??DEFAULT_BRIDGE_OBJECT_ID,e=new a107b();e['moveCall']({'target':BRIDGE_PACKAGE+'::bridge::claim_and_transfer_token','arguments':[e['object'](d),e['object'](CLOCK_OBJECT_ID),e['pure']['u8'](c),e['pure']['u64'](a['bridgeSeqNum'])],'typeArguments':[a['tokenType']]});const f=await Account['Instance']()['sign_and_commit'](e,await getEnvAccount(b),b['network']);if(!f||!f['digest'])a107c('fail','WOW\x20claim\x20transaction\x20failed');return{'digest':f['digest'],'receipt':f};}let WowClaimStatus=function(a){return a['NotApproved']='not_approved',a['Approved']='approved',a['Claimed']='claimed',a['NotFound']='not_found',a;}({});async function queryWowClaimStatus(a,b){const c=a['sourceChainId']??0xa,d=await Config['Instance']()['network_get'](b),e=new a107a({'url':a107d(d),'network':d}),f=await e['queryEvents']({'query':{'MoveEventType':TOKEN_TRANSFER_CLAIMED_TYPE},'limit':0x64,'order':'descending'});for(const h of f['data']){const i=h['parsedJson'];if(!i)continue;const j=i['message_key'];if(!j)continue;const k=Number(j['source_chain']),l=BigInt(j['bridge_seq_num']??0x0);if(k===c&&l===a['bridgeSeqNum'])return{'status':'claimed','claimedTxHash':h['id']?.['txDigest']};}const g=await e['queryEvents']({'query':{'MoveEventType':TOKEN_TRANSFER_APPROVED_TYPE},'limit':0x64,'order':'descending'});for(const m of g['data']){const n=m['parsedJson'];if(!n)continue;const o=n['message_key'];if(!o)continue;const p=Number(o['source_chain']),q=BigInt(o['bridge_seq_num']??0x0);if(p===c&&q===a['bridgeSeqNum'])return{'status':'approved','approvedEventId':m['id']?.['eventSeq']};}return{'status':'not_approved'};}async function getEnvAccount(a){return a['account']??void 0x0;}const logger$1=a107g('bridge:query');async function queryEthTxReceipt(a,b,c=0x2710){const d=new AbortController(),f=setTimeout(()=>d['abort'](),c);try{const g=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_getTransactionReceipt','params':[a]}),'signal':d['signal']}))['json']();if(g['error'])throw new Error('JSON-RPC\x20error:\x20'+g['error']['message']);return g['result'];}catch(h){if(h?.['name']==='AbortError')throw new Error('queryEthTxReceipt\x20timeout\x20after\x20'+c+'ms');throw h;}finally{clearTimeout(f);}}async function queryEthBalance(a,b){const c=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_getBalance','params':[a,'latest']})}))['json']();if(c['error'])throw new Error('JSON-RPC\x20error:\x20'+c['error']['message']);return BigInt(c['result']);}async function queryErc20Balance(a,b,c){const d='0x70a08231000000000000000000000000'+b['slice'](0x2)['toLowerCase'](),e=await(await fetch(c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_call','params':[{'to':a,'data':d},'latest']})}))['json']();if(e['error'])throw new Error('JSON-RPC\x20error:\x20'+e['error']['message']);return BigInt(e['result']);}async function queryEthTxConfirmations(a,b,c=0x2710){const d=await queryEthTxReceipt(a,b,c);if(!d?.['blockNumber'])return 0x0;const e=new AbortController(),f=setTimeout(()=>e['abort'](),c);try{const g=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x2,'method':'eth_blockNumber','params':[]}),'signal':e['signal']}))['json'](),h=BigInt(g['result']),i=BigInt(d['blockNumber']);return Number(h-i);}finally{clearTimeout(f);}}async function queryWowTx(a,b){try{return await a['getTransactionBlock']({'digest':b,'options':{'showEffects':!![],'showEvents':!![]}});}catch{return null;}}let BridgeTransferDirection=function(a){return a['EvmToWow']='evm_to_wow',a['WowToEvm']='wow_to_evm',a;}({}),BridgeTransferStep=function(a){return a['NotStarted']='not_started',a['SourceTxPending']='source_tx_pending',a['SourceTxConfirmed']='source_tx_confirmed',a['NodeSigning']='node_signing',a['SignaturesReady']='signatures_ready',a['ClaimTxPending']='claim_tx_pending',a['Completed']='completed',a['Failed']='failed',a;}({});const BRIDGE_STEP_DESCRIPTIONS={['not_started']:'尚未发起跨链',['source_tx_pending']:'源链交易已提交,等待区块确认',['source_tx_confirmed']:'源链交易已确认,等待\x20bridge\x20节点签名\x20approve',['node_signing']:'bridge\x20节点签名收集中',['signatures_ready']:'签名已收集完毕,可发起目标链\x20claim',['claim_tx_pending']:'目标链\x20claim\x20交易已提交,待确认',['completed']:'跨链完成',['failed']:'跨链失败'};let BridgeTransferStatus=function(a){return a['NotStarted']='not_started',a['Pending']='pending',a['Confirmed']='confirmed',a['SignaturesReady']='signatures_ready',a['Claiming']='claiming',a['Completed']='completed',a['Failed']='failed',a;}({});function makeBridgeTransferState(a){return{'status':stepToStatus(a['step']),'stepDescription':BRIDGE_STEP_DESCRIPTIONS[a['step']],'updatedAt':Date['now'](),...a};}function stepToStatus(a){switch(a){case'not_started':return'not_started';case'source_tx_pending':return'pending';case'source_tx_confirmed':return'confirmed';case'node_signing':return'confirmed';case'signatures_ready':return'signatures_ready';case'claim_tx_pending':return'claiming';case'completed':return'completed';case'failed':return'failed';}}function parseEthDepositEvent(a,b){const c=b['toLowerCase']();for(const d of a['logs']){if(d['address']['toLowerCase']()!==c)continue;const e=d['topics'][0x0]===TOKENS_DEPOSITED_V2_TOPIC,f=d['topics'][0x0]===TOKENS_DEPOSITED_TOPIC;if(!e&&!f)continue;const g=a107l(d['data']);if(g['length']<0x80)continue;const h=u=>g[u*0x20+0x1f],i=u=>{const v=g['slice'](u*0x20,u*0x20+0x20);return BigInt('0x'+bytesToHex(v['slice'](0x18,0x20)));},j=u=>'0x'+bytesToHex(g['slice'](u*0x20+0xc,u*0x20+0x20)),k=h(0x0),l=i(0x1),m=j(0x2),n=Number(i(0x3)),o=Number(BigInt('0x'+bytesToHex(g['slice'](n,n+0x20))['slice'](0x30))),p='0x'+bytesToHex(g['slice'](n+0x20,n+0x20+o)),q=d['topics'][0x1]?.['slice'](0x40)??'00',r=parseInt(q,0x10),s=d['topics'][0x3]?.['slice'](0x40)??'00',t=parseInt(s,0x10);return{'bridgeSeq':BigInt('0x'+(d['topics'][0x2]?.['slice'](0x38)??'0')),'sourceChain':r,'sender':m,'targetChain':t,'recipient':p,'tokenID':k,'amount':l};}return null;}function parseEthClaimEvent(a,b){const c=b['toLowerCase']();for(const d of a['logs']){if(d['address']['toLowerCase']()!==c)continue;if(d['topics'][0x0]!==TOKENS_CLAIMED_TOPIC)continue;const e=a107l(d['data']);if(e['length']<0x80)continue;const f=n=>e[n*0x20+0x1f],g=n=>{const o=e['slice'](n*0x20,n*0x20+0x20);return BigInt('0x'+bytesToHex(o['slice'](0x18,0x20)));},h=n=>'0x'+bytesToHex(e['slice'](n*0x20+0xc,n*0x20+0x20));f(0x0);const i=g(0x1),j=h(0x2),k=Number(g(0x3)),l=Number(BigInt('0x'+bytesToHex(e['slice'](k,k+0x20))['slice'](0x30))),m='0x'+bytesToHex(e['slice'](k+0x20,k+0x20+l));return{'bridgeSeq':BigInt('0x'+(d['topics'][0x2]?.['slice'](0x38)??'0')),'claimer':j,'recipient':m,'amount':i};}return null;}async function queryEvmToWowTransferStatus(a,b,c){const d=await queryEthTxReceipt(a,b);if(!d)return makeBridgeTransferState({'step':'source_tx_pending','direction':'evm_to_wow','sourceTxHash':a});if(d['status']!=='0x1')return makeBridgeTransferState({'step':'failed','direction':'evm_to_wow','sourceTxHash':a,'ethReceipt':d,'error':'ETH\x20source\x20transaction\x20reverted'});const e=parseEthDepositEvent(d,c);if(!e)return makeBridgeTransferState({'step':'failed','direction':'evm_to_wow','sourceTxHash':a,'ethReceipt':d,'error':'No\x20TokensDeposited/TokensDepositedV2\x20event\x20found\x20in\x20receipt'});let f=0x0;try{f=await queryEthTxConfirmations(a,b);}catch{}return makeBridgeTransferState({'step':'source_tx_confirmed','direction':'evm_to_wow','sourceTxHash':a,'bridgeSeq':e['bridgeSeq'],'confirmations':f,'ethReceipt':d});}async function queryWowToEvmTransferStatus(a,b){const c=await queryWowTx(a,b);if(!c)return makeBridgeTransferState({'step':'source_tx_pending','direction':'wow_to_evm','sourceTxHash':b});if(c['effects']?.['status']?.['status']!=='success')return makeBridgeTransferState({'step':'failed','direction':'wow_to_evm','sourceTxHash':b,'wowReceipt':c,'error':c['effects']?.['status']?.['error']||'WOW\x20transaction\x20failed'});return makeBridgeTransferState({'step':'source_tx_confirmed','direction':'wow_to_evm','sourceTxHash':b,'bridgeSeq':parseWowDepositSeqFromReceipt(c),'wowReceipt':c});}function normalizeEventType(a){const b=a['split']('::');if(b['length']>0x0&&b[0x0]['startsWith']('0x')){const c=b[0x0]['toLowerCase']()['replace'](/^0x0+/,'0x');b[0x0]=c==='0x'?'0x0':c;}return b['join']('::');}function parseWowDepositSeqFromReceipt(a){const b=a['events'];if(!b||b['length']===0x0)return void 0x0;const c=normalizeEventType('0xb::bridge::TokenDepositedEventV2');for(const d of b){if(normalizeEventType(d['type'])!==c)continue;const e=d['parsedJson'];if(!e)continue;const f=e['seq_num'];if(typeof f==='string'||typeof f==='number')return BigInt(f);}}async function waitForEthTx(a,b,c=0x1,d=0x2ee0,e=0x1e*0xea60){const f=Math['max'](0x1,Math['ceil'](e/d));for(let g=0x0;g<f;g++){const h=await queryEthTxReceipt(a,b);if(h){const j=await queryEthTxConfirmations(a,b);if(j>=c)return h;logger$1['debug'](g+0x1+'/'+f+':\x20'+j+'/'+c+'\x20confirmations');}else logger$1['debug'](g+0x1+'/'+f+':\x20pending');await sleep$1(d);}a107c('fail','Timeout\x20waiting\x20for\x20ETH\x20tx\x20'+a+'\x20after\x20'+f+'\x20iterations');}async function waitForWowTx(a,b,c=0xbb8,d=0x5*0xea60){const e=Math['max'](0x1,Math['ceil'](d/c));for(let f=0x0;f<e;f++){const g=await queryWowTx(a,b);if(g&&g['effects']?.['status']?.['status']==='success')return g;if(g&&g['effects']?.['status']?.['status']==='failure')a107c('fail','WOW\x20tx\x20'+b+'\x20failed:\x20'+(g['effects']['status']['error']||'unknown'));logger$1['debug'](f+0x1+'/'+e+':\x20pending'),await sleep$1(c);}a107c('fail','Timeout\x20waiting\x20for\x20WOW\x20tx\x20'+b+'\x20after\x20'+e+'\x20iterations');}function sleep$1(a){return new Promise(b=>setTimeout(b,a));}function isBase64(a){return/^[A-Za-z0-9+/]*={0,2}$/['test'](a)&&a['length']>0x0;}function decodeFlex(a){if(a['startsWith']('0x')||a['startsWith']('0X'))return a107l(a);if(/^[0-9a-fA-F]+$/['test'](a)&&a['length']%0x2===0x0)return a107l(a);if(isBase64(a))return Buffer['from'](a,'base64');throw new Error('Cannot\x20decode\x20signature/pubkey\x20string:\x20'+a);}function parseSignedAction(a,b){const c=decodeFlex(a['auth_signature']['authority_pub_key']),d=decodeFlex(a['auth_signature']['signature']);if(c['length']!==0x21&&c['length']!==0x41)throw new Error('Invalid\x20pubkey\x20length:\x20'+c['length']+'\x20(expected\x2033\x20or\x2065)');if(d['length']!==0x41)throw new Error('Invalid\x20signature\x20length:\x20'+d['length']+'\x20(expected\x2065)');return{'signerPubkey':'0x'+bytesToHex(c),'signature':'0x'+bytesToHex(d),'weight':b,'action':a['data']};}var BridgeNodeClient=class{constructor(a){this['committee']=a['committee'],this['timeoutMs']=a['timeoutMs']??0x7530,this['quorumRatio']=a['quorumRatio']??0x2/0x3,this['minRequiredStake']=a['minRequiredStake'];}get['totalWeight'](){return this['committee']['reduce']((a,b)=>a+b['weight'],0x0);}get['quorumWeight'](){if(this['minRequiredStake']!=null)return this['minRequiredStake'];return Math['floor'](this['totalWeight']*this['quorumRatio'])+0x1;}async['signEthToWow'](a,b){const c='/sign/bridge_tx/eth/wow/'+a+'/'+b;return this['collectSignatures'](c);}async['signWowToEth'](a,b){const c='/sign/bridge_tx/wow/eth/'+a+'/'+b;return this['collectSignatures'](c);}async['probeWowToEth'](a,b){const c='/sign/bridge_tx/wow/eth/'+a+'/'+b,d=await this['probeSignatures'](c);return{'ready':d['ready'],'signedWeight':d['signedWeight'],'quorumWeight':d['quorumWeight'],'totalWeight':d['totalWeight'],'responded':d['responded'],'memberCount':d['memberCount'],'errors':d['errors']};}async['signWowTokenTransfer'](a,b,c){const d='/sign/bridge_action/wow/eth/'+a+'/'+b+'/'+c;return this['collectSignatures'](d);}async['ping'](a){try{const b=new AbortController(),c=setTimeout(()=>b['abort'](),Math['min'](this['timeoutMs'],0x2710)),d=await fetch(a+'/ping',{'signal':b['signal']});return clearTimeout(c),d['ok'];}catch{return![];}}async['pingAll'](){return Promise['all'](this['committee']['map'](async a=>({'url':a['baseUrl'],'healthy':await this['ping'](a['baseUrl'])})));}async['collectSignatures'](a){const b=await this['probeSignatures'](a);if(!b['ready'])a107c('fail','Quorum\x20not\x20reached:\x20collected\x20'+b['signedWeight']+',\x20required\x20'+b['quorumWeight']+'\x20(total\x20'+b['totalWeight']+')');return b['actions'];}async['probeSignatures'](a){const b=new Map();let c=0x0;const d=this['committee']['map'](async h=>{try{return{'action':parseSignedAction(await this['fetchFromNode'](h['baseUrl'],a),h['weight']),'ok':!![]};}catch(i){return{'action':null,'ok':![],'error':i['message']};}}),e=await Promise['all'](d),f=[];let g=0x0;return e['forEach'](h=>{if(!h['ok']||!h['action']){f['push'](h['ok']?null:h['error']);return;}g+=0x1,f['push'](null),!b['has'](h['action']['signerPubkey'])&&(b['set'](h['action']['signerPubkey'],h['action']),c+=h['action']['weight']);}),{'ready':c>=this['quorumWeight'],'signedWeight':c,'quorumWeight':this['quorumWeight'],'totalWeight':this['totalWeight'],'responded':g,'memberCount':this['committee']['length'],'errors':f,'actions':Array['from'](b['values']())};}async['fetchFromNode'](a,b){const c=new AbortController(),d=setTimeout(()=>c['abort'](),this['timeoutMs']);try{const e=await fetch(''+a+b,{'signal':c['signal'],'headers':{'Accept':'application/json'}});if(!e['ok'])throw new Error('Node\x20'+a+'\x20returned\x20'+e['status']+':\x20'+await e['text']());return await e['json']();}finally{clearTimeout(d);}}};const logger=a107g('bridge');var BridgeClient=class BridgeClient{static{this['SIGNING_PROBE_DEADLINE_MS']=0x2328;}constructor(a={}){this['_transferHistory']=new Map(),this['_transferCounter']=0x0,this['_loadHistoryPromise']=Promise['resolve'](),this['_historyLock']=new a107e(),this['config']=a['config']??loadDefaultConfig(),this['wowEnv']=a['wowEnv'],registerBridgeEvmNetworks({'evmChain':{'chainId':this['config']['ethereum']['chainId'],'rpcUrl':this['config']['ethereum']['rpcUrl']},'setAsDefault':!![]});if(this['config']['l2']){for(const c of Object['values'](this['config']['l2']))if(c)registerBridgeEvmNetworks({'evmChain':{'chainId':c['chainId'],'rpcUrl':c['rpcUrl']}});}const b=this['config']['bridgeNodeUrls']['map']((d,e)=>({'pubkey':a107h[e]??'0x'+e['toString']()['padStart'](0x40,'0'),'weight':a107i[e]??0x1,'baseUrl':d}));this['nodeClient']=new BridgeNodeClient({'committee':b,'timeoutMs':this['config']['timeouts']['nodeRpcMs'],'minRequiredStake':0xd06}),this['_loadHistoryPromise']=this['_loadHistory']();}async['bridgeNativeEvmToWow'](a){return this['depositEvmToWowAndFinalize']({'amount':a['amount'],'recipientWowAddress':a['recipientWowAddress'],'waitForFinalization':a['waitForFinalization'],'token':'ETH','idempotencyKey':a['idempotencyKey'],'idempotentByParams':a['idempotentByParams']});}async['bridgeErc20ToWow'](a){if(a['token']==='ETH')a107c('invalid\x20parameter','Use\x20bridgeNativeEvmToWow()\x20for\x20native\x20ETH;\x20bridgeErc20ToWow()\x20only\x20accepts\x20WETH/WBTC/USDC/USDT');return this['depositEvmToWowAndFinalize']({'amount':a['amount'],'recipientWowAddress':a['recipientWowAddress'],'waitForFinalization':a['waitForFinalization'],'token':a['token'],'idempotencyKey':a['idempotencyKey'],'idempotentByParams':a['idempotentByParams']});}async['resolveEvmRpcUrl'](){const a=this['config']['ethereum'];if(a['rpcUrl'])return a['rpcUrl'];const {EvmNetworkRegistry:b}=await import('./w/local/evm/networks.mjs'),c=b['Instance'](),d=await c['resolve'](a['chainId']),e=c['pickHealthyRpc'](d);if(!e)a107c('invalid\x20parameter','No\x20healthy\x20EVM\x20RPC\x20available\x20for\x20chainId\x20'+a['chainId']+'.\x20Use\x20manage_evm_rpc\x20to\x20add\x20RPC\x20endpoints\x20first.');return e;}async['_ensureSafeEvmNonce'](a){const {WowClient:b}=await import('./client/index.mjs'),{Config:c}=await import('./w/local/config.mjs'),{getFullnodeUrl:d}=await import('./network-CGWSsrLB.mjs')['then'](j=>j['s']),e=await c['Instance']()['network_get'](this['wowEnv']['network']),f=new b({'url':d(e),'network':e}),g=await this['resolveEvmRpcUrl'](),h=0x8;for(let j=0x0;j<h;j++){const k=await readNextTokenTransferSeq(f);if(k===void 0x0){console['warn']('\x20\x20[bridge]\x20readNextTokenTransferSeq\x20failed,\x20skipping\x20EVM\x20nonce\x20precheck');return;}if(!await isEvmNonceAlreadyProcessed({'bridgeProxyAddress':this['config']['ethereum']['bridgeProxyAddress'],'network':this['config']['ethereum']['chainId'],'rpcUrl':g},k))return;console['warn']('\x20\x20[bridge]\x20EVM\x20nonce\x20'+k+'\x20already\x20processed,\x20sending\x201-unit\x20placeholder\x20deposit\x20to\x20skip\x20it'),await waitForWowTx(f,(await depositFromWow({'amount':0x1n,'tokenType':a['tokenType'],'recipientEthAddress':a['recipientEthAddress'],'bridgeObjectId':a['bridgeObjectId']},this['wowEnv']))['digest'],this['config']['timeouts']['signaturePollIntervalMs'],this['config']['timeouts']['signatureCollectMs']);}a107c('fail','EVM\x20nonce\x20precheck:\x20could\x20not\x20find\x20a\x20safe\x20nonce\x20after\x20'+h+'\x20placeholder\x20deposits');}async['depositEvmToWowAndFinalize'](a){let b;if(a['idempotencyKey'])b=a['idempotencyKey'];else{if(a['idempotentByParams'])b=this['_generateIdempotencyKey']({'direction':'evm_to_wow','token':a['token'],'amount':a['amount'],'recipientWow':a['recipientWowAddress']});}if(b){const t=await this['_findTransferByIdempotencyKey'](b);if(t){if(t['status']==='success')return{'depositTxHash':t['depositTxHash'],'claimTxDigest':t['claimTxDigest'],'bridgeSeq':t['bridgeSeq']?BigInt(t['bridgeSeq']):void 0x0,'idempotentHit':!![]};else{if(t['status']==='pending'||t['status']==='in_progress')return{'depositTxHash':t['depositTxHash']??'','claimTxDigest':t['claimTxDigest'],'bridgeSeq':t['bridgeSeq']?BigInt(t['bridgeSeq']):void 0x0,'idempotentHit':!![]};}await this['_historyLock']['run'](async()=>{this['_transferHistory']['delete'](t['transferId']),await this['_saveHistory']();});}}const c=this['config']['ethereum'],d=a['waitForFinalization']??!![],e=await this['resolveEvmRpcUrl'](),f=a107k(this['config'],a['token']);if(!f)a107c('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const g=a['token']==='ETH',h=this['config']['defaultVersion']===0x1?'v1':'v2',j={'recipientWowAddress':a['recipientWowAddress'],'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':e,'version':h},k=await depositFromEth({'amount':a['amount'],'tokenAddress':g?void 0x0:f['evmAddress'],'tokenId':g?void 0x0:f['tokenId']},j);if(!k['success']||!k['txHash'])a107c('fail','EVM\x20deposit\x20failed:\x20'+(k['error']?.['message']??'unknown\x20error'));const l=k['txHash'];if(!d)return{'depositTxHash':l};await waitForEthTx(l,e,0x40,0x2ee0,this['config']['timeouts']['signatureCollectMs']);const m=await queryEthTxReceipt(l,e);if(!m)return{'depositTxHash':l};const n=parseEthDepositEvent(m,c['bridgeProxyAddress']);if(!n)return{'depositTxHash':l};if(!this['wowEnv'])a107c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20EVM→WOW\x20finalization\x20(claim\x20on\x20WOW)');const o=this['config']['timeouts']['autoClaimMs'],p=this['config']['timeouts']['signaturePollIntervalMs'],q=Math['max'](0x1,Math['ceil'](o/p));let r;for(let u=0x0;u<q;u++){r=await queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':n['bridgeSeq']},this['config']['wow']['network']),logger['debug']('wait\x20approve\x20'+(u+0x1)+'/'+q+':\x20status='+r['status']);if(r['status']==='approved'||r['status']==='claimed')break;await sleep(p);}if(!r||r['status']==='not_approved')a107c('fail','Timeout\x20waiting\x20for\x20bridge\x20nodes\x20to\x20approve\x20bridgeSeq='+n['bridgeSeq']+'\x20after\x20'+q+'\x20iterations');if(r['status']==='claimed')return{'depositTxHash':l,'bridgeSeq':n['bridgeSeq'],'claimTxDigest':r['claimedTxHash']};const s=await claimOnWow({'sourceChainId':0xa,'bridgeSeqNum':n['bridgeSeq'],'tokenType':f['wowTypeTag'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']},this['wowEnv']);return{'depositTxHash':l,'bridgeSeq':n['bridgeSeq'],'claimTxDigest':s['digest']};}async['bridgeWowToEvm'](a){let b;if(a['idempotencyKey'])b=a['idempotencyKey'];else{if(a['idempotentByParams'])b=this['_generateIdempotencyKey']({'direction':'wow_to_evm','token':a['token'],'amount':a['amount'],'recipientEth':a['recipientEthAddress']});}if(b){const v=await this['_findTransferByIdempotencyKey'](b);if(v){if(v['status']==='success')return{'depositTxDigest':v['depositTxDigest'],'bridgeSeq':v['bridgeSeq']?BigInt(v['bridgeSeq']):0x0n,'claimTxHash':v['claimTxHash'],'idempotentHit':!![]};else{if(v['status']==='pending'||v['status']==='in_progress')return{'depositTxDigest':v['depositTxDigest']??'','bridgeSeq':v['bridgeSeq']?BigInt(v['bridgeSeq']):0x0n,'claimTxHash':v['claimTxHash'],'idempotentHit':!![]};}await this['_historyLock']['run'](async()=>{this['_transferHistory']['delete'](v['transferId']),await this['_saveHistory']();});}}if(!this['wowEnv'])a107c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20bridge');const c=a['waitForFinalization']??!![],d=this['config']['ethereum'],e=await this['resolveEvmRpcUrl'](),f=a107k(this['config'],a['token']);if(!f)a107c('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const g=f['wowTypeTag'],h=f['tokenId'];await this['_ensureSafeEvmNonce']({'tokenType':g,'recipientEthAddress':a['recipientEthAddress'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']});const i=await depositFromWow({'amount':a['amount'],'tokenType':g,'recipientEthAddress':a['recipientEthAddress'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']},this['wowEnv']),{WowClient:j}=await import('./client/index.mjs'),{Config:k}=await import('./w/local/config.mjs'),{getFullnodeUrl:l}=await import('./network-CGWSsrLB.mjs')['then'](w=>w['s']),m=await k['Instance']()['network_get'](this['wowEnv']['network']),n=new j({'url':l(m),'network':m});await waitForWowTx(n,i['digest'],this['config']['timeouts']['signaturePollIntervalMs'],this['config']['timeouts']['signatureCollectMs']);if(!c)return{'depositTxDigest':i['digest'],'bridgeSeq':i['seqNum']};const o=await n['getTransactionBlock']({'digest':i['digest'],'options':{'showEffects':!![]}}),p=o['timestampMs']?BigInt(o['timestampMs']):BigInt(Date['now']()),q=(await Account['Instance']()['get'](this['wowEnv']['account']))?.['address']??'';if(!q)a107c('fail','Failed\x20to\x20resolve\x20WOW\x20sender\x20address');const r=buildClaimMessage({'messageType':0x0,'version':0x2,'nonce':i['seqNum'],'sourceChain':0x0,'targetChain':0xa,'recipientAddress':hexToBytes(a['recipientEthAddress']['slice'](0x2)),'tokenId':h,'amount':a['amount'],'timestampMs':p,'senderAddress':hexToBytes(q['startsWith']('0x')?q['slice'](0x2):q)}),s={'bridgeProxyAddress':d['bridgeProxyAddress'],'network':d['chainId'],'rpcUrl':e,'nodeClient':this['nodeClient'],'wowClient':n},t=await claimOnEthBySeq({'sourceChain':0x0,'messageType':0x0,'seqNum':i['seqNum'],'message':r},s);if(!t['success']||!t['txHash'])a107c('fail','EVM\x20claim\x20failed:\x20'+(t['error']?.['revertReason']?'revert:\x20'+t['error']['revertReason']:t['error']?.['message']??'unknown\x20error'));const u=t['txHash'];return await waitForEthTx(u,e,0x1,0x2ee0,this['config']['timeouts']['signatureCollectMs']),{'depositTxDigest':i['digest'],'bridgeSeq':i['seqNum'],'claimTxHash':u};}async['queryEvmToWowStatus'](a){const b=this['config']['ethereum'],{EvmNetworkRegistry:c}=await import('./w/local/evm/networks.mjs'),d=c['Instance'](),f=await d['resolve'](b['chainId']),g=Date['now'](),h=[...f['rpcUrls']]['sort']((j,k)=>{const l=d['unhealthyRpc']?.['get'](j)??0x0,m=d['unhealthyRpc']?.['get'](k)??0x0,n=d['unhealthyCounter']?.['get'](j)??0x0,o=d['unhealthyCounter']?.['get'](k)??0x0,p=l<g?0x0:0x1,q=m<g?0x0:0x1;if(p!==q)return p-q;return n-o;});let i;for(const j of h)try{const k=await queryEvmToWowTransferStatus(a,j,b['bridgeProxyAddress']);d['markHealthy'](j);if(k['step']==='source_tx_confirmed'&&k['bridgeSeq'])try{const l=await queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':BigInt(k['bridgeSeq'])},this['config']['wow']['network']);if(l['status']==='claimed')k['status']='completed',k['step']='completed',k['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['completed'],k['claimTxDigest']=l['claimedTxHash'];else{if(l['status']==='approved')k['status']='signatures_ready',k['step']='signatures_ready',k['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['signatures_ready'];else{if(l['status']==='not_approved'){}}}}catch{}return k;}catch(m){i=m,d['markUnhealthy'](j);}return{'status':'pending','step':'source_tx_pending','direction':'evm_to_wow','sourceTxHash':a,'error':i instanceof Error?i['message']:String(i)};}async['queryWowToEvmStatus'](a){const {WowClient:b}=await import('./client/index.mjs'),{getFullnodeUrl:c}=await import('./network-CGWSsrLB.mjs')['then'](f=>f['s']),d=this['config']['wow']['network'],e=await queryWowToEvmTransferStatus(new b({'url':c(d),'network':d}),a);if(e['step']!=='source_tx_confirmed'||e['bridgeSeq']==null)return e;try{return await this['enrichWowToEvmSigningState'](e,a);}catch{return e;}}async['enrichWowToEvmSigningState'](a,b){const c=this['config']['ethereum'],d=a['bridgeSeq'],e=this['findWowDepositEventIdx'](a);let f=null,g=null;const h=(async()=>{const k=await this['resolveEvmRpcUrl']();f=await isEvmNonceAlreadyProcessed({'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':k},d);})()['catch'](()=>{}),i=e>=0x0?this['nodeClient']['probeWowToEth'](b,e)['then'](k=>{g=k;})['catch'](()=>{}):Promise['resolve']();let j=![];try{await Promise['race']([Promise['allSettled']([h,i]),new Promise((k,l)=>setTimeout(()=>l(new Error('signing-state\x20probe\x20deadline')),BridgeClient['SIGNING_PROBE_DEADLINE_MS']))]);}catch{j=!![];}if(f===!![])return a['status']='completed',a['step']='completed',a['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['completed'],a['updatedAt']=Date['now'](),a;if(g){if(g['ready'])a['status']='signatures_ready',a['step']='signatures_ready',a['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['signatures_ready'],a['signatureCount']=g['responded'],a['signaturesRequired']=g['memberCount'];else g['responded']>0x0&&g['signedWeight']>0x0&&(a['status']='confirmed',a['step']='node_signing',a['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['node_signing'],a['signatureCount']=g['responded'],a['signaturesRequired']=g['memberCount']);a['updatedAt']=Date['now']();}else{if(j)logger['warn']('WOW→EVM\x20signing-state\x20probe\x20timed\x20out\x20after\x20'+BridgeClient['SIGNING_PROBE_DEADLINE_MS']+'ms;\x20keeping\x20step='+a['step']);}return a;}['findWowDepositEventIdx'](a){const b=a['wowReceipt']?.['events'];if(!b||b['length']===0x0)return 0x0;const c=b['findIndex'](d=>typeof d?.['type']==='string'&&d['type']['toLowerCase']()['includes']('::bridge::tokendepositedeventv2'));return c>=0x0?c:0x0;}async['queryEvmToWowClaimStatus'](a){return queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':a['bridgeSeqNum']},this['config']['wow']['network']);}async['claimWowToEvm'](a){if(!this['wowEnv'])a107c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20claim');await this['_loadHistoryPromise'];const b=this['_transferHistory']['get'](a);if(!b)a107c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20not\x20found');if(b['direction']!=='wow_to_evm')a107c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20is\x20not\x20a\x20wow_to_evm\x20transfer');if(!b['depositTxDigest']||!b['bridgeSeq'])a107c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20missing\x20deposit\x20info\x20(depositTxDigest\x20or\x20bridgeSeq)');const c=this['config']['ethereum'],d=await this['resolveEvmRpcUrl'](),e=a107k(this['config'],b['token']);if(!e)a107c('invalid\x20parameter','Token\x20'+b['token']+'\x20not\x20found\x20in\x20config');const f=e['tokenId'],{WowClient:g}=await import('./client/index.mjs'),{Config:h}=await import('./w/local/config.mjs'),{getFullnodeUrl:i}=await import('./network-CGWSsrLB.mjs')['then'](r=>r['s']),j=await h['Instance']()['network_get'](this['wowEnv']['network']),k=new g({'url':i(j),'network':j}),l=await k['getTransactionBlock']({'digest':b['depositTxDigest'],'options':{'showEffects':!![]}}),m=l['timestampMs']?BigInt(l['timestampMs']):BigInt(Date['now']()),n=(await Account['Instance']()['get'](this['wowEnv']['account']))?.['address']??'';if(!n)a107c('fail','Failed\x20to\x20resolve\x20WOW\x20sender\x20address');const o=buildClaimMessage({'messageType':0x0,'version':0x2,'nonce':BigInt(b['bridgeSeq']),'sourceChain':0x0,'targetChain':0xa,'recipientAddress':hexToBytes(b['recipientEth']['slice'](0x2)),'tokenId':f,'amount':BigInt(b['amount']),'timestampMs':m,'senderAddress':hexToBytes(n['startsWith']('0x')?n['slice'](0x2):n)}),p={'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':d,'nodeClient':this['nodeClient'],'wowClient':k},q=await claimOnEthBySeq({'sourceChain':0x0,'messageType':0x0,'seqNum':BigInt(b['bridgeSeq']),'message':o},p);if(!q['success']||!q['txHash'])a107c('fail','EVM\x20claim\x20failed:\x20'+(q['error']?.['revertReason']?'revert:\x20'+q['error']['revertReason']:q['error']?.['message']??'unknown\x20error'));return this['_updateTransfer'](a,{'step':'claimed','status':'success','claimTxHash':q['txHash']}),{'claimTxHash':q['txHash'],'transferId':a};}async['bridgeWowToEvmSimple'](a){if(!this['wowEnv'])a107c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20bridge');const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=(await b['Instance']()['active']())['address'];let d;if(a['idempotencyKey'])d=a['idempotencyKey'];else{if(a['idempotentByParams'])d=this['_generateIdempotencyKey']({'direction':'wow_to_evm','token':a['token'],'amount':a['amount'],'recipientEth':a['withdrawTo']??c,'intermediateEthAccount':c});}if(d){const f=await this['_findTransferByIdempotencyKey'](d);if(f){if(f['status']==='success'||f['status']==='pending'||f['status']==='in_progress')return{'depositTxDigest':f['depositTxDigest']??'','bridgeSeq':f['bridgeSeq']?BigInt(f['bridgeSeq']):0x0n,'claimTxHash':f['claimTxHash'],'withdrawTxHash':f['withdrawTxHash'],'activeEvmAccount':f['intermediateEthAccount'],'transferId':f['transferId'],'idempotentHit':!![]};await this['_historyLock']['run'](async()=>{this['_transferHistory']['delete'](f['transferId']),await this['_saveHistory']();});}}const e=await this['_recordTransfer']({'direction':'wow_to_evm','token':a['token'],'amount':a['amount'],'recipientEth':a['withdrawTo']??c,'intermediateEthAccount':c,'withdrawToProvided':!!a['withdrawTo'],'idempotencyKey':d});try{this['_updateTransfer'](e,{'step':'deposit','status':'in_progress'});const g=await this['bridgeWowToEvm']({'token':a['token'],'amount':a['amount'],'recipientEthAddress':c,'waitForFinalization':a['waitForFinalization']??!![]});if(g['claimTxHash'])this['_updateTransfer'](e,{'step':'claimed','status':'success','depositTxDigest':g['depositTxDigest'],'bridgeSeq':g['bridgeSeq']?.['toString'](),'claimTxHash':g['claimTxHash']});else this['_updateTransfer'](e,{'step':'deposit','status':'in_progress','depositTxDigest':g['depositTxDigest'],'bridgeSeq':g['bridgeSeq']?.['toString']()});let h;if(a['withdrawTo']&&g['claimTxHash']){this['_updateTransfer'](e,{'step':'withdraw','status':'in_progress'});const i=a107k(this['config'],a['token']);h=(await b['Instance']()['withdrawFromActive']({'to':a['withdrawTo'],'amount':a['amount'],'tokenAddress':a['token']==='ETH'?void 0x0:i?.['evmAddress'],'network':this['config']['ethereum']['chainId']}))['transactionHash'],this['_updateTransfer'](e,{'step':'withdrawn','status':'success','withdrawTxHash':h});}return{'depositTxDigest':g['depositTxDigest'],'bridgeSeq':g['bridgeSeq'],'claimTxHash':g['claimTxHash'],'withdrawTxHash':h,'activeEvmAccount':c,'transferId':e};}catch(j){this['_updateTransfer'](e,{'status':'failed','error':j?.['message']??String(j)});throw j;}}async['bridgeEvmToWowSimple'](a){if(!this['wowEnv'])a107c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20EVM→WOW\x20bridge');const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=await b['Instance']()['active']();let d=a['recipientWowAddress'];if(!d){const j=await Account['Instance']()['get'](this['wowEnv']['account']);if(!j?.['address'])a107c('fail','Failed\x20to\x20resolve\x20WOW\x20recipient\x20address');d=j['address'];}let e;if(a['idempotencyKey'])e=a['idempotencyKey'];else{if(a['idempotentByParams'])e=this['_generateIdempotencyKey']({'direction':'evm_to_wow','token':a['token'],'amount':a['amount'],'recipientWow':d,'intermediateEthAccount':c['address']});}if(e){const k=await this['_findTransferByIdempotencyKey'](e);if(k){if(k['status']==='success'||k['status']==='pending'||k['status']==='in_progress')return{'depositTxHash':k['depositTxHash']??'','bridgeSeq':k['bridgeSeq']?BigInt(k['bridgeSeq']):void 0x0,'claimTxDigest':k['claimTxDigest'],'activeEvmAccount':k['intermediateEthAccount'],'transferId':k['transferId'],'idempotentHit':!![]};await this['_historyLock']['run'](async()=>{this['_transferHistory']['delete'](k['transferId']),await this['_saveHistory']();});}}const f=a107k(this['config'],a['token']);if(!f)a107c('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const g=a['token']==='ETH';let h;if(g)h=await b['Instance']()['balance'](this['config']['ethereum']['chainId']);else h=await b['Instance']()['balanceOf'](f['evmAddress'],this['config']['ethereum']['chainId']);if(h===void 0x0||h<a['amount'])a107c('fail','Insufficient\x20'+(g?'ETH':'ERC20')+'\x20balance\x20on\x20activeEvmAccount\x20('+c['address']+')\x20on\x20chain\x20'+this['config']['ethereum']['chainId']+':\x20have\x20'+(h??0x0n)+',\x20need\x20'+a['amount']+'.\x20Please\x20recharge\x20the\x20activeEvmAccount\x20from\x20your\x20wallet\x20(transfer\x20'+(g?'ETH':'the\x20token')+'\x20to\x20'+c['address']+'),\x20then\x20retry\x20the\x20cross-chain\x20transfer.');const i=await this['_recordTransfer']({'direction':'evm_to_wow','token':a['token'],'amount':a['amount'],'recipientWow':d,'intermediateEthAccount':c['address'],'idempotencyKey':e});try{this['_updateTransfer'](i,{'step':'deposit','status':'in_progress'});let l;if(g)l=await this['bridgeNativeEvmToWow']({'amount':a['amount'],'recipientWowAddress':d,'waitForFinalization':a['waitForFinalization']??!![]});else l=await this['bridgeErc20ToWow']({'token':a['token'],'amount':a['amount'],'recipientWowAddress':d,'waitForFinalization':a['waitForFinalization']??!![]});const m=a['waitForFinalization']??!![];return this['_updateTransfer'](i,{'step':m?'claimed':'deposit','status':m?'success':'in_progress','depositTxHash':l['depositTxHash'],'bridgeSeq':l['bridgeSeq']?.['toString'](),'claimTxDigest':l['claimTxDigest']}),{...l,'activeEvmAccount':c['address'],'transferId':i};}catch(n){this['_updateTransfer'](i,{'status':'failed','error':n?.['message']??String(n)});throw n;}}async['withdrawFromActiveEvmAccount'](a){const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=await b['Instance']()['active']();let d=a['tokenAddress'];if(!d&&a['token']&&a['token']!=='ETH')d=a107k(this['config'],a['token'])?.['evmAddress'];const e=await this['_recordTransfer']({'direction':'withdraw','token':a['token'],'amount':a['amount'],'recipientEth':a['to'],'intermediateEthAccount':c['address']});try{this['_updateTransfer'](e,{'step':'withdraw','status':'in_progress'});const f=await b['Instance']()['withdrawFromActive']({'to':a['to'],'amount':a['amount'],'tokenAddress':d,'network':a['network']??this['config']['ethereum']['chainId']});return this['_updateTransfer'](e,{'step':'withdrawn','status':'success','withdrawTxHash':f['transactionHash']}),{'txHash':f['transactionHash'],'transferId':e};}catch(g){this['_updateTransfer'](e,{'status':'failed','error':g?.['message']??String(g)});throw g;}}async['querySupportedEvmChains'](){const {EvmNetworkRegistry:a}=await import('./w/local/evm/networks.mjs'),b=a['Instance']()['listRpcStatus'](this['config']['ethereum']['chainId']),c=b['filter'](d=>d['healthy'])['length'];return[{'chainId':this['config']['ethereum']['chainId'],'name':'mainnet','description':'Ethereum\x20Mainnet','bridgeChainId':this['config']['ethereum']['bridgeChainId'],'explorerUrl':'https://etherscan.io','rpcCount':b['length'],'healthyRpcCount':c}];}async['querySupportedTokens'](a){const b=await this['querySupportedEvmChains'](),c=a?.['network']?b['filter'](e=>typeof a['network']==='number'?e['chainId']===a['network']:e['name']['toLowerCase']()===String(a['network'])['toLowerCase']()):b,d=[];for(const e of c){const f=this['config']['tokens']['filter'](g=>!g['evmChains']||g['evmChains']['includes'](e['bridgeChainId']))['map'](g=>({'tokenId':g['tokenId'],'symbol':g['symbol'],'evmAddress':g['evmAddress'],'evmDecimals':g['evmDecimals'],'wowTypeTag':g['wowTypeTag'],'wowDecimals':g['wowDecimals'],'description':g['description']??g['symbol']+'\x20(tokenId='+g['tokenId']+')'}));d['push']({'chainId':e['chainId'],'chainName':e['name'],'bridgeChainId':e['bridgeChainId'],'tokens':f});}return d;}async['queryActiveEvmAccount'](a){const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),{EvmNetworkRegistry:c}=await import('./w/local/evm/networks.mjs'),d=await b['Instance']()['active']();c['Instance']();const e=await this['querySupportedEvmChains'](),f=a?.['network']?e['filter'](h=>typeof a['network']==='number'?h['chainId']===a['network']:h['name']['toLowerCase']()===String(a['network'])['toLowerCase']()):e,g=[];for(const h of f){const i=await b['Instance']()['balance'](h['chainId']),j={'chainId':h['chainId'],'name':h['name'],'nativeBalance':(i??0x0n)['toString']()};if(a?.['tokens']&&a['tokens']['length']>0x0){j['tokens']=[];for(const k of a['tokens']){const l=await b['Instance']()['balanceOf'](k,h['chainId']);j['tokens']['push']({'tokenAddress':k,'balance':(l??0x0n)['toString']()});}}g['push'](j);}return{'address':d['address'],'chains':g};}async['queryTransferList'](a){return await this['_loadHistoryPromise'],this['_historyLock']['run'](async()=>{const b=Array['from'](this['_transferHistory']['values']())['reverse']();if(a?.['onlyActive'])return b['filter'](c=>c['status']==='in_progress'||c['status']==='pending');return b;});}async['queryTransferStatus'](a){return await this['_loadHistoryPromise'],this['_historyLock']['run'](async()=>{return this['_transferHistory']['get'](a);});}async['getTransferByDepositTx'](a){return this['_findTransferByDepositTx'](a);}async['getTransferByBridgeSeq'](a){return this['_findTransferByBridgeSeq'](a);}async['resumeTransfer'](a){await this['_loadHistoryPromise'];const b=await this['_historyLock']['run'](async()=>{return this['_transferHistory']['get'](a);});if(!b)a107c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20not\x20found');if(b['status']==='success')return b;if(b['direction']==='wow_to_evm')return this['_resumeWowToEvm'](b);else{if(b['direction']==='evm_to_wow')return this['_resumeEvmToWow'](b);else{if(b['direction']==='withdraw')return this['_resumeWithdraw'](b);}}return b;}async['_resumeWowToEvm'](a){const b=a['transferId'];try{if(a['depositTxDigest']&&a['bridgeSeq']){await this['refreshTransferStatus'](b);const c=await this['queryTransferStatus'](b);if(c?.['status']==='success')return c;if(!a['claimTxHash']){const {EvmAccount:d}=await import('./w/local/evm-account.mjs'),e=await d['Instance']()['active']();if(a['recipientEth']===e['address'])await this['claimWowToEvm'](b);}if(a['withdrawToProvided']&&a['recipientEth']&&!a['withdrawTxHash']){const f=a107k(this['config'],a['token']),{EvmAccount:g}=await import('./w/local/evm-account.mjs');this['_updateTransfer'](b,{'step':'withdraw','status':'in_progress'});const h=await g['Instance']()['withdrawFromActive']({'to':a['recipientEth'],'amount':BigInt(a['amount']),'tokenAddress':a['token']==='ETH'?void 0x0:f?.['evmAddress'],'network':this['config']['ethereum']['chainId']});this['_updateTransfer'](b,{'step':'withdrawn','status':'success','withdrawTxHash':h['transactionHash']});}}}catch(i){this['_updateTransfer'](b,{'status':'failed','error':i?.['message']??String(i)});throw i;}return await this['queryTransferStatus'](b)??a;}async['_resumeEvmToWow'](a){const b=a['transferId'];try{await this['refreshTransferStatus'](b);const c=await this['queryTransferStatus'](b);if(c?.['status']==='success')return c;}catch(d){this['_updateTransfer'](b,{'status':'failed','error':d?.['message']??String(d)});throw d;}return await this['queryTransferStatus'](b)??a;}async['_resumeWithdraw'](a){const b=a['transferId'];try{if(!a['withdrawTxHash']&&a['recipientEth']){const c=a107k(this['config'],a['token']),{EvmAccount:d}=await import('./w/local/evm-account.mjs');this['_updateTransfer'](b,{'step':'withdraw','status':'in_progress'});const e=await d['Instance']()['withdrawFromActive']({'to':a['recipientEth'],'amount':BigInt(a['amount']),'tokenAddress':a['token']==='ETH'?void 0x0:c?.['evmAddress'],'network':this['config']['ethereum']['chainId']});this['_updateTransfer'](b,{'step':'withdrawn','status':'success','withdrawTxHash':e['transactionHash']});}}catch(f){this['_updateTransfer'](b,{'status':'failed','error':f?.['message']??String(f)});throw f;}return await this['queryTransferStatus'](b)??a;}async['refreshTransferStatus'](a){await this['_loadHistoryPromise'];const b=this['_transferHistory']['get'](a);if(!b)return void 0x0;if(b['direction']==='withdraw')return b;try{if(b['direction']==='evm_to_wow'&&b['depositTxHash']){const c=await this['queryEvmToWowStatus'](b['depositTxHash']);if(typeof c['bridgeSeq']==='bigint')c['bridgeSeq']=c['bridgeSeq']['toString']();b['latestState']=c,c['status']==='completed'&&b['status']==='in_progress'&&(b['status']='success',b['step']='claimed');}else{if(b['direction']==='wow_to_evm'&&b['depositTxDigest']){const d=await this['queryWowToEvmStatus'](b['depositTxDigest']);if(typeof d['bridgeSeq']==='bigint')d['bridgeSeq']=d['bridgeSeq']['toString']();if(b['claimTxHash']){if(d['step']==='source_tx_confirmed'||d['step']==='signatures_ready')try{const e=await this['resolveEvmRpcUrl'](),f=await queryEthTxReceipt(b['claimTxHash'],e);f?(d['claimReceipt']=f,f['status']==='0x1'?(d['status']='completed',d['step']='completed',d['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['completed']):(d['status']='failed',d['step']='failed',d['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['failed'],d['error']='EVM\x20claim\x20transaction\x20reverted')):(d['status']='claiming',d['step']='claim_tx_pending',d['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['claim_tx_pending']);}catch{}}else{if(d['step']==='signatures_ready')d['hint']='Quorum\x20signatures\x20are\x20ready.\x20Call\x20claim_wow_to_evm\x20(step\x202)\x20now.';else{if(d['step']==='node_signing')d['hint']='Bridge\x20committee\x20signing\x20in\x20progress\x20('+(d['signatureCount']??0x0)+'/'+(d['signaturesRequired']??'?')+'\x20nodes\x20responded).\x20Keep\x20polling\x20query_transfer_status;\x20call\x20claim_wow_to_evm\x20once\x20signatures_ready.';else{if(d['step']!=='completed')d['hint']='WOW\x20deposit\x20confirmed;\x20waiting\x20for\x20bridge\x20committee\x20signatures.\x20Keep\x20polling\x20query_transfer_status,\x20then\x20call\x20claim_wow_to_evm\x20once\x20signatures_ready.';}}}b['latestState']=d,d['status']==='completed'&&b['status']==='in_progress'&&(b['status']='success',b['step']='claimed');}}}catch(g){b['error']=g?.['message']??String(g);}return b;}async['manageEvmRpc'](a){const {EvmNetworkRegistry:b}=await import('./w/local/evm/networks.mjs'),c=b['Instance'](),d=a['network']??this['config']['ethereum']['chainId'];switch(a['op']){case'list':return{'op':'list','success':!![],'result':c['listRpcStatus'](d)};case'add':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a107c('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27add\x27\x20op');{const e=c['addRpcs'](d,a['rpcUrls']);return{'op':'add','success':e>0x0,'result':{'added':e}};}case'remove':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a107c('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27remove\x27\x20op');{const f=c['removeRpcs'](d,a['rpcUrls']);return{'op':'remove','success':f>0x0,'result':{'removed':f}};}case'set':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a107c('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27set\x27\x20op');return{'op':'set','success':c['setRpcs'](d,a['rpcUrls'])};case'ping':{const g=c['listRpcStatus'](d),h=[];for(const i of g){const j=await c['ping'](i['url']);h['push']({'url':i['url'],'healthy':j});}return{'op':'ping','success':!![],'result':h};}default:a107c('invalid\x20parameter','Unknown\x20op:\x20'+a['op']);}}static{this['HISTORY_DB_KEY']='bridge:transfers:all';}async['_loadHistory'](){return this['_historyLock']['run'](async()=>{try{this['_historyStore']=new a107f();const a=await this['_historyStore']['get'](BridgeClient['HISTORY_DB_KEY']);if(a){const b=JSON['parse'](a);if(Array['isArray'](b)){for(const d of b)if(d['transferId'])this['_transferHistory']['set'](d['transferId'],d);for(const e of b){const f=e['transferId']?.['match'](/_(\d+)$/);if(f){const g=parseInt(f[0x1],0xa);if(g>this['_transferCounter'])this['_transferCounter']=g;}}}}}catch{}});}async['_saveHistory'](){try{if(!this['_historyStore'])return;const a=Array['from'](this['_transferHistory']['values']());await this['_historyStore']['put'](BridgeClient['HISTORY_DB_KEY'],JSON['stringify'](a));}catch{}}async['_recordTransfer'](a){return this['_historyLock']['run'](async()=>{this['_transferCounter']+=0x1;const b='br_'+Date['now']()+'_'+this['_transferCounter'],c={'transferId':b,'idempotencyKey':a['idempotencyKey'],'direction':a['direction'],'token':a['token'],'amount':a['amount']['toString'](),'recipientEth':a['recipientEth'],'recipientWow':a['recipientWow'],'intermediateEthAccount':a['intermediateEthAccount'],'withdrawToProvided':a['withdrawToProvided'],'step':'init','status':'pending','createdAt':Date['now'](),'updatedAt':Date['now']()};return this['_transferHistory']['set'](b,c),await this['_saveHistory'](),b;});}async['_updateTransfer'](a,b){return this['_historyLock']['run'](async()=>{const c=this['_transferHistory']['get'](a);if(!c)return;Object['assign'](c,b,{'updatedAt':Date['now']()}),await this['_saveHistory']();});}['_generateIdempotencyKey'](a){const b=[a['direction'],a['token']['toString'](),a['amount']['toString'](),a['recipientWow']??'',a['recipientEth']??'',a['intermediateEthAccount']??''];let c=0x1505;const d=b['join']('|');for(let e=0x0;e<d['length'];e++){c=(c<<0x5)+c+d['charCodeAt'](e),c|=0x0;}return'idem_'+Math['abs'](c)['toString'](0x24);}async['_findTransferByIdempotencyKey'](a){return await this['_loadHistoryPromise'],this['_historyLock']['run'](async()=>{for(const b of this['_transferHistory']['values']())if(b['idempotencyKey']===a)return b;});}async['_findTransferByDepositTx'](a){return await this['_loadHistoryPromise'],this['_historyLock']['run'](async()=>{for(const b of this['_transferHistory']['values']())if(b['depositTxHash']===a||b['depositTxDigest']===a)return b;});}async['_findTransferByBridgeSeq'](a){await this['_loadHistoryPromise'];const b=a['toString']();return this['_historyLock']['run'](async()=>{for(const c of this['_transferHistory']['values']())if(c['bridgeSeq']===b)return c;});}};function sleep(a){return new Promise(b=>setTimeout(b,a));}function loadDefaultConfig(){return a107j;}function hexToBytes(a){const b=a['startsWith']('0x')?a['slice'](0x2):a,c=new Uint8Array(b['length']/0x2);for(let d=0x0;d<c['length'];d++)c[d]=parseInt(b['slice'](d*0x2,d*0x2+0x2),0x10);return c;}export{ERC20_TRANSFER_TOPIC as A,encodeTokenTransferPayloadV2 as B,buildClaimMessage as C,depositErc20 as D,isEvmNonceAlreadyProcessed as E,encodeBridgeERC20 as F,encodeBridgeERC20V2 as I,encodeBridgeETH as L,TOKENS_DEPOSITED_TOPIC as M,TOKENS_DEPOSITED_V2_TOPIC as N,depositEth as O,encodeApprove as P,encodeBridgeETHV2 as R,depositFromWow as S,claimOnEthBySeq as T,encodeTransferBridgedTokensWithSignatures as V,waitForEthTx as _,BridgeTransferStatus as a,claimOnWow as b,parseEthClaimEvent as c,queryEthBalance as d,queryEthTxConfirmations as f,queryWowTx as g,queryWowToEvmTransferStatus as h,BridgeTransferDirection as i,TOKENS_CLAIMED_TOPIC as j,depositFromEth as k,parseEthDepositEvent as l,queryEvmToWowTransferStatus as m,BridgeNodeClient as n,BridgeTransferStep as o,queryEthTxReceipt as p,BRIDGE_STEP_DESCRIPTIONS as r,makeBridgeTransferState as s,BridgeClient as t,queryErc20Balance as u,waitForWowTx as v,claimOnEth as w,queryWowClaimStatus as x,WowClaimStatus as y,encodeIsTransferProcessed as z};
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"author": "wowok <build@wowok.net>",
|
|
4
4
|
"description": "Wowok Blockchain TypeScript API",
|
|
5
5
|
"homepage": "https://wowok.net",
|
|
6
|
-
"version": "3.0.
|
|
6
|
+
"version": "3.0.4",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"files": [
|
|
@@ -263,8 +263,8 @@
|
|
|
263
263
|
"codegen:jsonrpc": "node tools/codegen.js jsonrpc",
|
|
264
264
|
"codegen:all": "node tools/codegen.js all",
|
|
265
265
|
"codegen:version": "node genversion.mjs",
|
|
266
|
-
"build": "node genversion.mjs && tsdown --no-report && pnpm obfuscate",
|
|
267
|
-
"build:test": "node genversion.mjs && tsdown --no-report",
|
|
266
|
+
"build": "node genversion.mjs && tsdown --no-report --config-loader tsx && pnpm obfuscate",
|
|
267
|
+
"build:test": "node genversion.mjs && tsdown --no-report --config-loader tsx",
|
|
268
268
|
"obfuscate": "javascript-obfuscator dist/esm --output dist/esm --config obfuscator.json",
|
|
269
269
|
"vitest": "vitest",
|
|
270
270
|
"test": "pnpm test:typecheck && pnpm test:unit",
|
|
@@ -308,6 +308,7 @@
|
|
|
308
308
|
"tmp": "^0.2.5",
|
|
309
309
|
"ts-retry-promise": "^0.8.1",
|
|
310
310
|
"tsdown": "0.22.2",
|
|
311
|
+
"tsx": "^4.21.0",
|
|
311
312
|
"typescript": "^5.9.3",
|
|
312
313
|
"vite": "^8.0.5",
|
|
313
314
|
"vite-tsconfig-paths": "^6.0.4",
|
|
@@ -319,16 +320,15 @@
|
|
|
319
320
|
"@graphql-typed-document-node/core": "^3.2.0",
|
|
320
321
|
"@mysten/bcs": "^2.0.5",
|
|
321
322
|
"@mysten/utils": "^0.3.3",
|
|
322
|
-
"@noble/curves": "^2.0
|
|
323
|
-
"@noble/hashes": "^2.0
|
|
324
|
-
"@noble/post-quantum": "^0.
|
|
323
|
+
"@noble/curves": "^2.4.0",
|
|
324
|
+
"@noble/hashes": "^2.4.0",
|
|
325
|
+
"@noble/post-quantum": "^0.7.1",
|
|
325
326
|
"@protobuf-ts/grpcweb-transport": "^2.11.1",
|
|
326
327
|
"@protobuf-ts/runtime": "^2.11.1",
|
|
327
328
|
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
|
328
|
-
"@scure/base": "^2.
|
|
329
|
-
"@scure/bip32": "^2.0
|
|
330
|
-
"@scure/bip39": "^2.0
|
|
331
|
-
"@wowok/wowok": "link:",
|
|
329
|
+
"@scure/base": "^2.4.0",
|
|
330
|
+
"@scure/bip32": "^2.4.0",
|
|
331
|
+
"@scure/bip39": "^2.4.0",
|
|
332
332
|
"@zip.js/zip.js": "^2.7.57",
|
|
333
333
|
"gql.tada": "^1.9.0",
|
|
334
334
|
"graphql": "^16.12.0",
|
|
@@ -336,5 +336,15 @@
|
|
|
336
336
|
"lodash": "^4.17.21",
|
|
337
337
|
"poseidon-lite": "0.2.1",
|
|
338
338
|
"valibot": "^1.2.0"
|
|
339
|
+
},
|
|
340
|
+
"pnpm": {
|
|
341
|
+
"overrides": {
|
|
342
|
+
"axios": "^1.15.0",
|
|
343
|
+
"lodash": ">=4.17.21",
|
|
344
|
+
"hono": ">=4.12.18",
|
|
345
|
+
"postcss": ">=8.5.10",
|
|
346
|
+
"protobufjs": ">=7.5.5",
|
|
347
|
+
"vm2": "3.11.2"
|
|
348
|
+
}
|
|
339
349
|
}
|
|
340
350
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a0a,l as a0b,o as a0c,u as a0d}from'./wow-types-DctQuD2J.mjs';import{o as a0e,s as a0f,u as a0g}from'./bcs-Cjvfeyqf.mjs';import{C as a0h,D as a0i,E as a0j,M as a0k,N as a0l,O as a0m,P as a0n,S as a0o,b as a0p,g as a0q,h as a0r,k as a0s,x as a0t,y as a0u}from'./utils-CtyqDDA5.mjs';import{fromBase58,fromBase64,fromHex,isSerializedBcs,toBase58,toBase64,toHex}from'@mysten/bcs';import{blake2b}from'@noble/hashes/blake2.js';import{chunk}from'@mysten/utils';import{array,bigint,boolean,check,integer,is,lazy,literal,nullable,nullish,number,object,optional,parse,picklist,pipe,record,string,transform,tuple,union,unknown}from'valibot';function safeEnum(a){return union(Object['keys'](a)['map'](b=>withKind(b,object({[b]:a[b]}))));}function withKind(a,b){return pipe(object({...b['entries'],'$kind':optional(literal(a))}),transform(c=>({...c,'$kind':a})));}const WowAddress=pipe(string(),transform(a=>a0b(a)),check(a0c)),ObjectID=WowAddress,BCSBytes=string(),JsonU64=pipe(union([string(),pipe(number(),integer())]),check(a=>{try{return BigInt(a),BigInt(a)>=0x0&&BigInt(a)<=0xffffffffffffffffn;}catch{return![];}},'Invalid\x20u64')),U32=pipe(number(),integer(),check(a=>a>=0x0&&a<0x2**0x20,'Invalid\x20u32')),ObjectRefSchema=object({'objectId':WowAddress,'version':JsonU64,'digest':string()}),ArgumentSchema=union([withKind('GasCoin',object({'GasCoin':literal(!![])})),withKind('Input',object({'Input':pipe(number(),integer()),'type':optional(union([literal('pure'),literal('object'),literal('withdrawal')]))})),withKind('Result',object({'Result':pipe(number(),integer())})),withKind('NestedResult',object({'NestedResult':tuple([pipe(number(),integer()),pipe(number(),integer())])}))]),GasDataSchema=object({'budget':nullable(JsonU64),'price':nullable(JsonU64),'owner':nullable(WowAddress),'payment':nullable(array(ObjectRefSchema))});object({'address':string(),'module':string(),'name':string(),'typeParams':array(string())});const OpenSignatureBodySchema=union([object({'$kind':literal('address')}),object({'$kind':literal('bool')}),object({'$kind':literal('u8')}),object({'$kind':literal('u16')}),object({'$kind':literal('u32')}),object({'$kind':literal('u64')}),object({'$kind':literal('u128')}),object({'$kind':literal('u256')}),object({'$kind':literal('unknown')}),object({'$kind':literal('vector'),'vector':lazy(()=>OpenSignatureBodySchema)}),object({'$kind':literal('datatype'),'datatype':object({'typeName':string(),'typeParameters':array(lazy(()=>OpenSignatureBodySchema))})}),object({'$kind':literal('typeParameter'),'index':pipe(number(),integer())})]),OpenSignatureSchema=object({'reference':nullable(union([literal('mutable'),literal('immutable'),literal('unknown')])),'body':OpenSignatureBodySchema}),ProgrammableMoveCallSchema=object({'package':ObjectID,'module':string(),'function':string(),'typeArguments':array(string()),'arguments':array(ArgumentSchema),'_argumentTypes':optional(nullable(array(OpenSignatureSchema)))}),$Intent$1=object({'name':string(),'inputs':record(string(),union([ArgumentSchema,array(ArgumentSchema)])),'data':record(string(),unknown())}),CommandSchema=safeEnum({'MoveCall':ProgrammableMoveCallSchema,'TransferObjects':object({'objects':array(ArgumentSchema),'address':ArgumentSchema}),'SplitCoins':object({'coin':ArgumentSchema,'amounts':array(ArgumentSchema)}),'MergeCoins':object({'destination':ArgumentSchema,'sources':array(ArgumentSchema)}),'Publish':object({'modules':array(BCSBytes),'dependencies':array(ObjectID)}),'MakeMoveVec':object({'type':nullable(string()),'elements':array(ArgumentSchema)}),'Upgrade':object({'modules':array(BCSBytes),'dependencies':array(ObjectID),'package':ObjectID,'ticket':ArgumentSchema}),'$Intent':$Intent$1}),ObjectArgSchema=safeEnum({'ImmOrOwnedObject':ObjectRefSchema,'SharedObject':object({'objectId':ObjectID,'initialSharedVersion':JsonU64,'mutable':boolean()}),'Receiving':ObjectRefSchema}),FundsWithdrawalArgSchema=object({'reservation':safeEnum({'MaxAmountU64':JsonU64}),'typeArg':safeEnum({'Balance':string()}),'withdrawFrom':safeEnum({'Sender':literal(!![]),'Sponsor':literal(!![])})}),CallArgSchema=safeEnum({'Object':ObjectArgSchema,'Pure':object({'bytes':BCSBytes}),'UnresolvedPure':object({'value':unknown()}),'UnresolvedObject':object({'objectId':ObjectID,'version':optional(nullable(JsonU64)),'digest':optional(nullable(string())),'initialSharedVersion':optional(nullable(JsonU64)),'mutable':optional(nullable(boolean()))}),'FundsWithdrawal':FundsWithdrawalArgSchema}),NormalizedCallArg$1=safeEnum({'Object':ObjectArgSchema,'Pure':object({'bytes':BCSBytes})}),ValidDuringSchema=object({'minEpoch':nullable(JsonU64),'maxEpoch':nullable(JsonU64),'minTimestamp':nullable(JsonU64),'maxTimestamp':nullable(JsonU64),'chain':string(),'nonce':U32}),TransactionExpiration$2=safeEnum({'None':literal(!![]),'Epoch':JsonU64,'ValidDuring':ValidDuringSchema}),TransactionDataSchema=object({'version':literal(0x2),'sender':nullish(WowAddress),'expiration':nullish(TransactionExpiration$2),'gasData':GasDataSchema,'inputs':array(CallArgSchema),'commands':array(CommandSchema)}),ObjectRef=object({'digest':string(),'objectId':string(),'version':union([pipe(number(),integer()),string(),bigint()])}),NormalizedCallArg=safeEnum({'Object':safeEnum({'ImmOrOwned':ObjectRef,'Shared':object({'objectId':ObjectID,'initialSharedVersion':JsonU64,'mutable':boolean()}),'Receiving':ObjectRef}),'Pure':array(pipe(number(),integer()))}),TransactionInput=union([object({'kind':literal('Input'),'index':pipe(number(),integer()),'value':unknown(),'type':optional(literal('object'))}),object({'kind':literal('Input'),'index':pipe(number(),integer()),'value':unknown(),'type':literal('pure')})]),TransactionExpiration$1=union([object({'Epoch':pipe(number(),integer())}),object({'None':nullable(literal(!![]))})]),StringEncodedBigint=pipe(union([number(),string(),bigint()]),check(a=>{if(!['string','number','bigint']['includes'](typeof a))return![];try{return BigInt(a),!![];}catch{return![];}})),TypeTag=union([object({'bool':nullable(literal(!![]))}),object({'u8':nullable(literal(!![]))}),object({'u64':nullable(literal(!![]))}),object({'u128':nullable(literal(!![]))}),object({'address':nullable(literal(!![]))}),object({'signer':nullable(literal(!![]))}),object({'vector':lazy(()=>TypeTag)}),object({'struct':lazy(()=>StructTag)}),object({'u16':nullable(literal(!![]))}),object({'u32':nullable(literal(!![]))}),object({'u256':nullable(literal(!![]))})]),StructTag=object({'address':string(),'module':string(),'name':string(),'typeParams':array(TypeTag)}),GasConfig=object({'budget':optional(StringEncodedBigint),'price':optional(StringEncodedBigint),'payment':optional(array(ObjectRef)),'owner':optional(string())}),TransactionArgument=union([...[TransactionInput,object({'kind':literal('GasCoin')}),object({'kind':literal('Result'),'index':pipe(number(),integer())}),object({'kind':literal('NestedResult'),'index':pipe(number(),integer()),'resultIndex':pipe(number(),integer())})]]),MoveCallTransaction=object({'kind':literal('MoveCall'),'target':pipe(string(),check(a=>a['split']('::')['length']===0x3)),'typeArguments':array(string()),'arguments':array(TransactionArgument)}),TransferObjectsTransaction=object({'kind':literal('TransferObjects'),'objects':array(TransactionArgument),'address':TransactionArgument}),SplitCoinsTransaction=object({'kind':literal('SplitCoins'),'coin':TransactionArgument,'amounts':array(TransactionArgument)}),MergeCoinsTransaction=object({'kind':literal('MergeCoins'),'destination':TransactionArgument,'sources':array(TransactionArgument)}),MakeMoveVecTransaction=object({'kind':literal('MakeMoveVec'),'type':union([object({'Some':TypeTag}),object({'None':nullable(literal(!![]))})]),'objects':array(TransactionArgument)}),TransactionType=union([...[MoveCallTransaction,TransferObjectsTransaction,SplitCoinsTransaction,MergeCoinsTransaction,object({'kind':literal('Publish'),'modules':array(array(pipe(number(),integer()))),'dependencies':array(string())}),object({'kind':literal('Upgrade'),'modules':array(array(pipe(number(),integer()))),'dependencies':array(string()),'packageId':string(),'ticket':TransactionArgument}),MakeMoveVecTransaction]]);object({'version':literal(0x1),'sender':optional(string()),'expiration':nullish(TransactionExpiration$1),'gasConfig':GasConfig,'inputs':array(TransactionInput),'transactions':array(TransactionType)});function serializeV1TransactionData(a){const b=a['inputs']['map']((c,d)=>{if(c['Object'])return{'kind':'Input','index':d,'value':{'Object':c['Object']['ImmOrOwnedObject']?{'ImmOrOwned':c['Object']['ImmOrOwnedObject']}:c['Object']['Receiving']?{'Receiving':{'digest':c['Object']['Receiving']['digest'],'version':c['Object']['Receiving']['version'],'objectId':c['Object']['Receiving']['objectId']}}:{'Shared':{'mutable':c['Object']['SharedObject']['mutable'],'initialSharedVersion':c['Object']['SharedObject']['initialSharedVersion'],'objectId':c['Object']['SharedObject']['objectId']}}},'type':'object'};if(c['Pure'])return{'kind':'Input','index':d,'value':{'Pure':Array['from'](fromBase64(c['Pure']['bytes']))},'type':'pure'};if(c['UnresolvedPure'])return{'kind':'Input','type':'pure','index':d,'value':c['UnresolvedPure']['value']};if(c['UnresolvedObject'])return{'kind':'Input','type':'object','index':d,'value':c['UnresolvedObject']['objectId']};throw new Error('Invalid\x20input');});return{'version':0x1,'sender':a['sender']??void 0x0,'expiration':a['expiration']?.['$kind']==='Epoch'?{'Epoch':Number(a['expiration']['Epoch'])}:a['expiration']?{'None':!![]}:null,'gasConfig':{'owner':a['gasData']['owner']??void 0x0,'budget':a['gasData']['budget']??void 0x0,'price':a['gasData']['price']??void 0x0,'payment':a['gasData']['payment']??void 0x0},'inputs':b,'transactions':a['commands']['map'](c=>{if(c['MakeMoveVec'])return{'kind':'MakeMoveVec','type':c['MakeMoveVec']['type']===null?{'None':!![]}:{'Some':a0g['parseFromStr'](c['MakeMoveVec']['type'])},'objects':c['MakeMoveVec']['elements']['map'](d=>convertTransactionArgument(d,b))};if(c['MergeCoins'])return{'kind':'MergeCoins','destination':convertTransactionArgument(c['MergeCoins']['destination'],b),'sources':c['MergeCoins']['sources']['map'](d=>convertTransactionArgument(d,b))};if(c['MoveCall'])return{'kind':'MoveCall','target':c['MoveCall']['package']+'::'+c['MoveCall']['module']+'::'+c['MoveCall']['function'],'typeArguments':c['MoveCall']['typeArguments'],'arguments':c['MoveCall']['arguments']['map'](d=>convertTransactionArgument(d,b))};if(c['Publish'])return{'kind':'Publish','modules':c['Publish']['modules']['map'](d=>Array['from'](fromBase64(d))),'dependencies':c['Publish']['dependencies']};if(c['SplitCoins'])return{'kind':'SplitCoins','coin':convertTransactionArgument(c['SplitCoins']['coin'],b),'amounts':c['SplitCoins']['amounts']['map'](d=>convertTransactionArgument(d,b))};if(c['TransferObjects'])return{'kind':'TransferObjects','objects':c['TransferObjects']['objects']['map'](d=>convertTransactionArgument(d,b)),'address':convertTransactionArgument(c['TransferObjects']['address'],b)};if(c['Upgrade'])return{'kind':'Upgrade','modules':c['Upgrade']['modules']['map'](d=>Array['from'](fromBase64(d))),'dependencies':c['Upgrade']['dependencies'],'packageId':c['Upgrade']['package'],'ticket':convertTransactionArgument(c['Upgrade']['ticket'],b)};throw new Error('Unknown\x20transaction\x20'+Object['keys'](c));})};}function convertTransactionArgument(a,b){if(a['$kind']==='GasCoin')return{'kind':'GasCoin'};if(a['$kind']==='Result')return{'kind':'Result','index':a['Result']};if(a['$kind']==='NestedResult')return{'kind':'NestedResult','index':a['NestedResult'][0x0],'resultIndex':a['NestedResult'][0x1]};if(a['$kind']==='Input')return b[a['Input']];throw new Error('Invalid\x20argument\x20'+Object['keys'](a));}function transactionDataFromV1(a){return parse(TransactionDataSchema,{'version':0x2,'sender':a['sender']??null,'expiration':a['expiration']?'Epoch'in a['expiration']?{'Epoch':a['expiration']['Epoch']}:{'None':!![]}:null,'gasData':{'owner':a['gasConfig']['owner']??null,'budget':a['gasConfig']['budget']?.['toString']()??null,'price':a['gasConfig']['price']?.['toString']()??null,'payment':a['gasConfig']['payment']?.['map'](b=>({'digest':b['digest'],'objectId':b['objectId'],'version':b['version']['toString']()}))??null},'inputs':a['inputs']['map'](b=>{if(b['kind']==='Input'){if(is(NormalizedCallArg,b['value'])){const c=parse(NormalizedCallArg,b['value']);if(c['Object']){if(c['Object']['ImmOrOwned'])return{'Object':{'ImmOrOwnedObject':{'objectId':c['Object']['ImmOrOwned']['objectId'],'version':String(c['Object']['ImmOrOwned']['version']),'digest':c['Object']['ImmOrOwned']['digest']}}};if(c['Object']['Shared'])return{'Object':{'SharedObject':{'mutable':c['Object']['Shared']['mutable']??null,'initialSharedVersion':c['Object']['Shared']['initialSharedVersion'],'objectId':c['Object']['Shared']['objectId']}}};if(c['Object']['Receiving'])return{'Object':{'Receiving':{'digest':c['Object']['Receiving']['digest'],'version':String(c['Object']['Receiving']['version']),'objectId':c['Object']['Receiving']['objectId']}}};throw new Error('Invalid\x20object\x20input');}return{'Pure':{'bytes':toBase64(new Uint8Array(c['Pure']))}};}if(b['type']==='object')return{'UnresolvedObject':{'objectId':b['value']}};return{'UnresolvedPure':{'value':b['value']}};}throw new Error('Invalid\x20input');}),'commands':a['transactions']['map'](b=>{switch(b['kind']){case'MakeMoveVec':return{'MakeMoveVec':{'type':'Some'in b['type']?a0g['tagToString'](b['type']['Some']):null,'elements':b['objects']['map'](c=>parseV1TransactionArgument(c))}};case'MergeCoins':return{'MergeCoins':{'destination':parseV1TransactionArgument(b['destination']),'sources':b['sources']['map'](c=>parseV1TransactionArgument(c))}};case'MoveCall':{const [c,d,e]=b['target']['split']('::');return{'MoveCall':{'package':c,'module':d,'function':e,'typeArguments':b['typeArguments'],'arguments':b['arguments']['map'](f=>parseV1TransactionArgument(f))}};}case'Publish':return{'Publish':{'modules':b['modules']['map'](f=>toBase64(Uint8Array['from'](f))),'dependencies':b['dependencies']}};case'SplitCoins':return{'SplitCoins':{'coin':parseV1TransactionArgument(b['coin']),'amounts':b['amounts']['map'](f=>parseV1TransactionArgument(f))}};case'TransferObjects':return{'TransferObjects':{'objects':b['objects']['map'](f=>parseV1TransactionArgument(f)),'address':parseV1TransactionArgument(b['address'])}};case'Upgrade':return{'Upgrade':{'modules':b['modules']['map'](f=>toBase64(Uint8Array['from'](f))),'dependencies':b['dependencies'],'package':b['packageId'],'ticket':parseV1TransactionArgument(b['ticket'])}};}throw new Error('Unknown\x20transaction\x20'+Object['keys'](b));})});}function parseV1TransactionArgument(a){switch(a['kind']){case'GasCoin':return{'GasCoin':!![]};case'Result':return{'Result':a['index']};case'NestedResult':return{'NestedResult':[a['index'],a['resultIndex']]};case'Input':return{'Input':a['index']};}}function hashTypedData(a,b){const c=Array['from'](a+'::')['map'](f=>f['charCodeAt'](0x0)),d=new Uint8Array(c['length']+b['length']);return d['set'](c),d['set'](b,c['length']),blake2b(d,{'dkLen':0x20});}function getIdFromCallArg(a){if(typeof a==='string')return a0b(a);if(a['Object']){if(a['Object']['ImmOrOwnedObject'])return a0b(a['Object']['ImmOrOwnedObject']['objectId']);if(a['Object']['Receiving'])return a0b(a['Object']['Receiving']['objectId']);return a0b(a['Object']['SharedObject']['objectId']);}if(a['UnresolvedObject'])return a0b(a['UnresolvedObject']['objectId']);}function isArgument(a){return is(ArgumentSchema,a);}function remapCommandArguments(a,b,c){const d=e=>{switch(e['$kind']){case'Input':{const f=b['get'](e['Input']);if(f===void 0x0)throw new Error('Input\x20'+e['Input']+'\x20not\x20found\x20in\x20input\x20mapping');return{...e,'Input':f};}case'Result':{const g=c['get'](e['Result']);if(g!==void 0x0)return{...e,'Result':g};return e;}case'NestedResult':{const h=c['get'](e['NestedResult'][0x0]);if(h!==void 0x0)return{...e,'NestedResult':[h,e['NestedResult'][0x1]]};return e;}default:return e;}};switch(a['$kind']){case'MoveCall':a['MoveCall']['arguments']=a['MoveCall']['arguments']['map'](d);break;case'TransferObjects':a['TransferObjects']['objects']=a['TransferObjects']['objects']['map'](d),a['TransferObjects']['address']=d(a['TransferObjects']['address']);break;case'SplitCoins':a['SplitCoins']['coin']=d(a['SplitCoins']['coin']),a['SplitCoins']['amounts']=a['SplitCoins']['amounts']['map'](d);break;case'MergeCoins':a['MergeCoins']['destination']=d(a['MergeCoins']['destination']),a['MergeCoins']['sources']=a['MergeCoins']['sources']['map'](d);break;case'MakeMoveVec':a['MakeMoveVec']['elements']=a['MakeMoveVec']['elements']['map'](d);break;case'Upgrade':a['Upgrade']['ticket']=d(a['Upgrade']['ticket']);break;case'$Intent':{const e=a['$Intent']['inputs'];a['$Intent']['inputs']={};for(const [f,g]of Object['entries'](e))a['$Intent']['inputs'][f]=Array['isArray'](g)?g['map'](d):d(g);break;}case'Publish':break;}}function prepareWowAddress(a){return a0b(a)['replace']('0x','');}var TransactionDataBuilder=class TransactionDataBuilder{static['fromKindBytes'](a){const b=a0e['TransactionKind']['parse'](a)['ProgrammableTransaction'];if(!b)throw new Error('Unable\x20to\x20deserialize\x20from\x20bytes.');return TransactionDataBuilder['restore']({'version':0x2,'sender':null,'expiration':null,'gasData':{'budget':null,'owner':null,'payment':null,'price':null},'inputs':b['inputs'],'commands':b['commands']});}static['fromBytes'](a){const b=a0e['TransactionData']['parse'](a)?.['V1'],c=b['kind']['ProgrammableTransaction'];if(!b||!c)throw new Error('Unable\x20to\x20deserialize\x20from\x20bytes.');return TransactionDataBuilder['restore']({'version':0x2,'sender':b['sender'],'expiration':b['expiration'],'gasData':b['gasData'],'inputs':c['inputs'],'commands':c['commands']});}static['restore'](a){if(a['version']===0x2)return new TransactionDataBuilder(parse(TransactionDataSchema,a));else return new TransactionDataBuilder(parse(TransactionDataSchema,transactionDataFromV1(a)));}static['getDigestFromBytes'](a){return toBase58(hashTypedData('TransactionData',a));}constructor(a){this['version']=0x2,this['sender']=a?.['sender']??null,this['expiration']=a?.['expiration']??null,this['inputs']=a?.['inputs']??[],this['commands']=a?.['commands']??[],this['gasData']=a?.['gasData']??{'budget':null,'price':null,'owner':null,'payment':null};}['build']({maxSizeBytes:maxSizeBytes=Infinity,overrides:a,onlyTransactionKind:b}={}){const c=this['inputs'],d=this['commands'],e={'ProgrammableTransaction':{'inputs':c,'commands':d}};if(b)return a0e['TransactionKind']['serialize'](e,{'maxSize':maxSizeBytes})['toBytes']();const f=a?.['expiration']??this['expiration'],g=a?.['sender']??this['sender'],h={...this['gasData'],...a?.['gasData']};if(!g)throw new Error('Missing\x20transaction\x20sender');if(!h['budget'])throw new Error('Missing\x20gas\x20budget');if(!h['payment'])throw new Error('Missing\x20gas\x20payment');if(!h['price'])throw new Error('Missing\x20gas\x20price');const i={'sender':prepareWowAddress(g),'expiration':f?f:{'None':!![]},'gasData':{'payment':h['payment'],'owner':prepareWowAddress(this['gasData']['owner']??g),'price':BigInt(h['price']),'budget':BigInt(h['budget'])},'kind':{'ProgrammableTransaction':{'inputs':c,'commands':d}}};return a0e['TransactionData']['serialize']({'V1':i},{'maxSize':maxSizeBytes})['toBytes']();}['addInput'](a,b){const c=this['inputs']['length'];return this['inputs']['push'](b),{'Input':c,'type':a,'$kind':'Input'};}['getInputUses'](a,b){this['mapArguments']((c,d)=>{if(c['$kind']==='Input'&&c['Input']===a)b(c,d);return c;});}['mapCommandArguments'](a,b){const c=this['commands'][a];switch(c['$kind']){case'MoveCall':c['MoveCall']['arguments']=c['MoveCall']['arguments']['map'](e=>b(e,c,a));break;case'TransferObjects':c['TransferObjects']['objects']=c['TransferObjects']['objects']['map'](e=>b(e,c,a)),c['TransferObjects']['address']=b(c['TransferObjects']['address'],c,a);break;case'SplitCoins':c['SplitCoins']['coin']=b(c['SplitCoins']['coin'],c,a),c['SplitCoins']['amounts']=c['SplitCoins']['amounts']['map'](e=>b(e,c,a));break;case'MergeCoins':c['MergeCoins']['destination']=b(c['MergeCoins']['destination'],c,a),c['MergeCoins']['sources']=c['MergeCoins']['sources']['map'](e=>b(e,c,a));break;case'MakeMoveVec':c['MakeMoveVec']['elements']=c['MakeMoveVec']['elements']['map'](e=>b(e,c,a));break;case'Upgrade':c['Upgrade']['ticket']=b(c['Upgrade']['ticket'],c,a);break;case'$Intent':const d=c['$Intent']['inputs'];c['$Intent']['inputs']={};for(const [e,f]of Object['entries'](d))c['$Intent']['inputs'][e]=Array['isArray'](f)?f['map'](g=>b(g,c,a)):b(f,c,a);break;case'Publish':break;default:throw new Error('Unexpected\x20transaction\x20kind:\x20'+c['$kind']);}}['mapArguments'](a){for(const b of this['commands']['keys']())this['mapCommandArguments'](b,a);}['replaceCommand'](a,b,c=a){if(!Array['isArray'](b)){this['commands'][a]=b;return;}const d=b['length']-0x1;this['commands']['splice'](a,0x1,...structuredClone(b)),this['mapArguments']((e,f,g)=>{if(g<a+b['length'])return e;if(typeof c!=='number'){if(e['$kind']==='Result'&&e['Result']===a||e['$kind']==='NestedResult'&&e['NestedResult'][0x0]===a){if(!('NestedResult'in e)||e['NestedResult'][0x1]===0x0)return parse(ArgumentSchema,structuredClone(c));else throw new Error('Cannot\x20replace\x20command\x20'+a+'\x20with\x20a\x20specific\x20result\x20type:\x20NestedResult['+a+',\x20'+e['NestedResult'][0x1]+']\x20references\x20a\x20nested\x20element\x20that\x20cannot\x20be\x20mapped\x20to\x20the\x20replacement\x20result');}}switch(e['$kind']){case'Result':if(e['Result']===a&&typeof c==='number')e['Result']=c;if(e['Result']>a)e['Result']+=d;break;case'NestedResult':if(e['NestedResult'][0x0]===a&&typeof c==='number')return{'$kind':'NestedResult','NestedResult':[c,e['NestedResult'][0x1]]};if(e['NestedResult'][0x0]>a)e['NestedResult'][0x0]+=d;break;}return e;});}['replaceCommandWithTransaction'](a,b,c){if(c['$kind']!=='Result'&&c['$kind']!=='NestedResult')throw new Error('Result\x20must\x20be\x20of\x20kind\x20Result\x20or\x20NestedResult');this['insertTransaction'](a,b),this['replaceCommand'](a+b['commands']['length'],[],'Result'in c?{'NestedResult':[c['Result']+a,0x0]}:{'NestedResult':[c['NestedResult'][0x0]+a,c['NestedResult'][0x1]]});}['insertTransaction'](a,b){const c=new Map(),d=new Map();for(let g=0x0;g<b['inputs']['length'];g++){const h=b['inputs'][g],j=getIdFromCallArg(h);let k=-0x1;if(j!==void 0x0){k=this['inputs']['findIndex'](l=>getIdFromCallArg(l)===j);if(k!==-0x1&&this['inputs'][k]['Object']?.['SharedObject']&&h['Object']?.['SharedObject'])this['inputs'][k]['Object']['SharedObject']['mutable']=this['inputs'][k]['Object']['SharedObject']['mutable']||h['Object']['SharedObject']['mutable'];}if(k!==-0x1)c['set'](g,k);else{const l=this['inputs']['length'];this['inputs']['push'](h),c['set'](g,l);}}for(let m=0x0;m<b['commands']['length'];m++)d['set'](m,a+m);const e=[];for(let n=0x0;n<b['commands']['length'];n++){const o=structuredClone(b['commands'][n]);remapCommandArguments(o,c,d),e['push'](o);}this['commands']['splice'](a,0x0,...e);const f=e['length'];if(f>0x0)this['mapArguments']((p,q,r)=>{if(r>=a&&r<a+e['length'])return p;switch(p['$kind']){case'Result':if(p['Result']>=a)p['Result']+=f;break;case'NestedResult':if(p['NestedResult'][0x0]>=a)p['NestedResult'][0x0]+=f;break;}return p;});}['getDigest'](){const a=this['build']({'onlyTransactionKind':![]});return TransactionDataBuilder['getDigestFromBytes'](a);}['snapshot'](){return parse(TransactionDataSchema,this);}['shallowClone'](){return new TransactionDataBuilder({'version':this['version'],'sender':this['sender'],'expiration':this['expiration'],'gasData':{...this['gasData']},'inputs':[...this['inputs']],'commands':[...this['commands']]});}['applyResolvedData'](a){if(!this['sender'])this['sender']=a['sender']??null;if(!this['expiration'])this['expiration']=a['expiration']??null;if(!this['gasData']['budget'])this['gasData']['budget']=a['gasData']['budget'];if(!this['gasData']['owner'])this['gasData']['owner']=a['gasData']['owner']??null;if(!this['gasData']['payment'])this['gasData']['payment']=a['gasData']['payment'];if(!this['gasData']['price'])this['gasData']['price']=a['gasData']['price'];for(let b=0x0;b<this['inputs']['length'];b++){const c=this['inputs'][b],d=a['inputs'][b];switch(c['$kind']){case'UnresolvedPure':if(d['$kind']!=='Pure')throw new Error('Expected\x20input\x20at\x20index\x20'+b+'\x20to\x20resolve\x20to\x20a\x20Pure\x20argument,\x20but\x20got\x20'+JSON['stringify'](d));this['inputs'][b]=d;break;case'UnresolvedObject':if(d['$kind']!=='Object')throw new Error('Expected\x20input\x20at\x20index\x20'+b+'\x20to\x20resolve\x20to\x20an\x20Object\x20argument,\x20but\x20got\x20'+JSON['stringify'](d));if(d['Object']['$kind']==='ImmOrOwnedObject'||d['Object']['$kind']==='Receiving'){const e=c['UnresolvedObject'],f=d['Object']['ImmOrOwnedObject']??d['Object']['Receiving'];if(a0b(e['objectId'])!==a0b(f['objectId'])||e['version']!=null&&e['version']!==f['version']||e['digest']!=null&&e['digest']!==f['digest']||e['mutable']!=null||e['initialSharedVersion']!=null)throw new Error('Input\x20at\x20index\x20'+b+'\x20did\x20not\x20match\x20unresolved\x20object.\x20'+JSON['stringify'](e)+'\x20is\x20not\x20compatible\x20with\x20'+JSON['stringify'](f));}else{if(d['Object']['$kind']==='SharedObject'){const g=c['UnresolvedObject'],h=d['Object']['SharedObject'];if(a0b(g['objectId'])!==a0b(h['objectId'])||g['initialSharedVersion']!=null&&g['initialSharedVersion']!==h['initialSharedVersion']||g['mutable']!=null&&g['mutable']!==h['mutable']||g['version']!=null||g['digest']!=null)throw new Error('Input\x20at\x20index\x20'+b+'\x20did\x20not\x20match\x20unresolved\x20object.\x20'+JSON['stringify'](g)+'\x20is\x20not\x20compatible\x20with\x20'+JSON['stringify'](h));}else throw new Error('Input\x20at\x20index\x20'+b+'\x20resolved\x20to\x20an\x20unexpected\x20Object\x20kind:\x20'+JSON['stringify'](d['Object']));}this['inputs'][b]=d;break;}}}},WowClientError=class extends Error{},SimulationError=class extends WowClientError{constructor(a,b){super(a,{'cause':b?.['cause']}),this['executionError']=b?.['executionError'];}},ObjectError=class ObjectError extends WowClientError{constructor(a,b){super(b),this['code']=a;}static['fromResponse'](a,b){switch(a['code']){case'notExists':return new ObjectError(a['code'],'Object\x20'+a['object_id']+'\x20does\x20not\x20exist');case'dynamicFieldNotFound':return new ObjectError(a['code'],'Dynamic\x20field\x20not\x20found\x20for\x20object\x20'+a['parent_object_id']);case'deleted':return new ObjectError(a['code'],'Object\x20'+a['object_id']+'\x20has\x20been\x20deleted');case'displayError':return new ObjectError(a['code'],'Display\x20error:\x20'+a['error']);default:return new ObjectError(a['code'],'Unknown\x20error\x20while\x20loading\x20object'+(b?'\x20'+b:''));}}};const WOW_ACCUMULATOR_ROOT_OBJECT_ID=a0b('0xacc'),ACCUMULATOR_KEY_TYPE_TAG=a0g['parseFromStr']('0x2::accumulator::Key<0x2::balance::Balance<0x2::wow::WOW>>'),COIN_RESERVATION_MAGIC=new Uint8Array([0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac]);function isCoinReservationDigest(a){return fromBase58(a)['slice'](0xc,0x20)['every']((b,c)=>b===COIN_RESERVATION_MAGIC[c]);}function deriveReservationObjectId(a,b){const c=a0e['Address']['serialize'](a)['toBytes'](),d=fromHex(a0n(WOW_ACCUMULATOR_ROOT_OBJECT_ID,ACCUMULATOR_KEY_TYPE_TAG,c)['slice'](0x2)),e=fromBase58(b);if(e['length']!==0x20)throw new Error('Invalid\x20chain\x20identifier\x20length:\x20expected\x2032\x20bytes,\x20got\x20'+e['length']);const f=new Uint8Array(0x20);for(let g=0x0;g<0x20;g++)f[g]=d[g]^e[g];return'0x'+toHex(f);}function createCoinReservationRef(a,b,c,d){const e=new Uint8Array(0x20),f=new DataView(e['buffer']);f['setBigUint64'](0x0,a,!![]);const g=Number(d);if(!Number['isSafeInteger'](g)||g<0x0||g>0xffffffff)throw new Error('Epoch\x20'+d+'\x20out\x20of\x20u32\x20range\x20for\x20coin\x20reservation\x20digest');return f['setUint32'](0x8,g,!![]),e['set'](COIN_RESERVATION_MAGIC,0xc),parse(ObjectRefSchema,{'objectId':deriveReservationObjectId(b,c),'version':'0','digest':toBase58(e)});}let UpgradePolicy=function(a){return a[a['COMPATIBLE']=0x0]='COMPATIBLE',a[a['ADDITIVE']=0x80]='ADDITIVE',a[a['DEP_ONLY']=0xc0]='DEP_ONLY',a;}({});const TransactionCommands={'MoveCall'(a){const [b,c='',d='']='target'in a?a['target']['split']('::'):[a['package'],a['module'],a['function']];return{'$kind':'MoveCall','MoveCall':{'package':b,'module':c,'function':d,'typeArguments':a['typeArguments']??[],'arguments':a['arguments']??[]}};},'TransferObjects'(a,b){return{'$kind':'TransferObjects','TransferObjects':{'objects':a['map'](c=>parse(ArgumentSchema,c)),'address':parse(ArgumentSchema,b)}};},'SplitCoins'(a,b){return{'$kind':'SplitCoins','SplitCoins':{'coin':parse(ArgumentSchema,a),'amounts':b['map'](c=>parse(ArgumentSchema,c))}};},'MergeCoins'(a,b){return{'$kind':'MergeCoins','MergeCoins':{'destination':parse(ArgumentSchema,a),'sources':b['map'](c=>parse(ArgumentSchema,c))}};},'Publish'({modules:a,dependencies:b}){return{'$kind':'Publish','Publish':{'modules':a['map'](c=>typeof c==='string'?c:toBase64(new Uint8Array(c))),'dependencies':b['map'](c=>a0d(c))}};},'Upgrade'({modules:a,dependencies:b,package:c,ticket:d}){return{'$kind':'Upgrade','Upgrade':{'modules':a['map'](e=>typeof e==='string'?e:toBase64(new Uint8Array(e))),'dependencies':b['map'](e=>a0d(e)),'package':c,'ticket':parse(ArgumentSchema,d)}};},'MakeMoveVec'({type:a,elements:b}){return{'$kind':'MakeMoveVec','MakeMoveVec':{'type':a??null,'elements':b['map'](c=>parse(ArgumentSchema,c))}};},'Intent'({name:a,inputs:inputs={},data:data={}}){return{'$kind':'$Intent','$Intent':{'name':a,'inputs':Object['fromEntries'](Object['entries'](inputs)['map'](([b,c])=>[b,Array['isArray'](c)?c['map'](d=>parse(ArgumentSchema,d)):parse(ArgumentSchema,c)])),'data':data}};}};function enumUnion(a){return union(Object['entries'](a)['map'](([b,c])=>object({[b]:c})));}const Argument=enumUnion({'GasCoin':literal(!![]),'Input':pipe(number(),integer()),'Result':pipe(number(),integer()),'NestedResult':tuple([pipe(number(),integer()),pipe(number(),integer())])}),GasData=object({'budget':nullable(JsonU64),'price':nullable(JsonU64),'owner':nullable(WowAddress),'payment':nullable(array(ObjectRefSchema))}),ProgrammableMoveCall=object({'package':ObjectID,'module':string(),'function':string(),'typeArguments':array(string()),'arguments':array(Argument)}),$Intent=object({'name':string(),'inputs':record(string(),union([Argument,array(Argument)])),'data':record(string(),unknown())}),Command=enumUnion({'MoveCall':ProgrammableMoveCall,'TransferObjects':object({'objects':array(Argument),'address':Argument}),'SplitCoins':object({'coin':Argument,'amounts':array(Argument)}),'MergeCoins':object({'destination':Argument,'sources':array(Argument)}),'Publish':object({'modules':array(BCSBytes),'dependencies':array(ObjectID)}),'MakeMoveVec':object({'type':nullable(string()),'elements':array(Argument)}),'Upgrade':object({'modules':array(BCSBytes),'dependencies':array(ObjectID),'package':ObjectID,'ticket':Argument}),'$Intent':$Intent}),CallArg=enumUnion({'Object':enumUnion({'ImmOrOwnedObject':ObjectRefSchema,'SharedObject':object({'objectId':ObjectID,'initialSharedVersion':JsonU64,'mutable':boolean()}),'Receiving':ObjectRefSchema}),'Pure':object({'bytes':BCSBytes}),'UnresolvedPure':object({'value':unknown()}),'UnresolvedObject':object({'objectId':ObjectID,'version':optional(nullable(JsonU64)),'digest':optional(nullable(string())),'initialSharedVersion':optional(nullable(JsonU64)),'mutable':optional(nullable(boolean()))}),'FundsWithdrawal':FundsWithdrawalArgSchema}),TransactionExpiration=enumUnion({'None':literal(!![]),'Epoch':JsonU64,'ValidDuring':ValidDuringSchema}),SerializedTransactionDataV2Schema=object({'version':literal(0x2),'sender':nullish(WowAddress),'expiration':nullish(TransactionExpiration),'gasData':GasData,'inputs':array(CallArg),'commands':array(Command),'digest':optional(nullable(string()))});function Pure(a){return{'$kind':'Pure','Pure':{'bytes':a instanceof Uint8Array?toBase64(a):a['toBase64']()}};}const Inputs={'Pure':Pure,'ObjectRef'({objectId:a,digest:b,version:c}){return{'$kind':'Object','Object':{'$kind':'ImmOrOwnedObject','ImmOrOwnedObject':{'digest':b,'version':c,'objectId':a0b(a)}}};},'SharedObjectRef'({objectId:a,mutable:b,initialSharedVersion:c}){return{'$kind':'Object','Object':{'$kind':'SharedObject','SharedObject':{'mutable':b,'initialSharedVersion':c,'objectId':a0b(a)}}};},'ReceivingRef'({objectId:a,digest:b,version:c}){return{'$kind':'Object','Object':{'$kind':'Receiving','Receiving':{'digest':b,'version':c,'objectId':a0b(a)}}};},'FundsWithdrawal'({reservation:a,typeArg:b,withdrawFrom:c}){return{'$kind':'FundsWithdrawal','FundsWithdrawal':{'reservation':a,'typeArg':b,'withdrawFrom':c}};}};function parseTypeName(a){const b=a['split']('::');if(b['length']!==0x3)throw new Error('Invalid\x20type\x20name\x20format:\x20'+a);return{'package':b[0x0],'module':b[0x1],'name':b[0x2]};}function isTxContext(a){if(a['body']['$kind']!=='datatype')return![];const {package:b,module:c,name:d}=parseTypeName(a['body']['datatype']['typeName']);return a0b(b)==='0x0000000000000000000000000000000000000000000000000000000000000002'&&c==='tx_context'&&d==='TxContext';}function getPureBcsSchema(a){switch(a['$kind']){case'address':return a0e['Address'];case'bool':return a0e['Bool'];case'u8':return a0e['U8'];case'u16':return a0e['U16'];case'u32':return a0e['U32'];case'u64':return a0e['U64'];case'u128':return a0e['U128'];case'u256':return a0e['U256'];case'vector':{if(a['vector']['$kind']==='u8')return a0e['byteVector']()['transform']({'input':c=>typeof c==='string'?new TextEncoder()['encode'](c):c,'output':c=>c});const b=getPureBcsSchema(a['vector']);return b?a0e['vector'](b):null;}case'datatype':{const {package:c,module:d,name:e}=parseTypeName(a['datatype']['typeName']),f=a0b(c);if(f==='0x0000000000000000000000000000000000000000000000000000000000000001'){if(d==='ascii'&&e==='String')return a0e['String'];if(d==='string'&&e==='String')return a0e['String'];if(d==='option'&&e==='Option'){const g=getPureBcsSchema(a['datatype']['typeParameters'][0x0]);return g?a0e['vector'](g):null;}}if(f==='0x0000000000000000000000000000000000000000000000000000000000000002'){if(d==='object'&&e==='ID')return a0e['Address'];}return null;}case'typeParameter':case'unknown':return null;}}function normalizedTypeToMoveTypeSignature(a){if(typeof a==='object'&&'Reference'in a)return{'reference':'immutable','body':normalizedTypeToMoveTypeSignatureBody(a['Reference'])};if(typeof a==='object'&&'MutableReference'in a)return{'reference':'mutable','body':normalizedTypeToMoveTypeSignatureBody(a['MutableReference'])};return{'reference':null,'body':normalizedTypeToMoveTypeSignatureBody(a)};}function normalizedTypeToMoveTypeSignatureBody(a){if(typeof a==='string')switch(a){case'Address':return{'$kind':'address'};case'Bool':return{'$kind':'bool'};case'U8':return{'$kind':'u8'};case'U16':return{'$kind':'u16'};case'U32':return{'$kind':'u32'};case'U64':return{'$kind':'u64'};case'U128':return{'$kind':'u128'};case'U256':return{'$kind':'u256'};default:throw new Error('Unexpected\x20type\x20'+a);}if('Vector'in a)return{'$kind':'vector','vector':normalizedTypeToMoveTypeSignatureBody(a['Vector'])};if('Struct'in a)return{'$kind':'datatype','datatype':{'typeName':a['Struct']['address']+'::'+a['Struct']['module']+'::'+a['Struct']['name'],'typeParameters':a['Struct']['typeArguments']['map'](normalizedTypeToMoveTypeSignatureBody)}};if('TypeParameter'in a)return{'$kind':'typeParameter','index':a['TypeParameter']};throw new Error('Unexpected\x20type\x20'+JSON['stringify'](a));}const MAX_OBJECTS_PER_FETCH=0x32,GAS_SAFE_OVERHEAD=0x3e8n,MAX_GAS=0xba43b7400;function computeGasBudget(a,b=0x1n){const c=GAS_SAFE_OVERHEAD*BigInt(b),d=BigInt(a['computationCost'])+c,e=d+BigInt(a['storageCost'])-BigInt(a['storageRebate']);return String(e>d?e:d);}function getClient$1(a){if(!a['client'])throw new Error('No\x20wow\x20client\x20passed\x20to\x20Transaction#build,\x20but\x20transaction\x20data\x20was\x20not\x20sufficient\x20to\x20build\x20offline.');return a['client'];}async function coreClientResolveTransactionPlugin(a,b,c){const d=getClient$1(b),e=!b['onlyTransactionKind']&&!a['gasData']['price'],f=!b['onlyTransactionKind']&&!a['gasData']['payment'],g=a['gasData']['owner']??a['sender'];let h=![],i=0x0n;a['mapArguments'](r=>{if(r['$kind']==='GasCoin')h=!![];return r;});const j=g?a0b(g):null;for(const r of a['inputs']){if(r['$kind']!=='FundsWithdrawal'||!j)continue;if(a0a(r['FundsWithdrawal']['typeArg']['Balance'])!==a0l)continue;const s=r['FundsWithdrawal']['withdrawFrom']['Sender']?a['sender']:g;if(s&&a0b(s)===j&&r['FundsWithdrawal']['reservation']['$kind']==='MaxAmountU64')i+=BigInt(r['FundsWithdrawal']['reservation']['MaxAmountU64']);}const k=!b['onlyTransactionKind']&&!a['expiration']&&!a['gasData']['budget'],l=e||f&&h||k,m=f&&h||k,[,n,o,p,q]=await Promise['all']([normalizeInputs(a,d),l?d['core']['getCurrentSystemState']():null,f&&g?d['core']['getBalance']({'owner':g}):null,f&&g?d['core']['listCoins']({'owner':g,'coinType':a0l}):null,m?d['core']['getChainIdentifier']():null]);await resolveObjectReferences(a,d);if(!b['onlyTransactionKind']){const t=n?.['systemState']??null,u=q?.['chainIdentifier']??null;if(t&&!a['gasData']['price'])a['gasData']['price']=t['referenceGasPrice'];await setGasBudget(a,d,k&&t&&u?buildValidDuringExpiration(t,u):void 0x0);if(f){if(!o||!p)throw new Error('Could\x20not\x20resolve\x20gas\x20payment:\x20a\x20gas\x20owner\x20or\x20sender\x20must\x20be\x20set\x20to\x20fetch\x20balance\x20and\x20coins.');setGasPayment({'transactionData':a,'balance':o,'coins':p,'usesGasCoin':h,'withdrawals':i,'gasPayer':g,'chainIdentifier':u,'epoch':t?.['epoch']??null});}if(!a['expiration']&&a['gasData']['payment']?.['length']===0x0)await setExpiration(a,d,t,u);}return await c();}async function setGasBudget(a,b,c){if(a['gasData']['budget'])return;const d=await b['core']['simulateTransaction']({'transaction':a['build']({'overrides':{'gasData':{'budget':String(MAX_GAS),'payment':[]},...c&&{'expiration':c}}}),'include':{'effects':!![]}});if(d['$kind']==='FailedTransaction'){const e=d['FailedTransaction']['status']['error']??void 0x0;throw new SimulationError('Transaction\x20resolution\x20failed:\x20'+(e?.['message']??'Unknown\x20error'),{'cause':d,'executionError':e});}a['gasData']['budget']=computeGasBudget(d['Transaction']['effects']['gasUsed'],a['gasData']['price']?String(a['gasData']['price']):void 0x0);}function setGasPayment({transactionData:a,balance:b,coins:c,usesGasCoin:d,withdrawals:e,gasPayer:f,chainIdentifier:g,epoch:h}){const i=BigInt(a['gasData']['budget']),j=BigInt(b['balance']['addressBalance']);if(i===0x0n||!d&&j>=i+e){a['gasData']['payment']=[];return;}const k=c['objects']['filter'](n=>{return!a['inputs']['find'](o=>{if(o['Object']?.['ImmOrOwnedObject'])return n['objectId']===o['Object']['ImmOrOwnedObject']['objectId'];return![];});}),l=k['map'](n=>({'objectId':n['objectId'],'digest':n['digest'],'version':n['version']})),m=j-e;if(d&&m>0x0n&&g&&h)a['gasData']['payment']=[createCoinReservationRef(m,f,g,h),...l];else{if(!k['length'])throw new Error('No\x20valid\x20gas\x20coins\x20found\x20for\x20the\x20transaction.');else a['gasData']['payment']=l;}}async function setExpiration(a,b,c,d=null){const [e,f]=await Promise['all']([d??b['core']['getChainIdentifier']()['then'](g=>g['chainIdentifier']),c??b['core']['getCurrentSystemState']()['then'](g=>g['systemState'])]);a['expiration']=buildValidDuringExpiration(f,e);}function buildValidDuringExpiration(a,b){const c=BigInt(a['epoch']);return{'$kind':'ValidDuring','ValidDuring':{'minEpoch':String(c),'maxEpoch':String(c+0x1n),'minTimestamp':null,'maxTimestamp':null,'chain':b,'nonce':Math['random']()*0x100000000>>>0x0}};}async function resolveObjectReferences(a,b){const c=a['inputs']['filter'](k=>{return k['UnresolvedObject']&&!(k['UnresolvedObject']['version']||k['UnresolvedObject']?.['initialSharedVersion']);}),d=[...new Set(c['map'](k=>a0d(k['UnresolvedObject']['objectId'])))],e=d['length']?chunk(d,MAX_OBJECTS_PER_FETCH):[],f=(await Promise['all'](e['map'](k=>b['core']['getObjects']({'objectIds':k}))))['flatMap'](k=>k['objects']),g=new Map(d['map']((k,l)=>{return[k,f[l]];})),h=Array['from'](g)['filter'](([k,l])=>l instanceof Error)['map'](([k,l])=>l['message']);if(h['length'])throw new Error('The\x20following\x20input\x20objects\x20are\x20invalid:\x20'+h['join'](',\x20'));const i=f['map'](k=>{if(k instanceof Error)throw new Error('Failed\x20to\x20fetch\x20object:\x20'+k['message']);const l=k['owner'],m=l&&typeof l==='object'?l['$kind']==='Shared'?l['Shared']['initialSharedVersion']:l['$kind']==='ConsensusAddressOwner'?l['ConsensusAddressOwner']['startVersion']:null:null;return{'objectId':k['objectId'],'digest':k['digest'],'version':k['version'],'initialSharedVersion':m};}),j=new Map(d['map']((k,l)=>{return[k,i[l]];}));for(const [k,l]of a['inputs']['entries']()){if(!l['UnresolvedObject'])continue;let m;const n=a0b(l['UnresolvedObject']['objectId']),o=j['get'](n);if(l['UnresolvedObject']['initialSharedVersion']??o?.['initialSharedVersion'])m=Inputs['SharedObjectRef']({'objectId':n,'initialSharedVersion':l['UnresolvedObject']['initialSharedVersion']||o?.['initialSharedVersion'],'mutable':l['UnresolvedObject']['mutable']||isUsedAsMutable(a,k)});else{if(isUsedAsReceiving(a,k))m=Inputs['ReceivingRef']({'objectId':n,'digest':l['UnresolvedObject']['digest']??o?.['digest'],'version':l['UnresolvedObject']['version']??o?.['version']});}a['inputs'][a['inputs']['indexOf'](l)]=m??Inputs['ObjectRef']({'objectId':n,'digest':l['UnresolvedObject']['digest']??o?.['digest'],'version':l['UnresolvedObject']['version']??o?.['version']});}}async function normalizeInputs(a,b){const {inputs:c,commands:d}=a,e=[],f=new Set();d['forEach'](h=>{if(h['MoveCall']){if(h['MoveCall']['_argumentTypes'])return;if(h['MoveCall']['arguments']['map'](i=>{if(i['$kind']==='Input')return a['inputs'][i['Input']];return null;})['some'](i=>i?.['UnresolvedPure']||i?.['UnresolvedObject']&&typeof i?.['UnresolvedObject']['mutable']!=='boolean')){const i=h['MoveCall']['package']+'::'+h['MoveCall']['module']+'::'+h['MoveCall']['function'];f['add'](i),e['push'](h['MoveCall']);}}});const g=new Map();if(f['size']>0x0)await Promise['all']([...f]['map'](async h=>{const [i,j,k]=h['split']('::'),{function:l}=await b['core']['getMoveFunction']({'packageId':i,'moduleName':j,'name':k});g['set'](h,l['parameters']);}));if(e['length'])await Promise['all'](e['map'](async h=>{const i=g['get'](h['package']+'::'+h['module']+'::'+h['function']);if(!i)return;h['_argumentTypes']=i['length']>0x0&&isTxContext(i['at'](-0x1))?i['slice'](0x0,i['length']-0x1):i;}));d['forEach'](h=>{if(!h['MoveCall'])return;const i=h['MoveCall'],j=i['package']+'::'+i['module']+'::'+i['function'],k=i['_argumentTypes'];if(!k)return;if(k['length']!==h['MoveCall']['arguments']['length'])throw new Error('Incorrect\x20number\x20of\x20arguments\x20for\x20'+j);k['forEach']((l,m)=>{const n=i['arguments'][m];if(n['$kind']!=='Input')return;const o=c[n['Input']];if(!o['UnresolvedPure']&&!o['UnresolvedObject'])return;const p=o['UnresolvedPure']?.['value']??o['UnresolvedObject']?.['objectId'],q=getPureBcsSchema(l['body']);if(q){n['type']='pure',c[c['indexOf'](o)]=Inputs['Pure'](q['serialize'](p));return;}if(typeof p!=='string')throw new Error('Expect\x20the\x20argument\x20to\x20be\x20an\x20object\x20id\x20string,\x20got\x20'+JSON['stringify'](p,null,0x2));n['type']='object';const r=o['UnresolvedPure']?{'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':p}}:o;c[n['Input']]=r;});});}function isUsedAsMutable(a,b){let c=![];return a['getInputUses'](b,(d,e)=>{if(e['MoveCall']&&e['MoveCall']['_argumentTypes']){const f=e['MoveCall']['arguments']['indexOf'](d);c=e['MoveCall']['_argumentTypes'][f]['reference']!=='immutable'||c;}if(e['$kind']==='MakeMoveVec'||e['$kind']==='MergeCoins'||e['$kind']==='SplitCoins'||e['$kind']==='TransferObjects')c=!![];}),c;}function isUsedAsReceiving(a,b){let c=![];return a['getInputUses'](b,(d,e)=>{if(e['MoveCall']&&e['MoveCall']['_argumentTypes']){const f=e['MoveCall']['arguments']['indexOf'](d);c=isReceivingType(e['MoveCall']['_argumentTypes'][f])||c;}}),c;}const RECEIVING_TYPE='0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';function isReceivingType(a){if(a['body']['$kind']!=='datatype')return![];return a['body']['datatype']['typeName']===RECEIVING_TYPE;}function needsTransactionResolution(a,b){if(a['inputs']['some'](c=>{return c['UnresolvedObject']||c['UnresolvedPure'];}))return!![];if(!b['onlyTransactionKind']){if(!a['gasData']['price']||!a['gasData']['budget']||!a['gasData']['payment'])return!![];if(a['gasData']['payment']['length']===0x0&&!a['expiration'])return!![];}return![];}async function resolveTransactionPlugin(a,b,c){normalizeRawArguments(a);if(!needsTransactionResolution(a,b))return await validate(a),c();return(getClient(b)['core']?.['resolveTransactionPlugin']()??coreClientResolveTransactionPlugin)(a,b,async()=>{await validate(a),await c();});}function validate(a){a['inputs']['forEach']((b,c)=>{if(b['$kind']!=='Object'&&b['$kind']!=='Pure'&&b['$kind']!=='FundsWithdrawal')throw new Error('Input\x20at\x20index\x20'+c+'\x20has\x20not\x20been\x20resolved.\x20\x20Expected\x20a\x20Pure,\x20Object,\x20or\x20FundsWithdrawal\x20input,\x20but\x20found\x20'+JSON['stringify'](b));});}function getClient(a){if(!a['client'])throw new Error('No\x20wow\x20client\x20passed\x20to\x20Transaction#build,\x20but\x20transaction\x20data\x20was\x20not\x20sufficient\x20to\x20build\x20offline.');return a['client'];}function normalizeRawArguments(a){for(const b of a['commands'])switch(b['$kind']){case'SplitCoins':b['SplitCoins']['amounts']['forEach'](c=>{normalizeRawArgument(c,a0e['U64'],a);});break;case'TransferObjects':normalizeRawArgument(b['TransferObjects']['address'],a0e['Address'],a);break;}}function normalizeRawArgument(a,b,c){if(a['$kind']!=='Input')return;const d=c['inputs'][a['Input']];if(d['$kind']!=='UnresolvedPure')return;c['inputs'][a['Input']]=Inputs['Pure'](b['serialize'](d['UnresolvedPure']['value']));}function createObjectMethods(a){function b(c){return a(c);}return b['system']=c=>{const d=c?.['mutable'];if(d!==void 0x0)return b(Inputs['SharedObjectRef']({'objectId':a0k,'initialSharedVersion':0x1,'mutable':d}));return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0k,'initialSharedVersion':0x1}});},b['clock']=()=>b(Inputs['SharedObjectRef']({'objectId':a0q,'initialSharedVersion':0x1,'mutable':![]})),b['random']=()=>b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0m,'mutable':![]}}),b['denyList']=c=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0u,'mutable':c?.['mutable']}});},b['registrar']=c=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0s,'mutable':c?.['mutable']}});},b['mutRegistrar']=()=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0s,'mutable':!![]}});},b['mutObjectLinkerCore']=()=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0j,'mutable':!![]}});},b['mutObjectLinkerTx']=()=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0i,'mutable':!![]}});},b['mutEntityContact']=()=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0p,'mutable':!![]}});},b['entity']=c=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0t,'mutable':c?.['mutable']}});},b['mutEntity']=()=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0t,'mutable':!![]}});},b['entityPermission']=c=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0h,'mutable':c?.['mutable']}});},b['mutEntityPermission']=()=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0h,'mutable':!![]}});},b['mutEntityOrder']=()=>{return b({'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0o,'mutable':!![]}});},b['option']=({type:c,value:d})=>e=>e['moveCall']({'typeArguments':[c],'target':a0r+'::option::'+(d===null?'none':'some'),'arguments':d===null?[]:[e['object'](d)]}),b;}function createPure(a){function b(c,d){if(typeof c==='string')return a(a0f(c)['serialize'](d));if(c instanceof Uint8Array||isSerializedBcs(c))return a(c);throw new Error('tx.pure\x20must\x20be\x20called\x20either\x20a\x20bcs\x20type\x20name,\x20or\x20a\x20serialized\x20bcs\x20value');}return b['u8']=c=>a(a0e['U8']['serialize'](c)),b['u16']=c=>a(a0e['U16']['serialize'](c)),b['u32']=c=>a(a0e['U32']['serialize'](c)),b['u64']=c=>a(a0e['U64']['serialize'](c)),b['u128']=c=>a(a0e['U128']['serialize'](c)),b['u256']=c=>a(a0e['U256']['serialize'](c)),b['bool']=c=>a(a0e['Bool']['serialize'](c)),b['string']=c=>a(a0e['String']['serialize'](c)),b['address']=c=>a(a0e['Address']['serialize'](c)),b['id']=b['address'],b['vector']=(c,d)=>{return a(a0e['vector'](a0f(c))['serialize'](d));},b['option']=(c,d)=>{return a(a0e['option'](a0f(c))['serialize'](d));},b;}function namedPackagesPlugin(){return async(a,b,c)=>{await c();};}const COIN_WITH_BALANCE='CoinWithBalance',WOW_TYPE=a0a('0x2::wow::WOW');function coinWithBalance({type:type=WOW_TYPE,balance:a,useGasCoin:useGasCoin=!![]}){let b=null;return c=>{if(b)return b;c['addIntentResolver'](COIN_WITH_BALANCE,resolveCoinBalance);const d=type==='gas'?type:a0a(type);return b=c['add'](TransactionCommands['Intent']({'name':COIN_WITH_BALANCE,'inputs':{},'data':{'type':d===WOW_TYPE&&useGasCoin?'gas':d,'balance':BigInt(a),'outputKind':'coin'}})),b;};}function createBalance({type:type=WOW_TYPE,balance:a,useGasCoin:useGasCoin=!![]}){let b=null;return c=>{if(b)return b;c['addIntentResolver'](COIN_WITH_BALANCE,resolveCoinBalance);const d=type==='gas'?type:a0a(type);return b=c['add'](TransactionCommands['Intent']({'name':COIN_WITH_BALANCE,'inputs':{},'data':{'type':d===WOW_TYPE&&useGasCoin?'gas':d,'balance':BigInt(a),'outputKind':'balance'}})),b;};}const CoinWithBalanceData=object({'type':string(),'balance':bigint(),'outputKind':optional(picklist(['coin','balance']))});async function resolveCoinBalance(a,b,c){const d=new Set(),e=new Map(),f=new Map();if(!a['sender'])throw new Error('Sender\x20must\x20be\x20set\x20to\x20resolve\x20CoinWithBalance');for(const [q,r]of a['commands']['entries']()){if(r['$kind']!=='$Intent'||r['$Intent']['name']!=='CoinWithBalance')continue;const {type:s,balance:t,outputKind:u}=parse(CoinWithBalanceData,r['$Intent']['data']);if(t===0x0n){const v=s==='gas'?WOW_TYPE:s;a['replaceCommand'](q,TransactionCommands['MoveCall']({'target':(u??'coin')==='balance'?'0x2::balance::zero':'0x2::coin::zero','typeArguments':[v]}));continue;}if(s!=='gas')d['add'](s);e['set'](s,(e['get'](s)??0x0n)+t);if(!f['has'](s))f['set'](s,[]);f['get'](s)['push']({'balance':t,'outputKind':u??'coin'});}if(e['has']('gas')&&e['has'](WOW_TYPE))throw new Error('Cannot\x20mix\x20WOW\x20CoinWithBalance\x20intents\x20that\x20use\x20the\x20gas\x20coin\x20with\x20ones\x20that\x20do\x20not\x20(useGasCoin:\x20false).\x20Use\x20one\x20or\x20the\x20other.');const g=new Set();for(const w of a['inputs']){if(w['Object']?.['ImmOrOwnedObject'])g['add'](w['Object']['ImmOrOwnedObject']['objectId']);if(w['UnresolvedObject']?.['objectId'])g['add'](w['UnresolvedObject']['objectId']);}const h=new Map(),j=new Map(),k=b['client'];if(!k)throw new Error('Client\x20must\x20be\x20provided\x20to\x20build\x20or\x20serialize\x20transactions\x20with\x20CoinWithBalance\x20intents');await Promise['all']([...[...d]['map'](async x=>{const {coins:y,addressBalance:z}=await getCoinsAndBalanceOfType({'coinType':x,'balance':e['get'](x),'client':k,'owner':a['sender'],'usedIds':g});h['set'](x,y),j['set'](x,z);}),e['has']('gas')?await k['core']['getBalance']({'owner':a['sender'],'coinType':WOW_TYPE})['then'](({balance:x})=>{j['set']('gas',BigInt(x['addressBalance']));}):null]);const l=new Map(),m=new Map(),n=new Set(),o=new Map();let p=0x0;while(p<a['commands']['length']){const x=a['commands'][p];if(x['$kind']!=='$Intent'||x['$Intent']['name']!=='CoinWithBalance'){p++;continue;}const {type:y,balance:z}=x['$Intent']['data'],A=y==='gas'?WOW_TYPE:y,B=e['get'](y),C=j['get'](y)??0x0n,D=[];let E;const F=f['get'](y)??[];if(F['every'](G=>G['outputKind']==='balance')&&C>=B)D['push'](TransactionCommands['MoveCall']({'target':'0x2::balance::redeem_funds','typeArguments':[A],'arguments':[a['addInput']('withdrawal',Inputs['FundsWithdrawal']({'reservation':{'$kind':'MaxAmountU64','MaxAmountU64':String(z)},'typeArg':{'$kind':'Balance','Balance':A},'withdrawFrom':{'$kind':'Sender','Sender':!![]}}))]})),E={'$kind':'NestedResult','NestedResult':[p+D['length']-0x1,0x0]};else{if(!o['has'](y)){const H=F,I=[];if(C>=B)n['add'](y),D['push'](TransactionCommands['MoveCall']({'target':'0x2::coin::redeem_funds','typeArguments':[A],'arguments':[a['addInput']('withdrawal',Inputs['FundsWithdrawal']({'reservation':{'$kind':'MaxAmountU64','MaxAmountU64':String(B)},'typeArg':{'$kind':'Balance','Balance':A},'withdrawFrom':{'$kind':'Sender','Sender':!![]}}))]})),I['push']({'$kind':'Result','Result':p+D['length']-0x1});else{if(y==='gas')I['push']({'$kind':'GasCoin','GasCoin':!![]});else{const N=h['get'](y),O=N['reduce']((Q,R)=>Q+BigInt(R['balance']),0x0n),P=B>O?B-O:0x0n;m['set'](y,O+P===B);for(const Q of N)I['push'](a['addInput']('object',Inputs['ObjectRef']({'objectId':Q['objectId'],'digest':Q['digest'],'version':Q['version']})));P>0x0n&&(n['add'](y),D['push'](TransactionCommands['MoveCall']({'target':'0x2::coin::redeem_funds','typeArguments':[A],'arguments':[a['addInput']('withdrawal',Inputs['FundsWithdrawal']({'reservation':{'$kind':'MaxAmountU64','MaxAmountU64':String(P)},'typeArg':{'$kind':'Balance','Balance':A},'withdrawFrom':{'$kind':'Sender','Sender':!![]}}))]})),I['push']({'$kind':'Result','Result':p+D['length']-0x1}));}}const J=I[0x0],K=I['slice'](0x1);for(let R=0x0;R<K['length'];R+=0x1f4)D['push'](TransactionCommands['MergeCoins'](J,K['slice'](R,R+0x1f4)));l['set'](y,J);const L=p+D['length'];D['push'](TransactionCommands['SplitCoins'](J,H['map'](S=>a['addInput']('pure',Inputs['Pure'](a0e['u64']()['serialize'](S['balance']))))));const M=[];for(let S=0x0;S<H['length'];S++){const T={'$kind':'NestedResult','NestedResult':[L,S]};if(H[S]['outputKind']==='balance')D['push'](TransactionCommands['MoveCall']({'target':'0x2::coin::into_balance','typeArguments':[A],'arguments':[T]})),M['push']({'$kind':'NestedResult','NestedResult':[p+D['length']-0x1,0x0]});else M['push'](T);}o['set'](y,{'results':M,'nextIntent':0x0});}const G=o['get'](y);E=G['results'][G['nextIntent']++];}a['replaceCommand'](p,D,E),p+=D['length'];}for(const [U,V]of l){if(U==='gas'&&!n['has'](U))continue;const W=U==='gas'?WOW_TYPE:U,X=f['get'](U)?.['some'](Z=>Z['outputKind']==='balance'),Y=n['has'](U);if(X||Y)a['commands']['push'](TransactionCommands['MoveCall']({'target':'0x2::coin::send_funds','typeArguments':[W],'arguments':[V,a['addInput']('pure',Inputs['Pure'](a0e['Address']['serialize'](a['sender'])))]}));else{if(m['get'](U))a['commands']['push'](TransactionCommands['MoveCall']({'target':'0x2::coin::destroy_zero','typeArguments':[W],'arguments':[V]}));}}return c();}async function getCoinsAndBalanceOfType({coinType:a,balance:b,client:c,owner:d,usedIds:e}){let f=b;const g=[],h=c['core']['getBalance']({'owner':d,'coinType':a})['then'](({balance:l})=>{return f-=BigInt(l['addressBalance']),l;}),[i,j]=await Promise['all']([k(),h]);if(BigInt(j['balance'])<b)throw new Error('Insufficient\x20balance\x20of\x20'+a+'\x20for\x20owner\x20'+d+'.\x20Required:\x20'+b+',\x20Available:\x20'+(b-f));return{'coins':i,'balance':BigInt(j['coinBalance']),'addressBalance':BigInt(j['addressBalance']),'coinBalance':BigInt(j['coinBalance'])};async function k(l=null){const {objects:m,hasNextPage:n,cursor:o}=await c['core']['listCoins']({'owner':d,'coinType':a,'cursor':l});await h;for(const p of m){if(e['has'](p['objectId']))continue;g['push'](p),f-=BigInt(p['balance']);}if(f>0x0n&&n)return k(o);return g;}}function createTransactionResult(a,b=Infinity){const c={'$kind':'Result',get 'Result'(){return typeof a==='function'?a():a;}},d=[],e=f=>d[f]??={'$kind':'NestedResult',get 'NestedResult'(){return[typeof a==='function'?a():a,f];}};return new Proxy(c,{'set'(){throw new Error('The\x20transaction\x20result\x20is\x20a\x20proxy,\x20and\x20does\x20not\x20support\x20setting\x20properties\x20directly');},'get'(f,g){if(g in f)return Reflect['get'](f,g);if(g===Symbol['iterator'])return function*(){let j=0x0;while(j<b){yield e(j),j++;}};if(typeof g==='symbol')return;const h=parseInt(g,0xa);if(Number['isNaN'](h)||h<0x0)return;return e(h);}});}const TRANSACTION_BRAND=Symbol['for']('@mysten/transaction');function isTransaction(a){return!!a&&typeof a==='object'&&a[TRANSACTION_BRAND]===!![];}var Transaction=class Transaction{#serializationPlugins;#buildPlugins;#intentResolvers;#inputSection;#commandSection;#availableResults;#pendingPromises;#added;static['fromKind'](a){const b=new Transaction();return b.#data=TransactionDataBuilder['fromKindBytes'](typeof a==='string'?fromBase64(a):a),b.#inputSection=b.#data['inputs']['slice'](),b.#commandSection=b.#data['commands']['slice'](),b.#availableResults=new Set(b.#commandSection['map']((c,d)=>d)),b;}static['from'](a){const b=new Transaction();if(isTransaction(a))b.#data=TransactionDataBuilder['restore'](a['getData']());else{if(typeof a!=='string'||!a['startsWith']('{'))b.#data=TransactionDataBuilder['fromBytes'](typeof a==='string'?fromBase64(a):a);else b.#data=TransactionDataBuilder['restore'](JSON['parse'](a));}b.#inputSection=b.#data['inputs']['slice'](),b.#commandSection=b.#data['commands']['slice'](),b.#availableResults=new Set(b.#commandSection['map']((c,d)=>d));if(!b['isPreparedForSerialization']({'supportedIntents':['CoinWithBalance']}))throw new Error('Transaction\x20has\x20unresolved\x20intents\x20or\x20async\x20thunks.\x20Call\x20`prepareForSerialization`\x20before\x20copying.');if(b.#data['commands']['some'](c=>c['$Intent']?.['name']==='CoinWithBalance'))b['addIntentResolver'](COIN_WITH_BALANCE,resolveCoinBalance);return b;}['addSerializationPlugin'](a){this.#serializationPlugins['push'](a);}['addBuildPlugin'](a){this.#buildPlugins['push'](a);}['addIntentResolver'](a,b){if(this.#intentResolvers['has'](a)&&this.#intentResolvers['get'](a)!==b)throw new Error('Intent\x20resolver\x20for\x20'+a+'\x20already\x20exists');this.#intentResolvers['set'](a,b);}['setSender'](a){this.#data['sender']=a;}['setSenderIfNotSet'](a){if(!this.#data['sender'])this.#data['sender']=a;}['setExpiration'](a){this.#data['expiration']=a?parse(TransactionExpiration$2,a):null;}['setGasPrice'](a){this.#data['gasData']['price']=String(a);}['setGasBudget'](a){this.#data['gasData']['budget']=String(a);}['setGasBudgetIfNotSet'](a){if(this.#data['gasData']['budget']==null)this.#data['gasData']['budget']=String(a);}['setGasOwner'](a){this.#data['gasData']['owner']=a;}['setGasPayment'](a){this.#data['gasData']['payment']=a['map'](b=>parse(ObjectRefSchema,b));}#data;['getData'](){return this.#data['snapshot']();}get[TRANSACTION_BRAND](){return!![];}get['pure'](){return Object['defineProperty'](this,'pure',{'enumerable':![],'value':createPure(a=>{if(isSerializedBcs(a))return this.#addInput('pure',{'$kind':'Pure','Pure':{'bytes':a['toBase64']()}});return this.#addInput('pure',is(NormalizedCallArg$1,a)?parse(NormalizedCallArg$1,a):a instanceof Uint8Array?Inputs['Pure'](a):{'$kind':'UnresolvedPure','UnresolvedPure':{'value':a}});})}),this['pure'];}constructor(){this.#intentResolvers=new Map(),this.#inputSection=[],this.#commandSection=[],this.#availableResults=new Set(),this.#pendingPromises=new Set(),this.#added=new Map(),this['object']=createObjectMethods(a=>{if(typeof a==='function')return this['object'](this['add'](a));if(typeof a==='object'&&is(ArgumentSchema,a))return a;const b=getIdFromCallArg(a),c=this.#data['inputs']['find'](d=>b===getIdFromCallArg(d));if(c?.['Object']?.['SharedObject']&&typeof a==='object'&&a['Object']?.['SharedObject'])c['Object']['SharedObject']['mutable']=c['Object']['SharedObject']['mutable']||a['Object']['SharedObject']['mutable'];return c?{'$kind':'Input','Input':this.#data['inputs']['indexOf'](c),'type':'object'}:this.#addInput('object',typeof a==='string'?{'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':a0b(a)}}:a);}),this.#data=new TransactionDataBuilder(),this.#buildPlugins=[],this.#serializationPlugins=[];}get['gas'](){return{'$kind':'GasCoin','GasCoin':!![]};}['coin']({type:a,balance:b,useGasCoin:c}){return this['add'](coinWithBalance({'type':a,'balance':b,'useGasCoin':c}));}['balance']({type:a,balance:b,useGasCoin:c}){return this['add'](createBalance({'type':a,'balance':b,'useGasCoin':c}));}['objectRef'](...a){return this['object'](Inputs['ObjectRef'](...a));}['receivingRef'](...a){return this['object'](Inputs['ReceivingRef'](...a));}['sharedObjectRef'](...a){return this['object'](Inputs['SharedObjectRef'](...a));}#fork(){const a=new Transaction();return a.#data=this.#data,a.#serializationPlugins=this.#serializationPlugins,a.#buildPlugins=this.#buildPlugins,a.#intentResolvers=this.#intentResolvers,a.#pendingPromises=this.#pendingPromises,a.#availableResults=new Set(this.#availableResults),a.#added=this.#added,this.#inputSection['push'](a.#inputSection),this.#commandSection['push'](a.#commandSection),a;}['add'](a){if(typeof a==='function'){if(this.#added['has'](a))return this.#added['get'](a);const b=this.#fork(),c=a(b);if(!(c&&typeof c==='object'&&'then'in c))return this.#availableResults=b.#availableResults,this.#added['set'](a,c),c;const d=this.#addCommand({'$kind':'$Intent','$Intent':{'name':'AsyncTransactionThunk','inputs':{},'data':{'resultIndex':this.#data['commands']['length'],'result':null}}});this.#pendingPromises['add'](Promise['resolve'](c)['then'](f=>{d['$Intent']['data']['result']=f;}));const e=createTransactionResult(()=>d['$Intent']['data']['resultIndex']);return this.#added['set'](a,e),e;}else this.#addCommand(a);return createTransactionResult(this.#data['commands']['length']-0x1);}#addCommand(a){const b=this.#data['commands']['length'];return this.#commandSection['push'](a),this.#availableResults['add'](b),this.#data['commands']['push'](a),this.#data['mapCommandArguments'](b,c=>{if(c['$kind']==='Result'&&!this.#availableResults['has'](c['Result']))throw new Error('Result\x20{\x20Result:\x20'+c['Result']+'\x20}\x20is\x20not\x20available\x20to\x20use\x20in\x20the\x20current\x20transaction');if(c['$kind']==='NestedResult'&&!this.#availableResults['has'](c['NestedResult'][0x0]))throw new Error('Result\x20{\x20NestedResult:\x20['+c['NestedResult'][0x0]+',\x20'+c['NestedResult'][0x1]+']\x20}\x20is\x20not\x20available\x20to\x20use\x20in\x20the\x20current\x20transaction');if(c['$kind']==='Input'&&c['Input']>=this.#data['inputs']['length'])throw new Error('Input\x20{\x20Input:\x20'+c['Input']+'\x20}\x20references\x20an\x20input\x20that\x20does\x20not\x20exist\x20in\x20the\x20current\x20transaction');return c;}),a;}#addInput(a,b){return this.#inputSection['push'](b),this.#data['addInput'](a,b);}#normalizeTransactionArgument(a){if(isSerializedBcs(a))return this['pure'](a);return this.#resolveArgument(a);}#resolveArgument(a){if(typeof a==='function'){const b=this['add'](a);if(typeof b==='function')return this.#resolveArgument(b);return parse(ArgumentSchema,b);}return parse(ArgumentSchema,a);}['splitCoins'](a,b){const c=TransactionCommands['SplitCoins'](typeof a==='string'?this['object'](a):this.#resolveArgument(a),b['map'](d=>typeof d==='number'||typeof d==='bigint'||typeof d==='string'?this['pure']['u64'](d):this.#normalizeTransactionArgument(d)));return this.#addCommand(c),createTransactionResult(this.#data['commands']['length']-0x1,b['length']);}['mergeCoins'](a,b){return this['add'](TransactionCommands['MergeCoins'](this['object'](a),b['map'](c=>this['object'](c))));}['publish']({modules:a,dependencies:b}){return this['add'](TransactionCommands['Publish']({'modules':a,'dependencies':b}));}['upgrade']({modules:a,dependencies:b,package:c,ticket:d}){return this['add'](TransactionCommands['Upgrade']({'modules':a,'dependencies':b,'package':c,'ticket':this['object'](d)}));}['moveCall']({arguments:a,...b}){return this['add'](TransactionCommands['MoveCall']({...b,'arguments':a?.['map'](c=>this.#normalizeTransactionArgument(c))}));}['transferObjects'](a,b){return this['add'](TransactionCommands['TransferObjects'](a['map'](c=>this['object'](c)),typeof b==='string'?this['pure']['address'](b):this.#normalizeTransactionArgument(b)));}['makeMoveVec']({type:a,elements:b}){return this['add'](TransactionCommands['MakeMoveVec']({'type':a,'elements':b['map'](c=>this['object'](c))}));}['withdrawal']({amount:a,type:b}){const c={'$kind':'FundsWithdrawal','FundsWithdrawal':{'reservation':{'$kind':'MaxAmountU64','MaxAmountU64':String(a)},'typeArg':{'$kind':'Balance','Balance':b??'0x2::wow::WOW'},'withdrawFrom':{'$kind':'Sender','Sender':!![]}}};return this.#addInput('object',c);}['serialize'](){return JSON['stringify'](serializeV1TransactionData(this.#data['snapshot']()));}async['toJSON'](a={}){await this['prepareForSerialization'](a);const b=this['isFullyResolved']();return JSON['stringify'](parse(SerializedTransactionDataV2Schema,b?{...this.#data['snapshot'](),'digest':this.#data['getDigest']()}:this.#data['snapshot']()),(c,d)=>typeof d==='bigint'?d['toString']():d,0x2);}async['sign'](a){const {signer:b,...c}=a,d=await this['build'](c);return b['signTransaction'](d);}['isPreparedForSerialization'](a={}){if(this.#pendingPromises['size']>0x0)return![];if(this.#data['commands']['some'](b=>b['$Intent']&&!a['supportedIntents']?.['includes'](b['$Intent']['name'])))return![];return!![];}['isFullyResolved'](){if(!this['isPreparedForSerialization']())return![];if(!this.#data['sender'])return![];if(needsTransactionResolution(this.#data,{}))return![];return!![];}async['build'](a={}){return await this['prepareForSerialization'](a),await this.#prepareBuild(a),this.#data['build']({'onlyTransactionKind':a['onlyTransactionKind']});}async['getDigest'](a={}){return await this['prepareForSerialization'](a),await this.#prepareBuild(a),this.#data['getDigest']();}async #prepareBuild(a){if(!a['onlyTransactionKind']&&!this.#data['sender'])throw new Error('Missing\x20transaction\x20sender');await this.#runPlugins([...this.#buildPlugins,resolveTransactionPlugin],a);}async #runPlugins(a,b){try{const c=d=>{if(d>=a['length'])return()=>{};const e=a[d];return async()=>{const f=c(d+0x1);let g=![],h=![];await e(this.#data,b,async()=>{if(g)throw new Error('next()\x20was\x20call\x20multiple\x20times\x20in\x20TransactionPlugin\x20'+d);g=!![],await f(),h=!![];});if(!g)throw new Error('next()\x20was\x20not\x20called\x20in\x20TransactionPlugin\x20'+d);if(!h)throw new Error('next()\x20was\x20not\x20awaited\x20in\x20TransactionPlugin\x20'+d);};};await c(0x0)();}finally{this.#inputSection=this.#data['inputs']['slice'](),this.#commandSection=this.#data['commands']['slice'](),this.#availableResults=new Set(this.#commandSection['map']((d,e)=>e));}}async #waitForPendingTasks(){while(this.#pendingPromises['size']>0x0){const a=Promise['all'](this.#pendingPromises);this.#pendingPromises['clear'](),this.#pendingPromises['add'](a),await a,this.#pendingPromises['delete'](a);}}#sortCommandsAndInputs(){const a=this.#data['commands'],b=this.#data['inputs'],c=this.#commandSection['flat'](Infinity),d=this.#inputSection['flat'](Infinity);if(c['length']!==a['length'])throw new Error('Unexpected\x20number\x20of\x20commands\x20found\x20in\x20transaction\x20data');if(d['length']!==b['length'])throw new Error('Unexpected\x20number\x20of\x20inputs\x20found\x20in\x20transaction\x20data');const e=c['filter'](g=>g['$Intent']?.['name']!=='AsyncTransactionThunk');this.#data['commands']=e,this.#data['inputs']=d,this.#commandSection=e,this.#inputSection=d,this.#availableResults=new Set(e['map']((g,h)=>h));function f(g){const h=a[g];if(h['$Intent']?.['name']==='AsyncTransactionThunk'){const k=h['$Intent']['data']['result'];if(k==null)throw new Error('AsyncTransactionThunk\x20has\x20not\x20been\x20resolved');return f(k['Result']);}const j=e['indexOf'](h);if(j===-0x1)throw new Error('Unable\x20to\x20find\x20original\x20index\x20for\x20command');return j;}this.#data['mapArguments'](g=>{if(g['$kind']==='Input'){const h=d['indexOf'](b[g['Input']]);if(h===-0x1)throw new Error('Input\x20has\x20not\x20been\x20resolved');return{...g,'Input':h};}else{if(g['$kind']==='Result'){const j=f(g['Result']);return{...g,'Result':j};}else{if(g['$kind']==='NestedResult'){const k=f(g['NestedResult'][0x0]);return{...g,'NestedResult':[k,g['NestedResult'][0x1]]};}}}return g;});for(const [g,h]of a['entries']())if(h['$Intent']?.['name']==='AsyncTransactionThunk')try{h['$Intent']['data']['resultIndex']=f(g);}catch{}}async['prepareForSerialization'](a){await this.#waitForPendingTasks(),this.#sortCommandsAndInputs();const b=new Set();for(const d of this.#data['commands'])if(d['$Intent'])b['add'](d['$Intent']['name']);const c=[...this.#serializationPlugins];for(const e of b){if(a['supportedIntents']?.['includes'](e))continue;if(!this.#intentResolvers['has'](e))throw new Error('Missing\x20intent\x20resolver\x20for\x20'+e);c['push'](this.#intentResolvers['get'](e));}c['push'](namedPackagesPlugin()),await this.#runPlugins(c,a);}};export{isArgument as _,createObjectMethods as a,getPureBcsSchema as c,TransactionCommands as d,UpgradePolicy as f,TransactionDataBuilder as g,SimulationError as h,createPure as i,normalizedTypeToMoveTypeSignature as l,ObjectError as m,isTransaction as n,computeGasBudget as o,isCoinReservationDigest as p,coinWithBalance as r,coreClientResolveTransactionPlugin as s,Transaction as t,Inputs as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as a1a}from'./exception-Xd2RFs2i.mjs';import{G as a1b,W as a1c,gt as a1d,h as a1e,q as a1f,y as a1g}from'./common-BXJtePqk.mjs';import{Dt as a1h}from'./object-C5tKBfgP.mjs';import{tt as a1i}from'./passport-CLMoL1-c.mjs';function arbFn(a){return'0x2::arb::'+a;}function create(a,b,c){a1h([b]);if(!a1e(c))a1a('invalid\x20parameter','Arb\x20type\x20'+c+'\x20is\x20not\x20valid');return a['moveCall']({'target':arbFn('create'),'arguments':[a1d(a,b)],'typeArguments':[c]});}function proposition_change(a,b,c,d,e,f,g){a1h([b,d]);if(!a1e(c))a1a('invalid\x20parameter','Arb\x20type\x20'+c+'\x20is\x20not\x20valid');if(!a1c(e,h=>{if(!a1f(h))a1a('invalid\x20parameter','Proposition\x20name\x20'+h+'\x20exceeds\x20maximum\x20length\x20256');return!![];}))a1a('invalid\x20parameter','Proposition\x20is\x20not\x20valid');if(e['length']>a1i)a1a('invalid\x20parameter','Proposition\x20count\x20exceeds\x20maximum\x20count\x20'+a1i);if(typeof f==='string'&&!a1b(f))a1a('invalid\x20description','Description\x20exceeds\x20maximum\x20length\x20'+a1g);a['moveCall']({'target':arbFn('proposition_change'),'arguments':[a1d(a,b),a1d(a,d),a['pure']['vector']('string',e),a['pure']['option']('string',f??null),a['pure']['bool'](g)],'typeArguments':[c]});}function description_change(a,b,c,d,e,f){a1h([b,d]);if(!a1e(c))a1a('invalid\x20parameter','Arb\x20type\x20'+c+'\x20is\x20not\x20valid');if(typeof e==='string'&&!a1b(e))a1a('invalid\x20description','Description\x20exceeds\x20maximum\x20length\x20'+a1g);a['moveCall']({'target':arbFn('description_change'),'arguments':[a1d(a,b),a1d(a,d),a['pure']['string'](e),a['pure']['bool'](f)],'typeArguments':[c]});}function principal_confirm(a,b,c,d,e){a1h([b,d]);if(!a1e(c))a1a('invalid\x20parameter','Arb\x20type\x20'+c+'\x20is\x20not\x20valid');a['moveCall']({'target':arbFn('principal_confirm'),'arguments':[a1d(a,b),a1d(a,d),a['pure']['bool'](e)],'typeArguments':[c]});}function objection(a,b,c,d,e){a1h([b,d]);if(!a1e(c))a1a('invalid\x20parameter','Arb\x20type\x20'+c+'\x20is\x20not\x20valid');if(typeof e==='string'&&!a1b(e))a1a('invalid\x20description','Objection\x20exceeds\x20maximum\x20length\x20'+a1g);a['moveCall']({'target':arbFn('objection'),'arguments':[a1d(a,b),a1d(a,d),a['pure']['string'](e)],'typeArguments':[c]});}export{proposition_change as a,principal_confirm as i,description_change as n,objection as r,create as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as a2a}from'./wow-types-DctQuD2J.mjs';import{a as a2b,t as a2c}from'./client-CYziyi68.mjs';import{t as a2d}from'./Transaction-D1AlW3t_.mjs';import{o as a2e}from'./exception-Xd2RFs2i.mjs';import{n as a2f}from'./network-y8yMus5q.mjs';import{$ as a2g,G as a2h,J as a2i,gt as a2j,lt as a2k,mt as a2l,vt as a2m,y as a2n}from'./common-BXJtePqk.mjs';import{Cache}from'./w/local/cache.mjs';import{Config}from'./w/local/config.mjs';import{LocalMark}from'./w/local/local.mjs';import{Account}from'./w/local/account.mjs';import{Dt as a2o,L as a2p,Ot as a2q,Q as a2r,V as a2s,lt as a2t,st as a2u,ut as a2v}from'./object-C5tKBfgP.mjs';import{at as a2w,c as a2x,i as a2y,l as a2z,mt as a2A,n as a2B,o as a2C,r as a2D,rt as a2E,t as a2F}from'./passport-CLMoL1-c.mjs';import a2G from'lodash';function resourceFn(a){return'0x2::resource::'+a;}function addObjectTags(a,b,c){if(c['tags']['length']>a2A)a2e('resource\x20tag\x20count\x20exceeded','Tags\x20count\x20exceeds\x20maximum\x20limit\x20'+a2A);c['tags']['forEach'](f=>{if(!a2i(f))a2e('invalid\x20name','Tag\x20name\x20exceeds\x20maximum\x20length\x2064');});if(c['nick']!=null&&typeof c['nick']==='string'){if(!a2i(c['nick']))a2e('invalid\x20name','Nick\x20name\x20exceeds\x20maximum\x20length\x2064');}const d=a['pure']['option']('string',c['nick']??null),e=a['pure']['vector']('string',c['tags']);a['moveCall']({'target':resourceFn('add_object_tags'),'arguments':[a2j(a,b),a2l(a,c['address']),d,e]});}function removeObjectTags(a,b,c){if(typeof c['nick']==='string'&&!a2i(c['nick']))a2e('invalid\x20name','Nick\x20name\x20exceeds\x20maximum\x20length\x2064');const d=a['pure']['option']('string',c['nick']??null),e=a['pure']['vector']('string',c['tags']);a['moveCall']({'target':resourceFn('remove_object_tags'),'arguments':[a2j(a,b),a2l(a,c['address']),d,e]});}function removeObject(a,b,c){a['moveCall']({'target':resourceFn('remove_object'),'arguments':[a2j(a,b),a2l(a,c)]});}function create(a,b){a['moveCall']({'target':resourceFn('create'),'arguments':[a2j(a,b)]});}const MAX_RECORD_COUNT=a2E;function registrarFn(a){return'0x2::registrar::'+a;}function register(a,b){return b=b&&a2a(b)?b:void 0x0,a['moveCall']({'target':registrarFn('entity_register'),'arguments':[a['object']['mutEntity'],a['pure']['option']('address',b??null),a['object']['clock']]});}function register_with_resource_forced(a,b){return b=b&&a2a(b)?b:null,a['moveCall']({'target':registrarFn('entity_register_with_resource_forced'),'arguments':[a['object']['mutEntity'],a['pure']['option']('address',b??null),a['object']['clock']]});}function resource_destroy(a,b){a2o([b]),a['moveCall']({'target':registrarFn('entity_resource_destroy'),'arguments':[a['object']['mutEntity'],a2j(a,b)]});}function resource_use(a,b,c){a2o([b]),c=c&&a2a(c)?c:null,a['moveCall']({'target':registrarFn('entity_resource_use'),'arguments':[a['object']['mutEntity'],a2j(a,b),a['pure']['option']('address',c??null),a['object']['clock']]});}function resource_transfer(a,b,c){a2o([b,c]),a['moveCall']({'target':registrarFn('entity_resource_transfer'),'arguments':[a['object']['mutEntity'],a2j(a,b),a2l(a,c)]});}function like(a,b,c,d){return a2o([b,c]),d=d&&a2a(d)?d:void 0x0,a['moveCall']({'target':registrarFn('like'),'arguments':[a['object']['mutRegistrar'],a['object']['mutEntity'],a2j(a,b),a2l(a,c),a['pure']['option']('address',d??null),a['object']['clock']]});}function dislike(a,b,c,d){return a2o([b,c]),d=d&&a2a(d)?d:void 0x0,a['moveCall']({'target':registrarFn('dislike'),'arguments':[a['object']['mutRegistrar'],a['object']['mutEntity'],a2j(a,b),a2l(a,c),a['pure']['option']('address',d??null),a['object']['clock']]});}function favor(a,b,c,d){return a2o([b,c]),d=d&&a2a(d)?d:void 0x0,a['moveCall']({'target':registrarFn('favor'),'arguments':[a['object']['mutRegistrar'],a['object']['mutEntity'],a2j(a,b),a2l(a,c),a['pure']['option']('address',d??null),a['object']['clock']]});}async function record(a,b){if(typeof b['name']==='string'&&!a2i(b['name']))a2e('invalid\x20name','name\x20'+b['name']+'\x20is\x20exceeded\x20max\x20length\x2064');const c=await a2q(a2k(b['value_type']),b['value']);if(c['length']>a2w)a2e('invalid\x20parameter','value_bytes\x20length\x20'+c['length']+'\x20is\x20greater\x20than\x20max\x20'+a2w);return a['moveCall']({'target':registrarFn('record'),'arguments':[a2m(a,b['name']),a['pure']['vector']('u8',Array['from'](c))]});}async function description_set(a,b,c){if(!a2h(b))a2e('invalid\x20parameter','description\x20length\x20'+b['length']+'\x20is\x20greater\x20than\x20max\x20'+a2n);c=c&&a2a(c)?c:null,a['moveCall']({'target':registrarFn('entity_description_set'),'arguments':[a['object']['mutEntity'],a['pure']['string'](b),a['pure']['option']('address',c??null),a['object']['clock']]});}async function info_add(a,b,c,d){d=d&&a2a(d)?d:null;const e=b['map'](g=>record(a,g)),f=await Promise['all'](e);if(f['length']>MAX_RECORD_COUNT)a2e('invalid\x20parameter','records\x20count\x20'+f['length']+'\x20is\x20greater\x20than\x20max\x20'+MAX_RECORD_COUNT);if(c&&!a2h(c))a2e('invalid\x20parameter','description\x20length\x20'+c['length']+'\x20is\x20greater\x20than\x20max\x20'+a2n);a['moveCall']({'target':registrarFn('entity_info_add'),'arguments':[a['object']['mutEntity'],a['pure']['option']('string',c??null),a['makeMoveVec']({'elements':f,'type':'0x2::registrar::Record'}),a['pure']['option']('address',d??null),a['object']['clock']]});}function info_remove(a,b){if(b['length']===0x0)return;if(b['length']>MAX_RECORD_COUNT)a2e('invalid\x20parameter','recordNames\x20count\x20'+b['length']+'\x20is\x20greater\x20than\x20max\x20'+MAX_RECORD_COUNT);a['moveCall']({'target':registrarFn('entity_info_remove'),'arguments':[a['object']['mutEntity'],a['pure']['vector']('string',b)]});}function info_clear(a){a['moveCall']({'target':registrarFn('entity_info_clear'),'arguments':[a['object']['mutEntity']]});}function isCallResultSubmission(a){return a?.['submission']&&a?.['submission']?.['length']>0x0;}function ResponseData(a){if(a?.['digest']){const b=[];return a?.['objectChanges']?.['forEach'](c=>{const d=c?.['objectType'],e=a2u(d);if(e)b['push']({'type':e,'type_raw':d,'object':c?.['objectId'],'version':c?.['version'],'owner':c?.['owner'],'change':c['type']});}),b;}return[];}var CallBase=class{constructor(){this['traceMarkNew']=new Map(),this['content']=void 0x0,this['env_ready']=![],this['env_prepare_promise']=null;}async['operate'](a,b,c,d){}async['prepare'](a){await this['env_prepare'](a);}async['call'](a){}async['env_prepare'](a){if(this['env_ready'])return;if(this['env_prepare_promise'])return this['env_prepare_promise'];return this['env_prepare_promise']=a2v(a)['then'](()=>{this['env_ready']=!![],this['env_prepare_promise']=null;}),this['env_prepare_promise'];}async['call_with_submission'](a,b,c){if(b['guard']['length']>0x0)return await this['prepare'](a),await this['check_passport'](a,b,c);}async['check_guard_and_call'](a,b){a['permission_guard']?.['forEach'](c=>{if(!a2a(c))a2e('invalid\x20address','env\x20permission_guard:\x20'+c);b['push'](c);});if(b['length']>0x0){const c=await a2D(a,b);if(c['submission']['length']>0x0)return{'type':'submission','guard':c['guard'],'submission':c['submission']};return await this['check_passport'](a,c);}else return await this['exec'](a);}async['check_permission_and_call'](a,b,c,d,e,f){let g=![];const h=await a2r({'objects':[b],'no_cache':a['no_cache'],'network':a['network']});if(!h['objects']?.[0x0]||h['objects']?.[0x0]['type']!=='Permission')a2e('no\x20permission','permission\x20object\x20not\x20found');const i=h['objects']?.[0x0],j=await a2t(a);g=i['admin']['includes'](j);if(e&&i['builder']!==j)a2e('no\x20permission',j+'\x20owner\x20permission\x20required');if(f&&!g)a2e('no\x20permission',j+'\x20admin\x20permission\x20required');a['permission_guard']?.['forEach'](l=>{if(!a2a(l))a2e('invalid\x20address','env\x20permission_guard\x20'+l);d['push'](l);});let k;if(d['length']>0x0)k=await a2D(a,d);if(c['length']>0x0&&!g){const l=[j,...k?.['guard']['filter'](q=>q['impack'])['map'](q=>q['object'])??[]]['map'](async q=>{const r=await a2s({'parent':b,'address':q,'no_cache':a['no_cache'],'network':a['network']})['catch'](()=>void 0x0);if(r&&r['type']==='TableItem_PermissionPerm')return{'address':q,'permissions':r['perm']};return{'address':q,'permissions':[]};}),m=await Promise['all'](l),n=new Set();m['forEach'](q=>{q['permissions']['forEach'](r=>n['add'](r));});const o=c['filter'](q=>!n['has'](q));if(o['length']>0x0)a2e('no\x20permission','Missing\x20permissions\x20'+o['join'](',\x20')+'\x20in\x20'+b);}if(k){if(k['submission']['length']>0x0)return{'type':'submission','guard':k['guard'],'submission':k['submission']};return await this['check_passport'](a,k);}else return await this['exec'](a);}async['check_passport'](a,b,c){await a2x(b);const d=new a2d(),e=a2C(d);for(const f of b['guard'])await a2y(d,e,f['object'],b['submission']['find'](g=>g['guard']===f['object'])?.['submission']??[],f['impack']);a2z(d,e),await this['operate'](a,d,e,b['submission']);if(c)a2B(d,e);else a2F(d,e);return await this['sign_and_commit'](a,d);}async['exec'](a){const b=new a2d();return await this['operate'](a,b),await this['sign_and_commit'](a,b);}async['new_with_mark'](a,b,c,d,f,g=['launch']){const h=f?.['tags']?a2G['uniq']([...f['tags'],...g]):a2G['uniq']([...g]);f&&(f['tags']=h,this['traceMarkNew']['set'](c,f));if(!f?.['onChain'])return;if(!this['newResource']){let i;try{i=await a2p({'address':await a2t(a),'no_cache':a['no_cache'],'network':a['network']});}catch(j){}if(i&&i['type']!=='TableItem_EntityRegistrar')a2e('no\x20permission','no\x20entity\x20registrar\x20found');if(i?.['mark_object']){addObjectTags(b,i['mark_object'],{'address':d,'tags':h});return;}else this['newResource']=register_with_resource_forced(b,typeof a['referrer']==='string'?a['referrer']:null);}if(this['newResource'])addObjectTags(b,this['newResource'],{'address':d,'tags':h});}async['update_content'](a,b,c){if(this['content']||!c)return;const d=await a2r({'objects':[c],'no_cache':a['no_cache'],'network':a['network']});if(!d['objects']||d?.['objects']?.['length']!==0x1||d?.['objects'][0x0]?.['type']!==b)a2e('fail','Fetch\x20'+b+'\x20object\x20'+c+'\x20failed');this['content']=d?.['objects'][0x0];}async['query_entity_registered'](a,b,c){return(await Cache['read'](['entity',a['network']??'',b],async()=>{const d=await a2p({'address':b,'no_cache':!![],'network':a['network']})['catch'](()=>void 0x0);return{'expire':Cache['DefaultExpireTime'](),'data':d!==void 0x0};},c))?.['data']===!![];}async['sign_and_commit'](a,b){let c=![],d;if(this['newResource'])create(b,this['newResource']),this['newResource']=void 0x0;else!a['no_auto_register']&&(d=await a2t(a),!await this['query_entity_registered'](a,d)&&(register(b,a['referrer']??void 0x0),c=!![]));if(a['dry_run'])return await this['dry_run_simulate'](a,b);let e=await Account['Instance']()['sign_and_commit'](b,await a2t(a),a['network']);if(!e)a2e('fail','sign\x20and\x20commit\x20failed');if(e?.['digest']&&!e?.['objectChanges']){const g=await Config['Instance']()['network_get'](a['network']);e=await new a2c({'url':a2f(g),'network':g})['getTransactionBlock']({'digest':e?.['digest'],'options':{'showObjectChanges':!![]}});}const f=ResponseData(e);for(let h=0x0;h<f['length'];++h){const j=f[h];if(j['type']&&j['change']==='created'){const k=this['traceMarkNew']['get'](j['type']);if(k)await LocalMark['Instance']()['put']([{'name':k['name']?{'value':k['name'],'replaceExistName':k['replaceExistName']}:void 0x0,'address':j['object'],'tags':k?.['tags']?[...k['tags'],j['type']]:[j['type']]}]);}}if(a['network']){const l=f['filter'](m=>m['object']&&(m['change']==='created'||m['change']==='mutated'||m['change']==='deleted'||m['change']==='wrapped'||m['change']==='transferred'))['map'](m=>m['object']);if(l['length']>0x0){const m='objectv2:'+a['network'];await Cache['del_many'](m,l);}for(const n of['table','sharedobject','servicelist','demandlist','arbitlist','event'])await Cache['clearPrefix'](n);a2b(a['network']);}if(c&&d)await this['query_entity_registered'](a,d,!![]);return e;}async['dry_run_simulate'](a,b){const c=await a2t(a),d=await Config['Instance']()['network_get'](a['network']),e=new a2c({'url':a2f(d),'network':d});b['setSender'](c);const f=await e['core']['simulateTransaction']({'transaction':b,'include':{'effects':!![],'events':!![],'objectTypes':!![]}}),g=f?.['Transaction']??f?.['FailedTransaction'],h=g?.['effects']??void 0x0,i=g?.['events']??[],j=g?.['objectTypes']??{},k=h?.['status'],l=k?k['success']===!![]||k['status']==='success'?{'status':'success','error':null}:{'status':'failure','error':typeof k['error']==='string'?k['error']:k['error']?.['message']??String(k['error']??'unknown\x20error')}:void 0x0,m=[];return h?.['changedObjects']?.['forEach'](n=>{const o=j[n['objectId']];if(!o)return;const p=changedObjectToLegacyChangeType(n);if(!p)return;m['push']({'type':p,'objectId':n['objectId'],'objectType':o,'version':n['outputVersion']??n['inputVersion'],'owner':ownerToLegacy(n['outputOwner']),'digest':n['outputDigest']??void 0x0,...p==='published'?{'packageId':n['objectId']}:{},...p==='transferred'?{'sender':n['inputOwner']?.['AddressOwner']}:{},...p==='mutated'?{'previousVersion':n['inputVersion']}:{},...p==='wrapped'?{'sender':n['inputOwner']?.['AddressOwner']}:{}});}),{'digest':'dry_run:'+Date['now'](),'effects':h?{...h,'status':l??h['status']}:h,'events':i,'objectChanges':m};}};function changedObjectToLegacyChangeType(a){const {idOperation:b,outputState:c,inputState:d,inputOwner:e,outputOwner:f}=a??{};if(b==='Created'&&c==='PackageWrite')return'published';if(b==='Created'&&c==='ObjectWrite')return'created';if(b==='Deleted')return'deleted';if(b==='None'&&c==='ObjectWrite'&&d==='Exists'){const g=e?.['$kind']==='AddressOwner'?e['AddressOwner']:null,h=f?.['$kind']==='AddressOwner'?f['AddressOwner']:null,i=f?.['$kind']==='ObjectOwner'?f['ObjectOwner']:null;if(g&&i&&i===g)return'wrapped';if(g&&h&&g!==h)return'transferred';return'mutated';}return null;}function ownerToLegacy(a){if(!a)return null;switch(a['$kind']){case'AddressOwner':return{'AddressOwner':a['AddressOwner']};case'ObjectOwner':return{'ObjectOwner':a['ObjectOwner']};case'Shared':return{'Shared':{'initialSharedVersion':a['Shared']?.['initialSharedVersion']}};case'Immutable':return'Immutable';default:return a;}}async function getCoinParam(a,b,c,d){let e;if('balance'in c&&c['balance']!=null){if(!a2g(c['balance']))a2e('invalid\x20u64','Total\x20pay\x20balance\x20'+c['balance']+'\x20is\x20not\x20valid');e=await Account['Instance']()['get_coin_object'](b,c['balance'],d,await a2t(a),a['network']);}else{if('coin'in c&&c['coin']!=null){if(typeof c['coin']==='string')e=await LocalMark['Instance']()['get_address'](c['coin']);else e=c['coin'];}}if(!e)a2e('invalid\x20parameter','Total\x20pay\x20'+JSON['stringify'](c)+'\x20is\x20allocated\x20failed');return a2j(b,e);}export{create as _,description_set as a,info_add as c,like as d,register_with_resource_forced as f,addObjectTags as g,resource_use as h,isCallResultSubmission as i,info_clear as l,resource_transfer as m,ResponseData as n,dislike as o,resource_destroy as p,getCoinParam as r,favor as s,CallBase as t,info_remove as u,removeObject as v,removeObjectTags as y};
|