@wowok/wowok 3.1.2 → 3.1.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.
Files changed (134) hide show
  1. package/dist/esm/{Transaction-CrzrFqPW.mjs → Transaction-MUfKhsCF.mjs} +1 -1
  2. package/dist/esm/{arb-B14RyFnl.mjs → arb-Bt71te9D.mjs} +1 -1
  3. package/dist/esm/{call-CfhUYfeY.mjs → call-CQWetJH4.mjs} +1 -1
  4. package/dist/esm/client/index.d.mts +2 -2
  5. package/dist/esm/client/index.mjs +1 -1
  6. package/dist/esm/client-dGG40Xsh.mjs +1 -0
  7. package/dist/esm/{common-CWx5RgBw.mjs → common-Xdn-Z6c9.mjs} +1 -1
  8. package/dist/esm/{config-AuT9_n2K.d.mts → config-Dm9LPWdN.d.mts} +0 -1
  9. package/dist/esm/{constants-BGKNJZYa.mjs → constants-DR8H5zhY.mjs} +1 -1
  10. package/dist/esm/cryptography/index.d.mts +1 -1
  11. package/dist/esm/{evm-account-DiQ0dl_e.d.mts → evm-account-C6LC6C4v.d.mts} +2 -2
  12. package/dist/esm/exception-CUK4T4UJ.mjs +1 -0
  13. package/dist/esm/{fund-approval-6jgGhYPs.mjs → fund-approval-BeJzE3D_.mjs} +1 -1
  14. package/dist/esm/graphql/index.d.mts +1 -1
  15. package/dist/esm/graphql/index.mjs +1 -1
  16. package/dist/esm/{graphql-BgUdJroE.mjs → graphql-xofKFBJU.mjs} +1 -1
  17. package/dist/esm/grpc/index.d.mts +1 -1
  18. package/dist/esm/grpc/index.mjs +1 -1
  19. package/dist/esm/{grpc-DrPf3iOt.mjs → grpc-C8cx_zww.mjs} +1 -1
  20. package/dist/esm/{index-D9MgIgit.d.mts → index-B_hZ2EHL.d.mts} +15 -12
  21. package/dist/esm/{index-Bs4A3nTL.d.mts → index-DGfn17Bq.d.mts} +12 -1
  22. package/dist/esm/index.d.mts +7 -7
  23. package/dist/esm/index.mjs +1 -1
  24. package/dist/esm/jsonRpc/index.d.mts +1 -1
  25. package/dist/esm/jsonRpc/index.mjs +1 -1
  26. package/dist/esm/keypairs/ed25519/index.d.mts +1 -1
  27. package/dist/esm/keypairs/falcon512/index.d.mts +1 -1
  28. package/dist/esm/keypairs/passkey/index.d.mts +1 -1
  29. package/dist/esm/keypairs/secp256k1/index.d.mts +1 -1
  30. package/dist/esm/keypairs/secp256r1/index.d.mts +1 -1
  31. package/dist/esm/lock-QdrQzo0u.mjs +1 -0
  32. package/dist/esm/{messenger-DHE08OC4.mjs → messenger-BOFGcc-r.mjs} +1 -1
  33. package/dist/esm/{messenger-api-Dkq7-bpv.mjs → messenger-api-DALvHoZz.mjs} +1 -1
  34. package/dist/esm/multisig/index.d.mts +1 -1
  35. package/dist/esm/multisig/index.mjs +1 -1
  36. package/dist/esm/network-UpRYD8EM.mjs +1 -1
  37. package/dist/esm/passkey-JT2Sem2D.mjs +1 -1
  38. package/dist/esm/{proof-Cx8ZdZg1.mjs → proof-Cz6xEdPc.mjs} +1 -1
  39. package/dist/esm/publickey-BZ3tMxym.mjs +1 -1
  40. package/dist/esm/publickey-Bhgj2pBz.mjs +1 -1
  41. package/dist/esm/publickey-CHe6yvVh.mjs +1 -1
  42. package/dist/esm/publickey-CvXcTL6j.mjs +1 -1
  43. package/dist/esm/publickey-DLn5vuqp.mjs +1 -1
  44. package/dist/esm/publickey-DkfqbEPz.mjs +1 -1
  45. package/dist/esm/{received-CXVoQR5Q.mjs → received-CAzlc4_p.mjs} +1 -1
  46. package/dist/esm/secp256k1-rxTNgrNr.mjs +1 -1
  47. package/dist/esm/secp256r1--MEt4hQe.mjs +1 -1
  48. package/dist/esm/{secure-storage-WrSCAIOu.d.mts → secure-storage-CnXXBqBE.d.mts} +1 -1
  49. package/dist/esm/{service-Ce74bWYK.mjs → service-lkfEGHxx.mjs} +1 -1
  50. package/dist/esm/{storage-C_8llI0r.d.mts → storage-CEDkwpbs.d.mts} +14 -1
  51. package/dist/esm/transactions/index.d.mts +1 -1
  52. package/dist/esm/transactions/index.mjs +1 -1
  53. package/dist/esm/{transactions-HEsbZ5tl.mjs → transactions-CklK5guM.mjs} +1 -1
  54. package/dist/esm/util-C39oHQ7Y.mjs +1 -0
  55. package/dist/esm/util-C7Z-7kSn.mjs +1 -0
  56. package/dist/esm/utils/index.d.mts +2 -2
  57. package/dist/esm/utils/index.mjs +1 -1
  58. package/dist/esm/{utils-CFfdvJ-L.mjs → utils-C91AIzNd.mjs} +1 -1
  59. package/dist/esm/verify/index.d.mts +1 -1
  60. package/dist/esm/w/call/allocation.d.mts +1 -1
  61. package/dist/esm/w/call/allocation.mjs +1 -1
  62. package/dist/esm/w/call/arbitration.d.mts +1 -1
  63. package/dist/esm/w/call/arbitration.mjs +1 -1
  64. package/dist/esm/w/call/base.d.mts +1 -1
  65. package/dist/esm/w/call/base.mjs +1 -1
  66. package/dist/esm/w/call/demand.d.mts +1 -1
  67. package/dist/esm/w/call/demand.mjs +1 -1
  68. package/dist/esm/w/call/guard.d.mts +1 -1
  69. package/dist/esm/w/call/guard.mjs +1 -1
  70. package/dist/esm/w/call/index.d.mts +1 -1
  71. package/dist/esm/w/call/index.mjs +1 -1
  72. package/dist/esm/w/call/machine.d.mts +1 -1
  73. package/dist/esm/w/call/machine.mjs +1 -1
  74. package/dist/esm/w/call/passport.d.mts +1 -1
  75. package/dist/esm/w/call/passport.mjs +1 -1
  76. package/dist/esm/w/call/payment.d.mts +1 -1
  77. package/dist/esm/w/call/payment.mjs +1 -1
  78. package/dist/esm/w/call/permission.d.mts +1 -1
  79. package/dist/esm/w/call/permission.mjs +1 -1
  80. package/dist/esm/w/call/progress.d.mts +1 -1
  81. package/dist/esm/w/call/progress.mjs +1 -1
  82. package/dist/esm/w/call/repository.d.mts +1 -1
  83. package/dist/esm/w/call/repository.mjs +1 -1
  84. package/dist/esm/w/call/reward.d.mts +1 -1
  85. package/dist/esm/w/call/reward.mjs +1 -1
  86. package/dist/esm/w/call/service.d.mts +1 -1
  87. package/dist/esm/w/call/service.mjs +1 -1
  88. package/dist/esm/w/call/treasury.d.mts +1 -1
  89. package/dist/esm/w/call/treasury.mjs +1 -1
  90. package/dist/esm/w/common.d.mts +1 -1
  91. package/dist/esm/w/common.mjs +1 -1
  92. package/dist/esm/w/index.d.mts +5 -5
  93. package/dist/esm/w/index.mjs +1 -1
  94. package/dist/esm/w/local/account.d.mts +2 -2
  95. package/dist/esm/w/local/account.mjs +1 -1
  96. package/dist/esm/w/local/cache.mjs +1 -1
  97. package/dist/esm/w/local/config.d.mts +1 -1
  98. package/dist/esm/w/local/config.mjs +1 -1
  99. package/dist/esm/w/local/evm/networks.mjs +1 -1
  100. package/dist/esm/w/local/evm-account.d.mts +1 -1
  101. package/dist/esm/w/local/evm-account.mjs +1 -1
  102. package/dist/esm/w/local/fund-approval.mjs +1 -1
  103. package/dist/esm/w/local/index.d.mts +5 -5
  104. package/dist/esm/w/local/index.mjs +1 -1
  105. package/dist/esm/w/local/local.mjs +1 -1
  106. package/dist/esm/w/local/secure-storage.d.mts +1 -1
  107. package/dist/esm/w/local/secure-storage.mjs +1 -1
  108. package/dist/esm/w/local/storage.d.mts +2 -2
  109. package/dist/esm/w/local/storage.mjs +1 -1
  110. package/dist/esm/w/local/token.d.mts +1 -1
  111. package/dist/esm/w/local/token.mjs +1 -1
  112. package/dist/esm/w/messenger/attachment.d.mts +1 -1
  113. package/dist/esm/w/messenger/index.d.mts +1 -1
  114. package/dist/esm/w/messenger/index.mjs +1 -1
  115. package/dist/esm/w/messenger/messenger-api.d.mts +1 -1
  116. package/dist/esm/w/messenger/messenger-api.mjs +1 -1
  117. package/dist/esm/w/messenger/messenger.d.mts +1 -1
  118. package/dist/esm/w/messenger/messenger.mjs +1 -1
  119. package/dist/esm/w/messenger/reply.d.mts +1 -1
  120. package/dist/esm/w/messenger/storage.d.mts +1 -1
  121. package/dist/esm/w/messenger/types.d.mts +1 -1
  122. package/dist/esm/w/messenger/utils.d.mts +1 -1
  123. package/dist/esm/w/query/index.d.mts +1 -1
  124. package/dist/esm/w/query/index.mjs +1 -1
  125. package/dist/esm/w/query/object.d.mts +1 -1
  126. package/dist/esm/w/query/object.mjs +1 -1
  127. package/dist/esm/w-Dw07_fxr.mjs +1 -0
  128. package/package.json +1 -1
  129. package/dist/esm/client-BzcnDuHx.mjs +0 -1
  130. package/dist/esm/exception-CSVNDnxf.mjs +0 -1
  131. package/dist/esm/storage-D1bEi2b7.mjs +0 -1
  132. package/dist/esm/util-DpsaFX5J.mjs +0 -1
  133. package/dist/esm/util-jt3Z417T.mjs +0 -1
  134. package/dist/esm/w-CbdAw-mH.mjs +0 -1
@@ -0,0 +1 @@
1
+ import{t as a110a}from'./client-dGG40Xsh.mjs';import{t as a110b}from'./Transaction-MUfKhsCF.mjs';import{o as a110c}from'./exception-CUK4T4UJ.mjs';import{a as a110d}from'./network-UpRYD8EM.mjs';import{t as a110e}from'./lock-QdrQzo0u.mjs';import{SQLiteStorage}from'./w/local/storage.mjs';import{Config}from'./w/local/config.mjs';import{r as a110f}from'./logger-Da7dKX2V.mjs';import{Account}from'./w/local/account.mjs';import{c as a110g,l as a110h,o as a110i,p as a110j}from'./fund-approval-BeJzE3D_.mjs';import{bigIntToBytes,bytesToHex,hexToBytes as a110k}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=a110k(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=a110k(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(a110k(BRIDGE_ETH_V2_SELECTOR),d,e,f));}function encodeBridgeETH(a,b){const c=a110k(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(a110k(BRIDGE_ETH_V1_SELECTOR),d,e,f));}function encodeBridgeERC20V2(a,b,c,d){const e=a110k(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(a110k(BRIDGE_ERC20_V2_SELECTOR),uintWord(a),uintWord(b),f,uintWord(d),g));}function encodeBridgeERC20(a,b,c,d){const e=a110k(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(a110k(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(a110k(d),g,h,e,f));}function encodeApprove(a,b){return'0x'+bytesToHex(concat(a110k(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(a110k(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=a110k(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=a110k(e),h=a110k(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)a110c('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['amount']<=0x0n)a110c('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 a110b(),h=await Account['Instance']()['get_coin_object'](g,a['amount'],a['tokenType'],await getEnvAccount$1(b),b['network']);if(!h)a110c('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'])a110c('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':a110d(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)a110c('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)a110c('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)a110c('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['bridgeSeqNum']<0x0n)a110c('invalid\x20parameter','bridgeSeqNum\x20must\x20be\x20non-negative');const c=a['sourceChainId']??0xa,d=a['bridgeObjectId']??DEFAULT_BRIDGE_OBJECT_ID,e=new a110b();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'])a110c('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 a110a({'url':a110d(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=a110f('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=a110k(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=a110k(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);}a110c('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')a110c('fail','WOW\x20tx\x20'+b+'\x20failed:\x20'+(g['effects']['status']['error']||'unknown'));logger$1['debug'](f+0x1+'/'+e+':\x20pending'),await sleep$1(c);}a110c('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 a110k(a);if(/^[0-9a-fA-F]+$/['test'](a)&&a['length']%0x2===0x0)return a110k(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'])a110c('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=a110f('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 a110e(),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':a110g[e]??'0x'+e['toString']()['padStart'](0x40,'0'),'weight':a110h[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')a110c('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)a110c('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-UpRYD8EM.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']);}a110c('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=a110j(this['config'],a['token']);if(!f)a110c('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'])a110c('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'])a110c('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')a110c('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'])a110c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20bridge');const c=a['waitForFinalization']??!![],d=this['config']['ethereum'],e=await this['resolveEvmRpcUrl'](),f=a110j(this['config'],a['token']);if(!f)a110c('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-UpRYD8EM.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)a110c('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'])a110c('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-UpRYD8EM.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'])a110c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20claim');await this['_loadHistoryPromise'];const b=this['_transferHistory']['get'](a);if(!b)a110c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20not\x20found');if(b['direction']!=='wow_to_evm')a110c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20is\x20not\x20a\x20wow_to_evm\x20transfer');if(!b['depositTxDigest']||!b['bridgeSeq'])a110c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20missing\x20deposit\x20info\x20(depositTxDigest\x20or\x20bridgeSeq)');const c=this['config']['ethereum'],d=await this['resolveEvmRpcUrl'](),e=a110j(this['config'],b['token']);if(!e)a110c('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-UpRYD8EM.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)a110c('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'])a110c('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'])a110c('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=a110j(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'])a110c('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'])a110c('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=a110j(this['config'],a['token']);if(!f)a110c('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'])a110c('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=a110j(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)a110c('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=a110j(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=a110j(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)a110c('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)a110c('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)a110c('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:a110c('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 SQLiteStorage();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 a110i;}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.1.2",
6
+ "version": "3.1.4",
7
7
  "license": "Apache-2.0",
8
8
  "sideEffects": false,
9
9
  "files": [
@@ -1 +0,0 @@
1
- import{a as a7a,c as a7b,d as a7c,l as a7d,o as a7e,s as a7f,u as a7g}from'./wow-types-DctQuD2J.mjs';import{c as a7h,o as a7i,u as a7j}from'./bcs-Cjvfeyqf.mjs';import{g as a7k,m as a7l,o as a7m,p as a7n,s as a7o,t as a7p}from'./Transaction-CrzrFqPW.mjs';import{m as a7q}from'./utils-CFfdvJ-L.mjs';import{t as a7r}from'./exception-CSVNDnxf.mjs';import{_ as a7s,d as a7t}from'./constants-BGKNJZYa.mjs';import{fromBase58,fromBase64,toBase64,toHex}from'@mysten/bcs';import{chunk,toBase64 as a7u}from'@mysten/utils';var ClientCache=class ClientCache{#prefix;#cache;constructor({prefix:a,cache:b}={}){this.#prefix=a??[],this.#cache=b??new Map();}['read'](a,b){const c=[this.#prefix,...a]['join'](':');if(this.#cache['has'](c))return this.#cache['get'](c);const d=b();this.#cache['set'](c,d);if(typeof d==='object'&&d!==null&&'then'in d)return Promise['resolve'](d)['then'](e=>{return this.#cache['set'](c,e),e;})['catch'](e=>{this.#cache['delete'](c);throw e;});return d;}['readSync'](a,b){const c=[this.#prefix,...a]['join'](':');if(this.#cache['has'](c))return this.#cache['get'](c);const d=b();return this.#cache['set'](c,d),d;}['clear'](a){const b=[...this.#prefix,...a??[]]['join'](':');if(!b){this.#cache['clear']();return;}for(const c of this.#cache['keys']())if(c['startsWith'](b))this.#cache['delete'](c);}['scope'](a){return new ClientCache({'prefix':[...this.#prefix,...Array['isArray'](a)?a:[a]],'cache':this.#cache});}},BaseClient=class{constructor({network:a,base:b,cache:cache=b?.['cache']??new ClientCache()}){this['network']=a,this['base']=b??this,this['cache']=cache;}['$extend'](...a){const b=Object['fromEntries'](a['map'](d=>{return[d['name'],d['register'](this)];})),c=new Map();return new Proxy(this,{'get'(d,e,f){if(typeof e==='string'&&e in b)return b[e];const g=Reflect['get'](d,e,f);if(typeof g==='function'){if(e==='$extend')return g['bind'](f);if(!c['has'](e))c['set'](e,g['bind'](d));return c['get'](e);}return g;}});}},CoreClient=class extends BaseClient{constructor(a){super(a),this['core']=this;}async['getObject'](a){const {objectId:b}=a,{objects:[c]}=await this['getObjects']({'objectIds':[b],'signal':a['signal'],'include':a['include']});if(c instanceof Error)throw c;return{'object':c};}async['getDynamicField'](a){const b=a7j['parseFromStr'](a['name']['type']),c=a7q(a['parentId'],b,a['name']['bcs']),{objects:[d]}=await this['getObjects']({'objectIds':[c],'signal':a['signal'],'include':{'previousTransaction':!![],'content':!![]}});if(d instanceof Error)throw d;const e=a7c(d['type']),f=await d['content'],g=e['typeParams'][0x0],h=typeof g!=='string'&&g['module']==='dynamic_object_field'&&g['name']==='Wrapper',i=f['slice'](0x20+a['name']['bcs']['length']),j=typeof e['typeParams'][0x1]==='string'?e['typeParams'][0x1]:a7b(e['typeParams'][0x1]);return{'dynamicField':{'$kind':h?'DynamicObject':'DynamicField','fieldId':d['objectId'],'digest':d['digest'],'version':d['version'],'type':d['type'],'previousTransaction':d['previousTransaction'],'name':{'type':typeof g==='string'?g:a7b(g),'bcs':a['name']['bcs']},'value':{'type':j,'bcs':i},'childId':h?a7i['Address']['parse'](i):void 0x0}};}async['getDynamicObjectField'](a){const b='0x2::dynamic_object_field::Wrapper<'+a['name']['type']+'>',{dynamicField:c}=await this['getDynamicField']({'parentId':a['parentId'],'name':{'type':b,'bcs':a['name']['bcs']},'signal':a['signal']}),{object:d}=await this['getObject']({'objectId':c['childId'],'signal':a['signal'],'include':a['include']});return{'object':d};}async['waitForTransaction'](a){const {signal:b,timeout:timeout=0x5a*0x3e8,pollSchedule:c,include:d}=a,e='result'in a&&a['result']?(a['result']['Transaction']??a['result']['FailedTransaction'])['digest']:a['digest'],f=b?AbortSignal['any']([AbortSignal['timeout'](timeout),b]):AbortSignal['timeout'](timeout),g=new Promise((l,m)=>{f['addEventListener']('abort',()=>m(f['reason']));});g['catch'](()=>{});const h=c??[0x0,0x12c,0x258,0x5dc,0xdac],i=Date['now']();let j=0x0;const k=h['length']>0x0?h[h['length']-0x1]-(h[h['length']-0x2]??0x0):0x7d0;while(!![]){if(j<h['length']){const l=i+h[j]-Date['now']();j++;if(l>0x0)await Promise['race']([new Promise(m=>setTimeout(m,l)),g]);}else await Promise['race']([new Promise(m=>setTimeout(m,k)),g]);f['throwIfAborted']();try{return await this['getTransaction']({'digest':e,'include':d,'signal':f});}catch{}}}async['signAndExecuteTransaction']({transaction:a,signer:b,additionalSignatures:additionalSignatures=[],...c}){let d;if(a instanceof Uint8Array)d=a;else a['setSenderIfNotSet'](b['toWowAddress']()),d=await a['build']({'client':this});const {signature:e}=await b['signTransaction'](d),f=0x5a*0x3e8,g=a7k['getDigestFromBytes'](d),h=new Promise((i,j)=>{setTimeout(()=>j(new Error('Transaction\x20'+g+'\x20was\x20submitted\x20but\x20not\x20confirmed\x20within\x20'+f+'ms.\x20It\x20may\x20still\x20be\x20finalized\x20on-chain\x20—\x20verify\x20via\x20onchain_transaction\x20with\x20this\x20digest\x20before\x20retrying.')),f)['unref']?.();});return h['catch'](()=>{}),Promise['race']([this['executeTransaction']({'transaction':d,'signatures':[e,...additionalSignatures],...c}),h]);}};const ordinalRules=new Intl['PluralRules']('en-US',{'type':'ordinal'}),ordinalSuffixes=new Map([['one','st'],['two','nd'],['few','rd'],['other','th']]);function formatOrdinal(a){return''+a+ordinalSuffixes['get'](ordinalRules['select'](a));}const WOWOK_ADDRESS='0x0000000000000000000000000000000000000000000000000000000000000002';function formatMoveAbortMessage(a){const {command:b,location:c,abortCode:d,cleverError:e}=a,f=[];if(b!=null)f['push']('MoveAbort\x20in\x20'+formatOrdinal(b+0x1)+'\x20command');else f['push']('MoveAbort');if(e?.['constantName']){const g=e['value']?'\x27'+e['constantName']+'\x27:\x20'+e['value']:'\x27'+e['constantName']+'\x27';f['push'](g);}else{let h='abort\x20code:\x20'+d;if(c?.['package']&&c?.['module']){const i=c['package']['startsWith']('0x')?c['package']:'0x'+c['package'];if(i['toLowerCase']()===WOWOK_ADDRESS||i['toLowerCase']()==='0x2'){const j=parseInt(d,0xa);if(!isNaN(j)){const k=a7r['find'](l=>l['module']===c['module']&&l['code']===j)?.['description']??null;if(k)h='abort\x20code:\x20'+d+'\x20('+k+')';}}}f['push'](h);}if(c?.['package']&&c?.['module']){const l=['in\x20\x27'+[c['package']['startsWith']('0x')?c['package']:'0x'+c['package'],c['module'],c['functionName']]['filter'](Boolean)['join']('::')+'\x27'];if(e?.['lineNumber']!=null)l['push']('(line\x20'+e['lineNumber']+')');else{if(c['instruction']!=null)l['push']('(instruction\x20'+c['instruction']+')');}f['push'](l['join']('\x20'));}return f['join'](',\x20');}const MinimalEffectsWithError=a7i['struct']('MinimalEffectsWithError',{'status':a7h}),MinimalTransactionEffectsWithError=a7i['enum']('MinimalTransactionEffectsWithError',{'V1':MinimalEffectsWithError,'V2':MinimalEffectsWithError}),MinimalExecutionStatusNoError=a7i['enum']('MinimalExecutionStatusNoError',{'Success':null,'Failed':null}),MinimalEffectsNoError=a7i['struct']('MinimalEffectsNoError',{'status':MinimalExecutionStatusNoError}),MinimalTransactionEffectsNoError=a7i['enum']('MinimalTransactionEffectsNoError',{'V1':MinimalEffectsNoError,'V2':MinimalEffectsNoError});function formatErrorMessage(a,b){if(b!==null&&b!==void 0x0&&typeof b!=='boolean')return a+'('+JSON['stringify'](b,(c,d)=>typeof d==='bigint'?d['toString']():d)+')';return a;}function parseBcsExecutionError(a){const b=a['error'],c=a['command']!=null?Number(a['command']):void 0x0;switch(b['$kind']){case'MoveAbort':{const [d,e]=b['MoveAbort'],f={'package':d['module']['address'],'module':d['module']['name'],'function':d['function'],'functionName':d['functionName']??void 0x0,'instruction':d['instruction']};return{'$kind':'MoveAbort','message':formatMoveAbortMessage({'command':c,'location':f,'abortCode':String(e)}),'command':c,'MoveAbort':{'abortCode':String(e),'location':f}};}case'MoveObjectTooBig':return{'$kind':'SizeError','message':formatErrorMessage('MoveObjectTooBig',b['MoveObjectTooBig']),'command':c,'SizeError':{'name':'ObjectTooBig','size':Number(b['MoveObjectTooBig']['objectSize']),'maxSize':Number(b['MoveObjectTooBig']['maxObjectSize'])}};case'MovePackageTooBig':return{'$kind':'SizeError','message':formatErrorMessage('MovePackageTooBig',b['MovePackageTooBig']),'command':c,'SizeError':{'name':'PackageTooBig','size':Number(b['MovePackageTooBig']['objectSize']),'maxSize':Number(b['MovePackageTooBig']['maxObjectSize'])}};case'EffectsTooLarge':return{'$kind':'SizeError','message':formatErrorMessage('EffectsTooLarge',b['EffectsTooLarge']),'command':c,'SizeError':{'name':'EffectsTooLarge','size':Number(b['EffectsTooLarge']['currentSize']),'maxSize':Number(b['EffectsTooLarge']['maxSize'])}};case'WrittenObjectsTooLarge':return{'$kind':'SizeError','message':formatErrorMessage('WrittenObjectsTooLarge',b['WrittenObjectsTooLarge']),'command':c,'SizeError':{'name':'WrittenObjectsTooLarge','size':Number(b['WrittenObjectsTooLarge']['currentSize']),'maxSize':Number(b['WrittenObjectsTooLarge']['maxSize'])}};case'MoveVectorElemTooBig':return{'$kind':'SizeError','message':formatErrorMessage('MoveVectorElemTooBig',b['MoveVectorElemTooBig']),'command':c,'SizeError':{'name':'MoveVectorElemTooBig','size':Number(b['MoveVectorElemTooBig']['valueSize']),'maxSize':Number(b['MoveVectorElemTooBig']['maxScaledSize'])}};case'MoveRawValueTooBig':return{'$kind':'SizeError','message':formatErrorMessage('MoveRawValueTooBig',b['MoveRawValueTooBig']),'command':c,'SizeError':{'name':'MoveRawValueTooBig','size':Number(b['MoveRawValueTooBig']['valueSize']),'maxSize':Number(b['MoveRawValueTooBig']['maxScaledSize'])}};case'CommandArgumentError':return{'$kind':'CommandArgumentError','message':formatErrorMessage('CommandArgumentError',b['CommandArgumentError']),'command':c,'CommandArgumentError':{'argument':b['CommandArgumentError']['argIdx'],'name':b['CommandArgumentError']['kind']['$kind']}};case'TypeArgumentError':return{'$kind':'TypeArgumentError','message':formatErrorMessage('TypeArgumentError',b['TypeArgumentError']),'command':c,'TypeArgumentError':{'typeArgument':b['TypeArgumentError']['argumentIdx'],'name':b['TypeArgumentError']['kind']['$kind']}};case'PackageUpgradeError':{const g=b['PackageUpgradeError']['upgradeError'];return{'$kind':'PackageUpgradeError','message':formatErrorMessage('PackageUpgradeError',b['PackageUpgradeError']),'command':c,'PackageUpgradeError':{'name':g['$kind'],'packageId':g['$kind']==='UnableToFetchPackage'?g['UnableToFetchPackage']['packageId']:void 0x0,'digest':g['$kind']==='DigestDoesNotMatch'?a7u(g['DigestDoesNotMatch']['digest']):void 0x0}};}case'ExecutionCancelledDueToSharedObjectCongestion':return{'$kind':'CongestedObjects','message':formatErrorMessage('ExecutionCancelledDueToSharedObjectCongestion',b['ExecutionCancelledDueToSharedObjectCongestion']),'command':c,'CongestedObjects':{'name':'ExecutionCanceledDueToConsensusObjectCongestion','objects':b['ExecutionCancelledDueToSharedObjectCongestion']['congested_objects']}};case'AddressDeniedForCoin':return{'$kind':'CoinDenyListError','message':formatErrorMessage('AddressDeniedForCoin',b['AddressDeniedForCoin']),'command':c,'CoinDenyListError':{'name':'AddressDeniedForCoin','address':b['AddressDeniedForCoin']['address'],'coinType':b['AddressDeniedForCoin']['coinType']}};case'CoinTypeGlobalPause':return{'$kind':'CoinDenyListError','message':formatErrorMessage('CoinTypeGlobalPause',b['CoinTypeGlobalPause']),'command':c,'CoinDenyListError':{'name':'CoinTypeGlobalPause','coinType':b['CoinTypeGlobalPause']['coinType']}};case'CircularObjectOwnership':return{'$kind':'ObjectIdError','message':formatErrorMessage('CircularObjectOwnership',b['CircularObjectOwnership']),'command':c,'ObjectIdError':{'name':'CircularObjectOwnership','objectId':b['CircularObjectOwnership']['object']}};case'InvalidGasObject':return{'$kind':'ObjectIdError','message':'InvalidGasObject','command':c,'ObjectIdError':{'name':'InvalidGasObject','objectId':''}};case'InputObjectDeleted':return{'$kind':'ObjectIdError','message':'InputObjectDeleted','command':c,'ObjectIdError':{'name':'InputObjectDeleted','objectId':''}};case'InvalidTransferObject':return{'$kind':'ObjectIdError','message':'InvalidTransferObject','command':c,'ObjectIdError':{'name':'InvalidTransferObject','objectId':''}};case'NonExclusiveWriteInputObjectModified':return{'$kind':'Unknown','message':formatErrorMessage('NonExclusiveWriteInputObjectModified',b['NonExclusiveWriteInputObjectModified']),'command':c,'Unknown':null};case'InsufficientGas':case'InvariantViolation':case'FeatureNotYetSupported':case'InsufficientCoinBalance':case'CoinBalanceOverflow':case'PublishErrorNonZeroAddress':case'WowMoveVerificationError':case'MovePrimitiveRuntimeError':case'VMVerificationOrDeserializationError':case'VMInvariantViolation':case'FunctionNotFound':case'ArityMismatch':case'TypeArityMismatch':case'NonEntryFunctionInvoked':case'UnusedValueWithoutDrop':case'InvalidPublicFunctionReturnType':case'PublishUpgradeMissingDependency':case'PublishUpgradeDependencyDowngrade':case'CertificateDenied':case'WowMoveVerificationTimedout':case'SharedObjectOperationNotAllowed':case'ExecutionCancelledDueToRandomnessUnavailable':case'InvalidLinkage':case'InsufficientBalanceForWithdraw':return{'$kind':'Unknown','message':b['$kind'],'command':c,'Unknown':null};default:return{'$kind':'Unknown','message':'Unknown\x20error','command':c,'Unknown':null};}}function parseTransactionBcs(a,b=![]){return(b?a7k['fromKindBytes'](a):a7k['fromBytes'](a))['snapshot']();}function extractStatusFromEffectsBcs(a){let b=null;try{b=MinimalTransactionEffectsWithError['parse'](a);}catch{const d=MinimalTransactionEffectsNoError['parse'](a);if((d['V1']??d['V2'])['status']['$kind']==='Success')return{'success':!![],'error':null};return{'success':![],'error':{'$kind':'Unknown','message':'ExecutionFailed','Unknown':null}};}const c=(b['V1']??b['V2'])['status'];if(c['$kind']==='Success')return{'success':!![],'error':null};return{'success':![],'error':parseBcsExecutionError(c['Failure'])};}function parseTransactionEffectsBcs(a){const b=a7i['TransactionEffects']['parse'](a);switch(b['$kind']){case'V1':return parseTransactionEffectsV1({'bytes':a,'effects':b['V1']});case'V2':return parseTransactionEffectsV2({'bytes':a,'effects':b['V2']});default:throw new Error('Unknown\x20transaction\x20effects\x20version:\x20'+b['$kind']);}}function parseTransactionEffectsV1(a){throw new Error('V1\x20effects\x20are\x20not\x20supported\x20yet');}function parseTransactionEffectsV2({bytes:a,effects:b}){const c=b['changedObjects']['map'](([d,e])=>{return{'objectId':d,'inputState':e['inputState']['$kind']==='Exist'?'Exists':'DoesNotExist','inputVersion':e['inputState']['Exist']?.[0x0][0x0]??null,'inputDigest':e['inputState']['Exist']?.[0x0][0x1]??null,'inputOwner':e['inputState']['Exist']?.[0x1]??null,'outputState':e['outputState']['$kind']==='NotExist'?'DoesNotExist':e['outputState']['$kind'],'outputVersion':e['outputState']['$kind']==='PackageWrite'?e['outputState']['PackageWrite']?.[0x0]:e['outputState']['$kind']==='ObjectWrite'?b['lamportVersion']:null,'outputDigest':e['outputState']['$kind']==='PackageWrite'?e['outputState']['PackageWrite']?.[0x1]:e['outputState']['$kind']==='ObjectWrite'?e['outputState']['ObjectWrite']?.[0x0]??null:null,'outputOwner':e['outputState']['$kind']==='ObjectWrite'?e['outputState']['ObjectWrite'][0x1]:null,'idOperation':e['idOperation']['$kind']};});return{'bcs':a,'version':0x2,'status':b['status']['$kind']==='Success'?{'success':!![],'error':null}:{'success':![],'error':parseBcsExecutionError(b['status']['Failure'])},'gasUsed':b['gasUsed'],'transactionDigest':b['transactionDigest'],'gasObject':b['gasObjectIndex']===null?null:c[b['gasObjectIndex']]??null,'eventsDigest':b['eventsDigest'],'dependencies':b['dependencies'],'lamportVersion':b['lamportVersion'],'changedObjects':c,'unchangedConsensusObjects':b['unchangedConsensusObjects']['map'](([d,e])=>{return{'kind':e['$kind'],'objectId':d,'version':e['$kind']==='ReadOnlyRoot'?e['ReadOnlyRoot'][0x0]:e[e['$kind']],'digest':e['$kind']==='ReadOnlyRoot'?e['ReadOnlyRoot'][0x1]:null};}),'auxiliaryDataDigest':b['auxDataDigest']};}const PACKAGE_VERSION='3.1.2',CODE_TO_ERROR_TYPE={'-32700':'ParseError','-32701':'OversizedRequest','-32702':'OversizedResponse','-32600':'InvalidRequest','-32601':'MethodNotFound','-32602':'InvalidParams','-32603':'InternalError','-32604':'ServerBusy','-32000':'CallExecutionFailed','-32001':'UnknownError','-32003':'SubscriptionClosed','-32004':'SubscriptionClosedWithError','-32005':'BatchesNotSupported','-32006':'TooManySubscriptions','-32050':'TransientError','-32002':'TransactionExecutionClientError'};var WowHTTPTransportError=class extends Error{},JsonRpcError=class extends WowHTTPTransportError{constructor(a,b){super(a),this['code']=b,this['type']=CODE_TO_ERROR_TYPE[b]??'ServerError';}},WowHTTPStatusError=class extends WowHTTPTransportError{constructor(a,b,c){super(a),this['status']=b,this['statusText']=c;}},JsonRpcHTTPTransport=class{#requestId=0x0;#options;constructor(a){this.#options=a;}['fetch'](a,b){const c=this.#options['fetch']??fetch;if(!c)throw new Error('The\x20current\x20environment\x20does\x20not\x20support\x20fetch,\x20you\x20can\x20provide\x20a\x20fetch\x20implementation\x20in\x20the\x20options\x20for\x20WowHTTPTransport.');return c(a,b);}async['request'](a){this.#requestId+=0x1;const b=await this['fetch'](this.#options['rpc']?.['url']??this.#options['url'],{'method':'POST','signal':a['signal'],'headers':{'Content-Type':'application/json','Client-Sdk-Type':'typescript','Client-Sdk-Version':PACKAGE_VERSION,'Client-Request-Method':a['method'],...this.#options['rpc']?.['headers']},'body':JSON['stringify']({'jsonrpc':'2.0','id':this.#requestId,'method':a['method'],'params':a['params']})});if(!b['ok'])throw new WowHTTPStatusError('Unexpected\x20status\x20code:\x20'+b['status'],b['status'],b['statusText']);const c=await b['json']();if('error'in c&&c['error']!=null)throw new JsonRpcError(c['error']['message'],c['error']['code']);return c['result'];}};let realTimeWindowMs=((()=>{const a=process['env']['WOWOK_REALTIME_WINDOW_MS'];if(!a)return 0x1388;const b=Number(a);return Number['isFinite'](b)&&b>=0x0?b:0x1388;})());const lastWriteAt=new Map();function setRealTimeWindowMs(a){realTimeWindowMs=Math['max'](0x0,Math['floor'](a));}function touchWriteClock(a,b=Date['now']()){lastWriteAt['set'](a,b);}function lastWriteAtFor(a){return lastWriteAt['get'](a)??0x0;}function lastWriteAtAny(){let a=0x0;for(const b of lastWriteAt['values']())if(b>a)a=b;return a;}function isRealtimeWindow(a){return Date['now']()-lastWriteAtFor(a)<=realTimeWindowMs;}const MAX_GAS=0xba43b7400;function convertBcsExpirationToInput(a){if(!a)return null;if('None'in a)return{'None':!![]};if('Epoch'in a)return{'Epoch':Number(a['Epoch'])};if('ValidDuring'in a)return{'ValidDuring':a['ValidDuring']};return null;}function parseJsonRpcExecutionStatus(a,b){if(a['status']==='success')return{'success':!![],'error':null};const c=a['error']??'Unknown';if(b){const d=c['match'](/in command (\d+)/),e=d?parseInt(d[0x1],0xa):void 0x0,f=c['match'](/instruction:\s*(\d+)/),g=f?parseInt(f[0x1],0xa):void 0x0,h=b['module_id']?.['split']('::')??[],i=h[0x0]?a7d(h[0x0]):void 0x0,j=h[0x1];return{'success':![],'error':{'$kind':'MoveAbort','message':formatMoveAbortMessage({'command':e,'location':i&&j?{'package':i,'module':j,'functionName':b['function']??void 0x0,'instruction':g}:void 0x0,'abortCode':String(b['error_code']??0x0),'cleverError':b['line']!=null?{'lineNumber':b['line']}:void 0x0}),'command':e,'MoveAbort':{'abortCode':String(b['error_code']??0x0),'location':b['module_id']?{'package':a7d(b['module_id']['split']('::')[0x0]??''),'module':b['module_id']['split']('::')[0x1]??'','functionName':b['function']??void 0x0,'instruction':g}:void 0x0}}};}return{'success':![],'error':{'$kind':'Unknown','message':c,'Unknown':null}};}var JSONRpcCoreClient=class extends CoreClient{#jsonRpcClient;constructor({jsonRpcClient:a}){super({'network':a['network'],'base':a}),this.#jsonRpcClient=a;}async['getObjects'](a){const b=chunk(a['objectIds'],0x32),c=[];for(const d of b){const e=await this.#jsonRpcClient['multiGetObjects']({'objectIds':d,'options':{'showOwner':!![],'showType':!![],'showBcs':a['include']?.['content']||a['include']?.['objectBcs']?!![]:![],'showPreviousTransaction':a['include']?.['previousTransaction']||a['include']?.['objectBcs']?!![]:![],'showStorageRebate':a['include']?.['objectBcs']??![],'showContent':a['include']?.['json']??![],'showDisplay':a['include']?.['display']??![]},'signal':a['signal']});for(const [f,g]of e['entries']())if(g['error'])c['push'](a7l['fromResponse'](g['error'],d[f]));else c['push'](parseObject(g['data'],a['include']));}return{'objects':c};}async['listOwnedObjects'](a){let b=null;if(a['type']){const d=a['type']['split']('::');if(d['length']===0x1)b={'Package':a['type']};else{if(d['length']===0x2)b={'MoveModule':{'package':d[0x0],'module':d[0x1]}};else b={'StructType':a['type']};}}const c=await this.#jsonRpcClient['getOwnedObjects']({'owner':a['owner'],'limit':a['limit'],'cursor':a['cursor'],'options':{'showOwner':!![],'showType':!![],'showBcs':a['include']?.['content']||a['include']?.['objectBcs']?!![]:![],'showPreviousTransaction':a['include']?.['previousTransaction']||a['include']?.['objectBcs']?!![]:![],'showStorageRebate':a['include']?.['objectBcs']??![],'showContent':a['include']?.['json']??![],'showDisplay':a['include']?.['display']??![]},'filter':b,'signal':a['signal']});return{'objects':c['data']['map'](e=>{if(e['error'])throw a7l['fromResponse'](e['error']);return parseObject(e['data'],a['include']);}),'hasNextPage':c['hasNextPage'],'cursor':c['nextCursor']??null};}async['listSharedObjects'](a){throw new Error('listSharedObjects\x20is\x20GraphQL-only:\x20the\x20JSON-RPC\x20API\x20has\x20no\x20global\x20shared-object\x20enumeration.\x20Use\x20the\x20GraphQL\x20transport\x20(WOWOK_TRANSPORT=graphql)\x20with\x20a\x20GraphQL\x20endpoint\x20configured\x20for\x20the\x20target\x20network.');}async['listCoins'](a){const b=await this.#jsonRpcClient['getCoins']({'owner':a['owner'],'coinType':a['coinType'],'limit':a['limit'],'cursor':a['cursor'],'signal':a['signal']});return{'objects':b['data']['map'](c=>({'objectId':c['coinObjectId'],'version':c['version'],'digest':c['digest'],'balance':c['balance'],'type':a7b('0x2::coin::Coin<'+c['coinType']+'>'),'owner':{'$kind':'AddressOwner','AddressOwner':a['owner']}})),'hasNextPage':b['hasNextPage'],'cursor':b['nextCursor']??null};}async['getBalance'](a){const b=await this.#jsonRpcClient['getBalance']({'owner':a['owner'],'coinType':a['coinType'],'signal':a['signal']}),c=b['fundsInAddressBalance']??'0',d=String(BigInt(b['totalBalance'])-BigInt(c));return{'balance':{'coinType':a7b(b['coinType']),'balance':b['totalBalance'],'coinBalance':d,'addressBalance':c}};}async['getCoinMetadata'](a){const b=a['coinType'],c=await this.#jsonRpcClient['getCoinMetadata']({'coinType':b,'signal':a['signal']});if(!c)return{'coinMetadata':null};return{'coinMetadata':{'id':c['id']??null,'decimals':c['decimals'],'name':c['name'],'symbol':c['symbol'],'description':c['description'],'iconUrl':c['iconUrl']??null}};}async['listBalances'](a){return{'balances':(await this.#jsonRpcClient['getAllBalances']({'owner':a['owner'],'signal':a['signal']}))['map'](b=>{const c=b['fundsInAddressBalance']??'0',d=String(BigInt(b['totalBalance'])-BigInt(c));return{'coinType':a7b(b['coinType']),'balance':b['totalBalance'],'coinBalance':d,'addressBalance':c};}),'hasNextPage':![],'cursor':null};}async['getTransaction'](a){return parseTransaction(await this.#jsonRpcClient['getTransactionBlock']({'digest':a['digest'],'options':{'showRawInput':!![],'showEffects':!![],'showObjectChanges':a['include']?.['objectTypes']??![],'showRawEffects':a['include']?.['effects']??![],'showEvents':a['include']?.['events']??![],'showBalanceChanges':a['include']?.['balanceChanges']??![]},'signal':a['signal']}),a['include']);}async['executeTransaction'](a){const b=await this.#jsonRpcClient['executeTransactionBlock']({'txBytes':toBase64(a['transaction']),'signatures':a['signatures'],'options':{'showRawInput':!![],'showEffects':!![],'showRawEffects':a['include']?.['effects']??![],'showEvents':a['include']?.['events']??![],'showObjectChanges':a['include']?.['objectTypes']??![],'showBalanceChanges':a['include']?.['balanceChanges']??![]},'signal':a['signal']});return touchWriteClock(this['network']),parseTransaction(b,a['include']);}async['simulateTransaction'](a){if(!(a['transaction']instanceof Uint8Array))await a['transaction']['build']({'client':this,'onlyTransactionKind':!![]});const b=a7p['from'](a['transaction']),c=a['transaction']instanceof Uint8Array?null:a7k['restore'](a['transaction']['getData']()),d=c?c['build']({'overrides':{'gasData':{'budget':c['gasData']['budget']??String(MAX_GAS),'price':c['gasData']['price']??String(await this.#jsonRpcClient['getReferenceGasPrice']()),'payment':c['gasData']['payment']??[]}}}):a['transaction'],f=b['getData']()['sender']??a7d('0x0'),g=a['checksEnabled']===![];let h=null;try{h=await this.#jsonRpcClient['dryRunTransactionBlock']({'txBytes':toBase64(d),'signal':a['signal']});}catch(q){if(!g)throw q;}let i=null;if(a['include']?.['commandResults']||g)try{i=await this.#jsonRpcClient['devInspectTransactionBlock']({'senderAddress':f,'txBytes':toBase64(d),'signal':a['signal']});}catch{}const j=!h||h['effects']['status']['status']!=='success',k=g&&j&&i?i:h??i;if(!k)throw new Error('simulateTransaction\x20failed:\x20no\x20results\x20from\x20dryRun\x20or\x20devInspect');const {effects:l,objectTypes:m}=parseTransactionEffectsJson({'effects':k['effects'],'objectChanges':(!j?h?.['objectChanges']:null)??[]});let n;if(a['include']?.['transaction']){n=parseTransactionBcs(d);if(c&&!j&&l['gasUsed']){if(!c['gasData']['budget'])n['gasData']['budget']=a7m(l['gasUsed']);}}const o={'digest':a7k['getDigestFromBytes'](d),'epoch':null,'status':l['status'],'effects':a['include']?.['effects']?l:void 0x0,'objectTypes':a['include']?.['objectTypes']?m:void 0x0,'signatures':[],'transaction':n??void 0x0,'bcs':a['include']?.['bcs']?d:void 0x0,'balanceChanges':a['include']?.['balanceChanges']&&h&&!j?h['balanceChanges']['map'](r=>({'coinType':a7b(r['coinType']),'address':parseOwnerAddress(r['owner']),'amount':r['amount']})):void 0x0,'events':a['include']?.['events']?k['events']?.['map'](r=>({'packageId':r['packageId'],'module':r['transactionModule'],'sender':r['sender'],'eventType':r['type'],'bcs':'bcs'in r?fromBase64(r['bcs']):new Uint8Array(),'json':r['parsedJson']??null}))??[]:void 0x0};let p;if(a['include']?.['commandResults']&&i?.['results'])p=i['results']['map'](r=>({'returnValues':(r['returnValues']??[])['map'](([s])=>({'bcs':new Uint8Array(s)})),'mutatedReferences':(r['mutableReferenceOutputs']??[])['map'](([,s])=>({'bcs':new Uint8Array(s)}))}));return l['status']['success']?{'$kind':'Transaction','Transaction':o,'commandResults':p}:{'$kind':'FailedTransaction','FailedTransaction':o,'commandResults':p};}async['getReferenceGasPrice'](a){const b=await this.#jsonRpcClient['getReferenceGasPrice']({'signal':a?.['signal']});return{'referenceGasPrice':String(b)};}async['getProtocolConfig'](a){const b=await this.#jsonRpcClient['getProtocolConfig']({'signal':a?.['signal']}),c={};for(const [d,e]of Object['entries'](b['attributes']))if(e===null)c[d]=null;else{if('u16'in e)c[d]=e['u16'];else{if('u32'in e)c[d]=e['u32'];else{if('u64'in e)c[d]=e['u64'];else{if('f64'in e)c[d]=e['f64'];else{if('bool'in e)c[d]=e['bool'];else{const f=Object['entries'](e);c[d]=f['length']===0x1?String(f[0x0][0x1]):JSON['stringify'](e);}}}}}}return{'protocolConfig':{'protocolVersion':b['protocolVersion'],'featureFlags':{...b['featureFlags']},'attributes':c}};}async['getCurrentSystemState'](a){const b=await this.#jsonRpcClient['getLatestWowSystemState']({'signal':a?.['signal']});return{'systemState':{'systemStateVersion':b['systemStateVersion'],'epoch':b['epoch'],'protocolVersion':b['protocolVersion'],'referenceGasPrice':b['referenceGasPrice']?.['toString']()??null,'epochStartTimestampMs':b['epochStartTimestampMs'],'safeMode':b['safeMode'],'safeModeStorageRewards':b['safeModeStorageRewards'],'safeModeComputationRewards':b['safeModeComputationRewards'],'safeModeStorageRebates':b['safeModeStorageRebates'],'safeModeNonRefundableStorageFee':b['safeModeNonRefundableStorageFee'],'parameters':{'epochDurationMs':b['epochDurationMs'],'stakeSubsidyStartEpoch':b['stakeSubsidyStartEpoch'],'maxValidatorCount':b['maxValidatorCount'],'minValidatorJoiningStake':b['minValidatorJoiningStake'],'validatorLowStakeThreshold':b['validatorLowStakeThreshold'],'validatorLowStakeGracePeriod':b['validatorLowStakeGracePeriod']},'storageFund':{'totalObjectStorageRebates':b['storageFundTotalObjectStorageRebates'],'nonRefundableBalance':b['storageFundNonRefundableBalance']},'stakeSubsidy':{'balance':b['stakeSubsidyBalance'],'distributionCounter':b['stakeSubsidyDistributionCounter'],'currentDistributionAmount':b['stakeSubsidyCurrentDistributionAmount'],'stakeSubsidyPeriodLength':b['stakeSubsidyPeriodLength'],'stakeSubsidyDecreaseRate':b['stakeSubsidyDecreaseRate']}}};}async['listDynamicFields'](a){const b=await this.#jsonRpcClient['getDynamicFields']({'parentId':a['parentId'],'limit':a['limit'],'cursor':a['cursor']});return{'dynamicFields':b['data']['map'](c=>{const d=c['type']==='DynamicObject',e=d?'0x2::dynamic_field::Field<0x2::dynamic_object_field::Wrapper<'+c['name']['type']+'>,\x200x2::object::ID>':'0x2::dynamic_field::Field<'+c['name']['type']+',\x20'+c['objectType']+'>',f=fromBase64(c['bcsName']),g=d?'0x2::dynamic_object_field::Wrapper<'+c['name']['type']+'>':c['name']['type'];return{'$kind':d?'DynamicObject':'DynamicField','fieldId':a7q(a['parentId'],g,f),'type':a7b(e),'name':{'type':c['name']['type'],'bcs':f},'valueType':c['objectType'],'childId':d?c['objectId']:void 0x0};}),'hasNextPage':b['hasNextPage'],'cursor':b['nextCursor']};}['resolveTransactionPlugin'](){return a7o;}async['getMoveFunction'](a){const b=await this.#jsonRpcClient['getNormalizedMoveFunction']({'package':a['packageId'],'moduleName':a['moduleName'],'functionName':a['name']});return{'function':{'packageId':a7d(a['packageId']),'moduleName':a['moduleName'],'name':a['name'],'visibility':parseVisibility(b['visibility']),'isEntry':b['isEntry'],'typeParameters':b['typeParameters']['map'](c=>({'isPhantom':![],'constraints':parseAbilities(c)})),'parameters':b['parameters']['map'](c=>parseNormalizedWowMoveType(c)),'returns':b['return']['map'](c=>parseNormalizedWowMoveType(c))}};}async['getChainIdentifier'](a){return this['cache']['read'](['chainIdentifier'],async()=>{return{'chainIdentifier':(await this.#jsonRpcClient['getCheckpoint']({'id':'0'}))['digest']};});}};function serializeObjectToBcs(a){if(a['bcs']?.['dataType']!=='moveObject')return;try{const b=a7b(a['bcs']['type']);let c;const d=a7d(a7t),e=a7b(a7t+'::coin::Coin<'+a7t+'::wow::WOW>'),f=a7b(a7s+'::staking_pool::StakedWow'),g=d+'::coin::Coin<';if(b===e)c={'GasCoin':null};else{if(b===f)c={'StakedWow':null};else{if(b['startsWith'](g)){const j=b['match'](new RegExp(d['replace'](/[.*+?^${}()|[\]\\]/g,'\x5c$&')+'::coin::Coin<(.+)>$'));if(j)c={'Coin':a7j['parseFromStr'](j[0x1],!![])};else throw new Error('Failed\x20to\x20parse\x20Coin\x20type');}else{const k=a7j['parseFromStr'](b,!![]);if(typeof k!=='object'||!('struct'in k))throw new Error('Expected\x20struct\x20type\x20tag');c={'Other':k['struct']};}}}const h=fromBase64(a['bcs']['bcsBytes']),i=convertOwnerToBcs(a['owner']);return a7i['Object']['serialize']({'data':{'Move':{'type':c,'hasPublicTransfer':a['bcs']['hasPublicTransfer'],'version':a['bcs']['version'],'contents':h}},'owner':i,'previousTransaction':a['previousTransaction'],'storageRebate':a['storageRebate']})['toBytes']();}catch{return;}}function parseObject(a,b){const c=a['bcs']?.['dataType']==='moveObject'?fromBase64(a['bcs']['bcsBytes']):void 0x0,d=b?.['objectBcs']?serializeObjectToBcs(a):void 0x0,e=a['type']&&a['type']['includes']('::')?a7b(a['type']):a['type']??'',f=b?.['json']&&a['content']?.['dataType']==='moveObject'?a['content']['fields']:b?.['json']?null:void 0x0,g=b?.['display']?a['display']?.['data']!=null?{'output':a['display']['data'],'errors':null}:null:void 0x0;return{'objectId':a['objectId'],'version':a['version'],'digest':a['digest'],'type':e,'content':b?.['content']?c:void 0x0,'owner':parseOwner(a['owner']),'previousTransaction':b?.['previousTransaction']?a['previousTransaction']??void 0x0:void 0x0,'objectBcs':d,'json':f,'display':g};}function parseOwner(a){if(a==='Immutable')return{'$kind':'Immutable','Immutable':!![]};if('ConsensusAddressOwner'in a)return{'$kind':'ConsensusAddressOwner','ConsensusAddressOwner':{'owner':a['ConsensusAddressOwner']['owner'],'startVersion':a['ConsensusAddressOwner']['start_version']}};if('AddressOwner'in a)return{'$kind':'AddressOwner','AddressOwner':a['AddressOwner']};if('ObjectOwner'in a)return{'$kind':'ObjectOwner','ObjectOwner':a['ObjectOwner']};if('Shared'in a)return{'$kind':'Shared','Shared':{'initialSharedVersion':a['Shared']['initial_shared_version']}};throw new Error('Unknown\x20owner\x20type:\x20'+JSON['stringify'](a));}function convertOwnerToBcs(a){if(a==='Immutable')return{'Immutable':null};if('AddressOwner'in a)return{'AddressOwner':a['AddressOwner']};if('ObjectOwner'in a)return{'ObjectOwner':a['ObjectOwner']};if('Shared'in a)return{'Shared':{'initialSharedVersion':a['Shared']['initial_shared_version']}};if(typeof a==='object'&&a!==null&&'ConsensusAddressOwner'in a)return{'ConsensusAddressOwner':{'startVersion':a['ConsensusAddressOwner']['start_version'],'owner':a['ConsensusAddressOwner']['owner']}};throw new Error('Unknown\x20owner\x20type:\x20'+JSON['stringify'](a));}function parseOwnerAddress(a){if(a==='Immutable')return null;if('ConsensusAddressOwner'in a)return a['ConsensusAddressOwner']['owner'];if('AddressOwner'in a)return a['AddressOwner'];if('ObjectOwner'in a)return a['ObjectOwner'];if('Shared'in a)return null;throw new Error('Unknown\x20owner\x20type:\x20'+JSON['stringify'](a));}function parseTransaction(a,b){const c={};if(b?.['objectTypes'])a['objectChanges']?.['forEach'](j=>{if(j['type']!=='published')c[j['objectId']]=a7b(j['objectType']);});let d,e=[],f;if(a['rawTransaction']){const j=a7i['SenderSignedData']['parse'](fromBase64(a['rawTransaction']))[0x0];e=j['txSignatures'];if(b?.['transaction']||b?.['bcs']){const k=a7i['TransactionData']['serialize'](j['intentMessage']['value'])['toBytes']();if(b?.['bcs'])f=k;if(b?.['transaction'])d={...a7k['restore']({'version':0x2,'sender':j['intentMessage']['value']['V1']['sender'],'expiration':convertBcsExpirationToInput(j['intentMessage']['value']['V1']['expiration']),'gasData':j['intentMessage']['value']['V1']['gasData'],'inputs':j['intentMessage']['value']['V1']['kind']['ProgrammableTransaction']['inputs'],'commands':j['intentMessage']['value']['V1']['kind']['ProgrammableTransaction']['commands']})};}}const g=a['effects']?.['status']?parseJsonRpcExecutionStatus(a['effects']['status'],a['effects']['abortError']):{'success':![],'error':{'$kind':'Unknown','message':'Unknown','Unknown':null}},h=a['rawEffects']?new Uint8Array(a['rawEffects']):null,i={'digest':a['digest'],'epoch':a['effects']?.['executedEpoch']??null,'status':g,'effects':b?.['effects']&&h?parseTransactionEffectsBcs(h):void 0x0,'objectTypes':b?.['objectTypes']?c:void 0x0,'transaction':d,'bcs':f,'signatures':e,'balanceChanges':b?.['balanceChanges']?a['balanceChanges']?.['map'](l=>({'coinType':a7b(l['coinType']),'address':parseOwnerAddress(l['owner']),'amount':l['amount']}))??[]:void 0x0,'events':b?.['events']?a['events']?.['map'](l=>({'packageId':l['packageId'],'module':l['transactionModule'],'sender':l['sender'],'eventType':l['type'],'bcs':'bcs'in l?fromBase64(l['bcs']):new Uint8Array(),'json':l['parsedJson']??null}))??[]:void 0x0};return g['success']?{'$kind':'Transaction','Transaction':i}:{'$kind':'FailedTransaction','FailedTransaction':i};}function parseTransactionEffectsJson({bytes:a,effects:b,objectChanges:c}){const d=[],e=[],f={};return c?.['forEach'](g=>{switch(g['type']){case'published':d['push']({'objectId':g['packageId'],'inputState':'DoesNotExist','inputVersion':null,'inputDigest':null,'inputOwner':null,'outputState':'PackageWrite','outputVersion':g['version'],'outputDigest':g['digest'],'outputOwner':null,'idOperation':'Created'});break;case'transferred':d['push']({'objectId':g['objectId'],'inputState':'Exists','inputVersion':g['version'],'inputDigest':g['digest'],'inputOwner':{'$kind':'AddressOwner','AddressOwner':g['sender']},'outputState':'ObjectWrite','outputVersion':g['version'],'outputDigest':g['digest'],'outputOwner':parseOwner(g['recipient']),'idOperation':'None'}),f[g['objectId']]=a7b(g['objectType']);break;case'mutated':d['push']({'objectId':g['objectId'],'inputState':'Exists','inputVersion':g['previousVersion'],'inputDigest':null,'inputOwner':parseOwner(g['owner']),'outputState':'ObjectWrite','outputVersion':g['version'],'outputDigest':g['digest'],'outputOwner':parseOwner(g['owner']),'idOperation':'None'}),f[g['objectId']]=a7b(g['objectType']);break;case'deleted':d['push']({'objectId':g['objectId'],'inputState':'Exists','inputVersion':g['version'],'inputDigest':b['deleted']?.['find'](h=>h['objectId']===g['objectId'])?.['digest']??null,'inputOwner':null,'outputState':'DoesNotExist','outputVersion':null,'outputDigest':null,'outputOwner':null,'idOperation':'Deleted'}),f[g['objectId']]=a7b(g['objectType']);break;case'wrapped':d['push']({'objectId':g['objectId'],'inputState':'Exists','inputVersion':g['version'],'inputDigest':null,'inputOwner':{'$kind':'AddressOwner','AddressOwner':g['sender']},'outputState':'ObjectWrite','outputVersion':g['version'],'outputDigest':b['wrapped']?.['find'](h=>h['objectId']===g['objectId'])?.['digest']??null,'outputOwner':{'$kind':'ObjectOwner','ObjectOwner':g['sender']},'idOperation':'None'}),f[g['objectId']]=a7b(g['objectType']);break;case'created':d['push']({'objectId':g['objectId'],'inputState':'DoesNotExist','inputVersion':null,'inputDigest':null,'inputOwner':null,'outputState':'ObjectWrite','outputVersion':g['version'],'outputDigest':g['digest'],'outputOwner':parseOwner(g['owner']),'idOperation':'Created'}),f[g['objectId']]=a7b(g['objectType']);break;}}),{'objectTypes':f,'effects':{'bcs':a??null,'version':0x2,'status':parseJsonRpcExecutionStatus(b['status'],b['abortError']),'gasUsed':b['gasUsed'],'transactionDigest':b['transactionDigest'],'gasObject':{'objectId':b['gasObject']?.['reference']['objectId'],'inputState':'Exists','inputVersion':null,'inputDigest':null,'inputOwner':null,'outputState':'ObjectWrite','outputVersion':b['gasObject']['reference']['version'],'outputDigest':b['gasObject']['reference']['digest'],'outputOwner':parseOwner(b['gasObject']['owner']),'idOperation':'None'},'eventsDigest':b['eventsDigest']??null,'dependencies':b['dependencies']??[],'lamportVersion':b['gasObject']['reference']['version'],'changedObjects':d,'unchangedConsensusObjects':e,'auxiliaryDataDigest':null}};}function parseNormalizedWowMoveType(a){if(typeof a!=='string'){if('Reference'in a)return{'reference':'immutable','body':parseNormalizedWowMoveTypeBody(a['Reference'])};if('MutableReference'in a)return{'reference':'mutable','body':parseNormalizedWowMoveTypeBody(a['MutableReference'])};}return{'reference':null,'body':parseNormalizedWowMoveTypeBody(a)};}function parseNormalizedWowMoveTypeBody(a){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'};}if(typeof a==='string')throw new Error('Unknown\x20type:\x20'+a);if('Vector'in a)return{'$kind':'vector','vector':parseNormalizedWowMoveTypeBody(a['Vector'])};if('Struct'in a)return{'$kind':'datatype','datatype':{'typeName':a7d(a['Struct']['address'])+'::'+a['Struct']['module']+'::'+a['Struct']['name'],'typeParameters':a['Struct']['typeArguments']['map'](b=>parseNormalizedWowMoveTypeBody(b))}};if('TypeParameter'in a)return{'$kind':'typeParameter','index':a['TypeParameter']};throw new Error('Unknown\x20type:\x20'+JSON['stringify'](a));}function parseAbilities(a){return a['abilities']['map'](b=>{switch(b){case'Copy':return'copy';case'Drop':return'drop';case'Store':return'store';case'Key':return'key';default:return'unknown';}});}function parseVisibility(a){switch(a){case'Public':return'public';case'Private':return'private';case'Friend':return'friend';default:return'unknown';}}const WOW_CLIENT_BRAND=Symbol['for']('@mysten/WowJsonRpcClient');function isWowJsonRpcClient(a){return typeof a==='object'&&a!==null&&a[WOW_CLIENT_BRAND]===!![];}var WowJsonRpcClient=class extends BaseClient{get[WOW_CLIENT_BRAND](){return!![];}constructor(a){super({'network':a['network']}),this['jsonRpc']=this,this['transport']=a['transport']??new JsonRpcHTTPTransport({'url':a['url']}),this['core']=new JSONRpcCoreClient({'jsonRpcClient':this});}async['getRpcApiVersion']({signal:a}={}){return(await this['transport']['request']({'method':'rpc.discover','params':[],'signal':a}))['info']['version'];}async['getCoins']({coinType:a,owner:b,cursor:c,limit:d,signal:e}){if(!b||!a7e(a7d(b)))throw new Error('Invalid\x20Wow\x20address');const f=await this['transport']['request']({'method':'wx_getCoins','params':[b,a,c,d],'signal':e});return{...f,'data':f['data']['filter'](g=>!a7n(g['digest']))};}async['getAllCoins'](a){if(!a['owner']||!a7e(a7d(a['owner'])))throw new Error('Invalid\x20Wow\x20address');const b=await this['transport']['request']({'method':'wx_getAllCoins','params':[a['owner'],a['cursor'],a['limit']],'signal':a['signal']});return{...b,'data':b['data']['filter'](c=>!a7n(c['digest']))};}async['getBalance']({owner:a,coinType:b,signal:c}){if(!a||!a7e(a7d(a)))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getBalance','params':[a,b],'signal':c});}async['getAllBalances'](a){if(!a['owner']||!a7e(a7d(a['owner'])))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getAllBalances','params':[a['owner']],'signal':a['signal']});}async['getCoinMetadata']({coinType:a,signal:b}){return await this['transport']['request']({'method':'wx_getCoinMetadata','params':[a],'signal':b});}async['getTotalSupply']({coinType:a,signal:b}){return await this['transport']['request']({'method':'wx_getTotalSupply','params':[a],'signal':b});}async['call'](a,b,{signal:c}={}){return await this['transport']['request']({'method':a,'params':b,'signal':c});}async['getMoveFunctionArgTypes']({package:a,module:b,function:c,signal:d}){return await this['transport']['request']({'method':'w_getMoveFunctionArgTypes','params':[a,b,c],'signal':d});}async['getNormalizedMoveModulesByPackage']({package:a,signal:b}){return await this['transport']['request']({'method':'w_getNormalizedMoveModulesByPackage','params':[a],'signal':b});}async['getNormalizedMoveModule']({package:a,moduleName:b,signal:c}){return await this['transport']['request']({'method':'w_getNormalizedMoveModule','params':[a,b],'signal':c});}async['getNormalizedMoveFunction']({package:a,moduleName:b,functionName:c,signal:d}){return await this['transport']['request']({'method':'w_getNormalizedMoveFunction','params':[a,b,c],'signal':d});}async['getNormalizedMoveStruct']({package:a,moduleName:b,structName:c,signal:d}){return await this['transport']['request']({'method':'w_getNormalizedMoveStruct','params':[a,b,c],'signal':d});}async['getOwnedObjects'](a){if(!a['owner']||!a7e(a7d(a['owner'])))throw new Error('Invalid\x20Wow\x20address');const b=a['filter']?{...a['filter']}:void 0x0;return await this['transport']['request']({'method':'wx_getOwnedObjects','params':[a['owner'],{'filter':b,'options':a['options']},a['cursor'],a['limit']],'signal':a['signal']});}async['getObject'](a){if(!a['objectId']||!a7f(a7g(a['objectId'])))throw new Error('Invalid\x20Wow\x20Object\x20id');return await this['transport']['request']({'method':'w_getObject','params':[a['objectId'],a['options']],'signal':a['signal']});}async['tryGetPastObject'](a){return await this['transport']['request']({'method':'w_tryGetPastObject','params':[a['objectId'],a['version'],a['options']],'signal':a['signal']});}async['multiGetObjects'](a){if(!a||!a['objectIds']||!Array['isArray'](a['objectIds']))throw new Error('Invalid\x20input\x20for\x20multiGetObjects:\x20expected\x20{\x20objectIds:\x20string[]\x20},\x20got\x20'+JSON['stringify'](a));a['objectIds']['forEach'](b=>{if(!b||!a7f(a7g(b)))throw new Error('Invalid\x20Wow\x20Object\x20id\x20'+b);});if(a['objectIds']['length']!==new Set(a['objectIds'])['size'])throw new Error('Duplicate\x20object\x20ids\x20in\x20batch\x20call\x20'+a['objectIds']);return await this['transport']['request']({'method':'w_multiGetObjects','params':[a['objectIds'],a['options']],'signal':a['signal']});}async['queryTransactionBlocks']({filter:a,options:b,cursor:c,limit:d,order:e,signal:f}){return await this['transport']['request']({'method':'wx_queryTransactionBlocks','params':[{'filter':a,'options':b},c,d,e==='descending'],'signal':f});}async['getTransactionBlock'](a){if(!a7a(a['digest']))throw new Error('Invalid\x20Transaction\x20digest');return await this['transport']['request']({'method':'w_getTransactionBlock','params':[a['digest'],a['options']],'signal':a['signal']});}async['multiGetTransactionBlocks'](a){a['digests']['forEach'](b=>{if(!a7a(b))throw new Error('Invalid\x20Transaction\x20digest\x20'+b);});if(a['digests']['length']!==new Set(a['digests'])['size'])throw new Error('Duplicate\x20digests\x20in\x20batch\x20call\x20'+a['digests']);return await this['transport']['request']({'method':'w_multiGetTransactionBlocks','params':[a['digests'],a['options']],'signal':a['signal']});}async['executeTransactionBlock']({txBytes:a,signatures:b,options:c,requestType:d,signal:e}){return await this['transport']['request']({'method':'w_executeTransactionBlock','params':[a,b,c,d],'signal':e});}async['signAndExecuteTransaction']({transaction:a,signer:b,options:c,requestType:d,signal:e}){let f;if(a instanceof Uint8Array)f=a;else a['setSenderIfNotSet'](b['toWowAddress']()),f=await a['build']({'client':this});const {signature:g,bytes:h}=await b['signTransaction'](f),i=0x5a*0x3e8,j=a7k['getDigestFromBytes'](f),k=new Promise((l,m)=>{setTimeout(()=>m(new Error('Transaction\x20'+j+'\x20was\x20submitted\x20but\x20not\x20confirmed\x20within\x20'+i+'ms.\x20It\x20may\x20still\x20be\x20finalized\x20on-chain\x20—\x20verify\x20via\x20onchain_transaction\x20with\x20this\x20digest\x20before\x20retrying.')),i)['unref']?.();});return k['catch'](()=>{}),Promise['race']([this['executeTransactionBlock']({'txBytes':h,'signatures':[g],'options':c,'requestType':d,'signal':e}),k]);}async['getTotalTransactionBlocks']({signal:a}={}){const b=await this['transport']['request']({'method':'w_getTotalTransactionBlocks','params':[],'signal':a});return BigInt(b);}async['getReferenceGasPrice']({signal:a}={}){const b=await this['transport']['request']({'method':'wx_getReferenceGasPrice','params':[],'signal':a});return BigInt(b);}async['getStakes'](a){if(!a['owner']||!a7e(a7d(a['owner'])))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getStakes','params':[a['owner']],'signal':a['signal']});}async['getStakesByIds'](a){return a['stakedWowIds']['forEach'](b=>{if(!b||!a7f(a7g(b)))throw new Error('Invalid\x20Wow\x20Stake\x20id\x20'+b);}),await this['transport']['request']({'method':'wx_getStakesByIds','params':[a['stakedWowIds']],'signal':a['signal']});}async['getLatestWowSystemState']({signal:a}={}){return await this['transport']['request']({'method':'wx_getLatestWowSystemState','params':[],'signal':a});}async['queryEvents']({query:a,cursor:b,limit:c,order:d,signal:e}){return await this['transport']['request']({'method':'wx_queryEvents','params':[a,b,c,d==='descending'],'signal':e});}async['devInspectTransactionBlock'](a){return await this['transport']['request']({'method':'w_devInspectTransactionBlock','params':[a['senderAddress'],a['txBytes'],a['gasPrice'],a['epoch'],a['additionalArgs']],'signal':a['signal']});}async['dryRunTransactionBlock'](a){return await this['transport']['request']({'method':'w_dryRunTransactionBlock','params':[a['txBytes']],'signal':a['signal']});}async['getDynamicFields'](a){if(!a['parentId']||!a7f(a7g(a['parentId'])))throw new Error('Invalid\x20Wow\x20Object\x20id');return await this['transport']['request']({'method':'wx_getDynamicFields','params':[a['parentId'],a['cursor'],a['limit']],'signal':a['signal']});}async['getDynamicFieldObject'](a){return await this['transport']['request']({'method':'wx_getDynamicFieldObject','params':[a['parentId'],a['name']],'signal':a['signal']});}async['getLatestCheckpointSequenceNumber']({signal:a}={}){const b=await this['transport']['request']({'method':'w_getLatestCheckpointSequenceNumber','params':[],'signal':a});return String(b);}async['getCheckpoint'](a){return await this['transport']['request']({'method':'w_getCheckpoint','params':[a['id']],'signal':a['signal']});}async['getCheckpoints'](a){return await this['transport']['request']({'method':'w_getCheckpoints','params':[a['cursor'],a?.['limit'],a['descendingOrder']],'signal':a['signal']});}async['getCommitteeInfo'](a){return await this['transport']['request']({'method':'wx_getCommitteeInfo','params':[a?.['epoch']],'signal':a?.['signal']});}async['getEpochs'](a){return await this['transport']['request']({'method':'wx_getEpochs','params':[a?.['cursor'],a?.['limit'],a?.['descendingOrder']],'signal':a?.['signal']});}async['getCurrentEpoch']({signal:a}={}){return await this['transport']['request']({'method':'wx_getCurrentEpoch','params':[],'signal':a});}async['getValidatorsApy']({signal:a}={}){return await this['transport']['request']({'method':'wx_getValidatorsApy','params':[],'signal':a});}async['getChainIdentifier']({signal:a}={}){return toHex(fromBase58((await this['getCheckpoint']({'id':'0','signal':a}))['digest'])['slice'](0x0,0x4));}async['getProtocolConfig'](a){return await this['transport']['request']({'method':'w_getProtocolConfig','params':[a?.['version']],'signal':a?.['signal']});}async['waitForTransaction']({signal:a,timeout:timeout=0x5a*0x3e8,pollInterval:pollInterval=0x2*0x3e8,...b}){const c=AbortSignal['timeout'](timeout),d=new Promise((e,f)=>{c['addEventListener']('abort',()=>{f(new Error('Transaction\x20'+b['digest']+'\x20was\x20submitted\x20but\x20not\x20confirmed\x20within\x20'+timeout+'ms.\x20It\x20may\x20still\x20be\x20finalized\x20on-chain\x20—\x20verify\x20via\x20onchain_transaction\x20with\x20this\x20digest\x20before\x20retrying.'));});});d['catch'](()=>{});while(!c['aborted']){a?.['throwIfAborted']();try{return await this['getTransactionBlock'](b);}catch{await Promise['race']([new Promise(e=>setTimeout(e,pollInterval)),d]);}}c['throwIfAborted']();throw new Error('Unexpected\x20error\x20while\x20waiting\x20for\x20transaction\x20block.');}},WowClient=class extends WowJsonRpcClient{constructor(a){super({'url':a['url'],'network':a['network']??'testnet'});}};export{CoreClient as _,lastWriteAtAny as a,touchWriteClock as c,WowHTTPStatusError as d,WowHTTPTransportError as f,parseTransactionEffectsBcs as g,parseTransactionBcs as h,isRealtimeWindow as i,JsonRpcHTTPTransport as l,formatMoveAbortMessage as m,WowJsonRpcClient as n,lastWriteAtFor as o,extractStatusFromEffectsBcs as p,isWowJsonRpcClient as r,setRealTimeWindowMs as s,WowClient as t,JsonRpcError as u,BaseClient as v,ClientCache as y};
@@ -1 +0,0 @@
1
- let WErrors=function(a){return a['AccountNotFound']='account\x20not\x20found',a['AddressNotFound']='address\x20not\x20found',a['IsValidDescription']='invalid\x20description',a['IsValidName']='invalid\x20name',a['IsValidName_AllowEmpty']='invalid\x20name',a['IsValidEndpoint']='invalid\x20endpoint',a['IsValidAddress']='invalid\x20address',a['IsValidArgType']='invalid\x20argument\x20type',a['IsValidTokenType']='invalid\x20token\x20type',a['IsValidUint']='invalid\x20uint',a['IsValidInt']='invalid\x20int',a['IsValidU8']='invalid\x20u8',a['IsValidU16']='invalid\x20u16',a['IsValidU32']='invalid\x20u32',a['IsValidU64']='invalid\x20u64',a['IsValidU128']='invalid\x20u128',a['IsValidU256']='invalid\x20u256',a['IsValidRate']='invalid\x20rate[0-10000]',a['IsValidArray']='invalid\x20array',a['IsValidObjects']='invalid\x20objects',a['AllInvalid']='one\x20valid\x20at\x20least',a['InvalidParam']='invalid\x20parameter',a['IsValidPermissionIndex']='invalid\x20permission\x20index',a['IsValidKey']='invalid\x20key',a['Fail']='fail',a['IsValidIdentifier']='identifier\x20invalid',a['IsValidHttpUrl']='invalid\x20url',a['IsValidBizPermissionIndex']='invalid\x20biz-permission\x20id[1000\x20-\x2065535]',a['BcsTypeInvalid']='invalid\x20bcs\x20type',a['IsValidServiceItemName']='invalid\x20service\x20item\x20name',a['IsValidCoinType']='not\x20the\x20coin\x20type',a['IsValidGuardIdentifier']='guard\x20identifier\x20invalid',a['NoPermission']='no\x20permission',a['IsValidValue']='invalid\x20value',a['IsValidValueType']='invalid\x20value\x20type',a['IsValidLocation']='invalid\x20location',a['NetworkInvalid']='protocol\x20network\x20not\x20specified',a['WitnessTypeInvalid']='witness\x20type\x20invalid',a['AddressCountExceeded']='address\x20count\x20exceeded',a['NumberCountExceeded']='number\x20count\x20exceeded',a['NewGuardCheckFailed']='new\x20guard\x20check\x20failed',a['GuardTableItemLengthExceeded']='guard\x20table\x20item\x20length\x20exceeded',a['AccountPersistentStorageNotSet']='account\x20persistent\x20storage\x20not\x20set',a['AccountPersistentStorageNotFound']='account\x20persistent\x20storage\x20not\x20found',a['AccountNameExist']='account\x20name\x20exist',a['ConfigPersistentStorageNotSet']='config\x20persistent\x20storage\x20not\x20set',a['TokenNotFoundLocally']='token\x20not\x20found',a['LocalMarkNameExist']='local\x20mark\x20name\x20exist',a['MaxObjectsPerQuery']='max\x20objects\x20per\x20query',a['ResourceTagCountExceeded']='resource\x20tag\x20count\x20exceeded',a['ParseObjectContentFailed']='parse\x20object\x20content\x20failed',a;}({});var WException=class WException extends Error{constructor(a,b,c){const d=a['toString']()+(b?':'+String(b):'');super(d),this['code']=a,this['details']=b,this['path']=c,Object['setPrototypeOf'](this,WException['prototype']);}['getErrorMessage'](){return this['message'];}['getErrorCode'](){return this['code'];}['getDetails'](){return this['details'];}};function isWException(a){return a instanceof WException;}const W_ERROR=(a,b,c)=>{throw new WException(a,b,c);},W_SUCCESS=a=>({'success':!![],'data':a}),W_FAILURE=(a,b)=>({'success':![],'error':new WException(a,b)});function WValidate(a){return function(...b){try{return a['apply'](this,b);}catch(c){if(c instanceof WException)throw c;throw new WException('fail',c);}};}const W_SAFE=(a,b,c)=>{try{return W_SUCCESS(a());}catch(d){if(d instanceof WException)return W_FAILURE(d['code'],d['details']);return W_FAILURE(b||'fail',c||d);}},W_ENSURE=(a,b,c)=>{if(!a)W_ERROR(b,c);},W_VALIDATE_PARAM=(a,b,c,d)=>{if(!b(a))W_ERROR(c,d);},MoveErrors=[{'module':'service','code':0x1,'description':'Maximum\x20sale\x20count\x20exceeded'},{'module':'service','code':0x2,'description':'Maximum\x20repository\x20count\x20exceeded'},{'module':'service','code':0x3,'description':'Maximum\x20arbitration\x20count\x20exceeded'},{'module':'service','code':0x4,'description':'Maximum\x20WIP\x20length\x20exceeded'},{'module':'service','code':0x5,'description':'Maximum\x20WIP\x20hash\x20length\x20exceeded'},{'module':'service','code':0x6,'description':'Service\x20already\x20published'},{'module':'service','code':0x7,'description':'Service\x20not\x20published'},{'module':'service','code':0x8,'description':'Invalid\x20off-on\x20discount\x20rates'},{'module':'service','code':0x9,'description':'Maximum\x20discount\x20count\x20per\x20operation\x20exceeded'},{'module':'service','code':0xa,'description':'Discount\x20not\x20transferable'},{'module':'service','code':0xb,'description':'Discount\x20receiver\x20empty'},{'module':'service','code':0xc,'description':'Discount\x20count\x20empty'},{'module':'service','code':0xd,'description':'Maximum\x20discount\x20receiver\x20per\x20operation\x20exceeded'},{'module':'service','code':0xe,'description':'Maximum\x20total\x20discount\x20count\x20exceeded'},{'module':'service','code':0xf,'description':'Service\x20discount\x20does\x20not\x20match'},{'module':'service','code':0x10,'description':'Stock\x20not\x20enough'},{'module':'service','code':0x11,'description':'Invalid\x20quote'},{'module':'service','code':0x12,'description':'Buyer\x20guard\x20passport\x20required'},{'module':'service','code':0x13,'description':'Service\x20is\x20paused'},{'module':'service','code':0x14,'description':'Coin\x20not\x20enough'},{'module':'service','code':0x15,'description':'Maximum\x20required\x20info\x20size\x20exceeded'},{'module':'service','code':0x16,'description':'Machine\x20does\x20not\x20match'},{'module':'service','code':0x17,'description':'No\x20allocator\x20configured'},{'module':'service','code':0x18,'description':'Critical\x20setting\x20lock\x20duration\x20not\x20exceeded.\x20After\x20Service\x20is\x20published,\x20modifications\x20to\x20\x27order_allocators\x27,\x20\x27rewards\x27,\x20\x27arbitrations\x27,\x20\x27machine\x27,\x20and\x20withdrawal\x20from\x20\x27compensation_fund\x27\x20must\x20exceed\x20the\x20\x27setting_lock_duration\x27\x20lock\x20time'},{'module':'service','code':0x19,'description':'Arbitration\x20not\x20set\x20with\x20compensation\x20fund'},{'module':'service','code':0x1a,'description':'Order\x20service\x20does\x20not\x20match'},{'module':'service','code':0x1b,'description':'Compensation\x20does\x20not\x20match'},{'module':'service','code':0x1c,'description':'Maximum\x20reward\x20count\x20exceeded'},{'module':'service','code':0x1d,'description':'Invalid\x20discount\x20type'},{'module':'service','code':0x1e,'description':'Invalid\x20timestamp\x20ms\x20end'},{'module':'service','code':0x1f,'description':'WIP\x20hash\x20not\x20match'},{'module':'service','code':0x20,'description':'Sale\x20item\x20not\x20found'},{'module':'service','code':0x21,'description':'Arbitration\x20permission\x20conflicts\x20with\x20Service\x20permission\x20—\x20Service\x20cannot\x20use\x20an\x20Arbitration\x20whose\x20permission\x20is\x20the\x20same\x20as\x20its\x20own,\x20because\x20the\x20Service\x20owner\x20would\x20then\x20control\x20dispute\x20resolution,\x20breaking\x20fairness'},{'module':'service','code':0x22,'description':'Sale\x20item\x20is\x20suspended'},{'module':'service','code':0x23,'description':'Discount\x20time\x20window\x20invalid\x20—\x20current\x20time\x20is\x20outside\x20the\x20discount\x27s\x20[time_start,\x20time_end]\x20range'},{'module':'permission','code':0x1,'description':'Not\x20the\x20builder'},{'module':'permission','code':0x2,'description':'Not\x20admin'},{'module':'permission','code':0x3,'description':'Address\x20count\x20in\x20permission\x20exceeded\x20limit'},{'module':'permission','code':0x4,'description':'Permission\x20count\x20exceeded\x20limit'},{'module':'permission','code':0x5,'description':'Permission\x20denied'},{'module':'permission','code':0x6,'description':'Admin\x20count\x20exceeded\x20limit'},{'module':'permission','code':0x7,'description':'Permission\x20index\x20not\x20found'},{'module':'permission','code':0x8,'description':'Permission\x20does\x20not\x20match'},{'module':'passport','code':0x1,'description':'Guard\x20count\x20exceeded\x20limit'},{'module':'passport','code':0x2,'description':'Relies\x20guard\x20not\x20added'},{'module':'passport','code':0x3,'description':'Submission\x20size\x20exceeded\x20limit'},{'module':'passport','code':0x4,'description':'Already\x20verified'},{'module':'passport','code':0x5,'description':'Not\x20verified'},{'module':'passport','code':0x6,'description':'Not\x20impact\x20guard'},{'module':'passport','code':0x7,'description':'Verification\x20failed'},{'module':'passport','code':0x8,'description':'Transaction\x20does\x20not\x20match'},{'module':'passport','code':0x9,'description':'Impact\x20guard\x20not\x20found'},{'module':'passport','code':0xa,'description':'Submission\x20not\x20found'},{'module':'passport','code':0xb,'description':'Digest\x20not\x20match'},{'module':'reward','code':0x1,'description':'Guard\x20locked\x20time\x20not\x20increasing'},{'module':'reward','code':0x2,'description':'Guard\x20expired'},{'module':'reward','code':0x3,'description':'Guard\x20count\x20exceeded\x20limit'},{'module':'reward','code':0x4,'description':'Recipient\x20identifier\x20not\x20address\x20type'},{'module':'reward','code':0x5,'description':'Amount\x20not\x20u64\x20type'},{'module':'reward','code':0x6,'description':'Insufficient\x20balance'},{'module':'reward','code':0x7,'description':'Guard\x20not\x20found'},{'module':'reward','code':0x8,'description':'Record\x20count\x20exceeded\x20limit'},{'module':'reward','code':0xa,'description':'Invalid\x20guard\x20locked\x20time'},{'module':'reward','code':0xb,'description':'Guard\x20locked\x20time\x20invalid'},{'module':'reward','code':0xc,'description':'Store\x20from\x20ID\x20not\x20compatible'},{'module':'arbitration','code':0x1,'description':'Guard\x20identifier\x20not\x20number\x20type'},{'module':'arbitration','code':0x2,'description':'Voting\x20guard\x20already\x20used'},{'module':'arbitration','code':0x3,'description':'Arbitration\x20does\x20not\x20match'},{'module':'arbitration','code':0x4,'description':'Arbitration\x20is\x20paused'},{'module':'arbitration','code':0x5,'description':'Fee\x20not\x20enough'},{'module':'arbitration','code':0x6,'description':'Passport\x20required'},{'module':'arbitration','code':0x7,'description':'Guard\x20identifier\x20number\x20invalid'},{'module':'arbitration','code':0x8,'description':'Voting\x20guard\x20not\x20found'},{'module':'arbitration','code':0x9,'description':'Maximum\x20voting\x20guard\x20count\x20exceeded'},{'module':'demand','code':0x1,'description':'Maximum\x20reward\x20count\x20exceeded'},{'module':'demand','code':0x2,'description':'Maximum\x20guard\x20count\x20exceeded'},{'module':'demand','code':0x3,'description':'Passport\x20required'},{'module':'demand','code':0x4,'description':'Guard\x20not\x20found'},{'module':'progress','code':0x1,'description':'Maximum\x20context\x20repository\x20count\x20exceeded'},{'module':'progress','code':0x2,'description':'Maximum\x20named\x20operator\x20count\x20exceeded'},{'module':'progress','code':0x3,'description':'Maximum\x20named\x20operator\x20address\x20count\x20exceeded'},{'module':'progress','code':0x4,'description':'Machine\x20does\x20not\x20match'},{'module':'progress','code':0x5,'description':'Task\x20already\x20set'},{'module':'progress','code':0x6,'description':'Not\x20the\x20holder'},{'module':'progress','code':0x7,'description':'Forward\x20already\x20accomplished'},{'module':'progress','code':0x8,'description':'Permission\x20not\x20defined\x20when\x20hold'},{'module':'progress','code':0x9,'description':'Passport\x20required'},{'module':'progress','code':0xa,'description':'Order\x20does\x20not\x20match'},{'module':'guard','code':0x1,'description':'Input\x20empty'},{'module':'guard','code':0x2,'description':'Input\x20size\x20exceeded\x20limit'},{'module':'guard','code':0x3,'description':'Table\x20size\x20exceeded\x20limit'},{'module':'guard','code':0x5,'description':'Dependent\x20count\x20exceeded\x20limit'},{'module':'guard','code':0x6,'description':'Not\x20dependent\x20guard'},{'module':'guard','code':0x7,'description':'Guard\x20cannot\x20depend\x20on\x20itself'},{'module':'guard','code':0x8,'description':'Guard\x20IDs\x20parse\x20error'},{'module':'guard','code':0x9,'description':'Guard\x20IDs\x20type\x20error'},{'module':'guard','code':0xa,'description':'ID\x20value\x20count\x20not\x20equal\x20to\x20guard\x20count'},{'module':'guard','code':0xb,'description':'Submission\x20ID\x20not\x20found'},{'module':'guard','code':0xc,'description':'Submission\x20value\x20type\x20error'},{'module':'order','code':0x1,'description':'Not\x20the\x20owner'},{'module':'order','code':0x2,'description':'Maximum\x20agent\x20count\x20exceeded'},{'module':'order','code':0x3,'description':'Progress\x20not\x20specified'},{'module':'order','code':0x5,'description':'No\x20operation\x20permission'},{'module':'order','code':0x6,'description':'Maximum\x20dispute\x20count\x20exceeded'},{'module':'order','code':0x7,'description':'Order\x20already\x20claimed'},{'module':'order','code':0x8,'description':'Allocation\x20not\x20specified'},{'module':'order','code':0x9,'description':'Allocation\x20already\x20specified'},{'module':'order','code':0xa,'description':'Progress\x20already\x20specified'},{'module':'machine','code':0x1,'description':'Maximum\x20consensus\x20repositories\x20exceeded'},{'module':'machine','code':0x2,'description':'Machine\x20not\x20published'},{'module':'machine','code':0x3,'description':'Machine\x20already\x20published'},{'module':'machine','code':0x4,'description':'Maximum\x20forward\x20order\x20count\x20exceeded'},{'module':'machine','code':0x5,'description':'Maximum\x20node\x20count\x20exceeded'},{'module':'machine','code':0x6,'description':'Duplicate\x20forward\x20name'},{'module':'machine','code':0x7,'description':'Duplicate\x20node\x20previous'},{'module':'machine','code':0x8,'description':'Old\x20node\x20name\x20does\x20not\x20exist'},{'module':'machine','code':0x9,'description':'New\x20node\x20name\x20already\x20exists'},{'module':'machine','code':0xa,'description':'Node\x20not\x20found'},{'module':'machine','code':0xb,'description':'Machine\x20is\x20paused'},{'module':'machine','code':0xc,'description':'Retained\x20submission\x20error'},{'module':'machine','code':0xd,'description':'Info\x20not\x20found'},{'module':'machine','code':0xe,'description':'Permission\x20not\x20defined'},{'module':'machine','code':0xf,'description':'Maximum\x20node\x20pair\x20count\x20exceeded'},{'module':'machine','code':0x10,'description':'Maximum\x20forward\x20count\x20exceeded'},{'module':'treasury','code':0x1,'description':'Maximum\x20external\x20deposit\x20guard\x20count\x20exceeded'},{'module':'treasury','code':0x2,'description':'Maximum\x20external\x20withdraw\x20guard\x20count\x20exceeded'},{'module':'treasury','code':0x3,'description':'External\x20deposit\x20guard\x20not\x20found'},{'module':'treasury','code':0x4,'description':'External\x20withdraw\x20guard\x20not\x20found'},{'module':'treasury','code':0x5,'description':'Identifier\x20not\x20number\x20type'},{'module':'treasury','code':0x6,'description':'Deposit\x20insufficient\x20amount'},{'module':'treasury','code':0x7,'description':'Withdraw\x20insufficient\x20amount'},{'module':'treasury','code':0x8,'description':'Store\x20from\x20ID\x20not\x20compatible'},{'module':'treasury','code':0x9,'description':'Withdraw\x20balance\x20insufficient'},{'module':'arb','code':0x1,'description':'Maximum\x20proposition\x20count\x20exceeded'},{'module':'arb','code':0x2,'description':'Arbitration\x20order\x20does\x20not\x20match'},{'module':'arb','code':0x3,'description':'Status\x20does\x20not\x20match'},{'module':'arb','code':0x4,'description':'Voting\x20deadline\x20not\x20passed'},{'module':'arb','code':0x5,'description':'Proposition\x20not\x20found'},{'module':'arb','code':0x6,'description':'Maximum\x20voter\x20count\x20exceeded'},{'module':'arb','code':0x7,'description':'Voting\x20deadline\x20passed'},{'module':'arb','code':0x8,'description':'Withdraw\x20duration\x20time\x20not\x20passed'},{'module':'arb','code':0x9,'description':'Indemnity\x20exceeds\x20limit\x20—\x20the\x20awarded\x20compensation\x20cannot\x20exceed\x203x\x20the\x20order\x20amount'},{'module':'repository','code':0x1,'description':'Policy\x20description\x20length\x20exceeded'},{'module':'repository','code':0x2,'description':'Policy\x20guard\x20count\x20exceeded'},{'module':'repository','code':0x3,'description':'Policy\x20count\x20exceeded'},{'module':'repository','code':0x4,'description':'Data\x20size\x20exceeded\x20limit'},{'module':'repository','code':0x5,'description':'ID\x20count\x20exceeded\x20limit'},{'module':'repository','code':0x6,'description':'Quantities\x20not\x20equal'},{'module':'repository','code':0x7,'description':'Policy\x20not\x20found'},{'module':'repository','code':0x8,'description':'Policy\x20ID\x20from\x20none'},{'module':'repository','code':0x9,'description':'Passport\x20required'},{'module':'repository','code':0xa,'description':'Data\x20type\x20does\x20not\x20match'},{'module':'repository','code':0xb,'description':'Guard\x20specified\x20ID\x20from\x20submission'},{'module':'repository','code':0xc,'description':'Not\x20impact\x20guard\x20in\x20passport'},{'module':'repository','code':0xd,'description':'Guard\x20specified\x20not\x20in\x20policy'},{'module':'repository','code':0xe,'description':'ID\x20vector\x20not\x20enough'},{'module':'repository','code':0xf,'description':'Data\x20vector\x20not\x20enough'},{'module':'repository','code':0x10,'description':'Invalid\x20ID\x20in\x20guard\x20table'},{'module':'repository','code':0x11,'description':'Invalid\x20data\x20in\x20guard\x20table'},{'module':'repository','code':0x12,'description':'Invalid\x20ID\x20from'},{'module':'repository','code':0x13,'description':'Maximum\x20reward\x20count\x20exceeded'},{'module':'repository','code':0x14,'description':'Guard\x20not\x20specified\x20ID\x20from\x20submission'},{'module':'repository','code':0x15,'description':'Need\x20dependent\x20guard'},{'module':'repository','code':0x16,'description':'Policy\x20write_guard\x20required\x20when\x20id_from\x20is\x20None'},{'module':'repository','code':0x17,'description':'Policy\x20id_from_submission\x20forbidden\x20when\x20id_from\x20is\x20Clock/Signer'},{'module':'common','code':0x1,'description':'Name\x20length\x20exceeded\x20limit'},{'module':'common','code':0x2,'description':'Name\x20is\x20empty'},{'module':'common','code':0x4,'description':'Description\x20length\x20exceeded\x20limit'},{'module':'common','code':0x6,'description':'Invalid\x20value\x20type'},{'module':'common','code':0x7,'description':'Address\x20type\x20does\x20not\x20match'},{'module':'common','code':0x8,'description':'Number\x20type\x20does\x20not\x20match'},{'module':'common','code':0x9,'description':'Invalid\x20data\x20value'},{'module':'common','code':0xa,'description':'Invalid\x20string\x20value'},{'module':'common','code':0xb,'description':'Long\x20name\x20length\x20exceeded\x20limit'},{'module':'common','code':0xc,'description':'Not\x20u64\x20type'},{'module':'common','code':0xd,'description':'Invalid\x20service\x20object\x20type'},{'module':'resource','code':0x1,'description':'Tags\x20count\x20exceeded\x20limit'},{'module':'allocation','code':0x1,'description':'Recipient\x20identifier\x20not\x20address\x20type'},{'module':'allocation','code':0x2,'description':'Allocator\x20count\x20exceeded'},{'module':'allocation','code':0x3,'description':'No\x20allocator'},{'module':'allocation','code':0x4,'description':'Rate\x20not\x2010000'},{'module':'allocation','code':0x5,'description':'Multiple\x20surplus'},{'module':'allocation','code':0x6,'description':'Rate\x20exceeds\x2010000'},{'module':'allocation','code':0x7,'description':'Insufficient\x20balance'},{'module':'allocation','code':0x8,'description':'Allocators\x20empty'},{'module':'allocation','code':0x9,'description':'No\x20payment\x20info'},{'module':'allocation','code':0xa,'description':'Sharing\x20count\x20exceeded'},{'module':'allocation','code':0xb,'description':'Sharing\x20mode\x20invalid'},{'module':'allocation','code':0xc,'description':'Amount\x20below\x20threshold'},{'module':'allocation','code':0xd,'description':'Amount\x20exceeds\x20max'},{'module':'allocation','code':0xe,'description':'Zero-value\x20distribution\x20—\x20the\x20Allocation\x20balance\x20is\x20already\x20fully\x20distributed\x20(or\x20all\x20shares\x20compute\x20to\x20zero);\x20alloc()\x20aborts\x20instead\x20of\x20minting\x20an\x20empty\x20CoinWrapper\x20and\x20an\x20amount-0\x20Payment'},{'module':'allocation','code':0xf,'description':'GuardIdentifier\x20recipient\x20not\x20bound\x20to\x20for_object\x20—\x20the\x20passport-submitted\x20address\x20does\x20not\x20match\x20PaymentInfo.for_object;\x20alloc()\x20aborts\x20only\x20when\x20a\x20binding\x20is\x20declared\x20(for_object\x20=\x20Some).\x20An\x20unbound\x20PaymentInfo\x20(for_object\x20=\x20None)\x20is\x20not\x20enforced\x20on-chain:\x20the\x20Allocation\x20is\x20then\x20trust-on-creator'},{'module':'proof','code':0x1,'description':'Maximum\x20proof\x20size\x20exceeded'},{'module':'proof','code':0x2,'description':'Maximum\x20server\x20pubkey\x20size\x20exceeded'},{'module':'proof','code':0x3,'description':'Maximum\x20server\x20signature\x20size\x20exceeded'},{'module':'payment','code':0x1,'description':'Recipient\x20count\x20exceeded'},{'module':'payment','code':0x2,'description':'Vector\x20count\x20not\x20equal'},{'module':'payment','code':0x3,'description':'Payment\x20not\x20match'},{'module':'payment','code':0x4,'description':'Recipient\x20empty'},{'module':'contact','code':0x1,'description':'IM\x20count\x20exceeded'},{'module':'entity_contact','code':0x1,'description':'Contact\x20count\x20exceeded\x20limit'},{'module':'entity_contact','code':0x2,'description':'Not\x20system\x20address'},{'module':'entity_order','code':0x2,'description':'Not\x20system\x20address'},{'module':'entity_permission','code':0x1,'description':'Permission\x20count\x20exceeded\x20limit'},{'module':'entity_permission','code':0x2,'description':'Not\x20system\x20address'},{'module':'object_linker','code':0x1,'description':'Core\x20link\x20items\x20exceeded\x20limit'},{'module':'object_linker','code':0x2,'description':'Not\x20system\x20address'},{'module':'registrar','code':0x0,'description':'Not\x20system\x20address'},{'module':'registrar','code':0x1,'description':'Record\x20count\x20exceeded'},{'module':'registrar','code':0x2,'description':'Record\x20length\x20exceeded'},{'module':'registrar','code':0x3,'description':'Record\x20type\x20empty'},{'module':'transfer','code':0x0,'description':'Shared\x20non-new\x20object'},{'module':'transfer','code':0x1,'description':'BCS\x20serialization\x20failure'},{'module':'transfer','code':0x2,'description':'Receiving\x20object\x20type\x20mismatch'},{'module':'transfer','code':0x3,'description':'Unable\x20to\x20receive\x20object'},{'module':'transfer','code':0x4,'description':'Shared\x20object\x20operation\x20not\x20supported'},{'module':'transfer','code':0x5,'description':'Operation\x20not\x20supported'},{'module':'transfer','code':0x6,'description':'Invalid\x20party\x20permissions'},{'module':'tx_context','code':0x0,'description':'Bad\x20transaction\x20hash\x20length'},{'module':'coin','code':0x0,'description':'Bad\x20witness'},{'module':'coin','code':0x1,'description':'Invalid\x20argument'},{'module':'coin','code':0x2,'description':'Not\x20enough\x20balance'},{'module':'coin','code':0x3,'description':'Global\x20pause\x20not\x20allowed'},{'module':'borrow','code':0x0,'description':'Wrong\x20borrow'},{'module':'borrow','code':0x1,'description':'Wrong\x20value'},{'module':'u64','code':0x1,'description':'Arithmetic\x20overflow'},{'module':'u64','code':0x2,'description':'Arithmetic\x20underflow'},{'module':'u64','code':0x3,'description':'Division\x20by\x20zero'},{'module':'u64','code':0x4,'description':'Modulo\x20by\x20zero'},{'module':'vector','code':0x20000,'description':'Vector\x20index\x20out\x20of\x20bounds'},{'module':'option','code':0x40000,'description':'Option\x20already\x20set\x20(cannot\x20set\x20again)'},{'module':'option','code':0x40001,'description':'Option\x20not\x20set\x20(cannot\x20extract\x20value)'},{'module':'bit_vector','code':0x20000,'description':'Bit\x20vector\x20index\x20out\x20of\x20bounds'},{'module':'bit_vector','code':0x20001,'description':'Bit\x20vector\x20length\x20exceeds\x20limit'},{'module':'fixed_point32','code':0x10001,'description':'Fixed\x20point32\x20denominator\x20is\x20zero'},{'module':'fixed_point32','code':0x20002,'description':'Fixed\x20point32\x20division\x20overflow'},{'module':'fixed_point32','code':0x20003,'description':'Fixed\x20point32\x20multiplication\x20overflow'},{'module':'fixed_point32','code':0x10004,'description':'Fixed\x20point32\x20division\x20by\x20zero'},{'module':'fixed_point32','code':0x20005,'description':'Fixed\x20point32\x20ratio\x20out\x20of\x20range'},{'module':'bcs','code':0x0,'description':'Out\x20of\x20range'},{'module':'bcs','code':0x1,'description':'Not\x20bool'},{'module':'bcs','code':0x2,'description':'Length\x20out\x20of\x20range'},{'module':'balance','code':0x0,'description':'Non-zero\x20balance'},{'module':'balance','code':0x1,'description':'Overflow'},{'module':'balance','code':0x2,'description':'Not\x20enough'},{'module':'balance','code':0x3,'description':'Not\x20system\x20address'},{'module':'balance','code':0x4,'description':'Not\x20WOW'},{'module':'parent_table','code':0x0,'description':'Parent\x20table\x20not\x20match'},{'module':'parent_table_vec','code':0x0,'description':'Index\x20out\x20of\x20bound'},{'module':'parent_linked_table','code':0x0,'description':'Table\x20is\x20empty'},{'module':'parent_linked_table','code':0x1,'description':'Table\x20not\x20match'},{'module':'accumulator','code':0x0,'description':'Not\x20system\x20address'},{'module':'accumulator_settlement','code':0x0,'description':'Not\x20system\x20address'},{'module':'accumulator_settlement','code':0x1,'description':'Invalid\x20split\x20amount'},{'module':'accumulator_metadata','code':0x0,'description':'Invariant\x20violation'},{'module':'address','code':0x0,'description':'Address\x20parse\x20error'},{'module':'bag','code':0x0,'description':'Bag\x20not\x20empty'},{'module':'clock','code':0x0,'description':'Not\x20system\x20address'},{'module':'config','code':0x0,'description':'Already\x20set\x20for\x20epoch'},{'module':'config','code':0x1,'description':'Not\x20set\x20for\x20epoch'},{'module':'config','code':0x2,'description':'BCS\x20serialization\x20failure'},{'module':'deny_list','code':0x0,'description':'Not\x20system\x20address'},{'module':'deny_list','code':0x1,'description':'Not\x20denied\x20or\x20invalid\x20address'},{'module':'display','code':0x0,'description':'Not\x20owner'},{'module':'display','code':0x1,'description':'Vector\x20length\x20mismatch'},{'module':'dynamic_field','code':0x0,'description':'Field\x20already\x20exists'},{'module':'dynamic_field','code':0x1,'description':'Field\x20does\x20not\x20exist'},{'module':'dynamic_field','code':0x2,'description':'Field\x20type\x20mismatch'},{'module':'dynamic_field','code':0x3,'description':'BCS\x20serialization\x20failure'},{'module':'dynamic_field','code':0x4,'description':'Shared\x20object\x20operation\x20not\x20supported'},{'module':'funds_accumulator','code':0x0,'description':'Overflow'},{'module':'hex','code':0x0,'description':'Invalid\x20hex\x20length'},{'module':'hex','code':0x1,'description':'Not\x20valid\x20hex\x20character'},{'module':'linked_table','code':0x0,'description':'Table\x20not\x20empty'},{'module':'linked_table','code':0x1,'description':'Table\x20is\x20empty'},{'module':'object','code':0x0,'description':'Not\x20system\x20address'},{'module':'object_bag','code':0x0,'description':'Bag\x20not\x20empty'},{'module':'object_table','code':0x0,'description':'Table\x20not\x20empty'},{'module':'package','code':0x0,'description':'Not\x20one-time\x20witness'},{'module':'package','code':0x1,'description':'Too\x20permissive'},{'module':'package','code':0x2,'description':'Already\x20authorized'},{'module':'package','code':0x3,'description':'Not\x20authorized'},{'module':'package','code':0x4,'description':'Wrong\x20upgrade\x20cap'},{'module':'pay','code':0x0,'description':'No\x20coins'},{'module':'priority_queue','code':0x0,'description':'Pop\x20from\x20empty\x20heap'},{'module':'priority_queue','code':0x1,'description':'Length\x20mismatch'},{'module':'priority_queue','code':0x2,'description':'Index\x20out\x20of\x20bounds'},{'module':'random','code':0x0,'description':'Not\x20system\x20address'},{'module':'random','code':0x1,'description':'Wrong\x20inner\x20version'},{'module':'random','code':0x2,'description':'Invalid\x20randomness\x20update'},{'module':'random','code':0x3,'description':'Invalid\x20range'},{'module':'random','code':0x4,'description':'Invalid\x20length'},{'module':'scratch','code':0x0,'description':'Entry\x20already\x20exists'},{'module':'scratch','code':0x1,'description':'Entry\x20does\x20not\x20exist'},{'module':'scratch','code':0x2,'description':'Entry\x20type\x20mismatch'},{'module':'table','code':0x0,'description':'Table\x20not\x20empty'},{'module':'table_vec','code':0x0,'description':'Index\x20out\x20of\x20bound'},{'module':'table_vec','code':0x1,'description':'Table\x20not\x20empty'},{'module':'token','code':0x0,'description':'Unknown\x20action'},{'module':'token','code':0x1,'description':'Not\x20approved'},{'module':'token','code':0x2,'description':'Not\x20authorized'},{'module':'token','code':0x3,'description':'Balance\x20too\x20low'},{'module':'token','code':0x4,'description':'Not\x20zero'},{'module':'token','code':0x5,'description':'Cannot\x20consume\x20balance'},{'module':'token','code':0x6,'description':'No\x20config'},{'module':'token','code':0x7,'description':'Use\x20immutable\x20confirm'},{'module':'vec_map','code':0x0,'description':'Key\x20already\x20exists'},{'module':'vec_map','code':0x1,'description':'Key\x20does\x20not\x20exist'},{'module':'vec_map','code':0x2,'description':'Map\x20not\x20empty'},{'module':'vec_map','code':0x3,'description':'Index\x20out\x20of\x20bounds'},{'module':'vec_map','code':0x4,'description':'Map\x20empty'},{'module':'vec_map','code':0x5,'description':'Unequal\x20lengths'},{'module':'vec_set','code':0x0,'description':'Key\x20already\x20exists'},{'module':'vec_set','code':0x1,'description':'Key\x20does\x20not\x20exist'},{'module':'versioned','code':0x0,'description':'Invalid\x20upgrade'},{'module':'wow','code':0x0,'description':'Already\x20minted'},{'module':'wow','code':0x1,'description':'Not\x20system\x20address'},{'module':'ecdsa_k1','code':0x0,'description':'Failed\x20to\x20recover\x20public\x20key'},{'module':'ecdsa_k1','code':0x1,'description':'Invalid\x20signature'},{'module':'ecdsa_k1','code':0x2,'description':'Invalid\x20public\x20key'},{'module':'ecdsa_k1','code':0x3,'description':'Invalid\x20private\x20key'},{'module':'ecdsa_k1','code':0x4,'description':'Invalid\x20hash\x20function'},{'module':'ecdsa_k1','code':0x5,'description':'Invalid\x20seed'},{'module':'ecdsa_r1','code':0x0,'description':'Failed\x20to\x20recover\x20public\x20key'},{'module':'ecdsa_r1','code':0x1,'description':'Invalid\x20signature'},{'module':'ecvrf','code':0x1,'description':'Invalid\x20hash\x20length'},{'module':'ecvrf','code':0x2,'description':'Invalid\x20public\x20key\x20encoding'},{'module':'ecvrf','code':0x3,'description':'Invalid\x20proof\x20encoding'},{'module':'groth16','code':0x0,'description':'Invalid\x20verifying\x20key'},{'module':'groth16','code':0x1,'description':'Invalid\x20curve'},{'module':'groth16','code':0x2,'description':'Too\x20many\x20public\x20inputs'},{'module':'groth16','code':0x3,'description':'Invalid\x20scalar'},{'module':'group_ops','code':0x0,'description':'Operation\x20not\x20supported'},{'module':'group_ops','code':0x1,'description':'Invalid\x20input'},{'module':'group_ops','code':0x2,'description':'Input\x20too\x20long'},{'module':'group_ops','code':0x3,'description':'Invalid\x20buffer\x20length'},{'module':'vdf','code':0x0,'description':'Invalid\x20input'},{'module':'kiosk','code':0x0,'description':'Not\x20owner'},{'module':'kiosk','code':0x1,'description':'Incorrect\x20amount'},{'module':'kiosk','code':0x2,'description':'Not\x20enough'},{'module':'kiosk','code':0x3,'description':'Not\x20empty'},{'module':'kiosk','code':0x4,'description':'Listed\x20exclusively'},{'module':'kiosk','code':0x5,'description':'Wrong\x20kiosk'},{'module':'kiosk','code':0x6,'description':'Already\x20listed'},{'module':'kiosk','code':0x7,'description':'UID\x20access\x20not\x20allowed'},{'module':'kiosk','code':0x8,'description':'Item\x20locked'},{'module':'kiosk','code':0x9,'description':'Item\x20is\x20listed'},{'module':'kiosk','code':0xa,'description':'Item\x20mismatch'},{'module':'kiosk','code':0xb,'description':'Item\x20not\x20found'},{'module':'kiosk','code':0xc,'description':'Not\x20listed'},{'module':'kiosk_extension','code':0x0,'description':'Not\x20owner'},{'module':'kiosk_extension','code':0x2,'description':'Extension\x20not\x20allowed'},{'module':'kiosk_extension','code':0x3,'description':'Extension\x20not\x20installed'},{'module':'transfer_policy','code':0x0,'description':'Policy\x20not\x20satisfied'},{'module':'transfer_policy','code':0x1,'description':'Illegal\x20rule'},{'module':'transfer_policy','code':0x2,'description':'Unknown\x20requirement'},{'module':'transfer_policy','code':0x3,'description':'Rule\x20already\x20set'},{'module':'transfer_policy','code':0x4,'description':'Not\x20owner'},{'module':'transfer_policy','code':0x5,'description':'Not\x20enough'}];function getMoveErrorDescription(a,b){const c=MoveErrors['find'](d=>d['module']===a&&d['code']===b);return c?c['description']:null;}function isWowokSystemAddress(a){const b=a['toLowerCase']()['replace'](/^0x/,'')['replace'](/^0+(?=.)/,'');return b==='1'||b==='2';}function enrichMoveError(a){if(!a||typeof a!=='string')return a;const b=/MoveAbort\(.*,\s*(\d+)\s*\)/,c=/name:\s*Identifier\("([^"]+)"\)/,d=/address:\s*([0-9a-fA-Fx]+)/,e=a['match'](b),f=a['match'](c),g=a['match'](d);if(e&&f&&g){const n=parseInt(e[0x1],0xa),o=f[0x1]['toLowerCase']();if(isWowokSystemAddress(g[0x1]['toLowerCase']())){const p=MoveErrors['find'](q=>q['module']['toLowerCase']()===o&&q['code']===n);if(p)return'Error\x20Description:\x20'+p['description']+'\x0a'+a;}}const h=/abort code:\s*(\d+)/,i=/'0x[0-9a-fA-F]+::([^:]+)::[^']+'/,j=/'(0x[0-9a-fA-F]+)::/,k=a['match'](h),l=a['match'](i),m=a['match'](j);if(k&&l&&m){const q=parseInt(k[0x1],0xa),r=l[0x1]['toLowerCase']();if(isWowokSystemAddress(m[0x1]['toLowerCase']())){const s=MoveErrors['find'](t=>t['module']['toLowerCase']()===r&&t['code']===q);if(s)return'Error\x20Description:\x20'+s['description']+'\x0a'+a;}}return a;}export{W_ENSURE as a,W_SAFE as c,enrichMoveError as d,getMoveErrorDescription as f,WValidate as i,W_SUCCESS as l,isWowokSystemAddress as m,WErrors as n,W_ERROR as o,isWException as p,WException as r,W_FAILURE as s,MoveErrors as t,W_VALIDATE_PARAM as u};
@@ -1 +0,0 @@
1
- import{getWowDir}from'./w/local/util.mjs';import a50a from'libsql';import*as a50b from'path';import*as a50c from'fs';var AsyncLock=class{constructor(){this['_locked']=![],this['_queue']=[];}async['acquire'](){if(!this['_locked']){this['_locked']=!![];return;}return new Promise(a=>{this['_queue']['push'](a);});}['release'](){if(this['_queue']['length']>0x0)this['_queue']['shift']()();else this['_locked']=![];}async['run'](a){await this['acquire']();try{return await a();}finally{this['release']();}}};const WOW_DIR=getWowDir(),CACHE_DB_PATH=a50b['join'](WOW_DIR,'cache.db'),ACCOUNT_DB_PATH=a50b['join'](WOW_DIR,'account.db');function ensureWowDirExists(){if(!a50c['existsSync'](WOW_DIR))a50c['mkdirSync'](WOW_DIR,{'recursive':!![]});}ensureWowDirExists();function getCacheDatabase(){ensureWowDirExists();const a=new a50a(CACHE_DB_PATH);a['pragma']('journal_mode\x20=\x20WAL'),a['pragma']('synchronous\x20=\x20NORMAL'),a['pragma']('busy_timeout\x20=\x205000');try{a['pragma']('wal_checkpoint(FULL)');}catch{}return a['exec']('\x0a\x09\x09CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20cache\x20(\x0a\x09\x09\x09key\x20TEXT\x20PRIMARY\x20KEY,\x0a\x09\x09\x09value\x20TEXT\x20NOT\x20NULL,\x0a\x09\x09\x09updated_at\x20INTEGER\x20DEFAULT\x20(strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09);\x0a\x09'),a;}let cacheDbInstance=null;new AsyncLock();function getCacheDb(){if(cacheDbInstance)return cacheDbInstance;if(!cacheDbInstance)cacheDbInstance=getCacheDatabase();return cacheDbInstance;}function getAccountDatabase(){ensureWowDirExists();const a=new a50a(ACCOUNT_DB_PATH);a['pragma']('journal_mode\x20=\x20WAL'),a['pragma']('synchronous\x20=\x20NORMAL'),a['pragma']('busy_timeout\x20=\x205000');try{a['pragma']('wal_checkpoint(FULL)');}catch{}try{a50c['chmodSync'](ACCOUNT_DB_PATH,0x180);}catch{}return a['exec']('\x0a\x09\x09CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20accounts\x20(\x0a\x09\x09\x09id\x20INTEGER\x20PRIMARY\x20KEY\x20CHECK\x20(id\x20=\x201),\x0a\x09\x09\x09data\x20TEXT\x20NOT\x20NULL,\x0a\x09\x09\x09updated_at\x20INTEGER\x20DEFAULT\x20(strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09);\x0a\x09'),a;}let accountDbInstance=null;new AsyncLock();function getAccountDb(){if(accountDbInstance)return accountDbInstance;if(!accountDbInstance)accountDbInstance=getAccountDatabase();return accountDbInstance;}const KEY_METADATA_TABLE='key_metadata';var SQLiteStorage=class{constructor(a){this['_dbSource']=a;}get['db'](){if(this['_dbSource'])return this['_dbSource'];if(!this['_db'])this['_db']=getCacheDb();return this['_db'];}async['get'](a){return this['db']['prepare']('SELECT\x20value\x20FROM\x20cache\x20WHERE\x20key\x20=\x20?')['get'](a)?.['value'];}async['getMany'](a){const b=a['map'](()=>'?')['join'](','),c=this['db']['prepare']('SELECT\x20key,\x20value\x20FROM\x20cache\x20WHERE\x20key\x20IN\x20('+b+')')['all'](...a),d=new Map(c['map'](e=>[e['key'],e['value']]));return a['map'](e=>d['get'](e));}async['put'](a,b){this['db']['prepare']('\x0a\x09\x09\x09INSERT\x20INTO\x20cache\x20(key,\x20value,\x20updated_at)\x20\x0a\x09\x09\x09VALUES\x20(?,\x20?,\x20strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09ON\x20CONFLICT(key)\x20DO\x20UPDATE\x20SET\x20value\x20=\x20excluded.value,\x20updated_at\x20=\x20excluded.updated_at\x0a\x09\x09')['run'](a,b);}async['putMany'](a){const b=this['db']['prepare']('\x0a\x09\x09\x09INSERT\x20INTO\x20cache\x20(key,\x20value,\x20updated_at)\x20\x0a\x09\x09\x09VALUES\x20(?,\x20?,\x20strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09ON\x20CONFLICT(key)\x20DO\x20UPDATE\x20SET\x20value\x20=\x20excluded.value,\x20updated_at\x20=\x20excluded.updated_at\x0a\x09\x09');this['db']['transaction'](c=>{for(const d of c)b['run'](d['key'],d['value']);})(a);}async['del'](a){this['db']['prepare']('DELETE\x20FROM\x20cache\x20WHERE\x20key\x20=\x20?')['run'](a);}async['delByPrefix'](a){this['db']['prepare']('DELETE\x20FROM\x20cache\x20WHERE\x20key\x20LIKE\x20?')['run'](a+'%');}async['getStats'](){const a=this['db']['prepare']('SELECT\x20COUNT(*)\x20AS\x20count,\x20COALESCE(SUM(LENGTH(value)),\x200)\x20AS\x20bytes\x20FROM\x20cache')['get']();return{'count':Number(a?.['count']??0x0),'totalBytes':Number(a?.['bytes']??0x0)};}async['getOldestKeys'](a){return this['db']['prepare']('SELECT\x20key\x20FROM\x20cache\x20ORDER\x20BY\x20updated_at\x20ASC,\x20rowid\x20ASC\x20LIMIT\x20?')['all'](a)['map'](b=>b['key']);}async['list'](a){if(a)return this['db']['prepare']('SELECT\x20key,\x20value\x20FROM\x20cache\x20WHERE\x20key\x20LIKE\x20?')['all'](a+'%');return this['db']['prepare']('SELECT\x20key,\x20value\x20FROM\x20cache')['all']();}async['clear'](){this['db']['exec']('DELETE\x20FROM\x20cache');}},OwnedRecordStorage=class{constructor(a='user_modes',b){this['_tableName']=a,this['_tableInitialized']=![];if(!/^[a-z_][a-z0-9_]*$/['test'](a))throw new Error('OwnedRecordStorage:\x20invalid\x20table\x20name\x20\x27'+a+'\x27');this['_dbSource']=b;}get['db'](){const a=this['_dbSource']??(this['_db']??=getCacheDb());return!this['_tableInitialized']&&(a['exec']('\x0a\x09\x09\x09\x09CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20'+this['_tableName']+'\x20(\x0a\x09\x09\x09\x09\x09owner\x20TEXT\x20NOT\x20NULL,\x0a\x09\x09\x09\x09\x09name\x20TEXT\x20NOT\x20NULL,\x0a\x09\x09\x09\x09\x09data\x20TEXT\x20NOT\x20NULL,\x0a\x09\x09\x09\x09\x09updated_at\x20INTEGER\x20DEFAULT\x20(strftime(\x27%s\x27,\x20\x27now\x27)),\x0a\x09\x09\x09\x09\x09PRIMARY\x20KEY\x20(owner,\x20name)\x0a\x09\x09\x09\x09);\x0a\x09\x09\x09'),this['_tableInitialized']=!![]),a;}async['save'](a,b,c){this['db']['prepare']('\x0a\x09\x09\x09\x09INSERT\x20INTO\x20'+this['_tableName']+'\x20(owner,\x20name,\x20data,\x20updated_at)\x0a\x09\x09\x09\x09VALUES\x20(?,\x20?,\x20?,\x20strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09\x09ON\x20CONFLICT(owner,\x20name)\x20DO\x20UPDATE\x20SET\x20data\x20=\x20excluded.data,\x20updated_at\x20=\x20excluded.updated_at\x0a\x09\x09\x09')['run'](a,b,c);}async['get'](a,b){return this['db']['prepare']('SELECT\x20data\x20FROM\x20'+this['_tableName']+'\x20WHERE\x20owner\x20=\x20?\x20AND\x20name\x20=\x20?')['get'](a,b)?.['data'];}async['list'](a){if(a!==void 0x0)return this['db']['prepare']('SELECT\x20owner,\x20name,\x20data,\x20updated_at\x20FROM\x20'+this['_tableName']+'\x20WHERE\x20owner\x20=\x20?\x20ORDER\x20BY\x20name')['all'](a);return this['db']['prepare']('SELECT\x20owner,\x20name,\x20data,\x20updated_at\x20FROM\x20'+this['_tableName']+'\x20ORDER\x20BY\x20owner,\x20name')['all']();}async['delete'](a,b){return this['db']['prepare']('DELETE\x20FROM\x20'+this['_tableName']+'\x20WHERE\x20owner\x20=\x20?\x20AND\x20name\x20=\x20?')['run'](a,b)['changes']>0x0;}},SQLiteAccountStorage=class{constructor(a,b='accounts'){this['_tableName']=b,this['_tableInitialized']=![],this['_dbSource']=a;}get['db'](){if(this['_dbSource'])return this['_dbSource'];if(!this['_db'])this['_db']=getAccountDb();return!this['_tableInitialized']&&this['_tableName']!=='accounts'&&(this['_db']['exec']('\x0a\x09\x09\x09\x09CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20'+this['_tableName']+'\x20(\x0a\x09\x09\x09\x09\x09id\x20INTEGER\x20PRIMARY\x20KEY\x20CHECK\x20(id\x20=\x201),\x0a\x09\x09\x09\x09\x09data\x20TEXT\x20NOT\x20NULL,\x0a\x09\x09\x09\x09\x09updated_at\x20INTEGER\x20DEFAULT\x20(strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09\x09);\x0a\x09\x09\x09'),this['_tableInitialized']=!![]),this['_db'];}async['get'](){return this['db']['prepare']('SELECT\x20data\x20FROM\x20'+this['_tableName']+'\x20WHERE\x20id\x20=\x201')['get']()?.['data'];}async['put'](a){this['db']['prepare']('\x0a\x09\x09\x09INSERT\x20INTO\x20'+this['_tableName']+'\x20(id,\x20data,\x20updated_at)\x0a\x09\x09\x09VALUES\x20(1,\x20?,\x20strftime(\x27%s\x27,\x20\x27now\x27))\x0a\x09\x09\x09ON\x20CONFLICT(id)\x20DO\x20UPDATE\x20SET\x20data\x20=\x20excluded.data,\x20updated_at\x20=\x20excluded.updated_at\x0a\x09\x09')['run'](a);try{this['db']['pragma']('wal_checkpoint(FULL)');}catch{}}async['clear'](){this['db']['exec']('DELETE\x20FROM\x20'+this['_tableName']);}};function resetAllDbConnections(){if(cacheDbInstance){try{cacheDbInstance['close']();}catch(a){}cacheDbInstance=null;}if(accountDbInstance){try{accountDbInstance['close']();}catch(b){}accountDbInstance=null;}}process['on']('exit',()=>{resetAllDbConnections();}),process['on']('SIGINT',()=>{resetAllDbConnections();}),process['on']('SIGTERM',()=>{resetAllDbConnections();});function clearKeyMetadata(){try{getAccountDb()['exec']('DELETE\x20FROM\x20'+KEY_METADATA_TABLE);}catch{}}function resetAllStorage(){clearKeyMetadata(),resetAllDbConnections();}const defaultStorage=new SQLiteStorage(),defaultAccountStorage=new SQLiteAccountStorage();export{clearKeyMetadata as a,getAccountDb as c,AsyncLock as d,SQLiteStorage as i,resetAllDbConnections as l,OwnedRecordStorage as n,defaultAccountStorage as o,SQLiteAccountStorage as r,defaultStorage as s,KEY_METADATA_TABLE as t,resetAllStorage as u};