@wowok/wowok 2.3.10 → 2.3.11

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 (128) hide show
  1. package/dist/esm/{arb-qkKnE0MS.mjs → arb-DzF0MkFj.mjs} +1 -1
  2. package/dist/esm/{base-DVRLzdff.mjs → base-CpcBBUyX.mjs} +1 -1
  3. package/dist/esm/bcs/index.d.mts +2 -2
  4. package/dist/esm/{call-CI7NE6r9.mjs → call-CGeMCqkj.mjs} +1 -1
  5. package/dist/esm/client/index.d.mts +1 -1
  6. package/dist/esm/client/index.mjs +1 -1
  7. package/dist/esm/{client-_khvywKG.mjs → client-sb0S5kkY.mjs} +1 -1
  8. package/dist/esm/cryptography/index.d.mts +1 -1
  9. package/dist/esm/{evm-account-BPYk6EpK.d.mts → evm-account-BEq5OtWc.d.mts} +10 -6
  10. package/dist/esm/graphql/index.d.mts +1 -1
  11. package/dist/esm/graphql/index.mjs +1 -1
  12. package/dist/esm/graphql/schema/index.d.mts +73 -2
  13. package/dist/esm/{graphql-CY03CqLQ.mjs → graphql-BUAdI3fK.mjs} +1 -1
  14. package/dist/esm/grpc/index.d.mts +1 -1
  15. package/dist/esm/grpc/index.mjs +1 -1
  16. package/dist/esm/{grpc-CfgKv1Rb.mjs → grpc-pWeVYO9k.mjs} +1 -1
  17. package/dist/esm/{index-CGqMj3cG.d.mts → index-BYeMK_wO.d.mts} +1 -2
  18. package/dist/esm/{index-B-cxGU73.d.mts → index-Cj4KHtbw.d.mts} +4 -5
  19. package/dist/esm/{index-D5JwhC3A.d.mts → index-DQzZu-2W.d.mts} +821 -924
  20. package/dist/esm/index.d.mts +8 -8
  21. package/dist/esm/index.mjs +1 -1
  22. package/dist/esm/jsonRpc/index.d.mts +1 -1
  23. package/dist/esm/jsonRpc/index.mjs +1 -1
  24. package/dist/esm/keypairs/ed25519/index.d.mts +1 -1
  25. package/dist/esm/keypairs/falcon512/index.d.mts +1 -1
  26. package/dist/esm/keypairs/passkey/index.d.mts +1 -1
  27. package/dist/esm/keypairs/secp256k1/index.d.mts +1 -1
  28. package/dist/esm/keypairs/secp256r1/index.d.mts +1 -1
  29. package/dist/esm/{messenger-4Xo_9r_X.mjs → messenger-XaS-GpCz.mjs} +1 -1
  30. package/dist/esm/{messenger-api-Bbyq8xdl.mjs → messenger-api-GLDmqXiO.mjs} +1 -1
  31. package/dist/esm/multisig/index.d.mts +1 -1
  32. package/dist/esm/{networks-CEYOA-1U.d.mts → networks-DjNV6z1E.d.mts} +6 -3
  33. package/dist/esm/{object-ClDQzAeq.mjs → object-BZ_iF8UV.mjs} +1 -1
  34. package/dist/esm/{pqxdh-CKkqzvPb.d.mts → pqxdh-66KxOyAF.d.mts} +0 -1
  35. package/dist/esm/{proof-BKTOirlc.mjs → proof-Bs6HQZeE.mjs} +1 -1
  36. package/dist/esm/query-C21BX7t1.mjs +1 -0
  37. package/dist/esm/{received-CcmLP4db.mjs → received-CLkbwKVD.mjs} +1 -1
  38. package/dist/esm/secp256k1-B-8mI0dI.mjs +1 -1
  39. package/dist/esm/secp256r1-B3O6jSlP.mjs +1 -1
  40. package/dist/esm/{secure-storage-DRwhPVz3.d.mts → secure-storage-Dkh4Oioi.d.mts} +1 -2
  41. package/dist/esm/{service-DzKulDai.mjs → service-CHsYFr_k.mjs} +1 -1
  42. package/dist/esm/{storage-Ct2mZnD0.d.mts → storage-0OmomSuj.d.mts} +0 -1
  43. package/dist/esm/transactions/index.d.mts +1 -1
  44. package/dist/esm/transactions/index.mjs +1 -1
  45. package/dist/esm/transactions-rYyItYOR.mjs +1 -1
  46. package/dist/esm/{type-tag-serializer-BOCNO96r.d.mts → type-tag-serializer-66hzljbG.d.mts} +0 -1
  47. package/dist/esm/util-DBKo02vY.mjs +1 -0
  48. package/dist/esm/utils/index.d.mts +2 -2
  49. package/dist/esm/utils/index.mjs +1 -1
  50. package/dist/esm/utils-IlS3fpdQ.mjs +1 -1
  51. package/dist/esm/verify/index.d.mts +1 -1
  52. package/dist/esm/verify/index.mjs +1 -1
  53. package/dist/esm/w/call/allocation.d.mts +1 -1
  54. package/dist/esm/w/call/allocation.mjs +1 -1
  55. package/dist/esm/w/call/arbitration.d.mts +1 -1
  56. package/dist/esm/w/call/arbitration.mjs +1 -1
  57. package/dist/esm/w/call/base.d.mts +1 -1
  58. package/dist/esm/w/call/base.mjs +1 -1
  59. package/dist/esm/w/call/demand.d.mts +1 -1
  60. package/dist/esm/w/call/demand.mjs +1 -1
  61. package/dist/esm/w/call/guard.d.mts +1 -1
  62. package/dist/esm/w/call/guard.mjs +1 -1
  63. package/dist/esm/w/call/index.d.mts +1 -1
  64. package/dist/esm/w/call/index.mjs +1 -1
  65. package/dist/esm/w/call/machine.d.mts +1 -1
  66. package/dist/esm/w/call/machine.mjs +1 -1
  67. package/dist/esm/w/call/passport.d.mts +1 -1
  68. package/dist/esm/w/call/passport.mjs +1 -1
  69. package/dist/esm/w/call/payment.d.mts +1 -1
  70. package/dist/esm/w/call/payment.mjs +1 -1
  71. package/dist/esm/w/call/permission.d.mts +1 -1
  72. package/dist/esm/w/call/permission.mjs +1 -1
  73. package/dist/esm/w/call/progress.d.mts +1 -1
  74. package/dist/esm/w/call/progress.mjs +1 -1
  75. package/dist/esm/w/call/repository.d.mts +1 -1
  76. package/dist/esm/w/call/repository.mjs +1 -1
  77. package/dist/esm/w/call/reward.d.mts +1 -1
  78. package/dist/esm/w/call/reward.mjs +1 -1
  79. package/dist/esm/w/call/service.d.mts +1 -1
  80. package/dist/esm/w/call/service.mjs +1 -1
  81. package/dist/esm/w/call/treasury.d.mts +1 -1
  82. package/dist/esm/w/call/treasury.mjs +1 -1
  83. package/dist/esm/w/common.d.mts +1 -1
  84. package/dist/esm/w/common.mjs +1 -1
  85. package/dist/esm/w/index.d.mts +5 -5
  86. package/dist/esm/w/index.mjs +1 -1
  87. package/dist/esm/w/local/account.d.mts +2 -2
  88. package/dist/esm/w/local/account.mjs +1 -1
  89. package/dist/esm/w/local/evm/networks.d.mts +1 -1
  90. package/dist/esm/w/local/evm-account.d.mts +1 -1
  91. package/dist/esm/w/local/evm-account.mjs +1 -1
  92. package/dist/esm/w/local/index.d.mts +5 -5
  93. package/dist/esm/w/local/index.mjs +1 -1
  94. package/dist/esm/w/local/local.mjs +1 -1
  95. package/dist/esm/w/local/secure-storage.d.mts +1 -1
  96. package/dist/esm/w/local/storage.d.mts +1 -1
  97. package/dist/esm/w/local/storage.mjs +1 -1
  98. package/dist/esm/w/local/token.d.mts +1 -1
  99. package/dist/esm/w/local/token.mjs +1 -1
  100. package/dist/esm/w/local/util.mjs +1 -1
  101. package/dist/esm/w/local/wip.mjs +1 -1
  102. package/dist/esm/w/messenger/crypto.d.mts +6 -3
  103. package/dist/esm/w/messenger/index.d.mts +1 -1
  104. package/dist/esm/w/messenger/index.mjs +1 -1
  105. package/dist/esm/w/messenger/messenger-api.d.mts +1 -1
  106. package/dist/esm/w/messenger/messenger-api.mjs +1 -1
  107. package/dist/esm/w/messenger/messenger.d.mts +1 -1
  108. package/dist/esm/w/messenger/messenger.mjs +1 -1
  109. package/dist/esm/w/messenger/pq/crypto.d.mts +0 -1
  110. package/dist/esm/w/messenger/pq/crypto.mjs +1 -1
  111. package/dist/esm/w/messenger/pq/index.d.mts +1 -1
  112. package/dist/esm/w/messenger/pq/pqxdh.d.mts +1 -1
  113. package/dist/esm/w/messenger/pq/ratchet.d.mts +0 -1
  114. package/dist/esm/w/messenger/pq/session.d.mts +1 -2
  115. package/dist/esm/w/messenger/pq/spqr.d.mts +0 -1
  116. package/dist/esm/w/messenger/pq/store-adapter.d.mts +0 -1
  117. package/dist/esm/w/messenger/storage.d.mts +1 -2
  118. package/dist/esm/w/messenger/storage.mjs +1 -1
  119. package/dist/esm/w/messenger/types.d.mts +1 -1
  120. package/dist/esm/w/query/index.d.mts +1 -1
  121. package/dist/esm/w/query/index.mjs +1 -1
  122. package/dist/esm/w/query/object.d.mts +1 -1
  123. package/dist/esm/w/query/object.mjs +1 -1
  124. package/dist/esm/w-YL0Jr-BM.mjs +1 -0
  125. package/package.json +1 -1
  126. package/dist/esm/types-CiFC9IV5.d.mts +0 -74
  127. package/dist/esm/util-DkUS_Uzm.mjs +0 -1
  128. package/dist/esm/w-CssFtRKC.mjs +0 -1
@@ -1,74 +0,0 @@
1
- //#region src/graphql/types.d.ts
2
- type MoveData = {
3
- Address: string;
4
- } | {
5
- UID: string;
6
- } | {
7
- ID: string;
8
- } | {
9
- Bool: boolean;
10
- } | {
11
- Number: string;
12
- } | {
13
- String: string;
14
- } | {
15
- Vector: [MoveData];
16
- } | {
17
- Option: MoveData | null;
18
- } | {
19
- Struct: [{
20
- name: string;
21
- value: MoveData;
22
- }];
23
- };
24
- type MoveTypeLayout = 'address' | 'bool' | 'u8' | 'u16' | 'u32' | 'u64' | 'u128' | 'u256' | {
25
- vector: MoveTypeLayout;
26
- } | {
27
- struct: {
28
- type: string;
29
- fields: [{
30
- name: string;
31
- layout: MoveTypeLayout;
32
- }];
33
- };
34
- };
35
- type MoveTypeSignature = 'address' | 'bool' | 'u8' | 'u16' | 'u32' | 'u64' | 'u128' | 'u256' | {
36
- vector: MoveTypeSignature;
37
- } | {
38
- datatype: {
39
- package: string;
40
- module: string;
41
- type: string;
42
- typeParameters: [MoveTypeSignature];
43
- };
44
- };
45
- type OpenMoveTypeSignature = {
46
- ref?: ('&' | '&mut') | null;
47
- body: OpenMoveTypeSignatureBody;
48
- };
49
- type OpenMoveTypeSignatureBody = 'address' | 'bool' | 'u8' | 'u16' | 'u32' | 'u64' | 'u128' | 'u256' | {
50
- vector: OpenMoveTypeSignatureBody;
51
- } | {
52
- datatype: {
53
- package: string;
54
- module: string;
55
- type: string;
56
- typeParameters: [OpenMoveTypeSignatureBody];
57
- };
58
- } | {
59
- typeParameter: number;
60
- };
61
- interface CustomScalars {
62
- BigInt: string;
63
- Base64: string;
64
- DateTime: string;
65
- JSON: unknown;
66
- MoveData: MoveData;
67
- MoveTypeLayout: MoveTypeLayout;
68
- MoveTypeSignature: MoveTypeSignature;
69
- OpenMoveTypeSignature: OpenMoveTypeSignature;
70
- WowAddress: string;
71
- UInt53: number;
72
- }
73
- //#endregion
74
- export { OpenMoveTypeSignature as a, MoveTypeSignature as i, MoveData as n, OpenMoveTypeSignatureBody as o, MoveTypeLayout as r, CustomScalars as t };
@@ -1 +0,0 @@
1
- import{o as a52a}from'./exception--UEPnygY.mjs';import{L as a52b,nt as a52c}from'./object-ClDQzAeq.mjs';async function queryObjectWithType(a,b,c,d){const e=await a52b({'objects':[b],'no_cache':a['no_cache'],'network':a['network']});if(!e['objects']||e['objects']['length']!==0x1)a52a('invalid\x20argument\x20type','object\x20'+b+'\x20not\x20found');if(!e['objects'][0x0]['type']||e['objects'][0x0]['type']!==c)a52a('invalid\x20argument\x20type','object\x20'+b+'\x20type\x20'+e['objects'][0x0]['type']+'\x20is\x20not\x20'+c);const f=a52c(e['objects'][0x0]['type_raw'],d);if(!f)a52a('invalid\x20argument\x20type','object\x20'+b+'\x20type_raw\x20'+e['objects'][0x0]['type_raw']+'\x20is\x20not\x20'+d);return{'object':e['objects'][0x0]['object'],'type':f};}async function queryObjectsWithType(a,b,c,d,e){const f=await a52b({'objects':b,'no_cache':a['no_cache'],'network':a['network']}),g=[];if(f['objects'])f['objects']['forEach'](h=>{if(h['type']===c){const i=a52c(h['type_raw'],''+d);if(i)g['push']({'object':h['object'],'type':i});}});if(e&&g['length']!==b['length'])a52a('invalid\x20parameter','founded\x20'+g['length']+'\x20objects\x20'+g['map'](h=>h['object'])+'\x20,\x20expect\x20'+b['length']+':\x20'+b['filter'](h=>!g['map'](i=>i['object'])['includes'](h)));return g;}export{queryObjectsWithType as n,queryObjectWithType as t};
@@ -1 +0,0 @@
1
- import{t as a104a}from'./client-_khvywKG.mjs';import{t as a104b}from'./Transaction-B_HAG_T7.mjs';import{n as a104c}from'./network-CeDd07Hg.mjs';import{o as a104d}from'./exception--UEPnygY.mjs';import{SQLiteStorage}from'./w/local/storage.mjs';import{Config}from'./w/local/config.mjs';import{Account}from'./w/local/account.mjs';import{bigIntToBytes,bytesToHex,compressedPubKeyToAddress,hexToBytes as a104e}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';let BridgeChainId=function(a){return a[a['WowMainnet']=0x0]='WowMainnet',a[a['EthMainnet']=0xa]='EthMainnet',a;}({});function isEvmChain(a){return a===0xa;}function isWowChain(a){return a===0x0;}let BridgeVersion=function(a){return a[a['V1']=0x1]='V1',a[a['V2']=0x2]='V2',a;}({}),BridgeTokenId=function(a){return a['Eth']='ETH',a['Weth']='WETH',a['Wbtc']='WBTC',a['Usdc']='USDC',a['Usdt']='USDT',a;}({}),TransferStatus=function(a){return a['Pending']='pending',a['Approved']='approved',a['Claimed']='claimed',a['Failed']='failed',a['NotFound']='not_found',a;}({}),BridgeErrorCode=function(a){return a['EstimateFailed']='ESTIMATE_FAILED',a['Reverted']='REVERTED',a['Timeout']='TIMEOUT',a['NoSignatures']='NO_SIGNATURES',a['NodeUnavailable']='NODE_UNAVAILABLE',a['InvalidParam']='INVALID_PARAM',a['AccountNotFound']='ACCOUNT_NOT_FOUND',a['Unknown']='UNKNOWN',a;}({});const MAINNET_COMMITTEE_PUBKEYS=['0x032f020d08ca4a8632e2442ae789b961265d80b6058135bba1d2daa30ddea0acf0','0x02bb110601a69423651f1faadb1d510d895cd91baa37a470f09479aa84ef9128bb','0x03add24c04f5149421849510709d309f826f42751922f1131c784283fc2bad0b0b'],MAINNET_COMMITTEE_WEIGHTS=[0xd06,0xd06,0xd05],MAINNET_COMMITTEE_MEMBER_ADDRESSES=['0x373ee3febe317168fe58c66faaa446e26e57c2f1','0x2829ea9323836b5c8e0f8c47cd3abdc70962e891','0x97b3c777af04e4df7cb3fd1c92893a0358db9beb'],MAINNET_BRIDGE_CONFIG={'wow':{'rpcUrl':'https://fullnode.mainnet.wowok.net:443','bridgeObjectId':'0x9','clockObjectId':'0x6','network':'mainnet'},'ethereum':{'chainId':0x1,'bridgeChainId':0xa,'rpcUrl':'','bridgeProxyAddress':'0xA8d914Cc121CB2d2179Ca540bC0B8213F224aa00','bridgeVaultAddress':'0xC9A6EF1A3dC6f0681d39C318c4882FB7704a7848','bridgeCommitteeAddress':'0x822779c4183ed69bdd38e0454ec1826d2ae186a5','bridgeConfigAddress':'0xaf9414c8ab0a0905a6b9ad24c927416ac765a4ce'},'bridgeNodeUrls':['http://43.156.120.237:9211','http://150.158.76.254:9211','http://110.40.159.14:9211'],'defaultVersion':0x2,'tokens':[{'tokenId':0x1,'symbol':'WBTC','wowTypeTag':'0x06c69f212cc7bef6ff730b42bc739be7786902c501f15e99dbce1b8b5c7eff58::btc::BTC','evmAddress':'0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599','evmDecimals':0x8,'wowDecimals':0x8,'evmChains':[0xa],'description':'Wrapped\x20BTC\x20(ERC20).\x20Bitcoin\x20price\x20exposure\x20on\x20Ethereum;\x201\x20WBTC\x20=\x201\x20BTC.'},{'tokenId':0x2,'symbol':'ETH','wowTypeTag':'0xdb429818d697419e12a3481af1d21f32e603bff8716d45b0e964c2191db6604f::eth::ETH','evmAddress':'0x0000000000000000000000000000000000000000','evmDecimals':0x12,'wowDecimals':0x8,'evmChains':[0xa],'description':'Native\x20ETH.\x20Calls\x20bridgeETHV2{value};\x20vault\x20auto-wraps\x20to\x20WETH\x20internally.\x2018\x20decimals\x20on\x20EVM,\x208\x20decimals\x20on\x20WOW.'},{'tokenId':0x2,'symbol':'WETH','wowTypeTag':'0xdb429818d697419e12a3481af1d21f32e603bff8716d45b0e964c2191db6604f::eth::ETH','evmAddress':'0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2','evmDecimals':0x12,'wowDecimals':0x8,'evmChains':[0xa],'description':'Wrapped\x20ETH\x20(ERC20).\x20Calls\x20bridgeERC20V2;\x20shares\x20Token\x20ID\x202\x20and\x20WOW\x20type\x20tag\x20with\x20native\x20ETH.'},{'tokenId':0x3,'symbol':'USDC','wowTypeTag':'0xe70fcfd8ef984292b11346ee43880ea9d6fba9f270c90bd0432574db14af67bf::usdc::USDC','evmAddress':'0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48','evmDecimals':0x6,'wowDecimals':0x6,'evmChains':[0xa],'description':'USD\x20Coin\x20(USDC).\x20Fully\x20collateralized\x20USD\x20stablecoin;\x206\x20decimals\x20on\x20both\x20sides.'},{'tokenId':0x4,'symbol':'USDT','wowTypeTag':'0x4f160cf9a28ca8ac8bc0a46e13b02588dc05722148dd964807b9be89a0fcfe4d::usdt::USDT','evmAddress':'0xdAC17F958D2ee523a2206206994597C13D831ec7','evmDecimals':0x6,'wowDecimals':0x6,'evmChains':[0xa],'description':'Tether\x20USD\x20(USDT).\x20Fiat-collateralized\x20stablecoin;\x206\x20decimals\x20on\x20both\x20sides.'}],'timeouts':{'nodeRpcMs':0x7530,'signaturePollIntervalMs':0x1388,'signatureCollectMs':0xf*0xea60,'autoClaimMs':0xa*0xea60}};function findEvmChainConfig(a,b){if(a['ethereum']['chainId']===b)return a['ethereum'];if(a['l2']){for(const c of Object['values'](a['l2']))if(c&&c['chainId']===b)return c;}}function findEvmChainConfigByBridgeChainId(a,b){if(a['ethereum']['bridgeChainId']===b)return a['ethereum'];if(a['l2']){for(const c of Object['values'](a['l2']))if(c&&c['bridgeChainId']===b)return c;}}function findToken(a,b){return a['tokens']['find'](c=>c['tokenId']===b);}function findTokenBySymbol(a,b){return a['tokens']['find'](c=>c['symbol']===b);}function verifyCommitteeConsistency(){const a=[];for(let b=0x0;b<MAINNET_COMMITTEE_PUBKEYS['length'];b++){const c=MAINNET_COMMITTEE_PUBKEYS[b],d=MAINNET_COMMITTEE_MEMBER_ADDRESSES[b],e=compressedPubKeyToAddress(c);if(e['toLowerCase']()!==d['toLowerCase']())a['push']({'index':b,'pubkey':c,'expected':d,'actual':e});}return a;}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',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=a104e(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=a104e(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(a104e(BRIDGE_ETH_V2_SELECTOR),d,e,f));}function encodeBridgeETH(a,b){const c=a104e(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(a104e(BRIDGE_ETH_V1_SELECTOR),d,e,f));}function encodeBridgeERC20V2(a,b,c,d){const e=a104e(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(a104e(BRIDGE_ERC20_V2_SELECTOR),uintWord(a),uintWord(b),f,uintWord(d),g));}function encodeBridgeERC20(a,b,c,d){const e=a104e(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(a104e(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(a104e(d),g,h,e,f));}function encodeApprove(a,b){return'0x'+bytesToHex(concat(a104e(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 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]];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);}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=a104e(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']??!![];let d=await b['nodeClient']['signWowToEth'](a['wowTxDigest'],a['eventIndex']);d['length']===0x0&&(console['warn']('tx_digest\x20路径未收集到签名,回退到\x20seq\x20路径:',a['message']['chainID'],a['message']['messageType'],a['message']['nonce']),d=await b['nodeClient']['signWowTokenTransfer'](a['message']['chainID'],a['message']['messageType'],a['message']['nonce']));if(d['length']===0x0)return{'success':![],'error':{'code':'NO_SIGNATURES','message':buildNoSignaturesMessage(a['message']['chainID'],a['message']['messageType'],a['message']['nonce'])}};const f=encodeTransferBridgedTokensWithSignatures(signaturesToBytes(d),a['message'],c),g={'to':b['bridgeProxyAddress'],'value':0x0n,'data':f,'network':b['network'],'rpcUrl':b['rpcUrl']},h=EvmAccount['Instance']();await h['active']();const i=await h['sign_and_send'](g,b['rpcUrl']);if(i['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20transaction\x20reverted','revertReason':'txHash:\x20'+i['transactionHash']}};return{'success':!![],'txHash':i['transactionHash']};}catch(j){return wrapBridgeError(j,'UNKNOWN','ETH\x20claim\x20failed');}}async function claimOnEthBySeq(a,b){try{const c=b['useV2']??!![],d=await b['nodeClient']['signWowTokenTransfer'](a['sourceChain'],a['messageType'],a['seqNum']);if(d['length']===0x0)return{'success':![],'error':{'code':'NO_SIGNATURES','message':buildNoSignaturesMessage(a['sourceChain'],a['messageType'],a['seqNum'])}};const f=encodeTransferBridgedTokensWithSignatures(signaturesToBytes(d),a['message'],c),g={'to':b['bridgeProxyAddress'],'value':0x0n,'data':f,'network':b['network'],'rpcUrl':b['rpcUrl']},h=EvmAccount['Instance']();await h['active']();let i;try{await h['ethCall'](g);}catch(k){const l=k?.['message']??String(k);if(l['includes']('execution\x20reverted')||l['includes']('reverted\x20with\x20reason'))i=l;else console['warn']('\x20\x20[claimOnEthBySeq]\x20eth_call\x20warning\x20(skipped):',l['slice'](0x0,0x78));}if(i)return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20reverted','revertReason':i}};const j=await h['sign_and_send'](g,b['rpcUrl']);if(j['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20transaction\x20reverted','revertReason':'txHash:\x20'+j['transactionHash']}};return{'success':!![],'txHash':j['transactionHash']};}catch(m){return wrapBridgeError(m,'UNKNOWN','ETH\x20claim\x20(by\x20seq)\x20failed');}}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)a104d('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['amount']<=0x0n)a104d('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 a104b(),h=await Account['Instance']()['get_coin_object'](g,a['amount'],a['tokenType'],await getEnvAccount$1(b),b['network']);if(!h)a104d('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'])a104d('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':a104c(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)a104d('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)a104d('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)a104d('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['bridgeSeqNum']<0x0n)a104d('invalid\x20parameter','bridgeSeqNum\x20must\x20be\x20non-negative');const c=a['sourceChainId']??0xa,d=a['bridgeObjectId']??DEFAULT_BRIDGE_OBJECT_ID,e=new a104b();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'])a104d('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 a104a({'url':a104c(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;}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=a104e(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=a104e(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;console['log']('[waitForEthTx]\x20'+(g+0x1)+'/'+f+':\x20'+j+'/'+c+'\x20confirmations');}else console['log']('[waitForEthTx]\x20'+(g+0x1)+'/'+f+':\x20pending');await sleep$1(d);}a104d('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')a104d('fail','WOW\x20tx\x20'+b+'\x20failed:\x20'+(g['effects']['status']['error']||'unknown'));console['log']('[waitForWowTx]\x20'+(f+0x1)+'/'+e+':\x20pending'),await sleep$1(c);}a104d('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 a104e(a);if(/^[0-9a-fA-F]+$/['test'](a)&&a['length']%0x2===0x0)return a104e(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};}var BridgeNodeClient=class{constructor(a){this['committee']=a['committee'],this['timeoutMs']=a['timeoutMs']??0x7530,this['quorumRatio']=a['quorumRatio']??0x2/0x3;}get['totalWeight'](){return this['committee']['reduce']((a,b)=>a+b['weight'],0x0);}get['quorumWeight'](){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['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=new Map();let c=0x0;const d=this['committee']['map'](async f=>{try{return{'action':parseSignedAction(await this['fetchFromNode'](f['baseUrl'],a),f['weight']),'ok':!![]};}catch(g){return{'action':null,'ok':![],'error':g['message']};}}),e=await Promise['all'](d);for(const f of e){if(!f['ok']||!f['action'])continue;!b['has'](f['action']['signerPubkey'])&&(b['set'](f['action']['signerPubkey'],f['action']),c+=f['action']['weight']);}if(c<this['quorumWeight'])a104d('fail','Quorum\x20not\x20reached:\x20collected\x20'+c+',\x20required\x20'+this['quorumWeight']+'\x20(total\x20'+this['totalWeight']+')');return 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);}}},BridgeClient=class BridgeClient{constructor(a={}){this['_transferHistory']=new Map(),this['_transferCounter']=0x0,this['_loadHistoryPromise']=Promise['resolve'](),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':MAINNET_COMMITTEE_PUBKEYS[e]??'0x'+e['toString']()['padStart'](0x40,'0'),'weight':MAINNET_COMMITTEE_WEIGHTS[e]??0x1,'baseUrl':d}));this['nodeClient']=new BridgeNodeClient({'committee':b,'timeoutMs':this['config']['timeouts']['nodeRpcMs']}),this['_loadHistoryPromise']=this['_loadHistory']();}async['bridgeNativeEvmToWow'](a){return this['depositEvmToWowAndFinalize']({'amount':a['amount'],'recipientWowAddress':a['recipientWowAddress'],'waitForFinalization':a['waitForFinalization'],'token':'ETH'});}async['bridgeErc20ToWow'](a){if(a['token']==='ETH')a104d('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']});}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)a104d('invalid\x20parameter','No\x20healthy\x20EVM\x20RPC\x20available\x20for\x20chainId\x20'+a['chainId']+'.\x20Use\x20manage_evm_rpc\x20to\x20add\x20RPC\x20endpoints\x20first.');return e;}async['depositEvmToWowAndFinalize'](a){const b=this['config']['ethereum'],c=a['waitForFinalization']??!![],d=await this['resolveEvmRpcUrl'](),e=findTokenBySymbol(this['config'],a['token']);if(!e)a104d('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const f=a['token']==='ETH',g=this['config']['defaultVersion']===0x1?'v1':'v2',h={'recipientWowAddress':a['recipientWowAddress'],'bridgeProxyAddress':b['bridgeProxyAddress'],'network':b['chainId'],'rpcUrl':d,'version':g},j=await depositFromEth({'amount':a['amount'],'tokenAddress':f?void 0x0:e['evmAddress'],'tokenId':f?void 0x0:e['tokenId']},h);if(!j['success']||!j['txHash'])a104d('fail','EVM\x20deposit\x20failed:\x20'+(j['error']?.['message']??'unknown\x20error'));const k=j['txHash'];if(!c)return{'depositTxHash':k};await waitForEthTx(k,d,0x40,0x2ee0,this['config']['timeouts']['signatureCollectMs']);const l=await queryEthTxReceipt(k,d);if(!l)return{'depositTxHash':k};const m=parseEthDepositEvent(l,b['bridgeProxyAddress']);if(!m)return{'depositTxHash':k};if(!this['wowEnv'])a104d('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20EVM→WOW\x20finalization\x20(claim\x20on\x20WOW)');const n=this['config']['timeouts']['autoClaimMs'],o=this['config']['timeouts']['signaturePollIntervalMs'],p=Math['max'](0x1,Math['ceil'](n/o));let q;for(let s=0x0;s<p;s++){q=await queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':m['bridgeSeq']},this['config']['wow']['network']),console['log']('[depositEvmToWowAndFinalize]\x20wait\x20approve\x20'+(s+0x1)+'/'+p+':\x20status='+q['status']);if(q['status']==='approved'||q['status']==='claimed')break;await sleep(o);}if(!q||q['status']==='not_approved')a104d('fail','Timeout\x20waiting\x20for\x20bridge\x20nodes\x20to\x20approve\x20bridgeSeq='+m['bridgeSeq']+'\x20after\x20'+p+'\x20iterations');if(q['status']==='claimed')return{'depositTxHash':k,'bridgeSeq':m['bridgeSeq'],'claimTxDigest':q['claimedTxHash']};const r=await claimOnWow({'sourceChainId':0xa,'bridgeSeqNum':m['bridgeSeq'],'tokenType':e['wowTypeTag'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']},this['wowEnv']);return{'depositTxHash':k,'bridgeSeq':m['bridgeSeq'],'claimTxDigest':r['digest']};}async['bridgeWowToEvm'](a){if(!this['wowEnv'])a104d('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20bridge');const b=a['waitForFinalization']??!![],c=this['config']['ethereum'],d=await this['resolveEvmRpcUrl'](),e=findTokenBySymbol(this['config'],a['token']);if(!e)a104d('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const f=e['wowTypeTag'],g=e['tokenId'],h=await depositFromWow({'amount':a['amount'],'tokenType':f,'recipientEthAddress':a['recipientEthAddress'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']},this['wowEnv']),{WowClient:i}=await import('./client/index.mjs'),{Config:j}=await import('./w/local/config.mjs'),{getFullnodeUrl:k}=await import('./network-CeDd07Hg.mjs')['then'](u=>u['r']),l=await j['Instance']()['network_get'](this['wowEnv']['network']),m=new i({'url':k(l),'network':l});await waitForWowTx(m,h['digest'],this['config']['timeouts']['signaturePollIntervalMs'],this['config']['timeouts']['signatureCollectMs']);if(!b)return{'depositTxDigest':h['digest'],'bridgeSeq':h['seqNum']};const n=await m['getTransactionBlock']({'digest':h['digest'],'options':{'showEffects':!![]}}),o=n['timestampMs']?BigInt(n['timestampMs']):BigInt(Date['now']()),p=(await Account['Instance']()['get'](this['wowEnv']['account']))?.['address']??'';if(!p)a104d('fail','Failed\x20to\x20resolve\x20WOW\x20sender\x20address');const q=buildClaimMessage({'messageType':0x0,'version':0x2,'nonce':h['seqNum'],'sourceChain':0x0,'targetChain':0xa,'recipientAddress':hexToBytes(a['recipientEthAddress']['slice'](0x2)),'tokenId':g,'amount':a['amount'],'timestampMs':o,'senderAddress':hexToBytes(p['startsWith']('0x')?p['slice'](0x2):p)}),r={'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':d,'nodeClient':this['nodeClient']},s=await claimOnEthBySeq({'sourceChain':0x0,'messageType':0x0,'seqNum':h['seqNum'],'message':q},r);if(!s['success']||!s['txHash'])a104d('fail','EVM\x20claim\x20failed:\x20'+(s['error']?.['revertReason']?'revert:\x20'+s['error']['revertReason']:s['error']?.['message']??'unknown\x20error'));const t=s['txHash'];return await waitForEthTx(t,d,0x1,0x2ee0,this['config']['timeouts']['signatureCollectMs']),{'depositTxDigest':h['digest'],'bridgeSeq':h['seqNum'],'claimTxHash':t};}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']&&this['wowEnv'])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['claimTxDigest']=l['claimedTxHash'];else{if(l['status']==='approved')k['status']='signatures_ready',k['step']='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'),{Config:c}=await import('./w/local/config.mjs'),{getFullnodeUrl:d}=await import('./network-CeDd07Hg.mjs')['then'](f=>f['r']),e=await c['Instance']()['network_get'](this['wowEnv']?.['network']);return queryWowToEvmTransferStatus(new b({'url':d(e),'network':e}),a);}async['queryEvmToWowClaimStatus'](a){return queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':a['bridgeSeqNum']},this['config']['wow']['network']);}async['claimWowToEvm'](a){if(!this['wowEnv'])a104d('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20claim');const b=this['_transferHistory']['get'](a);if(!b)a104d('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20not\x20found');if(b['direction']!=='wow_to_evm')a104d('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20is\x20not\x20a\x20wow_to_evm\x20transfer');if(!b['depositTxDigest']||!b['bridgeSeq'])a104d('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20missing\x20deposit\x20info\x20(depositTxDigest\x20or\x20bridgeSeq)');const c=this['config']['ethereum'],d=await this['resolveEvmRpcUrl'](),e=findTokenBySymbol(this['config'],b['token']);if(!e)a104d('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-CeDd07Hg.mjs')['then'](q=>q['r']),j=await h['Instance']()['network_get'](this['wowEnv']['network']),k=await new g({'url':i(j),'network':j})['getTransactionBlock']({'digest':b['depositTxDigest'],'options':{'showEffects':!![]}}),l=k['timestampMs']?BigInt(k['timestampMs']):BigInt(Date['now']()),m=(await Account['Instance']()['get'](this['wowEnv']['account']))?.['address']??'';if(!m)a104d('fail','Failed\x20to\x20resolve\x20WOW\x20sender\x20address');const n=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':l,'senderAddress':hexToBytes(m['startsWith']('0x')?m['slice'](0x2):m)}),o={'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':d,'nodeClient':this['nodeClient']},p=await claimOnEthBySeq({'sourceChain':0x0,'messageType':0x0,'seqNum':BigInt(b['bridgeSeq']),'message':n},o);if(!p['success']||!p['txHash'])a104d('fail','EVM\x20claim\x20failed:\x20'+(p['error']?.['revertReason']?'revert:\x20'+p['error']['revertReason']:p['error']?.['message']??'unknown\x20error'));return this['_updateTransfer'](a,{'step':'claimed','status':'success','claimTxHash':p['txHash']}),{'claimTxHash':p['txHash'],'transferId':a};}async['bridgeWowToEvmSimple'](a){if(!this['wowEnv'])a104d('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'],d=await this['_recordTransfer']({'direction':'wow_to_evm','token':a['token'],'amount':a['amount'],'recipientEth':a['withdrawTo']??c,'intermediateEthAccount':c,'withdrawToProvided':!!a['withdrawTo']});try{this['_updateTransfer'](d,{'step':'deposit','status':'in_progress'});const e=await this['bridgeWowToEvm']({'token':a['token'],'amount':a['amount'],'recipientEthAddress':c,'waitForFinalization':a['waitForFinalization']??!![]});if(e['claimTxHash'])this['_updateTransfer'](d,{'step':'claimed','status':'success','depositTxDigest':e['depositTxDigest'],'bridgeSeq':e['bridgeSeq']?.['toString'](),'claimTxHash':e['claimTxHash']});else this['_updateTransfer'](d,{'step':'deposit','status':'in_progress','depositTxDigest':e['depositTxDigest'],'bridgeSeq':e['bridgeSeq']?.['toString']()});let f;if(a['withdrawTo']&&e['claimTxHash']){this['_updateTransfer'](d,{'step':'withdraw','status':'in_progress'});const g=findTokenBySymbol(this['config'],a['token']);f=(await b['Instance']()['withdrawFromActive']({'to':a['withdrawTo'],'amount':a['amount'],'tokenAddress':a['token']==='ETH'?void 0x0:g?.['evmAddress'],'network':this['config']['ethereum']['chainId']}))['transactionHash'],this['_updateTransfer'](d,{'step':'withdrawn','status':'success','withdrawTxHash':f});}return{'depositTxDigest':e['depositTxDigest'],'bridgeSeq':e['bridgeSeq'],'claimTxHash':e['claimTxHash'],'withdrawTxHash':f,'activeEvmAccount':c,'transferId':d};}catch(h){this['_updateTransfer'](d,{'status':'failed','error':h?.['message']??String(h)});throw h;}}async['bridgeEvmToWowSimple'](a){if(!this['wowEnv'])a104d('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 i=await Account['Instance']()['get'](this['wowEnv']['account']);if(!i?.['address'])a104d('fail','Failed\x20to\x20resolve\x20WOW\x20recipient\x20address');d=i['address'];}const e=findTokenBySymbol(this['config'],a['token']);if(!e)a104d('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const f=a['token']==='ETH';let g;if(f)g=await b['Instance']()['balance'](this['config']['ethereum']['chainId']);else g=await b['Instance']()['balanceOf'](e['evmAddress'],this['config']['ethereum']['chainId']);if(g===void 0x0||g<a['amount'])a104d('fail','Insufficient\x20'+(f?'ETH':'ERC20')+'\x20balance\x20on\x20activeEvmAccount\x20('+c['address']+')\x20on\x20chain\x20'+this['config']['ethereum']['chainId']+':\x20have\x20'+(g??0x0n)+',\x20need\x20'+a['amount']+'.\x20Please\x20recharge\x20the\x20activeEvmAccount\x20from\x20your\x20wallet\x20(transfer\x20'+(f?'ETH':'the\x20token')+'\x20to\x20'+c['address']+'),\x20then\x20retry\x20the\x20cross-chain\x20transfer.');const h=await this['_recordTransfer']({'direction':'evm_to_wow','token':a['token'],'amount':a['amount'],'recipientWow':d,'intermediateEthAccount':c['address']});try{this['_updateTransfer'](h,{'step':'deposit','status':'in_progress'});let j;if(f)j=await this['bridgeNativeEvmToWow']({'amount':a['amount'],'recipientWowAddress':d,'waitForFinalization':a['waitForFinalization']??!![]});else j=await this['bridgeErc20ToWow']({'token':a['token'],'amount':a['amount'],'recipientWowAddress':d,'waitForFinalization':a['waitForFinalization']??!![]});const k=a['waitForFinalization']??!![];return this['_updateTransfer'](h,{'step':k?'claimed':'deposit','status':k?'success':'in_progress','depositTxHash':j['depositTxHash'],'bridgeSeq':j['bridgeSeq']?.['toString'](),'claimTxDigest':j['claimTxDigest']}),{...j,'activeEvmAccount':c['address'],'transferId':h};}catch(l){this['_updateTransfer'](h,{'status':'failed','error':l?.['message']??String(l)});throw l;}}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=findTokenBySymbol(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){await this['_loadHistoryPromise'];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['_transferHistory']['get'](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['status']='failed',d['step']='failed',d['error']='EVM\x20claim\x20transaction\x20reverted')):(d['status']='claiming',d['step']='claim_tx_pending');}catch{}}else d['hint']='claim_wow_to_evm\x20(step\x202)\x20not\x20yet\x20called.\x20Call\x20claim_wow_to_evm\x20after\x20bridge\x20nodes\x20sign\x20(~1-5\x20min).';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)a104d('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)a104d('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)a104d('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:a104d('invalid\x20parameter','Unknown\x20op:\x20'+a['op']);}}static{this['HISTORY_DB_KEY']='bridge:transfers:all';}async['_loadHistory'](){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){this['_transferCounter']+=0x1;const b='br_'+Date['now']()+'_'+this['_transferCounter'],c={'transferId':b,'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){const c=this['_transferHistory']['get'](a);if(!c)return;Object['assign'](c,b,{'updatedAt':Date['now']()}),await this['_saveHistory']();}};function sleep(a){return new Promise(b=>setTimeout(b,a));}function loadDefaultConfig(){return MAINNET_BRIDGE_CONFIG;}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{TransferStatus as $,TOKENS_CLAIMED_TOPIC as A,MAINNET_BRIDGE_CONFIG as B,buildClaimMessage as C,depositEth as D,depositErc20 as E,encodeBridgeERC20V2 as F,findEvmChainConfigByBridgeChainId as G,MAINNET_COMMITTEE_PUBKEYS as H,encodeBridgeETH as I,verifyCommitteeConsistency as J,findToken as K,encodeBridgeETHV2 as L,TOKENS_DEPOSITED_V2_TOPIC as M,encodeApprove as N,depositFromEth as O,encodeBridgeERC20 as P,BridgeVersion as Q,encodeTokenTransferPayloadV2 as R,depositFromWow as S,claimOnEthBySeq as T,MAINNET_COMMITTEE_WEIGHTS as U,MAINNET_COMMITTEE_MEMBER_ADDRESSES as V,findEvmChainConfig as W,BridgeErrorCode as X,BridgeChainId as Y,BridgeTokenId as Z,waitForEthTx as _,BridgeTransferStatus as a,claimOnWow as b,parseEthClaimEvent as c,queryEthBalance as d,isEvmChain as et,queryEthTxConfirmations as f,queryWowTx as g,queryWowToEvmTransferStatus as h,BridgeTransferDirection as i,TOKENS_DEPOSITED_TOPIC as j,ERC20_TRANSFER_TOPIC as k,parseEthDepositEvent as l,queryEvmToWowTransferStatus as m,BridgeNodeClient as n,BridgeTransferStep as o,queryEthTxReceipt as p,findTokenBySymbol as q,BRIDGE_STEP_DESCRIPTIONS as r,makeBridgeTransferState as s,BridgeClient as t,isWowChain as tt,queryErc20Balance as u,waitForWowTx as v,claimOnEth as w,queryWowClaimStatus as x,WowClaimStatus as y,encodeTransferBridgedTokensWithSignatures as z};