@wowok/wowok 3.0.6 → 3.0.8

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 (109) hide show
  1. package/README.md +2 -2
  2. package/dist/esm/{arb-CNTnpKU4.mjs → arb-S5T4M9_4.mjs} +1 -1
  3. package/dist/esm/{call-Zj4BGD5O.mjs → call-CLTpE7NH.mjs} +1 -1
  4. package/dist/esm/client/index.d.mts +1 -1
  5. package/dist/esm/client/index.mjs +1 -1
  6. package/dist/esm/{client-HlvevC--.mjs → client-DYIgIItb.mjs} +1 -1
  7. package/dist/esm/{common-DhtZTgkX.mjs → common-DC9BAaSg.mjs} +1 -1
  8. package/dist/esm/cryptography/index.d.mts +1 -1
  9. package/dist/esm/{exception-o3XVk35a.mjs → exception-D2n4LV8F.mjs} +1 -1
  10. package/dist/esm/{fund-approval-B0Y1YRF5.mjs → fund-approval-D9vwQz49.mjs} +1 -1
  11. package/dist/esm/graphql/index.d.mts +1 -1
  12. package/dist/esm/graphql/index.mjs +1 -1
  13. package/dist/esm/{graphql-Dm6C2KN9.mjs → graphql-DyLuCJhh.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-AmhWNnDx.mjs → grpc-DyL19pdw.mjs} +1 -1
  17. package/dist/esm/{index-5DmaIrpk.d.mts → index-DKne9Aij.d.mts} +549 -40
  18. package/dist/esm/index.d.mts +4 -4
  19. package/dist/esm/index.mjs +1 -1
  20. package/dist/esm/jsonRpc/index.d.mts +1 -1
  21. package/dist/esm/jsonRpc/index.mjs +1 -1
  22. package/dist/esm/keypairs/ed25519/index.d.mts +1 -1
  23. package/dist/esm/keypairs/falcon512/index.d.mts +1 -1
  24. package/dist/esm/keypairs/passkey/index.d.mts +1 -1
  25. package/dist/esm/keypairs/secp256k1/index.d.mts +1 -1
  26. package/dist/esm/keypairs/secp256r1/index.d.mts +1 -1
  27. package/dist/esm/{local-Cizo_1J5.d.mts → local-CsbLMwvo.d.mts} +12 -1
  28. package/dist/esm/messenger-CsUbfW03.mjs +1 -0
  29. package/dist/esm/messenger-api-BHzaiB8Z.mjs +1 -0
  30. package/dist/esm/multisig/index.d.mts +1 -1
  31. package/dist/esm/{networks-ByH0We-G.d.mts → networks-DgObqYrB.d.mts} +16 -1
  32. package/dist/esm/{proof-BgXYvVg_.mjs → proof-e283A6LF.mjs} +1 -1
  33. package/dist/esm/{received-BumlehnN.mjs → received-BP2jW99o.mjs} +1 -1
  34. package/dist/esm/{service-Bf6Sljmf.mjs → service-CF9YMK_P.mjs} +1 -1
  35. package/dist/esm/transactions/index.d.mts +1 -1
  36. package/dist/esm/util-2Fli5dww.mjs +1 -0
  37. package/dist/esm/{util-kGpbSSrV.mjs → util-DGq_oxSf.mjs} +1 -1
  38. package/dist/esm/verify/index.d.mts +1 -1
  39. package/dist/esm/w/call/allocation.d.mts +1 -1
  40. package/dist/esm/w/call/allocation.mjs +1 -1
  41. package/dist/esm/w/call/arbitration.d.mts +1 -1
  42. package/dist/esm/w/call/arbitration.mjs +1 -1
  43. package/dist/esm/w/call/base.d.mts +1 -1
  44. package/dist/esm/w/call/base.mjs +1 -1
  45. package/dist/esm/w/call/demand.d.mts +1 -1
  46. package/dist/esm/w/call/demand.mjs +1 -1
  47. package/dist/esm/w/call/guard.d.mts +1 -1
  48. package/dist/esm/w/call/guard.mjs +1 -1
  49. package/dist/esm/w/call/index.d.mts +1 -1
  50. package/dist/esm/w/call/index.mjs +1 -1
  51. package/dist/esm/w/call/machine.d.mts +1 -1
  52. package/dist/esm/w/call/machine.mjs +1 -1
  53. package/dist/esm/w/call/passport.d.mts +1 -1
  54. package/dist/esm/w/call/passport.mjs +1 -1
  55. package/dist/esm/w/call/payment.d.mts +1 -1
  56. package/dist/esm/w/call/payment.mjs +1 -1
  57. package/dist/esm/w/call/permission.d.mts +1 -1
  58. package/dist/esm/w/call/permission.mjs +1 -1
  59. package/dist/esm/w/call/progress.d.mts +1 -1
  60. package/dist/esm/w/call/progress.mjs +1 -1
  61. package/dist/esm/w/call/repository.d.mts +1 -1
  62. package/dist/esm/w/call/repository.mjs +1 -1
  63. package/dist/esm/w/call/reward.d.mts +1 -1
  64. package/dist/esm/w/call/reward.mjs +1 -1
  65. package/dist/esm/w/call/service.d.mts +1 -1
  66. package/dist/esm/w/call/service.mjs +1 -1
  67. package/dist/esm/w/call/treasury.d.mts +1 -1
  68. package/dist/esm/w/call/treasury.mjs +1 -1
  69. package/dist/esm/w/common.d.mts +1 -1
  70. package/dist/esm/w/common.mjs +1 -1
  71. package/dist/esm/w/index.d.mts +4 -4
  72. package/dist/esm/w/index.mjs +1 -1
  73. package/dist/esm/w/local/account.d.mts +2 -2
  74. package/dist/esm/w/local/account.mjs +1 -1
  75. package/dist/esm/w/local/evm/networks.d.mts +1 -1
  76. package/dist/esm/w/local/evm/networks.mjs +1 -1
  77. package/dist/esm/w/local/evm-account.mjs +1 -1
  78. package/dist/esm/w/local/fund-approval.mjs +1 -1
  79. package/dist/esm/w/local/index.d.mts +4 -4
  80. package/dist/esm/w/local/index.mjs +1 -1
  81. package/dist/esm/w/local/local.d.mts +1 -1
  82. package/dist/esm/w/local/local.mjs +1 -1
  83. package/dist/esm/w/local/token.d.mts +1 -1
  84. package/dist/esm/w/local/token.mjs +1 -1
  85. package/dist/esm/w/messenger/attachment.d.mts +2 -0
  86. package/dist/esm/w/messenger/attachment.mjs +1 -0
  87. package/dist/esm/w/messenger/index.d.mts +2 -2
  88. package/dist/esm/w/messenger/index.mjs +1 -1
  89. package/dist/esm/w/messenger/messenger-api.d.mts +2 -2
  90. package/dist/esm/w/messenger/messenger-api.mjs +1 -1
  91. package/dist/esm/w/messenger/messenger.d.mts +1 -1
  92. package/dist/esm/w/messenger/messenger.mjs +1 -1
  93. package/dist/esm/w/messenger/pq/crypto.mjs +1 -1
  94. package/dist/esm/w/messenger/reply.d.mts +1 -1
  95. package/dist/esm/w/messenger/storage.d.mts +39 -2
  96. package/dist/esm/w/messenger/storage.mjs +1 -1
  97. package/dist/esm/w/messenger/types.d.mts +2 -2
  98. package/dist/esm/w/messenger/types.mjs +1 -1
  99. package/dist/esm/w/messenger/utils.d.mts +31 -0
  100. package/dist/esm/w/messenger/utils.mjs +1 -0
  101. package/dist/esm/w/query/index.d.mts +2 -2
  102. package/dist/esm/w/query/index.mjs +1 -1
  103. package/dist/esm/w/query/object.d.mts +1 -1
  104. package/dist/esm/w/query/object.mjs +1 -1
  105. package/dist/esm/{w-DcAJ-L_L.mjs → w-BqZNIgJB.mjs} +1 -1
  106. package/package.json +7 -2
  107. package/dist/esm/messenger-Cq0kGhTg.mjs +0 -1
  108. package/dist/esm/messenger-api-DdKAABD8.mjs +0 -1
  109. package/dist/esm/util-DttciwF8.mjs +0 -1
@@ -1 +1 @@
1
- import{o as a75a}from'../../wow-types-DctQuD2J.mjs';import{t as a75b}from'../../client-HlvevC--.mjs';import{t as a75c}from'../../Transaction-CrzrFqPW.mjs';import{o as a75d}from'../../exception-o3XVk35a.mjs';import{a as a75e}from'../../network-UpRYD8EM.mjs';import{c as a75f}from'../../keypair-IIyGelNr.mjs';import{n as a75g,r as a75h,t as a75i}from'../../faucet-RNvBvVJf.mjs';import{n as a75j}from'../../falcon512-CnEZ-g-L.mjs';import{Z as a75k,rt as a75l}from'../../common-DhtZTgkX.mjs';import{d as a75m,r as a75n}from'../../storage-D1bEi2b7.mjs';import{Config}from'./config.mjs';import{SecureAccountStorage}from'./secure-storage.mjs';import{sha256}from'@noble/hashes/sha2.js';import{x25519}from'@noble/curves/ed25519.js';import{hkdf}from'@noble/hashes/hkdf.js';const DEFAULT_ACCOUNT_NAME='',MAX_ACCOUNTS=0x14,MAX_MESSENGER_ACCOUNTS=0x14;var Account=class Account{constructor(){this['balance']=async(b,c,d)=>{const e=await this['get'](c);b=b??'0x2::wow::WOW';if(e){const f=await Config['Instance']()['network_get'](d);return new a75b({'url':a75e(f),'network':f})['getBalance']({'owner':e['address'],'coinType':b});}},this['coin']=async(b,c,d,e,f)=>{const g=await this['get'](e);b=b??'0x2::wow::WOW';if(g){const h=await Config['Instance']()['network_get'](f);return new a75b({'url':a75e(h),'network':h})['getCoins']({'owner':g['address'],'coinType':b,'cursor':c,'limit':d});}},this['get_coin_object']=async(c,d,e,f,g)=>{const h=await this['get'](f);if(h){const j=BigInt(d),k=await Config['Instance']()['network_get'](g),l=new a75b({'url':a75e(k),'network':k});if(j>=BigInt(0x0)){if(!e||a75k(e))return c['splitCoins'](c['gas'],[j]);else{const m=await l['getCoins']({'owner':h['address'],'coinType':e}),n=[],o=new Set();let p=BigInt(0x0);for(let q=0x0;q<m['data']['length'];++q){const s=m['data'][q]['coinObjectId'];if(o['has'](s))continue;o['add'](s),p+=BigInt(m['data'][q]['balance']),n['push'](s);if(p>=j)break;}if(n['length']===0x0)return;if(p===j){if(n['length']===0x1)return c['object'](n[0x0]);const t=n['pop']();return c['mergeCoins'](t,n);}if(n['length']===0x1)return c['splitCoins'](n[0x0],[j]);else{const u=n['pop']();return c['mergeCoins'](u,n),c['splitCoins'](u,[j]);}}}}},this['get_many_coin_object']=async(a,b,c,d,e)=>{const f=[];for(const g of b){const h=await this['get_coin_object'](a,g,c,d,e);if(!h)a75d('invalid\x20parameter','Invalid\x20coin\x20object:\x20'+g);else f['push'](h);}return a['makeMoveVec']({'elements':f});},this['coinObject_with_balance']=async(b,c,d,e)=>{const f=await this['get_imp'](d);if(!f)return void 0x0;const g=a75j['fromSecretKey'](f['secret']);if(!g)return void 0x0;const h=new a75c(),i=await this['get_coin_object'](h,b,c,d,e);if(i){h['transferObjects']([i],f['address']);const j=await Config['Instance']()['network_get'](e),k=await new a75b({'url':a75e(j),'network':j})['signAndExecuteTransaction']({'transaction':h,'signer':g,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}}),l=c??'0x2::wow::WOW',m=k?.['objectChanges']??[],n=m['find'](o=>o?.['type']==='created'&&(o?.['objectType'])['includes'](l));if(n)return n['objectId'];return m['find'](o=>o?.['type']==='mutated'&&(o?.['objectType'])['includes'](l))?.['objectId'];}};}static{this['_dataLock']=new a75m();}static{this['_storageLock']=new a75m();}static{this['_txLocks']=new Map();}static{this['orphanMigrationDone']=![];}static['txLock'](a){let b=Account['_txLocks']['get'](a);return!b&&(b=new a75m(),Account['_txLocks']['set'](a,b)),b;}['setStorage'](a){Account['storage']=a;}['setEncryptedStorage'](a){Account['storage']=new SecureAccountStorage(a);}async['getStorage'](){if(Account['storage'])return Account['storage'];return Account['_storageLock']['run'](async()=>{if(!Account['storage'])Account['storage']=new SecureAccountStorage(new a75n());return Account['storage'];});}async['unlock'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');b['setSessionPassword'](a),await b['get']();}async['lock'](){const a=await this['getStorage']();if(a instanceof SecureAccountStorage)a['setSessionPassword'](void 0x0);}async['setEncryptionPassword'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['setPassword'](a);}async['changeEncryptionPassword'](a,b){const c=await this['getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['changePassword'](a,b);}async['removeEncryptionPassword'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['removePassword'](a);}async['getEncryptionMode'](){const a=await this['getStorage']();if(a instanceof SecureAccountStorage)return a['getMode']();}async['isPasswordSet'](){return await this['getEncryptionMode']()==='password';}async['getMcpAccess'](){const a=await this['getStorage']();if(a instanceof SecureAccountStorage)return a['getMcpAccess']();return'allowed';}async['setMcpAccess'](a,b){const c=await this['getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['setMcpAccess'](a,b);}async['exportSecret'](a){const b=await(await this['getStorage']())['get']();if(!b)return void 0x0;const c=JSON['parse'](b),d=a['toLowerCase']();return c['find'](e=>e['address']['toLowerCase']()===d||e['name']&&e['name']['toLowerCase']()===d)?.['secret'];}async['importSecret'](a,b,c,d,e=![]){return Account['_dataLock']['run'](async()=>{b=this['name_resolve'](b);if(b&&!a75l(b))a75d('invalid\x20name','Name\x20'+b+'\x20is\x20exceeds\x20max\x2064');const f=a75j['fromSecretKey'](a),g=f['getPublicKey']()['toWowAddress'](),h=f['getSecretKey'](),i=await this['getStorage'](),j=await i['get'](),k=j?JSON['parse'](j):[];if(k['findIndex'](p=>p['address']['toLowerCase']()===g['toLowerCase']())!==-0x1)a75d('invalid\x20parameter','Account\x20with\x20address\x20'+g+'\x20already\x20exists');const l=k['findIndex'](p=>Account['nameMatch'](p['name'],b));if(l!==-0x1){if(c){if(b==='')a75d('invalid\x20parameter','Cannot\x20replaceExistName\x20on\x20the\x20default\x20account\x20(name=\x22\x22).\x20The\x20default\x20account\x20is\x20unique\x20and\x20cannot\x20be\x20suspended\x20by\x20replacement.\x20Use\x20suspend()\x20explicitly\x20if\x20you\x20need\x20to\x20deactivate\x20it.');const p=Date['now']();k[l]['suspended']=!![],k[l]['name']=void 0x0,k[l]['messenger']=![],k[l]['updatedAt']=p;}else a75d('account\x20name\x20exist','Name\x20'+(b||'')+'\x20already\x20exist');}const m=k['filter'](q=>!q['suspended'])['length'];if(m>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20accounts\x20allowed,\x20current\x20count:\x20'+m);if(d){const q=k['filter'](r=>r['messenger']===!![]&&!r['suspended'])['length'];if(q>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+q);}const n=Date['now'](),o={'name':b,'address':g,'secret':h,'messenger':d||![],'createdAt':n,'updatedAt':n};return k['push'](o),await i['put'](JSON['stringify'](k)),this['accountData'](o,e);});}static['Instance'](){if(Account['_instance'])return Account['_instance'];if(!Account['_instance'])Account['_instance']=new Account();return Account['_instance'];}['accountData'](a,b=![]){if(!a||!a['secret'])return void 0x0;if(b)a['pubkey']=a75j['fromSecretKey'](a['secret'])['getPublicKey']()['toWowPublicKey']();a['secret']=void 0x0;if(a['name']===void 0x0)a['name']='';return a;}static['nameMatch'](a,b){return(a??'')['toLowerCase']()===b['toLowerCase']();}async['gen'](a,b,c,d=![]){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a);if(a&&!a75l(a))a75d('invalid\x20name','Name\x20'+a+'\x20is\x20exceeds\x20max\x2064');const e=a75j['generate']()['getSecretKey'](),f=a75j['fromSecretKey'](e)['getPublicKey']()['toWowAddress'](),g=Date['now'](),h={'name':a,'address':f,'secret':e,'messenger':c||![],'createdAt':g,'updatedAt':g},i=await this['getStorage'](),j=await i['get'](),k=j?JSON['parse'](j):[],l=k['findIndex'](n=>Account['nameMatch'](n['name'],a));if(l!==-0x1){if(b){if(a==='')a75d('invalid\x20parameter','Cannot\x20replaceExistName\x20on\x20the\x20default\x20account\x20(name=\x22\x22).\x20The\x20default\x20account\x20is\x20unique\x20and\x20cannot\x20be\x20suspended\x20by\x20replacement.\x20Use\x20suspend()\x20explicitly\x20if\x20you\x20need\x20to\x20deactivate\x20it.');const n=Date['now']();k[l]['suspended']=!![],k[l]['name']=void 0x0,k[l]['messenger']=![],k[l]['updatedAt']=n;}else a75d('account\x20name\x20exist','Name\x20'+(a||'')+'\x20already\x20exist');}const m=k['filter'](o=>!o['suspended'])['length'];if(m>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20accounts\x20allowed,\x20current\x20count:\x20'+m);if(c){const o=k['filter'](p=>p['messenger']===!![]&&!p['suspended'])['length'];if(o>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+o);}return k['push'](h),await i['put'](JSON['stringify'](k)),this['accountData'](h,d);});}async['default'](a=![]){return await this['migrateOrphanAccountsIfNeeded'](),this['accountData'](await this['get_imp'](''),a);}async['migrateOrphanAccountsIfNeeded'](){if(Account['orphanMigrationDone'])return;return Account['orphanMigrationDone']=!![],Account['_dataLock']['run'](async()=>{const a=await this['getStorage'](),b=await a['get']();if(!b)return;const c=JSON['parse'](b);let e=![];const f=Date['now']();for(const g of c)g['name']===void 0x0&&g['suspended']!==!![]&&(g['suspended']=!![],g['messenger']=![],g['updatedAt']=f,e=!![]);if(e)await a['put'](JSON['stringify'](c));});}async['get'](a,b,c=![]){if(!b)return this['accountData'](await this['get_imp'](a),c);return this['gen'](a);}async['get_address'](a){if(a&&a75a(a))return a['toLowerCase']();return(await this['get_imp'](a))?.['address'];}async['get_many_address'](a){const b=await(await this['getStorage']())['get']();if(b){const c=JSON['parse'](b);return a['map'](d=>{if(d&&a75a(d))return d['toLowerCase']();const e=this['name_resolve'](d);return c['find'](f=>f['address']['toLowerCase']()===e['toLowerCase']()||Account['nameMatch'](f['name'],e))?.['address'];});}return a['map'](d=>d&&a75a(d)?d['toLowerCase']():void 0x0);}async['get_imp'](a){a=this['name_resolve'](a);const b=await(await this['getStorage']())['get']();if(b){const c=a['toLowerCase']();return JSON['parse'](b)['find'](e=>Account['nameMatch'](e['name'],a)||e['address']['toLowerCase']()===c);}}['name_resolve'](a){return a||'';}async['get_many'](a,b=![]){return this['get_many_imp'](a,b);}async['get_many_imp'](a,b=![]){const c=await(await this['getStorage']())['get']();if(c){const d=JSON['parse'](c);return a['map'](e=>{const f=this['name_resolve'](e),g=d['find'](h=>h['address']['toLowerCase']()===f['toLowerCase']()||Account['nameMatch'](h['name'],f));if(!g)return void 0x0;if(b){const h=a75j['fromSecretKey'](g['secret']),j={...g,'pubkey':h['getPublicKey']()['toWowPublicKey']()};return delete j['secret'],j;}return g;});}return a['map'](e=>void 0x0);}async['swap_name'](a,b){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a),b=this['name_resolve'](b);if(this['name_resolve'](a)===this['name_resolve'](b))return!![];if(a&&!a75l(a))a75d('invalid\x20name','Name\x20'+(a||'')+'\x20is\x20exceeds\x20max\x2064');if(b&&!a75l(b))a75d('invalid\x20name','Name\x20'+(b||'')+'\x20is\x20exceeds\x20max\x2064');const c=await this['getStorage'](),d=await c['get']();if(!d)return![];const e=JSON['parse'](d),f=e['find'](i=>Account['nameMatch'](i['name'],a)),g=e['find'](i=>Account['nameMatch'](i['name'],b));if(!f||!g)return![];const h=Date['now']();return f['name']=b,f['updatedAt']=h,g['name']=a,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];});}async['rename'](a,b){return Account['_dataLock']['run'](async()=>{if(b&&!a75l(b))a75d('invalid\x20name','Invalid\x20new\x20name:\x20\x22'+(b||'')+'\x22.\x20Must\x20be\x20a\x20valid\x20name\x20(not\x20an\x20address)');const c=this['name_resolve'](a);if(c===b)return!![];const d=await this['getStorage'](),e=await d['get']();if(e){const g=JSON['parse'](e);if(g['find'](j=>Account['nameMatch'](j['name'],b)))a75d('invalid\x20name','New\x20name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const h=g['find'](j=>Account['nameMatch'](j['name'],c)||j['address']['toLowerCase']()===c['toLowerCase']());if(!h)a75d('account\x20not\x20found','Source\x20account\x20\x22'+(a||'')+'\x22\x20not\x20found');const i=Date['now']();return h['name']=b,h['updatedAt']=i,await d['put'](JSON['stringify'](g)),!![];}return![];});}async['list'](a){await this['migrateOrphanAccountsIfNeeded']();const b=await(await this['getStorage']())['get']();if(b){let c=JSON['parse'](b);if(a?.['suspended']!==void 0x0)c=c['filter'](d=>a['suspended']?d['suspended']===!![]:!d['suspended']);else c=c['filter'](d=>!d['suspended']);if(a?.['hasMessenger']!==void 0x0)c=c['filter'](d=>a['hasMessenger']?d['messenger']===!![]:d['messenger']!==!![]);if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0)c=c['filter'](d=>d['createdAt']&&d['createdAt']>=a['createdAt']['gte']);if(a['createdAt']['lte']!==void 0x0)c=c['filter'](d=>d['createdAt']&&d['createdAt']<=a['createdAt']['lte']);}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0)c=c['filter'](d=>d['updatedAt']&&d['updatedAt']>=a['updatedAt']['gte']);if(a['updatedAt']['lte']!==void 0x0)c=c['filter'](d=>d['updatedAt']&&d['updatedAt']<=a['updatedAt']['lte']);}if(a?.['name']!=null||a?.['address'])c=c['map'](d=>{let e=0x0;if(a?.['name']!=null){const f=d['name']?.['toLowerCase']()||'',g=a['name']['toLowerCase']();if(f===g)e+=0x64;else{if(f['startsWith'](g))e+=0x32;else{if(f['includes'](g))e+=0x19;}}}if(a?.['address']){const h=d['address']['toLowerCase'](),i=a['address']['toLowerCase']();if(h===i)e+=0x64;else{if(h['startsWith'](i))e+=0x32;else{if(h['includes'](i))e+=0x19;}}}if((a?.['name']||a?.['address'])&&e===0x0)e=-0x1;return{'account':d,'score':e};})['filter'](({score:d})=>d>=0x0)['sort']((d,e)=>e['score']-d['score'])['map'](({account:d})=>d);return c['map'](d=>this['accountData'](d,a?.['includePubkey']))['filter'](d=>d!==void 0x0);}return[];}async['suspend'](a){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a);const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c),e=d['find'](g=>g['address']['toLowerCase']()===a['toLowerCase']()||Account['nameMatch'](g['name'],a));if(e){const g=Date['now']();return e['suspendedName']=e['name']??'',e['suspended']=!![],e['name']=void 0x0,e['messenger']=![],e['updatedAt']=g,await b['put'](JSON['stringify'](d)),!![];}}return![];});}async['suspend_many'](a){return Account['_dataLock']['run'](async()=>{const b=await this['getStorage'](),c=await b['get'](),d={'success':[],'failed':[]};if(c){const e=JSON['parse'](c),g=Date['now']();let h=![];for(const i of a){const j=this['name_resolve'](i),k=e['find'](l=>l['address']['toLowerCase']()===j['toLowerCase']()||Account['nameMatch'](l['name'],j));if(k)k['suspended']=!![],k['name']=void 0x0,k['messenger']=![],k['updatedAt']=g,d['success']['push'](i),h=!![];else d['failed']['push'](i);}if(h)await b['put'](JSON['stringify'](e));}else d['failed']=[...a];return d;});}async['resume'](a,b){return Account['_dataLock']['run'](async()=>{b=this['name_resolve'](b),a=a['toLowerCase']();if(b&&!a75l(b))a75d('invalid\x20name','Name\x20'+b+'\x20is\x20exceeds\x20max\x2064');const c=await this['getStorage'](),d=await c['get']();if(d){const e=JSON['parse'](d);if(e['find'](h=>Account['nameMatch'](h['name'],b)))a75d('invalid\x20name','Name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const g=e['find'](h=>h['address']['toLowerCase']()===a['toLowerCase']());if(g){const h=Date['now']();return g['suspended']=![],g['name']=b,g['suspendedName']=void 0x0,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];}}return![];});}async['faucet'](b,c){const d=await this['get_imp'](b);if(!d)throw new Error('Faucet\x20request\x20failed:\x20account\x20\x22'+(b??'<default>')+'\x22\x20not\x20found');const f=0x5,g=0xbb8;let h;for(let i=0x1;i<=f;i++)try{return(await a75h({'host':a75g(c),'recipient':d['address']}))['coins_sent']||[];}catch(j){h=j;if(j instanceof a75i&&i<f){await new Promise(k=>setTimeout(k,g));continue;}throw j;}throw h instanceof Error?h:new Error('Faucet\x20request\x20failed\x20after\x20retries');}async['sign_and_commit'](b,c,d){const e=await this['get_imp'](c);if(!e)return;const f=a75j['fromSecretKey'](e['secret']);if(!f)return;const g=await Config['Instance']()['network_get'](d),h=g+':'+e['address']['toLowerCase']();return Account['txLock'](h)['run'](async()=>{return new a75b({'url':a75e(g),'network':g})['signAndExecuteTransaction']({'transaction':b,'signer':f,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}});});}async['refund_coin'](a,b,c){const d=await this['get_address'](c);if(!d)a75d('invalid\x20parameter','Invalid\x20to\x20address\x20or\x20name\x20'+c);a['transferObjects']([b],a['pure']['address'](d));}async['transfer'](a,b,c,d,e){const [f,g]=await this['get_many_imp']([d,c]);if(!f)a75d('invalid\x20parameter','Invalid\x20from\x20address\x20or\x20name\x20'+d);const h=g?.['address']??c;if(!h)a75d('invalid\x20parameter','Invalid\x20to\x20address\x20or\x20name\x20'+c);const i=a75j['fromSecretKey'](f['secret']);if(i){const j=new a75c(),k=await this['get_coin_object'](j,a,b,d,e);if(k){j['transferObjects']([k],h);const l=await Config['Instance']()['network_get'](e);return new a75b({'url':a75e(l),'network':l})['signAndExecuteTransaction']({'transaction':j,'signer':i,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}});}}}async['sign'](a,b){const c=await this['get_imp'](a);if(!c?.['secret'])a75d('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=a75j['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return'0x'+Buffer['from'](f)['toString']('hex');}async['signData'](a,b){const c=await this['get_imp'](a);if(!c?.['secret'])a75d('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=a75j['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return{'signature':'0x'+Buffer['from'](f)['toString']('hex'),'publicKey':d['getPublicKey']()['toWowPublicKey'](),'address':c['address']};}async['deriveX25519Identity'](a){const b=await this['get_imp'](a);if(!b?.['secret'])a75d('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const c=a75f(b['secret'])['secretKey'],d=a75j['fromSecretKey'](b['secret'])['getPublicKey']()['toRawBytes'](),e=new TextEncoder()['encode']('WowokX25519IdentityDerivation'),f=hkdf(sha256,sha256(c),new Uint8Array(0x0),e,0x20);f[0x0]&=0xf8,f[0x1f]&=0x7f,f[0x1f]|=0x40;const g=x25519['getPublicKey'](f),h=g[0x0]<<0x8|g[0x1];return{'x25519KeyPair':{'publicKey':g,'privateKey':f},'falcon512KeyPair':{'publicKey':d,'privateKey':c},'registrationId':h===0x0?0x1:h};}async['set_messenger'](a,b){return Account['_dataLock']['run'](async()=>{const c=this['name_resolve'](a),d=await this['getStorage'](),e=await d['get']();if(!e)return![];const g=JSON['parse'](e),h=g['find'](j=>j['address']['toLowerCase']()===c['toLowerCase']()||Account['nameMatch'](j['name'],c));if(!h)return![];if(b){const j=g['filter'](k=>k['messenger']===!![]&&!k['suspended']&&k['address']!==h['address'])['length'];if(j>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+j);}const i=Date['now']();return h['messenger']=b,h['updatedAt']=i,await d['put'](JSON['stringify'](g)),!![];});}async['list_messenger_accounts'](){return this['list']({'hasMessenger':!![]});}async['count_messenger_accounts'](){const a=await(await this['getStorage']())['get']();if(!a)return 0x0;return JSON['parse'](a)['filter'](b=>b['messenger']===!![]&&!b['suspended'])['length'];}};export{Account,DEFAULT_ACCOUNT_NAME,MAX_ACCOUNTS,MAX_MESSENGER_ACCOUNTS};
1
+ import{o as a75a}from'../../wow-types-DctQuD2J.mjs';import{t as a75b}from'../../client-DYIgIItb.mjs';import{t as a75c}from'../../Transaction-CrzrFqPW.mjs';import{o as a75d}from'../../exception-D2n4LV8F.mjs';import{a as a75e}from'../../network-UpRYD8EM.mjs';import{c as a75f}from'../../keypair-IIyGelNr.mjs';import{n as a75g,r as a75h,t as a75i}from'../../faucet-RNvBvVJf.mjs';import{n as a75j}from'../../falcon512-CnEZ-g-L.mjs';import{Z as a75k,rt as a75l}from'../../common-DC9BAaSg.mjs';import{d as a75m,r as a75n}from'../../storage-D1bEi2b7.mjs';import{Config}from'./config.mjs';import{SecureAccountStorage}from'./secure-storage.mjs';import{sha256}from'@noble/hashes/sha2.js';import{x25519}from'@noble/curves/ed25519.js';import{hkdf}from'@noble/hashes/hkdf.js';const DEFAULT_ACCOUNT_NAME='',MAX_ACCOUNTS=0x14,MAX_MESSENGER_ACCOUNTS=0x14;var Account=class Account{constructor(){this['balance']=async(b,c,d)=>{const e=await this['get'](c);b=b??'0x2::wow::WOW';if(e){const f=await Config['Instance']()['network_get'](d);return new a75b({'url':a75e(f),'network':f})['getBalance']({'owner':e['address'],'coinType':b});}},this['coin']=async(b,c,d,e,f)=>{const g=await this['get'](e);b=b??'0x2::wow::WOW';if(g){const h=await Config['Instance']()['network_get'](f);return new a75b({'url':a75e(h),'network':h})['getCoins']({'owner':g['address'],'coinType':b,'cursor':c,'limit':d});}},this['get_coin_object']=async(c,d,e,f,g)=>{const h=await this['get'](f);if(h){const j=BigInt(d),k=await Config['Instance']()['network_get'](g),l=new a75b({'url':a75e(k),'network':k});if(j>=BigInt(0x0)){if(!e||a75k(e))return c['splitCoins'](c['gas'],[j]);else{const m=await l['getCoins']({'owner':h['address'],'coinType':e}),n=[],o=new Set();let p=BigInt(0x0);for(let q=0x0;q<m['data']['length'];++q){const s=m['data'][q]['coinObjectId'];if(o['has'](s))continue;o['add'](s),p+=BigInt(m['data'][q]['balance']),n['push'](s);if(p>=j)break;}if(n['length']===0x0)return;if(p===j){if(n['length']===0x1)return c['object'](n[0x0]);const t=n['pop']();return c['mergeCoins'](t,n);}if(n['length']===0x1)return c['splitCoins'](n[0x0],[j]);else{const u=n['pop']();return c['mergeCoins'](u,n),c['splitCoins'](u,[j]);}}}}},this['get_many_coin_object']=async(a,b,c,d,e)=>{const f=[];for(const g of b){const h=await this['get_coin_object'](a,g,c,d,e);if(!h)a75d('invalid\x20parameter','Invalid\x20coin\x20object:\x20'+g);else f['push'](h);}return a['makeMoveVec']({'elements':f});},this['coinObject_with_balance']=async(b,c,d,e)=>{const f=await this['get_imp'](d);if(!f)return void 0x0;const g=a75j['fromSecretKey'](f['secret']);if(!g)return void 0x0;const h=new a75c(),i=await this['get_coin_object'](h,b,c,d,e);if(i){h['transferObjects']([i],f['address']);const j=await Config['Instance']()['network_get'](e),k=await new a75b({'url':a75e(j),'network':j})['signAndExecuteTransaction']({'transaction':h,'signer':g,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}}),l=c??'0x2::wow::WOW',m=k?.['objectChanges']??[];return{'coin_address':m['find'](n=>n?.['type']==='created'&&(n?.['objectType'])['includes'](l))?.['objectId']??m['find'](n=>n?.['type']==='mutated'&&(n?.['objectType'])['includes'](l))?.['objectId'],'digest':k['digest']};}};}static{this['_dataLock']=new a75m();}static{this['_storageLock']=new a75m();}static{this['_txLocks']=new Map();}static{this['orphanMigrationDone']=![];}static['txLock'](a){let b=Account['_txLocks']['get'](a);return!b&&(b=new a75m(),Account['_txLocks']['set'](a,b)),b;}['setStorage'](a){Account['storage']=a;}['setEncryptedStorage'](a){Account['storage']=new SecureAccountStorage(a);}async['getStorage'](){if(Account['storage'])return Account['storage'];return Account['_storageLock']['run'](async()=>{if(!Account['storage'])Account['storage']=new SecureAccountStorage(new a75n());return Account['storage'];});}async['unlock'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');b['setSessionPassword'](a),await b['get']();}async['lock'](){const a=await this['getStorage']();if(a instanceof SecureAccountStorage)a['setSessionPassword'](void 0x0);}async['setEncryptionPassword'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['setPassword'](a);}async['changeEncryptionPassword'](a,b){const c=await this['getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['changePassword'](a,b);}async['removeEncryptionPassword'](a){const b=await this['getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['removePassword'](a);}async['getEncryptionMode'](){const a=await this['getStorage']();if(a instanceof SecureAccountStorage)return a['getMode']();}async['isPasswordSet'](){return await this['getEncryptionMode']()==='password';}async['getMcpAccess'](){const a=await this['getStorage']();if(a instanceof SecureAccountStorage)return a['getMcpAccess']();return'allowed';}async['setMcpAccess'](a,b){const c=await this['getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['setMcpAccess'](a,b);}async['exportSecret'](a){const b=await(await this['getStorage']())['get']();if(!b)return void 0x0;const c=JSON['parse'](b),d=a['toLowerCase']();return c['find'](e=>e['address']['toLowerCase']()===d||e['name']&&e['name']['toLowerCase']()===d)?.['secret'];}async['importSecret'](a,b,c,d,e=![]){return Account['_dataLock']['run'](async()=>{b=this['name_resolve'](b);if(b&&!a75l(b))a75d('invalid\x20name','Name\x20'+b+'\x20is\x20exceeds\x20max\x2064');const f=a75j['fromSecretKey'](a),g=f['getPublicKey']()['toWowAddress'](),h=f['getSecretKey'](),i=await this['getStorage'](),j=await i['get'](),k=j?JSON['parse'](j):[];if(k['findIndex'](p=>p['address']['toLowerCase']()===g['toLowerCase']())!==-0x1)a75d('invalid\x20parameter','Account\x20with\x20address\x20'+g+'\x20already\x20exists');const l=k['findIndex'](p=>Account['nameMatch'](p['name'],b));if(l!==-0x1){if(c){if(b==='')a75d('invalid\x20parameter','Cannot\x20replaceExistName\x20on\x20the\x20default\x20account\x20(name=\x22\x22).\x20The\x20default\x20account\x20is\x20unique\x20and\x20cannot\x20be\x20suspended\x20by\x20replacement.\x20Use\x20suspend()\x20explicitly\x20if\x20you\x20need\x20to\x20deactivate\x20it.');const p=Date['now']();k[l]['suspended']=!![],k[l]['name']=void 0x0,k[l]['messenger']=![],k[l]['updatedAt']=p;}else a75d('account\x20name\x20exist','Name\x20'+(b||'')+'\x20already\x20exist');}const m=k['filter'](q=>!q['suspended'])['length'];if(m>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20accounts\x20allowed,\x20current\x20count:\x20'+m);if(d){const q=k['filter'](r=>r['messenger']===!![]&&!r['suspended'])['length'];if(q>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+q);}const n=Date['now'](),o={'name':b,'address':g,'secret':h,'messenger':d||![],'createdAt':n,'updatedAt':n};return k['push'](o),await i['put'](JSON['stringify'](k)),this['accountData'](o,e);});}static['Instance'](){if(Account['_instance'])return Account['_instance'];if(!Account['_instance'])Account['_instance']=new Account();return Account['_instance'];}['accountData'](a,b=![]){if(!a||!a['secret'])return void 0x0;if(b)a['pubkey']=a75j['fromSecretKey'](a['secret'])['getPublicKey']()['toWowPublicKey']();a['secret']=void 0x0;if(a['name']===void 0x0)a['name']='';return a;}static['nameMatch'](a,b){return(a??'')['toLowerCase']()===b['toLowerCase']();}async['gen'](a,b,c,d=![]){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a);if(a&&!a75l(a))a75d('invalid\x20name','Name\x20'+a+'\x20is\x20exceeds\x20max\x2064');const e=a75j['generate']()['getSecretKey'](),f=a75j['fromSecretKey'](e)['getPublicKey']()['toWowAddress'](),g=Date['now'](),h={'name':a,'address':f,'secret':e,'messenger':c||![],'createdAt':g,'updatedAt':g},i=await this['getStorage'](),j=await i['get'](),k=j?JSON['parse'](j):[],l=k['findIndex'](n=>Account['nameMatch'](n['name'],a));if(l!==-0x1){if(b){if(a==='')a75d('invalid\x20parameter','Cannot\x20replaceExistName\x20on\x20the\x20default\x20account\x20(name=\x22\x22).\x20The\x20default\x20account\x20is\x20unique\x20and\x20cannot\x20be\x20suspended\x20by\x20replacement.\x20Use\x20suspend()\x20explicitly\x20if\x20you\x20need\x20to\x20deactivate\x20it.');const n=Date['now']();k[l]['suspended']=!![],k[l]['name']=void 0x0,k[l]['messenger']=![],k[l]['updatedAt']=n;}else a75d('account\x20name\x20exist','Name\x20'+(a||'')+'\x20already\x20exist');}const m=k['filter'](o=>!o['suspended'])['length'];if(m>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20accounts\x20allowed,\x20current\x20count:\x20'+m);if(c){const o=k['filter'](p=>p['messenger']===!![]&&!p['suspended'])['length'];if(o>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+o);}return k['push'](h),await i['put'](JSON['stringify'](k)),this['accountData'](h,d);});}async['default'](a=![]){return await this['migrateOrphanAccountsIfNeeded'](),this['accountData'](await this['get_imp'](''),a);}async['migrateOrphanAccountsIfNeeded'](){if(Account['orphanMigrationDone'])return;return Account['orphanMigrationDone']=!![],Account['_dataLock']['run'](async()=>{const a=await this['getStorage'](),b=await a['get']();if(!b)return;const c=JSON['parse'](b);let e=![];const f=Date['now']();for(const g of c)g['name']===void 0x0&&g['suspended']!==!![]&&(g['suspended']=!![],g['messenger']=![],g['updatedAt']=f,e=!![]);if(e)await a['put'](JSON['stringify'](c));});}async['get'](a,b,c=![]){if(!b)return this['accountData'](await this['get_imp'](a),c);return this['gen'](a);}async['get_address'](a){if(a&&a75a(a))return a['toLowerCase']();return(await this['get_imp'](a))?.['address'];}async['get_many_address'](a){const b=await(await this['getStorage']())['get']();if(b){const c=JSON['parse'](b);return a['map'](d=>{if(d&&a75a(d))return d['toLowerCase']();const e=this['name_resolve'](d);return c['find'](f=>f['address']['toLowerCase']()===e['toLowerCase']()||Account['nameMatch'](f['name'],e))?.['address'];});}return a['map'](d=>d&&a75a(d)?d['toLowerCase']():void 0x0);}async['get_imp'](a){a=this['name_resolve'](a);const b=await(await this['getStorage']())['get']();if(b){const c=a['toLowerCase']();return JSON['parse'](b)['find'](e=>Account['nameMatch'](e['name'],a)||e['address']['toLowerCase']()===c);}}['name_resolve'](a){return a||'';}async['get_many'](a,b=![]){return this['get_many_imp'](a,b);}async['get_many_imp'](a,b=![]){const c=await(await this['getStorage']())['get']();if(c){const d=JSON['parse'](c);return a['map'](e=>{const f=this['name_resolve'](e),g=d['find'](h=>h['address']['toLowerCase']()===f['toLowerCase']()||Account['nameMatch'](h['name'],f));if(!g)return void 0x0;if(b){const h=a75j['fromSecretKey'](g['secret']),j={...g,'pubkey':h['getPublicKey']()['toWowPublicKey']()};return delete j['secret'],j;}return g;});}return a['map'](e=>void 0x0);}async['swap_name'](a,b){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a),b=this['name_resolve'](b);if(this['name_resolve'](a)===this['name_resolve'](b))return!![];if(a&&!a75l(a))a75d('invalid\x20name','Name\x20'+(a||'')+'\x20is\x20exceeds\x20max\x2064');if(b&&!a75l(b))a75d('invalid\x20name','Name\x20'+(b||'')+'\x20is\x20exceeds\x20max\x2064');const c=await this['getStorage'](),d=await c['get']();if(!d)return![];const e=JSON['parse'](d),f=e['find'](i=>Account['nameMatch'](i['name'],a)),g=e['find'](i=>Account['nameMatch'](i['name'],b));if(!f||!g)return![];const h=Date['now']();return f['name']=b,f['updatedAt']=h,g['name']=a,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];});}async['rename'](a,b){return Account['_dataLock']['run'](async()=>{if(b&&!a75l(b))a75d('invalid\x20name','Invalid\x20new\x20name:\x20\x22'+(b||'')+'\x22.\x20Must\x20be\x20a\x20valid\x20name\x20(not\x20an\x20address)');const c=this['name_resolve'](a);if(c===b)return!![];const d=await this['getStorage'](),e=await d['get']();if(e){const g=JSON['parse'](e);if(g['find'](j=>Account['nameMatch'](j['name'],b)))a75d('invalid\x20name','New\x20name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const h=g['find'](j=>Account['nameMatch'](j['name'],c)||j['address']['toLowerCase']()===c['toLowerCase']());if(!h)a75d('account\x20not\x20found','Source\x20account\x20\x22'+(a||'')+'\x22\x20not\x20found');const i=Date['now']();return h['name']=b,h['updatedAt']=i,await d['put'](JSON['stringify'](g)),!![];}return![];});}async['list'](a){await this['migrateOrphanAccountsIfNeeded']();const b=await(await this['getStorage']())['get']();if(b){let c=JSON['parse'](b);if(a?.['suspended']!==void 0x0)c=c['filter'](d=>a['suspended']?d['suspended']===!![]:!d['suspended']);else c=c['filter'](d=>!d['suspended']);if(a?.['hasMessenger']!==void 0x0)c=c['filter'](d=>a['hasMessenger']?d['messenger']===!![]:d['messenger']!==!![]);if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0)c=c['filter'](d=>d['createdAt']&&d['createdAt']>=a['createdAt']['gte']);if(a['createdAt']['lte']!==void 0x0)c=c['filter'](d=>d['createdAt']&&d['createdAt']<=a['createdAt']['lte']);}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0)c=c['filter'](d=>d['updatedAt']&&d['updatedAt']>=a['updatedAt']['gte']);if(a['updatedAt']['lte']!==void 0x0)c=c['filter'](d=>d['updatedAt']&&d['updatedAt']<=a['updatedAt']['lte']);}if(a?.['name']!=null||a?.['address'])c=c['map'](d=>{let e=0x0;if(a?.['name']!=null){const f=d['name']?.['toLowerCase']()||'',g=a['name']['toLowerCase']();if(f===g)e+=0x64;else{if(f['startsWith'](g))e+=0x32;else{if(f['includes'](g))e+=0x19;}}}if(a?.['address']){const h=d['address']['toLowerCase'](),i=a['address']['toLowerCase']();if(h===i)e+=0x64;else{if(h['startsWith'](i))e+=0x32;else{if(h['includes'](i))e+=0x19;}}}if((a?.['name']||a?.['address'])&&e===0x0)e=-0x1;return{'account':d,'score':e};})['filter'](({score:d})=>d>=0x0)['sort']((d,e)=>e['score']-d['score'])['map'](({account:d})=>d);return c['map'](d=>this['accountData'](d,a?.['includePubkey']))['filter'](d=>d!==void 0x0);}return[];}async['suspend'](a){return Account['_dataLock']['run'](async()=>{a=this['name_resolve'](a);const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c),e=d['find'](g=>g['address']['toLowerCase']()===a['toLowerCase']()||Account['nameMatch'](g['name'],a));if(e){const g=Date['now']();return e['suspendedName']=e['name']??'',e['suspended']=!![],e['name']=void 0x0,e['messenger']=![],e['updatedAt']=g,await b['put'](JSON['stringify'](d)),!![];}}return![];});}async['suspend_many'](a){return Account['_dataLock']['run'](async()=>{const b=await this['getStorage'](),c=await b['get'](),d={'success':[],'failed':[]};if(c){const e=JSON['parse'](c),g=Date['now']();let h=![];for(const i of a){const j=this['name_resolve'](i),k=e['find'](l=>l['address']['toLowerCase']()===j['toLowerCase']()||Account['nameMatch'](l['name'],j));if(k)k['suspended']=!![],k['name']=void 0x0,k['messenger']=![],k['updatedAt']=g,d['success']['push'](i),h=!![];else d['failed']['push'](i);}if(h)await b['put'](JSON['stringify'](e));}else d['failed']=[...a];return d;});}async['resume'](a,b){return Account['_dataLock']['run'](async()=>{b=this['name_resolve'](b),a=a['toLowerCase']();if(b&&!a75l(b))a75d('invalid\x20name','Name\x20'+b+'\x20is\x20exceeds\x20max\x2064');const c=await this['getStorage'](),d=await c['get']();if(d){const e=JSON['parse'](d);if(e['find'](h=>Account['nameMatch'](h['name'],b)))a75d('invalid\x20name','Name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const g=e['find'](h=>h['address']['toLowerCase']()===a['toLowerCase']());if(g){const h=Date['now']();return g['suspended']=![],g['name']=b,g['suspendedName']=void 0x0,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];}}return![];});}async['faucet'](b,c){const d=await this['get_imp'](b);if(!d)throw new Error('Faucet\x20request\x20failed:\x20account\x20\x22'+(b??'<default>')+'\x22\x20not\x20found');const f=0x5,g=0xbb8;let h;for(let i=0x1;i<=f;i++)try{return(await a75h({'host':a75g(c),'recipient':d['address']}))['coins_sent']||[];}catch(j){h=j;if(j instanceof a75i&&i<f){await new Promise(k=>setTimeout(k,g));continue;}throw j;}throw h instanceof Error?h:new Error('Faucet\x20request\x20failed\x20after\x20retries');}async['sign_and_commit'](b,c,d){const e=await this['get_imp'](c);if(!e)return;const f=a75j['fromSecretKey'](e['secret']);if(!f)return;const g=await Config['Instance']()['network_get'](d),h=g+':'+e['address']['toLowerCase']();return Account['txLock'](h)['run'](async()=>{return new a75b({'url':a75e(g),'network':g})['signAndExecuteTransaction']({'transaction':b,'signer':f,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}});});}async['refund_coin'](a,b,c){const d=await this['get_address'](c);if(!d)a75d('invalid\x20parameter','Invalid\x20to\x20address\x20or\x20name\x20'+c);a['transferObjects']([b],a['pure']['address'](d));}async['transfer'](a,b,c,d,e){const [f,g]=await this['get_many_imp']([d,c]);if(!f)a75d('invalid\x20parameter','Invalid\x20from\x20address\x20or\x20name\x20'+d);const h=g?.['address']??c;if(!h)a75d('invalid\x20parameter','Invalid\x20to\x20address\x20or\x20name\x20'+c);const i=a75j['fromSecretKey'](f['secret']);if(i){const j=new a75c(),k=await this['get_coin_object'](j,a,b,d,e);if(k){j['transferObjects']([k],h);const l=await Config['Instance']()['network_get'](e);return new a75b({'url':a75e(l),'network':l})['signAndExecuteTransaction']({'transaction':j,'signer':i,'options':{'showObjectChanges':!![],'showEffects':!![],'showEvents':!![]}});}}}async['sign'](a,b){const c=await this['get_imp'](a);if(!c?.['secret'])a75d('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=a75j['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return'0x'+Buffer['from'](f)['toString']('hex');}async['signData'](a,b){const c=await this['get_imp'](a);if(!c?.['secret'])a75d('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=a75j['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return{'signature':'0x'+Buffer['from'](f)['toString']('hex'),'publicKey':d['getPublicKey']()['toWowPublicKey'](),'address':c['address']};}async['deriveX25519Identity'](a){const b=await this['get_imp'](a);if(!b?.['secret'])a75d('invalid\x20parameter','Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const c=a75f(b['secret'])['secretKey'],d=a75j['fromSecretKey'](b['secret'])['getPublicKey']()['toRawBytes'](),e=new TextEncoder()['encode']('WowokX25519IdentityDerivation'),f=hkdf(sha256,sha256(c),new Uint8Array(0x0),e,0x20);f[0x0]&=0xf8,f[0x1f]&=0x7f,f[0x1f]|=0x40;const g=x25519['getPublicKey'](f),h=g[0x0]<<0x8|g[0x1];return{'x25519KeyPair':{'publicKey':g,'privateKey':f},'falcon512KeyPair':{'publicKey':d,'privateKey':c},'registrationId':h===0x0?0x1:h};}async['set_messenger'](a,b){return Account['_dataLock']['run'](async()=>{const c=this['name_resolve'](a),d=await this['getStorage'](),e=await d['get']();if(!e)return![];const g=JSON['parse'](e),h=g['find'](j=>j['address']['toLowerCase']()===c['toLowerCase']()||Account['nameMatch'](j['name'],c));if(!h)return![];if(b){const j=g['filter'](k=>k['messenger']===!![]&&!k['suspended']&&k['address']!==h['address'])['length'];if(j>=0x14)a75d('invalid\x20parameter','Maximum\x2020\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+j);}const i=Date['now']();return h['messenger']=b,h['updatedAt']=i,await d['put'](JSON['stringify'](g)),!![];});}async['list_messenger_accounts'](){return this['list']({'hasMessenger':!![]});}async['count_messenger_accounts'](){const a=await(await this['getStorage']())['get']();if(!a)return 0x0;return JSON['parse'](a)['filter'](b=>b['messenger']===!![]&&!b['suspended'])['length'];}};export{Account,DEFAULT_ACCOUNT_NAME,MAX_ACCOUNTS,MAX_MESSENGER_ACCOUNTS};
@@ -1,2 +1,2 @@
1
- import { i as registerBridgeEvmNetworks, n as EvmNetworkConfig, r as EvmNetworkRegistry, t as ETH_MAINNET } from "../../../networks-ByH0We-G.mjs";
1
+ import { i as registerBridgeEvmNetworks, n as EvmNetworkConfig, r as EvmNetworkRegistry, t as ETH_MAINNET } from "../../../networks-DgObqYrB.mjs";
2
2
  export { ETH_MAINNET, EvmNetworkConfig, EvmNetworkRegistry, registerBridgeEvmNetworks };
@@ -1 +1 @@
1
- import{d as a78a,r as a78b}from'../../../storage-D1bEi2b7.mjs';const ETH_MAINNET={'name':'mainnet','chainId':0x1,'rpcUrls':['https://ethereum-rpc.publicnode.com','https://eth.drpc.org','https://eth.llamarpc.com','https://rpc.mevblocker.io','https://rpc.flashbots.net','https://cloudflare-eth.com','https://ethereum.blockpi.network/v1/rpc/public','https://eth.merkle.io','https://0xrpc.io/eth','https://api.zan.top/eth/mainnet'],'explorerUrl':'https://etherscan.io','confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};var EvmNetworkRegistry=class EvmNetworkRegistry{static{this['_instanceLock']=new a78a();}static{this['DEFAULT_UNHEALTHY_RETRY_MS']=0x5*0xea60;}constructor(){this['byChainId']=new Map(),this['byName']=new Map(),this['chainIdCache']=new Map(),this['unhealthyRpc']=new Map(),this['unhealthyCounter']=new Map(),this['register'](ETH_MAINNET),this['defaultChainId']=ETH_MAINNET['chainId'],this['_loadAllRpcs']();}static['Instance'](){if(EvmNetworkRegistry['_instance'])return EvmNetworkRegistry['_instance'];if(!EvmNetworkRegistry['_instance'])EvmNetworkRegistry['_instance']=new EvmNetworkRegistry();return EvmNetworkRegistry['_instance'];}['register'](a){const b=a['name']['toLowerCase']();this['byChainId']['set'](a['chainId'],a),this['byName']['set'](b,a);}['unregister'](a){const b=this['get'](a);if(!b)return;this['byChainId']['delete'](b['chainId']),this['byName']['delete'](b['name']['toLowerCase']());if(this['defaultChainId']===b['chainId'])this['defaultChainId']=this['byChainId']['size']>0x0?this['byChainId']['keys']()['next']()['value']:void 0x0;}['setDefault'](a){const b=this['get'](a);if(!b)throw new Error('EVM\x20network\x20not\x20found:\x20'+a);this['defaultChainId']=b['chainId'];}['get'](a){if(a===void 0x0||a===null)return this['defaultChainId']!==void 0x0?this['byChainId']['get'](this['defaultChainId']):void 0x0;if(typeof a==='number')return this['byChainId']['get'](a);return this['byName']['get'](a['toLowerCase']());}['list'](){return Array['from'](this['byChainId']['values']());}['getDefault'](){const a=this['get'](this['defaultChainId']);if(!a)throw new Error('No\x20default\x20EVM\x20network\x20registered.\x20Call\x20register()\x20and\x20setDefault()\x20first.');return a;}async['resolve'](a){if(typeof a==='number'){const b=this['byChainId']['get'](a);if(b)return b;throw new Error('EVM\x20network\x20not\x20registered\x20for\x20chainId\x20'+a);}if(typeof a==='string'){const c=this['byName']['get'](a['toLowerCase']());if(c)return c;const d=await this['queryChainIdFromRpc'](a),e=this['byChainId']['get'](d);if(e)return e;return this['buildTempConfig'](a,d);}return this['getDefault']();}['pickHealthyRpc'](a){const b=Date['now'](),c=a['rpcUrls']['map'](e=>{const f=this['unhealthyRpc']['get'](e),g=this['unhealthyCounter']['get'](e)??0x0,h=f===void 0x0||f<b;if(f!==void 0x0&&f<b)this['unhealthyRpc']['delete'](e);return{'url':e,'isExpired':h,'failCount':g};}),d=c['filter'](e=>e['isExpired']);if(d['length']>0x0)return d['sort']((e,f)=>e['failCount']-f['failCount']),d[0x0]['url'];return c['sort']((e,f)=>e['failCount']-f['failCount']),c[0x0]['url'];}['markUnhealthy'](a,b){const c=(this['unhealthyCounter']['get'](a)??0x0)+0x1;this['unhealthyCounter']['set'](a,c);const d=b??(c<=0x1?0x5*0xea60:c===0x2?0xf*0xea60:c===0x3?0x1e*0xea60:0x3c*0xea60);this['unhealthyRpc']['set'](a,Date['now']()+d);}['markHealthy'](a){this['unhealthyRpc']['delete'](a),this['unhealthyCounter']['delete'](a);}['isUnhealthy'](a){const b=this['unhealthyRpc']['get'](a);if(b===void 0x0)return![];if(b<Date['now']())return this['unhealthyRpc']['delete'](a),![];return!![];}['listRpcStatus'](a){const b=this['get'](a);if(!b)return[];const c=Date['now']();return b['rpcUrls']['map'](d=>{const e=this['unhealthyRpc']['get'](d),f=this['unhealthyCounter']['get'](d)??0x0;if(e===void 0x0||e<c){if(e!==void 0x0&&e<c)this['unhealthyRpc']['delete'](d);return{'url':d,'healthy':!![],'failCount':f};}return{'url':d,'healthy':![],'retryInMs':e-c,'failCount':f};});}['addRpc'](a,b){const c=this['get'](a);if(!c)return![];if(c['rpcUrls']['includes'](b))return![];return c['rpcUrls']['unshift'](b),this['_saveAllRpcs'](),!![];}['removeRpc'](a,b){const c=this['get'](a);if(!c)return![];if(c['rpcUrls']['length']<=0x1)return![];const d=c['rpcUrls']['indexOf'](b);if(d===-0x1)return![];return c['rpcUrls']['splice'](d,0x1),this['unhealthyRpc']['delete'](b),this['_saveAllRpcs'](),!![];}['setRpcs'](a,b){if(!b||b['length']===0x0)return![];const c=this['get'](a);if(!c)return![];for(const d of c['rpcUrls'])this['unhealthyRpc']['delete'](d);return c['rpcUrls']=[...new Set(b)],this['_saveAllRpcs'](),!![];}async['ping'](a,b=0x1388){try{const c=new AbortController(),d=setTimeout(()=>c['abort'](),b),e=await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_chainId','params':[]}),'signal':c['signal']});return clearTimeout(d),e['ok'];}catch{return![];}}async['queryChainIdFromRpc'](a){const b=this['chainIdCache']['get'](a);if(b!==void 0x0)return b;const c=await(await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_chainId','params':[]})}))['json']();if(c['error'])throw new Error('RPC\x20error:\x20'+c['error']['message']);const d=parseInt(c['result'],0x10);return this['chainIdCache']['set'](a,d),d;}['clearChainIdCache'](){this['chainIdCache']['clear']();}['_getPersistStore'](){if(!this['_persistStore'])this['_persistStore']=new a78b(void 0x0,'evm_network_rpcs');return this['_persistStore'];}async['_saveAllRpcs'](){try{const a={};for(const [b,c]of this['byChainId']['entries']())a[String(b)]=c['rpcUrls'];await this['_getPersistStore']()['put'](JSON['stringify'](a));}catch{}}async['_loadAllRpcs'](){try{const a=await this['_getPersistStore']()['get']();if(!a)return;const b=JSON['parse'](a);for(const [c,d]of Object['entries'](b)){const e=Number(c),f=this['byChainId']['get'](e);if(f&&Array['isArray'](d)&&d['length']>0x0)f['rpcUrls']=d;}}catch{}}['addRpcs'](a,b){const c=this['get'](a);if(!c)return 0x0;let d=0x0;for(const e of b['slice']()['reverse']())!c['rpcUrls']['includes'](e)&&(c['rpcUrls']['unshift'](e),d++);if(d>0x0)this['_saveAllRpcs']();return d;}['removeRpcs'](a,b){const c=this['get'](a);if(!c)return 0x0;let d=0x0;for(const e of b){const f=c['rpcUrls']['indexOf'](e);f!==-0x1&&c['rpcUrls']['length']>0x1&&(c['rpcUrls']['splice'](f,0x1),this['unhealthyRpc']['delete'](e),d++);}if(d>0x0)this['_saveAllRpcs']();return d;}['buildTempConfig'](a,b){return{'name':'chain-'+b,'chainId':b,'rpcUrls':[a],'confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};}};function registerBridgeEvmNetworks(a){const b=EvmNetworkRegistry['Instance'](),c=b['get'](a['evmChain']['chainId']);if(c){if(a['evmChain']['rpcUrl']&&!c['rpcUrls']['includes'](a['evmChain']['rpcUrl']))c['rpcUrls']['unshift'](a['evmChain']['rpcUrl']);if(a['setAsDefault'])b['setDefault'](c['chainId']);return c;}const d={'name':(a['name']??'chain-'+a['evmChain']['chainId'])['toLowerCase'](),'chainId':a['evmChain']['chainId'],'rpcUrls':a['evmChain']['rpcUrl']?[a['evmChain']['rpcUrl']]:[],'confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};b['register'](d);if(a['setAsDefault'])b['setDefault'](d['chainId']);return d;}export{ETH_MAINNET,EvmNetworkRegistry,registerBridgeEvmNetworks};
1
+ import{d as a78a,r as a78b}from'../../../storage-D1bEi2b7.mjs';const ETH_MAINNET={'name':'mainnet','chainId':0x1,'rpcUrls':['https://ethereum-rpc.publicnode.com','https://eth.drpc.org','https://rpc.mevblocker.io','https://public-eth.nownodes.io','https://gateway.tenderly.co/public/mainnet','https://0xrpc.io/eth','https://eth-mainnet.g.alchemy.com/public','https://1rpc.io/eth','https://eth-mainnet.public.blastapi.io'],'explorerUrl':'https://etherscan.io','confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};var EvmNetworkRegistry=class EvmNetworkRegistry{static{this['_instanceLock']=new a78a();}static{this['DEFAULT_UNHEALTHY_RETRY_MS']=0x5*0xea60;}constructor(){this['byChainId']=new Map(),this['byName']=new Map(),this['chainIdCache']=new Map(),this['unhealthyRpc']=new Map(),this['unhealthyCounter']=new Map(),this['register'](ETH_MAINNET),this['defaultChainId']=ETH_MAINNET['chainId'],this['_loadAllRpcs']();}static['Instance'](){if(EvmNetworkRegistry['_instance'])return EvmNetworkRegistry['_instance'];if(!EvmNetworkRegistry['_instance'])EvmNetworkRegistry['_instance']=new EvmNetworkRegistry();return EvmNetworkRegistry['_instance'];}['register'](a){const b=a['name']['toLowerCase']();this['byChainId']['set'](a['chainId'],a),this['byName']['set'](b,a);}['unregister'](a){const b=this['get'](a);if(!b)return;this['byChainId']['delete'](b['chainId']),this['byName']['delete'](b['name']['toLowerCase']());if(this['defaultChainId']===b['chainId'])this['defaultChainId']=this['byChainId']['size']>0x0?this['byChainId']['keys']()['next']()['value']:void 0x0;}['setDefault'](a){const b=this['get'](a);if(!b)throw new Error('EVM\x20network\x20not\x20found:\x20'+a);this['defaultChainId']=b['chainId'];}['get'](a){if(a===void 0x0||a===null)return this['defaultChainId']!==void 0x0?this['byChainId']['get'](this['defaultChainId']):void 0x0;if(typeof a==='number')return this['byChainId']['get'](a);return this['byName']['get'](a['toLowerCase']());}['list'](){return Array['from'](this['byChainId']['values']());}['getDefault'](){const a=this['get'](this['defaultChainId']);if(!a)throw new Error('No\x20default\x20EVM\x20network\x20registered.\x20Call\x20register()\x20and\x20setDefault()\x20first.');return a;}async['resolve'](a){if(typeof a==='number'){const b=this['byChainId']['get'](a);if(b)return b;throw new Error('EVM\x20network\x20not\x20registered\x20for\x20chainId\x20'+a);}if(typeof a==='string'){const c=this['byName']['get'](a['toLowerCase']());if(c)return c;const d=await this['queryChainIdFromRpc'](a),e=this['byChainId']['get'](d);if(e)return e;return this['buildTempConfig'](a,d);}return this['getDefault']();}['pickHealthyRpc'](a){const b=Date['now'](),c=a['rpcUrls']['map'](e=>{const f=this['unhealthyRpc']['get'](e),g=this['unhealthyCounter']['get'](e)??0x0,h=f===void 0x0||f<b;if(f!==void 0x0&&f<b)this['unhealthyRpc']['delete'](e);return{'url':e,'isExpired':h,'failCount':g};}),d=c['filter'](e=>e['isExpired']);if(d['length']>0x0)return d['sort']((e,f)=>e['failCount']-f['failCount']),d[0x0]['url'];return c['sort']((e,f)=>e['failCount']-f['failCount']),c[0x0]['url'];}['markUnhealthy'](a,b){const c=(this['unhealthyCounter']['get'](a)??0x0)+0x1;this['unhealthyCounter']['set'](a,c);const d=b??(c<=0x1?0x5*0xea60:c===0x2?0xf*0xea60:c===0x3?0x1e*0xea60:0x3c*0xea60);this['unhealthyRpc']['set'](a,Date['now']()+d);}['markHealthy'](a){this['unhealthyRpc']['delete'](a),this['unhealthyCounter']['delete'](a);}['isUnhealthy'](a){const b=this['unhealthyRpc']['get'](a);if(b===void 0x0)return![];if(b<Date['now']())return this['unhealthyRpc']['delete'](a),![];return!![];}['listRpcStatus'](a){const b=this['get'](a);if(!b)return[];const c=Date['now']();return b['rpcUrls']['map'](d=>{const e=this['unhealthyRpc']['get'](d),f=this['unhealthyCounter']['get'](d)??0x0;if(e===void 0x0||e<c){if(e!==void 0x0&&e<c)this['unhealthyRpc']['delete'](d);return{'url':d,'healthy':!![],'failCount':f};}return{'url':d,'healthy':![],'retryInMs':e-c,'failCount':f};});}['addRpc'](a,b){const c=this['get'](a);if(!c)return![];if(c['rpcUrls']['includes'](b))return![];return c['rpcUrls']['unshift'](b),this['_saveAllRpcs'](),!![];}['removeRpc'](a,b){const c=this['get'](a);if(!c)return![];if(c['rpcUrls']['length']<=0x1)return![];const d=c['rpcUrls']['indexOf'](b);if(d===-0x1)return![];return c['rpcUrls']['splice'](d,0x1),this['unhealthyRpc']['delete'](b),this['_saveAllRpcs'](),!![];}['setRpcs'](a,b){if(!b||b['length']===0x0)return![];const c=this['get'](a);if(!c)return![];for(const d of c['rpcUrls'])this['unhealthyRpc']['delete'](d);return c['rpcUrls']=[...new Set(b)],this['_saveAllRpcs'](),!![];}async['ping'](a,b=0x1388){try{const c=new AbortController(),d=setTimeout(()=>c['abort'](),b),e=await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_chainId','params':[]}),'signal':c['signal']});return clearTimeout(d),e['ok'];}catch{return![];}}async['queryChainIdFromRpc'](a){const b=this['chainIdCache']['get'](a);if(b!==void 0x0)return b;const c=await(await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_chainId','params':[]})}))['json']();if(c['error'])throw new Error('RPC\x20error:\x20'+c['error']['message']);const d=parseInt(c['result'],0x10);return this['chainIdCache']['set'](a,d),d;}['clearChainIdCache'](){this['chainIdCache']['clear']();}['_getPersistStore'](){if(!this['_persistStore'])this['_persistStore']=new a78b(void 0x0,'evm_network_rpcs');return this['_persistStore'];}async['_saveAllRpcs'](){try{const a={};for(const [b,c]of this['byChainId']['entries']())a[String(b)]=c['rpcUrls'];await this['_getPersistStore']()['put'](JSON['stringify'](a));}catch{}}async['_loadAllRpcs'](){try{const a=await this['_getPersistStore']()['get']();if(!a)return;const b=JSON['parse'](a);for(const [c,d]of Object['entries'](b)){const e=Number(c),f=this['byChainId']['get'](e);if(f&&Array['isArray'](d)&&d['length']>0x0)f['rpcUrls']=d;}}catch{}}['addRpcs'](a,b){const c=this['get'](a);if(!c)return 0x0;let d=0x0;for(const e of b['slice']()['reverse']())!c['rpcUrls']['includes'](e)&&(c['rpcUrls']['unshift'](e),d++);if(d>0x0)this['_saveAllRpcs']();return d;}['removeRpcs'](a,b){const c=this['get'](a);if(!c)return 0x0;let d=0x0;for(const e of b){const f=c['rpcUrls']['indexOf'](e);f!==-0x1&&c['rpcUrls']['length']>0x1&&(c['rpcUrls']['splice'](f,0x1),this['unhealthyRpc']['delete'](e),d++);}if(d>0x0)this['_saveAllRpcs']();return d;}['buildTempConfig'](a,b){return{'name':'chain-'+b,'chainId':b,'rpcUrls':[a],'confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};}};function registerBridgeEvmNetworks(a){const b=EvmNetworkRegistry['Instance'](),c=b['get'](a['evmChain']['chainId']);if(c){if(a['evmChain']['rpcUrl']&&!c['rpcUrls']['includes'](a['evmChain']['rpcUrl']))c['rpcUrls']['unshift'](a['evmChain']['rpcUrl']);if(a['setAsDefault'])b['setDefault'](c['chainId']);return c;}const d={'name':(a['name']??'chain-'+a['evmChain']['chainId'])['toLowerCase'](),'chainId':a['evmChain']['chainId'],'rpcUrls':a['evmChain']['rpcUrl']?[a['evmChain']['rpcUrl']]:[],'confirmations':0x1,'gasLimitMultiplier':1.2,'minPriorityFee':0x3b9aca00n,'rpcTimeoutMs':0x7530,'txConfirmTimeoutMs':0x1d4c0,'pollIntervalMs':0xbb8};b['register'](d);if(a['setAsDefault'])b['setDefault'](d['chainId']);return d;}export{ETH_MAINNET,EvmNetworkRegistry,registerBridgeEvmNetworks};
@@ -1 +1 @@
1
- import{o as a80a}from'../../exception-o3XVk35a.mjs';import{r as a80b}from'../../mnemonics-C6qlqegr.mjs';import{d as a80c,r as a80d}from'../../storage-D1bEi2b7.mjs';import{SecureAccountStorage}from'./secure-storage.mjs';import{bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress}from'./evm/rlp.mjs';import{EvmNetworkRegistry}from'./evm/networks.mjs';import{secp256k1}from'@noble/curves/secp256k1.js';import{HDKey}from'@scure/bip32';import{keccak_256}from'@noble/hashes/sha3.js';let rpcRequestId=0x0;async function ethRpcWithAbort(a,b,c,d){const e={'jsonrpc':'2.0','id':++rpcRequestId,'method':b,'params':c},f=await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](e),'signal':d});if(!f['ok'])throw new Error('EVM\x20RPC\x20HTTP\x20'+f['status']+':\x20'+await f['text']());const g=await f['json']();if(g['error'])throw new Error('EVM\x20RPC\x20error:\x20'+g['error']['message']+'\x20(code\x20'+g['error']['code']+')');return g['result'];}var EvmAccount=class EvmAccount{static{this['_dataLock']=new a80c();}static{this['_storageLock']=new a80c();}['setStorage'](a){EvmAccount['storage']=a;}['setEncryptedStorage'](a){EvmAccount['storage']=new SecureAccountStorage(a);}async['_getStorage'](){if(EvmAccount['storage'])return EvmAccount['storage'];return EvmAccount['_storageLock']['run'](async()=>{if(!EvmAccount['storage'])EvmAccount['storage']=new SecureAccountStorage(new a80d(void 0x0,'evm_accounts'));return EvmAccount['storage'];});}async['unlock'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');b['setSessionPassword'](a),await b['get']();}async['lock'](){const a=await this['_getStorage']();if(a instanceof SecureAccountStorage)a['setSessionPassword'](void 0x0);}async['setEncryptionPassword'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['setPassword'](a);}async['changeEncryptionPassword'](a,b){const c=await this['_getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['changePassword'](a,b);}async['removeEncryptionPassword'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['removePassword'](a);}async['getEncryptionMode'](){const a=await this['_getStorage']();if(a instanceof SecureAccountStorage)return a['getMode']();}async['isPasswordSet'](){return await this['getEncryptionMode']()==='password';}async['getMcpAccess'](){const a=await this['_getStorage']();if(a instanceof SecureAccountStorage)return a['getMcpAccess']();return'allowed';}async['setMcpAccess'](a,b){const c=await this['_getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['setMcpAccess'](a,b);}static['Instance'](){if(EvmAccount['_instance'])return EvmAccount['_instance'];if(!EvmAccount['_instance'])EvmAccount['_instance']=new EvmAccount();return EvmAccount['_instance'];}async['_readAll'](){const a=await this['_getStorage'](),b=await a['get']();if(!b)return[];const c=JSON['parse'](b);let d=[],e=![];if(Array['isArray'](c))d=c['map'](f=>({'address':f['address'],'name':f['name'],'pubkey':f['pubkey'],'secret':f['secret'],'isActive':f['isActive'],'createdAt':f['createdAt'],'updatedAt':f['updatedAt']})),d['length']>0x0&&!d['some'](f=>f['isActive']===!![])&&(d[0x0]['isActive']=!![],e=!![]);else c&&typeof c==='object'&&(d=[{'address':c['address'],'name':c['name'],'pubkey':c['pubkey'],'secret':c['secret'],'isActive':!![],'createdAt':c['createdAt'],'updatedAt':c['updatedAt']}],e=!![]);if(e)await a['put'](JSON['stringify'](d));return d;}async['_writeAll'](a){await(await this['_getStorage']())['put'](JSON['stringify'](a));}['_findActive'](a){return a['find'](b=>b['isActive']===!![]);}['_sanitize'](a,b=![],c=![]){const {secret:d,...e}=a,f=c?a:e;if(!b){const {pubkey:g,...h}=f;return h;}return f;}async['_get'](a=![]){const b=await this['_readAll'](),c=this['_findActive'](b);if(!c)return void 0x0;return this['_sanitize'](c,a);}async['_getWithSecret'](){const a=await this['_readAll'](),b=this['_findActive'](a);if(!b||!b['secret'])a80a('account\x20not\x20found','No\x20active\x20EVM\x20account\x20with\x20secret.\x20Call\x20active()\x20first\x20to\x20auto-generate\x20one.');return b;}async['_upsertAsActive'](a){const b=await this['_readAll']();b['forEach'](d=>{if(d['address']!==a['address'])d['isActive']=![];});const c=b['findIndex'](d=>d['address']['toLowerCase']()===a['address']['toLowerCase']());if(c!==-0x1)b[c]={...a,'isActive':!![]};else b['push']({...a,'isActive':!![]});await this['_writeAll'](b);}async['resolveNetwork'](a,b){const c=EvmNetworkRegistry['Instance']();if(b){const e=await c['resolve'](b);return{'cfg':e,'url':c['pickHealthyRpc'](e)||b};}const d=await c['resolve'](a);return{'cfg':d,'url':c['pickHealthyRpc'](d)};}async['rpcWithFailover'](a,b,c){const d=EvmNetworkRegistry['Instance']();let f;const g=a['rpcTimeoutMs']??0x2710;for(const h of a['rpcUrls'])try{const i=new AbortController(),j=setTimeout(()=>i['abort'](),g);try{const k=await ethRpcWithAbort(h,b,c,i['signal']);return d['markHealthy'](h),k;}finally{clearTimeout(j);}}catch(l){f=l,d['markUnhealthy'](h);}throw f instanceof Error?f:new Error('All\x20RPCs\x20failed\x20for\x20'+b);}async['gen'](a=![]){return EvmAccount['_dataLock']['run'](async()=>{const b=secp256k1['utils']['randomSecretKey'](),c='0x'+bytesToHex(b),d=privateKeyToAddress(b),e=Date['now'](),f={'address':d,'secret':c,'isActive':!![],'createdAt':e,'updatedAt':e};if(a)f['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](b,!![]));return await this['_upsertAsActive'](f),this['_sanitize'](f,a);});}async['importPrivateKey'](a,b=![]){return EvmAccount['_dataLock']['run'](async()=>{const c=a['startsWith']('0x')?a['slice'](0x2):a;if(c['length']!==0x40)a80a('invalid\x20parameter','Private\x20key\x20must\x20be\x2032\x20bytes\x20(64\x20hex\x20chars),\x20got\x20'+c['length']+'\x20chars');const d='0x'+c,e=hexToBytes(d),f=privateKeyToAddress(e),g=Date['now'](),h={'address':f,'secret':d,'isActive':!![],'createdAt':g,'updatedAt':g};if(b)h['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](e,!![]));return await this['_upsertAsActive'](h),this['_sanitize'](h,b);});}async['importMnemonic'](a,b,c=![]){return EvmAccount['_dataLock']['run'](async()=>{const d=a80b(a),e=HDKey['fromMasterSeed'](d),f=b||'m/44\x27/60\x27/0\x27/0/0',g=e['derive'](f);if(!g['privateKey'])a80a('invalid\x20parameter','Failed\x20to\x20derive\x20private\x20key\x20from\x20mnemonic');const h='0x'+bytesToHex(g['privateKey']),i=hexToBytes(h),j=privateKeyToAddress(i),k=Date['now'](),l={'address':j,'secret':h,'isActive':!![],'createdAt':k,'updatedAt':k};if(c)l['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](i,!![]));return await this['_upsertAsActive'](l),this['_sanitize'](l,c);});}async['active'](a=![]){const b=await this['_get'](a);if(b)return b;return this['gen'](a);}async['list'](a){let b=(await this['_readAll']())['slice']();if(a?.['isActive']!==void 0x0)b=b['filter'](c=>a['isActive']?c['isActive']===!![]:c['isActive']!==!![]);if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0)b=b['filter'](c=>c['createdAt']&&c['createdAt']>=a['createdAt']['gte']);if(a['createdAt']['lte']!==void 0x0)b=b['filter'](c=>c['createdAt']&&c['createdAt']<=a['createdAt']['lte']);}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0)b=b['filter'](c=>c['updatedAt']&&c['updatedAt']>=a['updatedAt']['gte']);if(a['updatedAt']['lte']!==void 0x0)b=b['filter'](c=>c['updatedAt']&&c['updatedAt']<=a['updatedAt']['lte']);}if(a?.['name']!=null||a?.['address'])b=b['map'](c=>{let d=0x0;if(a?.['name']!=null){const e=(c['name']||'')['toLowerCase'](),f=a['name']['toLowerCase']();if(e===f)d+=0x64;else{if(e['startsWith'](f))d+=0x32;else{if(e['includes'](f))d+=0x19;}}}if(a?.['address']){const g=c['address']['toLowerCase'](),h=a['address']['toLowerCase']();if(g===h)d+=0x64;else{if(g['startsWith'](h))d+=0x32;else{if(g['includes'](h))d+=0x19;}}}if((a?.['name']||a?.['address'])&&d===0x0)d=-0x1;return{'a':c,'score':d};})['filter'](c=>c['score']>=0x0)['sort']((c,d)=>d['score']-c['score'])['map'](c=>c['a']);else b['sort']((c,d)=>{if(c['isActive']===!![]&&d['isActive']!==!![])return-0x1;if(c['isActive']!==!![]&&d['isActive']===!![])return 0x1;return 0x0;});return b['map'](c=>this['_sanitize'](c,a?.['includePubkey']));}async['setActive'](a){return EvmAccount['_dataLock']['run'](async()=>{const b=await this['_readAll'](),c=b['find'](d=>d['address']['toLowerCase']()===a['toLowerCase']());if(!c)return![];return b['forEach'](d=>{d['isActive']=d['address']===c['address'];}),c['updatedAt']=Date['now'](),await this['_writeAll'](b),!![];});}async['rename'](a,b){return EvmAccount['_dataLock']['run'](async()=>{const c=await this['_readAll'](),d=c['find'](f=>f['address']['toLowerCase']()===a['toLowerCase']());if(!d)return![];const e=Date['now']();return d['name']=b,d['updatedAt']=e,await this['_writeAll'](c),!![];});}async['del'](a){return EvmAccount['_dataLock']['run'](async()=>{const b=await this['_readAll'](),c=b['findIndex'](e=>e['address']['toLowerCase']()===a['toLowerCase']());if(c===-0x1)return![];const d=b[c]['isActive']===!![];return b['splice'](c,0x1),d&&b['length']>0x0&&!b['some'](e=>e['isActive']===!![])&&(b[0x0]['isActive']=!![],b[0x0]['updatedAt']=Date['now']()),await this['_writeAll'](b),!![];});}async['getByNameOrAddress'](a,b=![],c=![]){const d=await this['_readAll'](),e=a['toLowerCase'](),f=d['find'](g=>g['address']['toLowerCase']()===e||g['name']&&g['name']['toLowerCase']()===e);if(!f)return void 0x0;return this['_sanitize'](f,b,c);}async['exportSecret'](a){return(await this['getByNameOrAddress'](a,![],!![]))?.['secret'];}async['balance'](b,c){const d=await this['_get']();if(!d)return void 0x0;const {cfg:e}=await this['resolveNetwork'](b,c),f=await this['rpcWithFailover'](e,'eth_getBalance',[d['address'],'latest']);return BigInt(f);}async['balanceOf'](b,c,d){const e=await this['_get']();if(!e)return void 0x0;const {cfg:f}=await this['resolveNetwork'](c,d),g='0x70a08231'+e['address']['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0'),h=await this['rpcWithFailover'](f,'eth_call',[{'to':b,'data':g},'latest']);return BigInt(h);}async['getNonce'](b,c){const d=await this['_get']();if(!d)return void 0x0;const {cfg:e}=await this['resolveNetwork'](b,c),f=await this['rpcWithFailover'](e,'eth_getTransactionCount',[d['address'],'pending']);return parseInt(f,0x10);}async['getChainId'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_chainId',[]);return parseInt(d,0x10);}async['getBlockNumber'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_blockNumber',[]);return BigInt(d);}async['ethCall'](b,c,d){const e=await this['_get']();if(!e)a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const f=b['network']??c,{cfg:g}=await this['resolveNetwork'](f,d??b['rpcUrl']);return await this['rpcWithFailover'](g,'eth_call',[{'from':e['address'],'to':b['to'],'data':b['data']??'0x','value':'0x'+(b['value']??0x0n)['toString'](0x10)},'latest']);}['guessGasLimit'](a){const b=a['data']??'';if(b['startsWith']('0x9c3ecefb'))return 0x927c0n;if(b['startsWith']('0x095ea7b3'))return 0x186a0n;if(b['startsWith']('0xb4b7068c'))return 0x3d090n;if(b['startsWith']('0x0bdba58b'))return 0x493e0n;return 0x61a80n;}async['estimateGas'](b,c,d){const e=await this['_get']();if(!e)a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const f=b['network']??c,{cfg:g}=await this['resolveNetwork'](f,d??b['rpcUrl']),h=await this['rpcWithFailover'](g,'eth_estimateGas',[{'from':e['address'],'to':b['to'],'data':b['data']??'0x','value':'0x'+(b['value']??0x0n)['toString'](0x10)}]);return BigInt(h);}async['safeEstimateGas'](a){if(!await this['_get']())a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const {cfg:b}=await this['resolveNetwork'](a['network'],a['rpcUrl']);let c;try{await this['ethCall'](a);}catch(d){return c=extractRevertReason(d),{'gasLimit':this['guessGasLimit'](a),'revertReason':c||'eth_call\x20failed'};}try{const f=await this['estimateGas'](a),g=b['gasLimitMultiplier']??1.2;return{'gasLimit':BigInt(Math['ceil'](Number(f)*g))};}catch(h){return c=extractRevertReason(h),console['warn']('[safeEstimateGas]\x20estimateGas\x20failed,\x20using\x20fallback\x20gasLimit='+this['guessGasLimit'](a),c?'revert:\x20'+c:''),{'gasLimit':this['guessGasLimit'](a),'revertReason':c};}}async['getFeeData'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_feeHistory',['0x5','latest',[0x32]]),e=BigInt(d['baseFeePerGas'][0x0]),f=BigInt(d['reward'][0x0][0x0]),g=c['minPriorityFee']??0x0n,h=f<g?g:f;return{'maxFeePerGas':e*0x2n+h,'maxPriorityFeePerGas':h};}async['sign_and_send'](b,c){const d=await this['_getWithSecret']();if(!d||!d['secret'])a80a('account\x20not\x20found','No\x20active\x20EVM\x20account\x20with\x20secret');const {cfg:e,url:f}=await this['resolveNetwork'](b['network'],c??b['rpcUrl']),g=b['chainId']??e['chainId'],h=hexToBytes(d['secret']['slice'](0x2)),i=b['nonce']??await this['getNonce'](e['chainId'],f);let {maxFeePerGas:j,maxPriorityFeePerGas:k,gasPrice:l}=b;e['useLegacy']&&!l&&(l=(await this['getFeeData'](e['chainId'],f))['maxFeePerGas'],j=void 0x0,k=void 0x0);if(!j&&!k&&!l){const r=await this['getFeeData'](e['chainId'],f);j=r['maxFeePerGas'],k=r['maxPriorityFeePerGas'];}let m=b['gasLimit'];if(!m){const s=await this['safeEstimateGas'](b);m=s['gasLimit'],s['revertReason'];}const n=hexToBytes(b['to']['slice'](0x2)),o=b['data']?hexToBytes(b['data']['slice'](0x2)):new Uint8Array(0x0);let p;if(l)p=signLegacy({'to':n,'data':o,'value':b['value']??0x0n,'nonce':i,'chainId':g,'gasPrice':l,'gasLimit':m},h);else p=signEIP1559({'to':n,'data':o,'value':b['value']??0x0n,'nonce':i,'chainId':g,'maxFeePerGas':j,'maxPriorityFeePerGas':k,'gasLimit':m},h);const q=await this['rpcWithFailover'](e,'eth_sendRawTransaction',[p]);return await this['waitForReceipt'](q,e['chainId'],f);}async['waitForReceipt'](a,b,c,d){const {cfg:e,url:f}=await this['resolveNetwork'](b,c),g=d??e['txConfirmTimeoutMs']??0x1d4c0,h=e['pollIntervalMs']??0xbb8,i=Date['now']()+g;while(Date['now']()<i){const j=await this['rpcWithFailover'](e,'eth_getTransactionReceipt',[a]);if(j)return this['parseReceipt'](j);await new Promise(k=>setTimeout(k,h));}a80a('fail','Transaction\x20'+a+'\x20not\x20confirmed\x20within\x20'+g+'ms');}['parseReceipt'](a){return{'transactionHash':a['transactionHash'],'blockNumber':BigInt(a['blockNumber']),'blockHash':a['blockHash'],'status':a['status']??'0x0','gasUsed':BigInt(a['gasUsed']),'effectiveGasPrice':BigInt(a['effectiveGasPrice']),'from':a['from'],'to':a['to'],'contractAddress':a['contractAddress']??void 0x0,'logs':(a['logs']??[])['map'](b=>({'address':b['address'],'topics':b['topics']??[],'data':b['data']??'0x','blockNumber':BigInt(b['blockNumber']),'transactionHash':b['transactionHash'],'transactionIndex':b['transactionIndex'],'logIndex':b['logIndex'],'removed':b['removed']??![]}))};}async['signData'](a){const b=await this['_getWithSecret'](),c=hexToBytes(b['secret']['slice'](0x2)),d=typeof a==='string'?new TextEncoder()['encode'](a):a,e='\x19Ethereum\x20Signed\x20Message:\x0a'+d['length'],f=new Uint8Array(e['length']+d['length']);f['set'](new TextEncoder()['encode'](e),0x0),f['set'](d,e['length']);const g=keccak_256(f),h=secp256k1['sign'](g,c,{'format':'recovered','prehash':![]}),i=0x1b+h[0x0],j=new Uint8Array(0x41);j['set'](h['subarray'](0x1,0x21),0x0),j['set'](h['subarray'](0x21,0x41),0x20),j[0x40]=i;const k=secp256k1['getPublicKey'](c,!![]);return{'signature':'0x'+bytesToHex(j),'publicKey':'0x'+bytesToHex(k),'address':b['address']};}async['transfer'](a){await this['_getWithSecret']();if(!isValidEvmAddress(a['to']))a80a('invalid\x20parameter','Invalid\x20EVM\x20recipient\x20address:\x20'+a['to']);if(a['amount']<=0x0n)a80a('invalid\x20parameter','amount\x20must\x20be\x20positive');const b=!!a['tokenAddress'];if(b){const e=await this['balanceOf'](a['tokenAddress'],a['network'],a['rpcUrl']);if(e===void 0x0||e<a['amount'])a80a('fail','Insufficient\x20ERC20\x20balance:\x20have\x20'+(e??0x0n)+',\x20need\x20'+a['amount']);}else{const f=await this['balance'](a['network'],a['rpcUrl']);if(f===void 0x0||f<a['amount'])a80a('fail','Insufficient\x20ETH\x20balance:\x20have\x20'+(f??0x0n)+',\x20need\x20'+a['amount']);}let c;if(b){const g='0xa9059cbb'+a['to']['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0')+a['amount']['toString'](0x10)['padStart'](0x40,'0');c={'to':a['tokenAddress'],'value':0x0n,'data':g,'network':a['network'],'rpcUrl':a['rpcUrl']};}else c={'to':a['to'],'value':a['amount'],'data':'0x','network':a['network'],'rpcUrl':a['rpcUrl']};const d=await this['sign_and_send'](c,a['rpcUrl']);if(d['status']!=='0x1')a80a('fail','EVM\x20transfer\x20reverted:\x20txHash='+d['transactionHash']);return d;}async['withdrawFromActive'](a){return this['transfer']({...a});}};function extractRevertReason(a){if(!a)return void 0x0;const b=typeof a==='string'?a:a?.['message']??a?.['toString']?.()??'',c=b['match'](/execution reverted:\s*(.+?)(?:\.|$)/i);if(c)return c[0x1]['trim']();const d=b['match'](/reverted with reason string\s*'([^']+)'/i);if(d)return d[0x1];const e=b['match'](/reverted with panic code\s*(0x[0-9a-f]+)/i);if(e)return'panic:\x20'+e[0x1];if(/stack underflow/i['test'](b))return'stack\x20underflow\x20(calldata\x20encoding\x20error)';if(/stack overflow/i['test'](b))return'stack\x20overflow';if(/out of gas/i['test'](b))return'out\x20of\x20gas';return b['length']>0xc8?b['slice'](0x0,0xc8)+'...':b;}export{EvmAccount,bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress};
1
+ import{o as a80a}from'../../exception-D2n4LV8F.mjs';import{r as a80b}from'../../mnemonics-C6qlqegr.mjs';import{d as a80c,r as a80d}from'../../storage-D1bEi2b7.mjs';import{SecureAccountStorage}from'./secure-storage.mjs';import{bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress}from'./evm/rlp.mjs';import{EvmNetworkRegistry}from'./evm/networks.mjs';import{secp256k1}from'@noble/curves/secp256k1.js';import{HDKey}from'@scure/bip32';import{keccak_256}from'@noble/hashes/sha3.js';let rpcRequestId=0x0;async function ethRpcWithAbort(a,b,c,d){const e={'jsonrpc':'2.0','id':++rpcRequestId,'method':b,'params':c},f=await fetch(a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](e),'signal':d});if(!f['ok'])throw new Error('EVM\x20RPC\x20HTTP\x20'+f['status']+':\x20'+await f['text']());const g=await f['json']();if(g['error'])throw new Error('EVM\x20RPC\x20error:\x20'+g['error']['message']+'\x20(code\x20'+g['error']['code']+')');return g['result'];}var EvmAccount=class EvmAccount{static{this['_dataLock']=new a80c();}static{this['_storageLock']=new a80c();}['setStorage'](a){EvmAccount['storage']=a;}['setEncryptedStorage'](a){EvmAccount['storage']=new SecureAccountStorage(a);}async['_getStorage'](){if(EvmAccount['storage'])return EvmAccount['storage'];return EvmAccount['_storageLock']['run'](async()=>{if(!EvmAccount['storage'])EvmAccount['storage']=new SecureAccountStorage(new a80d(void 0x0,'evm_accounts'));return EvmAccount['storage'];});}async['unlock'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');b['setSessionPassword'](a),await b['get']();}async['lock'](){const a=await this['_getStorage']();if(a instanceof SecureAccountStorage)a['setSessionPassword'](void 0x0);}async['setEncryptionPassword'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['setPassword'](a);}async['changeEncryptionPassword'](a,b){const c=await this['_getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['changePassword'](a,b);}async['removeEncryptionPassword'](a){const b=await this['_getStorage']();if(!(b instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await b['removePassword'](a);}async['getEncryptionMode'](){const a=await this['_getStorage']();if(a instanceof SecureAccountStorage)return a['getMode']();}async['isPasswordSet'](){return await this['getEncryptionMode']()==='password';}async['getMcpAccess'](){const a=await this['_getStorage']();if(a instanceof SecureAccountStorage)return a['getMcpAccess']();return'allowed';}async['setMcpAccess'](a,b){const c=await this['_getStorage']();if(!(c instanceof SecureAccountStorage))throw new Error('Current\x20storage\x20does\x20not\x20support\x20encryption.');await c['setMcpAccess'](a,b);}static['Instance'](){if(EvmAccount['_instance'])return EvmAccount['_instance'];if(!EvmAccount['_instance'])EvmAccount['_instance']=new EvmAccount();return EvmAccount['_instance'];}async['_readAll'](){const a=await this['_getStorage'](),b=await a['get']();if(!b)return[];const c=JSON['parse'](b);let d=[],e=![];if(Array['isArray'](c))d=c['map'](f=>({'address':f['address'],'name':f['name'],'pubkey':f['pubkey'],'secret':f['secret'],'isActive':f['isActive'],'createdAt':f['createdAt'],'updatedAt':f['updatedAt']})),d['length']>0x0&&!d['some'](f=>f['isActive']===!![])&&(d[0x0]['isActive']=!![],e=!![]);else c&&typeof c==='object'&&(d=[{'address':c['address'],'name':c['name'],'pubkey':c['pubkey'],'secret':c['secret'],'isActive':!![],'createdAt':c['createdAt'],'updatedAt':c['updatedAt']}],e=!![]);if(e)await a['put'](JSON['stringify'](d));return d;}async['_writeAll'](a){await(await this['_getStorage']())['put'](JSON['stringify'](a));}['_findActive'](a){return a['find'](b=>b['isActive']===!![]);}['_sanitize'](a,b=![],c=![]){const {secret:d,...e}=a,f=c?a:e;if(!b){const {pubkey:g,...h}=f;return h;}return f;}async['_get'](a=![]){const b=await this['_readAll'](),c=this['_findActive'](b);if(!c)return void 0x0;return this['_sanitize'](c,a);}async['_getWithSecret'](){const a=await this['_readAll'](),b=this['_findActive'](a);if(!b||!b['secret'])a80a('account\x20not\x20found','No\x20active\x20EVM\x20account\x20with\x20secret.\x20Call\x20active()\x20first\x20to\x20auto-generate\x20one.');return b;}async['_upsertAsActive'](a){const b=await this['_readAll']();b['forEach'](d=>{if(d['address']!==a['address'])d['isActive']=![];});const c=b['findIndex'](d=>d['address']['toLowerCase']()===a['address']['toLowerCase']());if(c!==-0x1)b[c]={...a,'isActive':!![]};else b['push']({...a,'isActive':!![]});await this['_writeAll'](b);}async['resolveNetwork'](a,b){const c=EvmNetworkRegistry['Instance']();if(b){const e=await c['resolve'](b);return{'cfg':e,'url':c['pickHealthyRpc'](e)||b};}const d=await c['resolve'](a);return{'cfg':d,'url':c['pickHealthyRpc'](d)};}async['rpcWithFailover'](a,b,c){const d=EvmNetworkRegistry['Instance']();let f;const g=a['rpcTimeoutMs']??0x2710;for(const h of a['rpcUrls'])try{const i=new AbortController(),j=setTimeout(()=>i['abort'](),g);try{const k=await ethRpcWithAbort(h,b,c,i['signal']);return d['markHealthy'](h),k;}finally{clearTimeout(j);}}catch(l){f=l,d['markUnhealthy'](h);}throw f instanceof Error?f:new Error('All\x20RPCs\x20failed\x20for\x20'+b);}async['gen'](a=![]){return EvmAccount['_dataLock']['run'](async()=>{const b=secp256k1['utils']['randomSecretKey'](),c='0x'+bytesToHex(b),d=privateKeyToAddress(b),e=Date['now'](),f={'address':d,'secret':c,'isActive':!![],'createdAt':e,'updatedAt':e};if(a)f['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](b,!![]));return await this['_upsertAsActive'](f),this['_sanitize'](f,a);});}async['importPrivateKey'](a,b=![]){return EvmAccount['_dataLock']['run'](async()=>{const c=a['startsWith']('0x')?a['slice'](0x2):a;if(c['length']!==0x40)a80a('invalid\x20parameter','Private\x20key\x20must\x20be\x2032\x20bytes\x20(64\x20hex\x20chars),\x20got\x20'+c['length']+'\x20chars');const d='0x'+c,e=hexToBytes(d),f=privateKeyToAddress(e),g=Date['now'](),h={'address':f,'secret':d,'isActive':!![],'createdAt':g,'updatedAt':g};if(b)h['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](e,!![]));return await this['_upsertAsActive'](h),this['_sanitize'](h,b);});}async['importMnemonic'](a,b,c=![]){return EvmAccount['_dataLock']['run'](async()=>{const d=a80b(a),e=HDKey['fromMasterSeed'](d),f=b||'m/44\x27/60\x27/0\x27/0/0',g=e['derive'](f);if(!g['privateKey'])a80a('invalid\x20parameter','Failed\x20to\x20derive\x20private\x20key\x20from\x20mnemonic');const h='0x'+bytesToHex(g['privateKey']),i=hexToBytes(h),j=privateKeyToAddress(i),k=Date['now'](),l={'address':j,'secret':h,'isActive':!![],'createdAt':k,'updatedAt':k};if(c)l['pubkey']='0x'+bytesToHex(secp256k1['getPublicKey'](i,!![]));return await this['_upsertAsActive'](l),this['_sanitize'](l,c);});}async['active'](a=![]){const b=await this['_get'](a);if(b)return b;return this['gen'](a);}async['list'](a){let b=(await this['_readAll']())['slice']();if(a?.['isActive']!==void 0x0)b=b['filter'](c=>a['isActive']?c['isActive']===!![]:c['isActive']!==!![]);if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0)b=b['filter'](c=>c['createdAt']&&c['createdAt']>=a['createdAt']['gte']);if(a['createdAt']['lte']!==void 0x0)b=b['filter'](c=>c['createdAt']&&c['createdAt']<=a['createdAt']['lte']);}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0)b=b['filter'](c=>c['updatedAt']&&c['updatedAt']>=a['updatedAt']['gte']);if(a['updatedAt']['lte']!==void 0x0)b=b['filter'](c=>c['updatedAt']&&c['updatedAt']<=a['updatedAt']['lte']);}if(a?.['name']!=null||a?.['address'])b=b['map'](c=>{let d=0x0;if(a?.['name']!=null){const e=(c['name']||'')['toLowerCase'](),f=a['name']['toLowerCase']();if(e===f)d+=0x64;else{if(e['startsWith'](f))d+=0x32;else{if(e['includes'](f))d+=0x19;}}}if(a?.['address']){const g=c['address']['toLowerCase'](),h=a['address']['toLowerCase']();if(g===h)d+=0x64;else{if(g['startsWith'](h))d+=0x32;else{if(g['includes'](h))d+=0x19;}}}if((a?.['name']||a?.['address'])&&d===0x0)d=-0x1;return{'a':c,'score':d};})['filter'](c=>c['score']>=0x0)['sort']((c,d)=>d['score']-c['score'])['map'](c=>c['a']);else b['sort']((c,d)=>{if(c['isActive']===!![]&&d['isActive']!==!![])return-0x1;if(c['isActive']!==!![]&&d['isActive']===!![])return 0x1;return 0x0;});return b['map'](c=>this['_sanitize'](c,a?.['includePubkey']));}async['setActive'](a){return EvmAccount['_dataLock']['run'](async()=>{const b=await this['_readAll'](),c=b['find'](d=>d['address']['toLowerCase']()===a['toLowerCase']());if(!c)return![];return b['forEach'](d=>{d['isActive']=d['address']===c['address'];}),c['updatedAt']=Date['now'](),await this['_writeAll'](b),!![];});}async['rename'](a,b){return EvmAccount['_dataLock']['run'](async()=>{const c=await this['_readAll'](),d=c['find'](f=>f['address']['toLowerCase']()===a['toLowerCase']());if(!d)return![];const e=Date['now']();return d['name']=b,d['updatedAt']=e,await this['_writeAll'](c),!![];});}async['del'](a){return EvmAccount['_dataLock']['run'](async()=>{const b=await this['_readAll'](),c=b['findIndex'](e=>e['address']['toLowerCase']()===a['toLowerCase']());if(c===-0x1)return![];const d=b[c]['isActive']===!![];return b['splice'](c,0x1),d&&b['length']>0x0&&!b['some'](e=>e['isActive']===!![])&&(b[0x0]['isActive']=!![],b[0x0]['updatedAt']=Date['now']()),await this['_writeAll'](b),!![];});}async['getByNameOrAddress'](a,b=![],c=![]){const d=await this['_readAll'](),e=a['toLowerCase'](),f=d['find'](g=>g['address']['toLowerCase']()===e||g['name']&&g['name']['toLowerCase']()===e);if(!f)return void 0x0;return this['_sanitize'](f,b,c);}async['exportSecret'](a){return(await this['getByNameOrAddress'](a,![],!![]))?.['secret'];}async['balance'](b,c){const d=await this['_get']();if(!d)return void 0x0;const {cfg:e}=await this['resolveNetwork'](b,c),f=await this['rpcWithFailover'](e,'eth_getBalance',[d['address'],'latest']);return BigInt(f);}async['balanceOf'](b,c,d){const e=await this['_get']();if(!e)return void 0x0;const {cfg:f}=await this['resolveNetwork'](c,d),g='0x70a08231'+e['address']['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0'),h=await this['rpcWithFailover'](f,'eth_call',[{'to':b,'data':g},'latest']);return BigInt(h);}async['getNonce'](b,c){const d=await this['_get']();if(!d)return void 0x0;const {cfg:e}=await this['resolveNetwork'](b,c),f=await this['rpcWithFailover'](e,'eth_getTransactionCount',[d['address'],'pending']);return parseInt(f,0x10);}async['getChainId'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_chainId',[]);return parseInt(d,0x10);}async['getBlockNumber'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_blockNumber',[]);return BigInt(d);}async['ethCall'](b,c,d){const e=await this['_get']();if(!e)a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const f=b['network']??c,{cfg:g}=await this['resolveNetwork'](f,d??b['rpcUrl']);return await this['rpcWithFailover'](g,'eth_call',[{'from':e['address'],'to':b['to'],'data':b['data']??'0x','value':'0x'+(b['value']??0x0n)['toString'](0x10)},'latest']);}['guessGasLimit'](a){const b=a['data']??'';if(b['startsWith']('0x9c3ecefb'))return 0x927c0n;if(b['startsWith']('0x095ea7b3'))return 0x186a0n;if(b['startsWith']('0xb4b7068c'))return 0x3d090n;if(b['startsWith']('0x0bdba58b'))return 0x493e0n;return 0x61a80n;}async['estimateGas'](b,c,d){const e=await this['_get']();if(!e)a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const f=b['network']??c,{cfg:g}=await this['resolveNetwork'](f,d??b['rpcUrl']),h=await this['rpcWithFailover'](g,'eth_estimateGas',[{'from':e['address'],'to':b['to'],'data':b['data']??'0x','value':'0x'+(b['value']??0x0n)['toString'](0x10)}]);return BigInt(h);}async['safeEstimateGas'](a){if(!await this['_get']())a80a('account\x20not\x20found','No\x20active\x20EVM\x20account');const {cfg:b}=await this['resolveNetwork'](a['network'],a['rpcUrl']);let c;try{await this['ethCall'](a);}catch(d){return c=extractRevertReason(d),{'gasLimit':this['guessGasLimit'](a),'revertReason':c||'eth_call\x20failed'};}try{const f=await this['estimateGas'](a),g=b['gasLimitMultiplier']??1.2;return{'gasLimit':BigInt(Math['ceil'](Number(f)*g))};}catch(h){return c=extractRevertReason(h),console['warn']('[safeEstimateGas]\x20estimateGas\x20failed,\x20using\x20fallback\x20gasLimit='+this['guessGasLimit'](a),c?'revert:\x20'+c:''),{'gasLimit':this['guessGasLimit'](a),'revertReason':c};}}async['getFeeData'](a,b){const {cfg:c}=await this['resolveNetwork'](a,b),d=await this['rpcWithFailover'](c,'eth_feeHistory',['0x5','latest',[0x32]]),e=BigInt(d['baseFeePerGas'][0x0]),f=BigInt(d['reward'][0x0][0x0]),g=c['minPriorityFee']??0x0n,h=f<g?g:f;return{'maxFeePerGas':e*0x2n+h,'maxPriorityFeePerGas':h};}async['sign_and_send'](b,c){const d=await this['_getWithSecret']();if(!d||!d['secret'])a80a('account\x20not\x20found','No\x20active\x20EVM\x20account\x20with\x20secret');const {cfg:e,url:f}=await this['resolveNetwork'](b['network'],c??b['rpcUrl']),g=b['chainId']??e['chainId'],h=hexToBytes(d['secret']['slice'](0x2)),i=b['nonce']??await this['getNonce'](e['chainId'],f);let {maxFeePerGas:j,maxPriorityFeePerGas:k,gasPrice:l}=b;e['useLegacy']&&!l&&(l=(await this['getFeeData'](e['chainId'],f))['maxFeePerGas'],j=void 0x0,k=void 0x0);if(!j&&!k&&!l){const r=await this['getFeeData'](e['chainId'],f);j=r['maxFeePerGas'],k=r['maxPriorityFeePerGas'];}let m=b['gasLimit'];if(!m){const s=await this['safeEstimateGas'](b);m=s['gasLimit'],s['revertReason'];}const n=hexToBytes(b['to']['slice'](0x2)),o=b['data']?hexToBytes(b['data']['slice'](0x2)):new Uint8Array(0x0);let p;if(l)p=signLegacy({'to':n,'data':o,'value':b['value']??0x0n,'nonce':i,'chainId':g,'gasPrice':l,'gasLimit':m},h);else p=signEIP1559({'to':n,'data':o,'value':b['value']??0x0n,'nonce':i,'chainId':g,'maxFeePerGas':j,'maxPriorityFeePerGas':k,'gasLimit':m},h);const q=await this['rpcWithFailover'](e,'eth_sendRawTransaction',[p]);return await this['waitForReceipt'](q,e['chainId'],f);}async['waitForReceipt'](a,b,c,d){const {cfg:e,url:f}=await this['resolveNetwork'](b,c),g=d??e['txConfirmTimeoutMs']??0x1d4c0,h=e['pollIntervalMs']??0xbb8,i=Date['now']()+g;while(Date['now']()<i){const j=await this['rpcWithFailover'](e,'eth_getTransactionReceipt',[a]);if(j)return this['parseReceipt'](j);await new Promise(k=>setTimeout(k,h));}a80a('fail','Transaction\x20'+a+'\x20not\x20confirmed\x20within\x20'+g+'ms');}['parseReceipt'](a){return{'transactionHash':a['transactionHash'],'blockNumber':BigInt(a['blockNumber']),'blockHash':a['blockHash'],'status':a['status']??'0x0','gasUsed':BigInt(a['gasUsed']),'effectiveGasPrice':BigInt(a['effectiveGasPrice']),'from':a['from'],'to':a['to'],'contractAddress':a['contractAddress']??void 0x0,'logs':(a['logs']??[])['map'](b=>({'address':b['address'],'topics':b['topics']??[],'data':b['data']??'0x','blockNumber':BigInt(b['blockNumber']),'transactionHash':b['transactionHash'],'transactionIndex':b['transactionIndex'],'logIndex':b['logIndex'],'removed':b['removed']??![]}))};}async['signData'](a){const b=await this['_getWithSecret'](),c=hexToBytes(b['secret']['slice'](0x2)),d=typeof a==='string'?new TextEncoder()['encode'](a):a,e='\x19Ethereum\x20Signed\x20Message:\x0a'+d['length'],f=new Uint8Array(e['length']+d['length']);f['set'](new TextEncoder()['encode'](e),0x0),f['set'](d,e['length']);const g=keccak_256(f),h=secp256k1['sign'](g,c,{'format':'recovered','prehash':![]}),i=0x1b+h[0x0],j=new Uint8Array(0x41);j['set'](h['subarray'](0x1,0x21),0x0),j['set'](h['subarray'](0x21,0x41),0x20),j[0x40]=i;const k=secp256k1['getPublicKey'](c,!![]);return{'signature':'0x'+bytesToHex(j),'publicKey':'0x'+bytesToHex(k),'address':b['address']};}async['transfer'](a){await this['_getWithSecret']();if(!isValidEvmAddress(a['to']))a80a('invalid\x20parameter','Invalid\x20EVM\x20recipient\x20address:\x20'+a['to']);if(a['amount']<=0x0n)a80a('invalid\x20parameter','amount\x20must\x20be\x20positive');const b=!!a['tokenAddress'];if(b){const e=await this['balanceOf'](a['tokenAddress'],a['network'],a['rpcUrl']);if(e===void 0x0||e<a['amount'])a80a('fail','Insufficient\x20ERC20\x20balance:\x20have\x20'+(e??0x0n)+',\x20need\x20'+a['amount']);}else{const f=await this['balance'](a['network'],a['rpcUrl']);if(f===void 0x0||f<a['amount'])a80a('fail','Insufficient\x20ETH\x20balance:\x20have\x20'+(f??0x0n)+',\x20need\x20'+a['amount']);}let c;if(b){const g='0xa9059cbb'+a['to']['slice'](0x2)['toLowerCase']()['padStart'](0x40,'0')+a['amount']['toString'](0x10)['padStart'](0x40,'0');c={'to':a['tokenAddress'],'value':0x0n,'data':g,'network':a['network'],'rpcUrl':a['rpcUrl']};}else c={'to':a['to'],'value':a['amount'],'data':'0x','network':a['network'],'rpcUrl':a['rpcUrl']};const d=await this['sign_and_send'](c,a['rpcUrl']);if(d['status']!=='0x1')a80a('fail','EVM\x20transfer\x20reverted:\x20txHash='+d['transactionHash']);return d;}async['withdrawFromActive'](a){return this['transfer']({...a});}};function extractRevertReason(a){if(!a)return void 0x0;const b=typeof a==='string'?a:a?.['message']??a?.['toString']?.()??'',c=b['match'](/execution reverted:\s*(.+?)(?:\.|$)/i);if(c)return c[0x1]['trim']();const d=b['match'](/reverted with reason string\s*'([^']+)'/i);if(d)return d[0x1];const e=b['match'](/reverted with panic code\s*(0x[0-9a-f]+)/i);if(e)return'panic:\x20'+e[0x1];if(/stack underflow/i['test'](b))return'stack\x20underflow\x20(calldata\x20encoding\x20error)';if(/stack overflow/i['test'](b))return'stack\x20overflow';if(/out of gas/i['test'](b))return'out\x20of\x20gas';return b['length']>0xc8?b['slice'](0x0,0xc8)+'...':b;}export{EvmAccount,bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress};
@@ -1 +1 @@
1
- import{a as a81a,i as a81b,n as a81c,r as a81d,t as a81e}from'../../fund-approval-B0Y1YRF5.mjs';export{a81e as fetchFundApprovalTokenInfo,a81c as getFundApprovalPolicy,a81d as getFundApprovalTokenCatalog,a81b as isFundApprovalExempt,a81a as setFundApprovalPolicy};
1
+ import{a as a81a,i as a81b,n as a81c,r as a81d,t as a81e}from'../../fund-approval-D9vwQz49.mjs';export{a81e as fetchFundApprovalTokenInfo,a81c as getFundApprovalPolicy,a81d as getFundApprovalTokenCatalog,a81b as isFundApprovalExempt,a81a as setFundApprovalPolicy};
@@ -1,12 +1,12 @@
1
- import { $m as LocalHistoryOperationResult, $x as AccountData, Ch as TokenTypeInfo, Gm as AccountOperationResult, Jm as FetchTokenInfoOperation, Km as AccountOrMark_Address, Qm as LocalHistoryOperation, Qx as Account, Sh as TokenInfo, Wm as AccountOperation, Xm as GetLocalNamesByAddresses, Ym as GetAccountOrMark_Address, Zm as GetManyAccountOrMark_Address, _h as query_local_info_list, ah as ManyAccountOrMark_Address, bh as query_local_token_list, ch as account_operation, dh as local_info_operation, eS as AccountFilter, eh as LocalInfoOperation, fh as local_mark_operation, gh as query_local_info_default, hh as query_local_info, iS as MAX_MESSENGER_ACCOUNTS, ih as LocalNameByAddress, lh as fetch_token_info_operation, mh as query_account_list, nS as FaucetCoinInfo, nh as LocalMarkOperation, oh as QueryAccount, ph as query_account, qm as FaucetNetwork, rS as MAX_ACCOUNTS, rh as LocalMarkOperationResult, sh as QueryAccountResult, tS as DEFAULT_ACCOUNT_NAME, th as LocalInfoOperationResult, uh as local_history_operation, vh as query_local_mark, xh as TokenDataFilter, yh as query_local_mark_list } from "../../index-5DmaIrpk.mjs";
1
+ import { $h as TokenDataFilter, AS as Account, Ah as LocalHistoryOperation, Bh as account_operation, Ch as AccountOperationResult, Dh as GetAccountOrMark_Address, Eh as FetchTokenInfoOperation, FS as FaucetCoinInfo, Fh as LocalMarkOperationResult, Gh as query_account, Hh as local_history_operation, IS as MAX_ACCOUNTS, Ih as LocalNameByAddress, Jh as query_local_info_default, Kh as query_account_list, LS as MAX_MESSENGER_ACCOUNTS, Lh as ManyAccountOrMark_Address, MS as AccountFilter, Mh as LocalInfoOperation, NS as CoinObjectWithBalanceResult, Nh as LocalInfoOperationResult, Oh as GetLocalNamesByAddresses, PS as DEFAULT_ACCOUNT_NAME, Ph as LocalMarkOperation, Qh as query_local_token_list, Rh as QueryAccount, Sh as AccountOperation, Th as FaucetNetwork, Uh as local_info_operation, Vh as fetch_token_info_operation, Wh as local_mark_operation, Xh as query_local_mark, Yh as query_local_info_list, Zh as query_local_mark_list, eg as TokenInfo, jS as AccountData, jh as LocalHistoryOperationResult, kh as GetManyAccountOrMark_Address, qh as query_local_info, tg as TokenTypeInfo, wh as AccountOrMark_Address, zh as QueryAccountResult } from "../../index-DKne9Aij.mjs";
2
2
  import { n as ConfigData, t as Config } from "../../config-AuT9_n2K.mjs";
3
3
  import { a as OwnedRecordStorage, i as OwnedRecord, n as IStorage, s as SQLiteStorage, t as IAccountStorage } from "../../storage-C_8llI0r.mjs";
4
4
  import { a as SecureEnvelope, i as SecureAccountStorage, n as EncryptionMode, r as KeyMetadata, t as CryptoVault } from "../../secure-storage-WrSCAIOu.mjs";
5
- import { S as isValidAddress, _ as LocalMarkNameMaxLength, a as HistoryVisit, b as MarkData, c as LocalHistory, d as LocalInfoContentMaxLength, f as LocalInfoFilter, g as LocalMarkFilter, h as LocalMark, i as HistoryRetainDays, l as LocalInfo, m as LocalInfoNameMaxLength, n as HistoryEntry, o as InfoData, p as LocalInfoNameDefault, r as HistoryMaxEntries, s as InfoDataInner, t as BUITIN_IDS, u as LocalInfoContentMaxCount, v as LocalMarkTagMaxCount, x as MarkParam, y as LocalMarkTagMaxLength } from "../../local-Cizo_1J5.mjs";
5
+ import { S as isValidAddress, _ as LocalMarkNameMaxLength, a as HistoryVisit, b as MarkData, c as LocalHistory, d as LocalInfoContentMaxLength, f as LocalInfoFilter, g as LocalMarkFilter, h as LocalMark, i as HistoryRetainDays, l as LocalInfo, m as LocalInfoNameMaxLength, n as HistoryEntry, o as InfoData, p as LocalInfoNameDefault, r as HistoryMaxEntries, s as InfoDataInner, t as BUITIN_IDS, u as LocalInfoContentMaxCount, v as LocalMarkTagMaxCount, x as MarkParam, y as LocalMarkTagMaxLength } from "../../local-CsbLMwvo.mjs";
6
6
  import { a as getFundApprovalPolicy, c as setFundApprovalPolicy, i as fetchFundApprovalTokenInfo, n as FundApprovalThreshold, o as getFundApprovalTokenCatalog, r as FundApprovalTokenInfo, s as isFundApprovalExempt, t as FundApprovalPolicy } from "../../fund-approval-EBi-SfjX.mjs";
7
7
  import { _ as toChecksumAddress, c as bytesToHex, d as hexToBytes, g as signLegacy, h as signEIP1559, m as privateKeyToAddress, p as isValidEvmAddress, s as bytesToBigInt } from "../../rlp-Do3rPWRV.mjs";
8
8
  import { a as EvmTransactionReceipt, i as EvmLog, n as EvmAccountData, o as EvmTransactionRequest, r as EvmAccountFilter, t as EvmAccount } from "../../evm-account-DiQ0dl_e.mjs";
9
- import { i as registerBridgeEvmNetworks, n as EvmNetworkConfig, r as EvmNetworkRegistry, t as ETH_MAINNET } from "../../networks-ByH0We-G.mjs";
9
+ import { i as registerBridgeEvmNetworks, n as EvmNetworkConfig, r as EvmNetworkRegistry, t as ETH_MAINNET } from "../../networks-DgObqYrB.mjs";
10
10
  import { A as wipToHtml, C as createWip, D as verifyWip, E as sign_wip, O as verify_wip, S as WipVerificationResult, T as loadWip, _ as WipSignature, a as SignatureAlgorithm, b as WipToHtmlOptions, c as WipContent, d as WipFile, f as WipGenerationOptions, g as WipPayload, h as WipMeta, i as ImageSource, k as wip2html, l as WipCreateOptions, m as WipMedia, n as HashAlgorithm, o as TextFormat, p as WipLimits, r as ImageMimeType, s as WIP, t as DEFAULT_LIMITS, u as WipError, v as WipSignatureVerification, w as generate_wip, x as WipValidationError, y as WipSizeError } from "../../wip-Cq6OttmQ.mjs";
11
11
  import { a as getWowokUserDataDir, c as workspaceExportPath, i as getWowokIndustryDir, n as getWowMcpDir, o as getWowokWorkspaceDir, r as getWowokDataDir, s as safeFilename, t as getWowDir } from "../../util-eN75N_r9.mjs";
12
- export { Account, AccountData, AccountFilter, AccountOperation, AccountOperationResult, AccountOrMark_Address, BUITIN_IDS, Config, ConfigData, CryptoVault, DEFAULT_ACCOUNT_NAME, DEFAULT_LIMITS, ETH_MAINNET, EncryptionMode, EvmAccount, EvmAccountData, EvmAccountFilter, EvmLog, EvmNetworkConfig, EvmNetworkRegistry, EvmTransactionReceipt, EvmTransactionRequest, FaucetCoinInfo, FaucetNetwork, FetchTokenInfoOperation, FundApprovalPolicy, FundApprovalThreshold, FundApprovalTokenInfo, GetAccountOrMark_Address, GetLocalNamesByAddresses, GetManyAccountOrMark_Address, HashAlgorithm, HistoryEntry, HistoryMaxEntries, HistoryRetainDays, HistoryVisit, type IAccountStorage, type IStorage, ImageMimeType, ImageSource, InfoData, InfoDataInner, KeyMetadata, LocalHistory, LocalHistoryOperation, LocalHistoryOperationResult, LocalInfo, LocalInfoContentMaxCount, LocalInfoContentMaxLength, LocalInfoFilter, LocalInfoNameDefault, LocalInfoNameMaxLength, LocalInfoOperation, LocalInfoOperationResult, LocalMark, LocalMarkFilter, LocalMarkNameMaxLength, LocalMarkOperation, LocalMarkOperationResult, LocalMarkTagMaxCount, LocalMarkTagMaxLength, LocalNameByAddress, MAX_ACCOUNTS, MAX_MESSENGER_ACCOUNTS, ManyAccountOrMark_Address, MarkData, MarkParam, type OwnedRecord, OwnedRecordStorage, QueryAccount, QueryAccountResult, SQLiteStorage, SecureAccountStorage, SecureEnvelope, SignatureAlgorithm, TextFormat, TokenDataFilter, TokenInfo, TokenTypeInfo, WIP, WipContent, WipCreateOptions, WipError, WipFile, WipGenerationOptions, WipLimits, WipMedia, WipMeta, WipPayload, WipSignature, WipSignatureVerification, WipSizeError, WipToHtmlOptions, WipValidationError, WipVerificationResult, account_operation, bytesToBigInt, bytesToHex, createWip, fetchFundApprovalTokenInfo, fetch_token_info_operation, generate_wip, getFundApprovalPolicy, getFundApprovalTokenCatalog, getWowDir, getWowMcpDir, getWowokDataDir, getWowokIndustryDir, getWowokUserDataDir, getWowokWorkspaceDir, hexToBytes, isFundApprovalExempt, isValidAddress, isValidEvmAddress, loadWip, local_history_operation, local_info_operation, local_mark_operation, privateKeyToAddress, query_account, query_account_list, query_local_info, query_local_info_default, query_local_info_list, query_local_mark, query_local_mark_list, query_local_token_list, registerBridgeEvmNetworks, safeFilename, setFundApprovalPolicy, signEIP1559, signLegacy, sign_wip, toChecksumAddress, verifyWip, verify_wip, wip2html, wipToHtml, workspaceExportPath };
12
+ export { Account, AccountData, AccountFilter, AccountOperation, AccountOperationResult, AccountOrMark_Address, BUITIN_IDS, CoinObjectWithBalanceResult, Config, ConfigData, CryptoVault, DEFAULT_ACCOUNT_NAME, DEFAULT_LIMITS, ETH_MAINNET, EncryptionMode, EvmAccount, EvmAccountData, EvmAccountFilter, EvmLog, EvmNetworkConfig, EvmNetworkRegistry, EvmTransactionReceipt, EvmTransactionRequest, FaucetCoinInfo, FaucetNetwork, FetchTokenInfoOperation, FundApprovalPolicy, FundApprovalThreshold, FundApprovalTokenInfo, GetAccountOrMark_Address, GetLocalNamesByAddresses, GetManyAccountOrMark_Address, HashAlgorithm, HistoryEntry, HistoryMaxEntries, HistoryRetainDays, HistoryVisit, type IAccountStorage, type IStorage, ImageMimeType, ImageSource, InfoData, InfoDataInner, KeyMetadata, LocalHistory, LocalHistoryOperation, LocalHistoryOperationResult, LocalInfo, LocalInfoContentMaxCount, LocalInfoContentMaxLength, LocalInfoFilter, LocalInfoNameDefault, LocalInfoNameMaxLength, LocalInfoOperation, LocalInfoOperationResult, LocalMark, LocalMarkFilter, LocalMarkNameMaxLength, LocalMarkOperation, LocalMarkOperationResult, LocalMarkTagMaxCount, LocalMarkTagMaxLength, LocalNameByAddress, MAX_ACCOUNTS, MAX_MESSENGER_ACCOUNTS, ManyAccountOrMark_Address, MarkData, MarkParam, type OwnedRecord, OwnedRecordStorage, QueryAccount, QueryAccountResult, SQLiteStorage, SecureAccountStorage, SecureEnvelope, SignatureAlgorithm, TextFormat, TokenDataFilter, TokenInfo, TokenTypeInfo, WIP, WipContent, WipCreateOptions, WipError, WipFile, WipGenerationOptions, WipLimits, WipMedia, WipMeta, WipPayload, WipSignature, WipSignatureVerification, WipSizeError, WipToHtmlOptions, WipValidationError, WipVerificationResult, account_operation, bytesToBigInt, bytesToHex, createWip, fetchFundApprovalTokenInfo, fetch_token_info_operation, generate_wip, getFundApprovalPolicy, getFundApprovalTokenCatalog, getWowDir, getWowMcpDir, getWowokDataDir, getWowokIndustryDir, getWowokUserDataDir, getWowokWorkspaceDir, hexToBytes, isFundApprovalExempt, isValidAddress, isValidEvmAddress, loadWip, local_history_operation, local_info_operation, local_mark_operation, privateKeyToAddress, query_account, query_account_list, query_local_info, query_local_info_default, query_local_info_list, query_local_mark, query_local_mark_list, query_local_token_list, registerBridgeEvmNetworks, safeFilename, setFundApprovalPolicy, signEIP1559, signLegacy, sign_wip, toChecksumAddress, verifyWip, verify_wip, wip2html, wipToHtml, workspaceExportPath };
@@ -1 +1 @@
1
- import{getWowDir,getWowMcpDir,getWowokDataDir,getWowokIndustryDir,getWowokUserDataDir,getWowokWorkspaceDir,safeFilename,workspaceExportPath}from'./util.mjs';import{i as a82a,n as a82b}from'../../storage-D1bEi2b7.mjs';import{Config}from'./config.mjs';import{BUITIN_IDS,HistoryMaxEntries,HistoryRetainDays,LocalHistory,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,isValidAddress}from'./local.mjs';import{CryptoVault,SecureAccountStorage}from'./secure-storage.mjs';import{Account,DEFAULT_ACCOUNT_NAME,MAX_ACCOUNTS,MAX_MESSENGER_ACCOUNTS}from'./account.mjs';import{C as a82c,D as a82d,E as a82e,O as a82f,S as a82g,T as a82h,_ as a82i,b as a82j,g as a82k,h as a82l,m as a82m,p as a82n,v as a82o,w as a82p,x as a82q,y as a82r}from'../../util-DttciwF8.mjs';import{TokenInfo}from'./token.mjs';import{a as a82s,i as a82t,n as a82u,r as a82v,t as a82w}from'../../fund-approval-B0Y1YRF5.mjs';import{bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress}from'./evm/rlp.mjs';import{ETH_MAINNET,EvmNetworkRegistry,registerBridgeEvmNetworks}from'./evm/networks.mjs';import{EvmAccount}from'./evm-account.mjs';import{DEFAULT_LIMITS,WIP,WipError,WipSizeError,WipValidationError,createWip,generate_wip,loadWip,sign_wip,verifyWip,verify_wip,wip2html,wipToHtml}from'./wip.mjs';export{Account,BUITIN_IDS,Config,CryptoVault,DEFAULT_ACCOUNT_NAME,DEFAULT_LIMITS,ETH_MAINNET,EvmAccount,EvmNetworkRegistry,a82n as GetAccountOrMark_Address,a82m as GetLocalNamesByAddresses,a82l as GetManyAccountOrMark_Address,HistoryMaxEntries,HistoryRetainDays,LocalHistory,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,MAX_ACCOUNTS,MAX_MESSENGER_ACCOUNTS,a82b as OwnedRecordStorage,a82a as SQLiteStorage,SecureAccountStorage,TokenInfo,WIP,WipError,WipSizeError,WipValidationError,a82k as account_operation,bytesToBigInt,bytesToHex,createWip,a82w as fetchFundApprovalTokenInfo,a82i as fetch_token_info_operation,generate_wip,a82u as getFundApprovalPolicy,a82v as getFundApprovalTokenCatalog,getWowDir,getWowMcpDir,getWowokDataDir,getWowokIndustryDir,getWowokUserDataDir,getWowokWorkspaceDir,hexToBytes,a82t as isFundApprovalExempt,isValidAddress,isValidEvmAddress,loadWip,a82o as local_history_operation,a82r as local_info_operation,a82j as local_mark_operation,privateKeyToAddress,a82q as query_account,a82g as query_account_list,a82c as query_local_info,a82p as query_local_info_default,a82h as query_local_info_list,a82e as query_local_mark,a82d as query_local_mark_list,a82f as query_local_token_list,registerBridgeEvmNetworks,safeFilename,a82s as setFundApprovalPolicy,signEIP1559,signLegacy,sign_wip,toChecksumAddress,verifyWip,verify_wip,wip2html,wipToHtml,workspaceExportPath};
1
+ import{getWowDir,getWowMcpDir,getWowokDataDir,getWowokIndustryDir,getWowokUserDataDir,getWowokWorkspaceDir,safeFilename,workspaceExportPath}from'./util.mjs';import{i as a82a,n as a82b}from'../../storage-D1bEi2b7.mjs';import{Config}from'./config.mjs';import{BUITIN_IDS,HistoryMaxEntries,HistoryRetainDays,LocalHistory,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,isValidAddress}from'./local.mjs';import{CryptoVault,SecureAccountStorage}from'./secure-storage.mjs';import{Account,DEFAULT_ACCOUNT_NAME,MAX_ACCOUNTS,MAX_MESSENGER_ACCOUNTS}from'./account.mjs';import{C as a82c,D as a82d,E as a82e,O as a82f,S as a82g,T as a82h,_ as a82i,b as a82j,g as a82k,h as a82l,m as a82m,p as a82n,v as a82o,w as a82p,x as a82q,y as a82r}from'../../util-2Fli5dww.mjs';import{TokenInfo}from'./token.mjs';import{a as a82s,i as a82t,n as a82u,r as a82v,t as a82w}from'../../fund-approval-D9vwQz49.mjs';import{bytesToBigInt,bytesToHex,hexToBytes,isValidEvmAddress,privateKeyToAddress,signEIP1559,signLegacy,toChecksumAddress}from'./evm/rlp.mjs';import{ETH_MAINNET,EvmNetworkRegistry,registerBridgeEvmNetworks}from'./evm/networks.mjs';import{EvmAccount}from'./evm-account.mjs';import{DEFAULT_LIMITS,WIP,WipError,WipSizeError,WipValidationError,createWip,generate_wip,loadWip,sign_wip,verifyWip,verify_wip,wip2html,wipToHtml}from'./wip.mjs';export{Account,BUITIN_IDS,Config,CryptoVault,DEFAULT_ACCOUNT_NAME,DEFAULT_LIMITS,ETH_MAINNET,EvmAccount,EvmNetworkRegistry,a82n as GetAccountOrMark_Address,a82m as GetLocalNamesByAddresses,a82l as GetManyAccountOrMark_Address,HistoryMaxEntries,HistoryRetainDays,LocalHistory,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,MAX_ACCOUNTS,MAX_MESSENGER_ACCOUNTS,a82b as OwnedRecordStorage,a82a as SQLiteStorage,SecureAccountStorage,TokenInfo,WIP,WipError,WipSizeError,WipValidationError,a82k as account_operation,bytesToBigInt,bytesToHex,createWip,a82w as fetchFundApprovalTokenInfo,a82i as fetch_token_info_operation,generate_wip,a82u as getFundApprovalPolicy,a82v as getFundApprovalTokenCatalog,getWowDir,getWowMcpDir,getWowokDataDir,getWowokIndustryDir,getWowokUserDataDir,getWowokWorkspaceDir,hexToBytes,a82t as isFundApprovalExempt,isValidAddress,isValidEvmAddress,loadWip,a82o as local_history_operation,a82r as local_info_operation,a82j as local_mark_operation,privateKeyToAddress,a82q as query_account,a82g as query_account_list,a82c as query_local_info,a82p as query_local_info_default,a82h as query_local_info_list,a82e as query_local_mark,a82d as query_local_mark_list,a82f as query_local_token_list,registerBridgeEvmNetworks,safeFilename,a82s as setFundApprovalPolicy,signEIP1559,signLegacy,sign_wip,toChecksumAddress,verifyWip,verify_wip,wip2html,wipToHtml,workspaceExportPath};
@@ -1,2 +1,2 @@
1
- import { S as isValidAddress, _ as LocalMarkNameMaxLength, a as HistoryVisit, b as MarkData, c as LocalHistory, d as LocalInfoContentMaxLength, f as LocalInfoFilter, g as LocalMarkFilter, h as LocalMark, i as HistoryRetainDays, l as LocalInfo, m as LocalInfoNameMaxLength, n as HistoryEntry, o as InfoData, p as LocalInfoNameDefault, r as HistoryMaxEntries, s as InfoDataInner, t as BUITIN_IDS, u as LocalInfoContentMaxCount, v as LocalMarkTagMaxCount, x as MarkParam, y as LocalMarkTagMaxLength } from "../../local-Cizo_1J5.mjs";
1
+ import { S as isValidAddress, _ as LocalMarkNameMaxLength, a as HistoryVisit, b as MarkData, c as LocalHistory, d as LocalInfoContentMaxLength, f as LocalInfoFilter, g as LocalMarkFilter, h as LocalMark, i as HistoryRetainDays, l as LocalInfo, m as LocalInfoNameMaxLength, n as HistoryEntry, o as InfoData, p as LocalInfoNameDefault, r as HistoryMaxEntries, s as InfoDataInner, t as BUITIN_IDS, u as LocalInfoContentMaxCount, v as LocalMarkTagMaxCount, x as MarkParam, y as LocalMarkTagMaxLength } from "../../local-CsbLMwvo.mjs";
2
2
  export { BUITIN_IDS, HistoryEntry, HistoryMaxEntries, HistoryRetainDays, HistoryVisit, InfoData, InfoDataInner, LocalHistory, LocalInfo, LocalInfoContentMaxCount, LocalInfoContentMaxLength, LocalInfoFilter, LocalInfoNameDefault, LocalInfoNameMaxLength, LocalMark, LocalMarkFilter, LocalMarkNameMaxLength, LocalMarkTagMaxCount, LocalMarkTagMaxLength, MarkData, MarkParam, isValidAddress };
@@ -1 +1 @@
1
- import{o as a83a,u as a83b}from'../../wow-types-DctQuD2J.mjs';import{o as a83c}from'../../exception-o3XVk35a.mjs';import{y as a83d}from'../../constants-BGKNJZYa.mjs';import{d as a83e}from'../../storage-D1bEi2b7.mjs';import{Cache}from'./cache.mjs';import{Config}from'./config.mjs';const BUITIN_IDS=['0x5','0x6','0x7','0x8','0x9','0xa','0xc','0xd','0x403','0xacc',...Object['keys'](a83d)],isValidAddress=a=>{return a&&(a83a(a)||BUITIN_IDS['includes'](a));},LocalMarkNameMaxLength=0x40,LocalMarkTagMaxLength=0x40,LocalMarkTagMaxCount=0x32,LocalInfoNameMaxLength=0x40,LocalInfoContentMaxLength=0x12c,LocalInfoContentMaxCount=0x32,LocalInfoNameDefault='Address\x20of\x20delivery';var LocalMark=class LocalMark{static{this['_instanceLock']=new a83e();}static{this['_dataLocks']=new Map();}constructor(){this['config']=Config['Instance']();}static['dataLock'](a){let b=LocalMark['_dataLocks']['get'](a);return!b&&(b=new a83e(),LocalMark['_dataLocks']['set'](a,b)),b;}async['getCacheKey'](){return['mark',await this['config']['network_get']()];}static['Instance'](){if(LocalMark['_instance'])return LocalMark['_instance'];if(!LocalMark['_instance'])LocalMark['_instance']=new LocalMark();return LocalMark['_instance'];}static['nameMatch'](a,b){if(a==null||b==null)return![];return a['toLowerCase']()===b['toLowerCase']();}['resolve_tags'](a){return a=a?.['slice'](0x0,0x32),a=a?.['filter'](b=>b!==''&&b)?.['map'](b=>{return b['slice'](0x0,0x40);}),a;}['resolve_name'](a){return a['slice'](0x0,0x40);}async['put'](a){const b=await this['getCacheKey']();return LocalMark['dataLock'](b['join'](':'))['run'](async()=>{const c=(await Cache['read'](b,async()=>void 0x0))?.['data']||[],d=[];for(const f of a){const g=f['address']['toLowerCase']();f['address']=g;if(!isValidAddress(f['address']))a83c('invalid\x20address','LocalMark.put.mark.address:\x20'+f['address']);if(f?.['name']?.['value'])f['name']['value']=this['resolve_name'](f?.['name']?.['value']);f['tags']=this['resolve_tags'](f?.['tags']);const h=Date['now']();let i;if(f?.['name']?.['value']!=null)for(const j of c){if(!LocalMark['nameMatch'](j['name'],f['name']['value']))continue;if(j['address']['toLowerCase']()===g)i=j;else{if(f?.['name']?.['replaceExistName'])j['name']=void 0x0,j['updatedAt']=h;else a83c('local\x20mark\x20name\x20exist','LocalMark.put.mark.name:\x20'+f['name']['value']);}}if(!i)i=c['find'](k=>k['address']['toLowerCase']()===g&&(k['name']==null||f?.['name']?.['value']==null));if(i){if(f?.['name']?.['value']!=null)i['name']=f['name']['value'];if(f['tags']?.['length']){const k=new Set([...i['tags']??[],...f['tags']]);i['tags']=[...k]['slice'](0x0,0x32);}i['updatedAt']=h;if(!d['includes'](i))d['push'](i);}else{const l={'name':f?.['name']?.['value'],'address':f['address'],'tags':f['tags'],'createdAt':h,'updatedAt':h};c['push'](l),d['push'](l);}}const e=await Cache['readStoredRaw'](b);if(e?.['data']?.['length'])for(const n of e['data']){const o=c['find'](p=>p['address']['toLowerCase']()===n['address']['toLowerCase']()&&(p['name']??'')===(n['name']??''));if(!o)c['push'](n);else{if((o['updatedAt']??0x0)<(n['updatedAt']??0x0))Object['assign'](o,n);}}return await Cache['read'](b,async()=>({'expire':'INFINITE','data':c}),!![]),d;});}async['get'](a){if(a===void 0x0||a===null)return;const b=await this['getCacheKey']();return(await Cache['read'](b,async()=>void 0x0))?.['data']?.['find'](c=>LocalMark['nameMatch'](c['name'],a)||c['address']['toLowerCase']()===a['toLowerCase']());}async['get_address'](a){if(a&&isValidAddress(a))return a83b(a);return(await this['get'](a))?.['address'];}async['get_many'](a){if(!Array['isArray'](a)||a['length']===0x0)return[];const b=await this['getCacheKey'](),c=(await Cache['read'](b,async()=>void 0x0))?.['data']||[];return a['map'](d=>{return c['find'](e=>LocalMark['nameMatch'](e['name'],d)||e['address']['toLowerCase']()===d?.['toLowerCase']());});}async['get_many_address'](a){const b=new Array(a['length'])['fill'](void 0x0),c=new Map();a['forEach']((g,h)=>{if(g===null||g===void 0x0)b[h]=void 0x0;else{if(isValidAddress(g))b[h]=g['toLowerCase']();else c['set'](h,g);}});const d=Array['from'](c['values']());if(d['length']===0x0)return b;const e=await this['get_many'](d);let f=0x0;return c['forEach']((g,h)=>{b[h]=e[f]?.['address'],f++;}),b;}async['get_many_address_availables'](a){return(await this['get_many_address'](a))['filter'](b=>b!=null);}async['del'](a,b=![]){const c=await this['getCacheKey']();return LocalMark['dataLock'](c['join'](':'))['run'](async()=>{const d=(await Cache['read'](c,async()=>void 0x0))?.['data']||[],e=d['filter'](g=>{const h=a['map'](m=>m['toLowerCase']()),i=g['name']!==void 0x0&&g['name']!==null&&a['some'](m=>LocalMark['nameMatch'](g['name'],m)),j=h['includes'](g['address']['toLowerCase']()),k=i||j,l=g['name']===void 0x0||g['name']===null;if(b)return!k&&!l;else return!k;}),f=d['filter'](g=>!e['includes'](g));if(e['length']!==d['length'])await Cache['read'](c,async()=>({'expire':'INFINITE','data':e}),!![]);return f;});}async['clear'](){const a=await this['getCacheKey']();return LocalMark['dataLock'](a['join'](':'))['run'](async()=>{return await Cache['read'](a,async()=>({'expire':'INFINITE','data':[]}),!![]),!![];});}async['rename'](a,b){b=this['resolve_name'](b);if(a===b)return!![];const c=await this['getCacheKey']();return LocalMark['dataLock'](c['join'](':'))['run'](async()=>{const d=(await Cache['read'](c,async()=>void 0x0))?.['data']||[],e=d['find'](f=>LocalMark['nameMatch'](f['name'],a));if(e&&d['findIndex'](f=>LocalMark['nameMatch'](f['name'],b))===-0x1){const f=Date['now']();return e['name']=b,e['updatedAt']=f,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];});}async['swap_name'](a,b){if(a===b)return!![];const c=await this['getCacheKey']();return LocalMark['dataLock'](c['join'](':'))['run'](async()=>{const d=(await Cache['read'](c,async()=>void 0x0))?.['data']||[],e=d['find'](g=>LocalMark['nameMatch'](g['name'],a)),f=d['find'](g=>LocalMark['nameMatch'](g['name'],b));if(e&&f){const g=Date['now']();return e['name']=b,e['updatedAt']=g,f['name']=a,f['updatedAt']=g,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];});}async['set_tags'](a,b){b=this['resolve_tags'](b);const c=await this['getCacheKey']();return LocalMark['dataLock'](c['join'](':'))['run'](async()=>{const d=(await Cache['read'](c,async()=>void 0x0))?.['data']||[],e=d['find'](f=>LocalMark['nameMatch'](f['name'],a));if(e){const f=Date['now']();return e['tags']=b,e['updatedAt']=f,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];});}async['add_tags'](a,b){const c=this['resolve_tags'](b);if(!c||c['length']===0x0)return![];const d=await this['getCacheKey']();return LocalMark['dataLock'](d['join'](':'))['run'](async()=>{const e=(await Cache['read'](d,async()=>void 0x0))?.['data']||[],f=e['find'](i=>LocalMark['nameMatch'](i['name'],a)||i['address']['toLowerCase']()===a['toLowerCase']());if(!f)return![];const g=new Set(f['tags']??[]),h=[...g];for(const i of c){!g['has'](i)&&(h['push'](i),g['add'](i));if(h['length']>=0x32)break;}return f['tags']=h,f['updatedAt']=Date['now'](),await Cache['read'](d,async()=>({'expire':'INFINITE','data':e}),!![]),!![];});}async['list'](a){if(a&&a['tags'])a['tags']=a['tags']['filter'](c=>c!==''&&c);const b=await this['getCacheKey']();return((await Cache['read'](b,async()=>void 0x0))?.['data']||[])['filter'](c=>{if(a?.['address']&&c['address']['toLowerCase']()!==a['address']['toLowerCase']())return![];if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0&&(!c['createdAt']||c['createdAt']<a['createdAt']['gte']))return![];if(a['createdAt']['lte']!==void 0x0&&(!c['createdAt']||c['createdAt']>a['createdAt']['lte']))return![];}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0&&(!c['updatedAt']||c['updatedAt']<a['updatedAt']['gte']))return![];if(a['updatedAt']['lte']!==void 0x0&&(!c['updatedAt']||c['updatedAt']>a['updatedAt']['lte']))return![];}return!![];})['map'](c=>{let d=0x0;const e=c['name']?.['toLowerCase']()||'',f=a?.['name']?.['toLowerCase']()||'';if(a?.['name']){if(e===f)d+=0x64;else{if(e['startsWith'](f))d+=0x32;else{if(e['includes'](f))d+=0x19;}}}if(a?.['tags']&&a['tags']['length']>0x0)a['tags']['forEach'](g=>{const h=g['toLowerCase']();if(c['tags'])c['tags']['forEach'](i=>{const j=i['toLowerCase']();if(j===h)d+=0x14;else{if(j['startsWith'](h))d+=0xf;else{if(j['includes'](h))d+=0xa;}}});});if((a?.['name']||a?.['tags'])&&d===0x0)d=-0x1;return{'mark':c,'score':d};})['filter'](({score:c})=>c>=0x0)['sort']((c,d)=>{if(d['score']!==c['score'])return d['score']-c['score'];const e=(c['mark']['name']||'')['length'],f=(d['mark']['name']||'')['length'];if(e!==f)return e-f;return(c['mark']['name']||'')['localeCompare'](d['mark']['name']||'');})['map'](({mark:c})=>c);}},LocalInfo=class LocalInfo{constructor(){this['cacheKey']=['info'];}static{this['_dataLock']=new a83e();}static['Instance'](){if(LocalInfo['_instance'])return LocalInfo['_instance'];if(!LocalInfo['_instance'])LocalInfo['_instance']=new LocalInfo();return LocalInfo['_instance'];}static['nameMatch'](a,b){if(a==null||b==null)return![];return a['toLowerCase']()===b['toLowerCase']();}['resolve_contents'](a){return a=a['slice'](0x0,0x32),a['map'](b=>b['slice'](0x0,0x12c));}['resolve_name'](a){return a['slice'](0x0,0x40);}async['add'](a){return LocalInfo['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};for(const c of a){const d=this['resolve_name'](c['name']),e=c['default']['slice'](0x0,0x12c);if(b[d]){const f=Date['now'](),g=b[d];g['default']=e;if(c['contents']!==void 0x0)g['contents']=this['resolve_contents'](c['contents']);g['updatedAt']=f;}else{const h=Date['now']();b[d]={'default':e,'contents':c['contents']?this['resolve_contents'](c['contents']):[],'createdAt':h,'updatedAt':h};}}return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b}),!![]),!![];});}async['get'](a=LocalInfoNameDefault){const b=((await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{})[a];return b?{'name':a,...b}:void 0x0;}async['get_default'](a=LocalInfoNameDefault){return(await this['get'](a))?.['default'];}async['get_many'](a){if(!Array['isArray'](a)||a['length']===0x0)return[];const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};return a['map'](c=>{const d=b[c];return d?{'name':c,...d}:void 0x0;});}async['del'](a=LocalInfoNameDefault){return LocalInfo['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};delete b[a],await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b}),!![]);});}async['reset_contents'](a=LocalInfoNameDefault,b){return LocalInfo['_dataLock']['run'](async()=>{const c=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{},d=c[a];if(d){const e=Date['now']();return d['contents']=this['resolve_contents'](b),d['updatedAt']=e,await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':c}),!![]),!![];}return![];});}async['clear'](){return LocalInfo['_dataLock']['run'](async()=>{await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}}),!![]);});}async['list'](a){const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};return Object['entries'](b)['map'](([c,d])=>{let e=0x0;const f={'name':c,...d};if(a?.['name']){const g=c['toLowerCase'](),h=a['name']['toLowerCase']();if(g===h)e+=0x64;else{if(g['startsWith'](h))e+=0x32;else{if(g['includes'](h))e+=0x19;}}}if(a?.['default']){const i=d['default']['toLowerCase'](),j=a['default']['toLowerCase']();if(i===j)e+=0x5a;else{if(i['startsWith'](j))e+=0x2d;else{if(i['includes'](j))e+=0x16;}}}if(a?.['contents']&&a['contents']['length']>0x0)a['contents']['forEach'](k=>{const l=k['toLowerCase']();if(d['contents'])d['contents']['forEach'](m=>{const n=m['toLowerCase']();if(n===l)e+=0x14;else{if(n['startsWith'](l))e+=0xf;else{if(n['includes'](l))e+=0xa;}}});});if((a?.['name']||a?.['default']||a?.['contents'])&&e===0x0)e=-0x1;return{'info':f,'score':e};})['filter'](({score:c,info:d})=>{if(c<0x0)return![];if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0&&(!d['createdAt']||d['createdAt']<a['createdAt']['gte']))return![];if(a['createdAt']['lte']!==void 0x0&&(!d['createdAt']||d['createdAt']>a['createdAt']['lte']))return![];}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0&&(!d['updatedAt']||d['updatedAt']<a['updatedAt']['gte']))return![];if(a['updatedAt']['lte']!==void 0x0&&(!d['updatedAt']||d['updatedAt']>a['updatedAt']['lte']))return![];}return!![];})['sort']((c,d)=>{if(d['score']!==c['score'])return d['score']-c['score'];const e=c['info']['name']['length'],f=d['info']['name']['length'];if(e!==f)return e-f;return c['info']['name']['localeCompare'](d['info']['name']);})['map'](({info:c})=>c);}};const HistoryRetainDays=0x1e,HistoryMaxEntries=0x12c;var LocalHistory=class LocalHistory{constructor(){this['cacheKey']=['history'];}static{this['_dataLock']=new a83e();}static['Instance'](){if(LocalHistory['_instance'])return LocalHistory['_instance'];if(!LocalHistory['_instance'])LocalHistory['_instance']=new LocalHistory();return LocalHistory['_instance'];}['dayKey'](a){const b=new Date(a),c=String(b['getMonth']()+0x1)['padStart'](0x2,'0'),e=String(b['getDate']())['padStart'](0x2,'0');return b['getFullYear']()+'-'+c+'-'+e;}['prune'](a){const b=new Set([...new Set(a['map'](c=>this['dayKey'](c['ts'])))]['sort']()['reverse']()['slice'](0x0,0x1e));return a['filter'](c=>b['has'](this['dayKey'](c['ts'])))['sort']((c,d)=>d['ts']-c['ts'])['slice'](0x0,0x12c);}async['list'](){const a=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':[]})))?.['data']||[];return this['prune'](a);}async['put'](a){return LocalHistory['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],c=[];for(const d of a||[]){if(!d||typeof d!=='object'||typeof d['key']!=='string'||typeof d['address']!=='string'||typeof d['ts']!=='number')continue;const e={'key':d['key'],...typeof d['objType']==='string'&&d['objType']?{'objType':d['objType']}:{},'address':d['address'],'network':typeof d['network']==='string'&&d['network']?d['network']:'testnet','ts':d['ts']},f=b['findIndex'](g=>g['key']===e['key']);if(f>=0x0)b[f]=e;else b['unshift'](e);c['push'](e);}return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':this['prune'](b)}),!![]),c;});}async['del'](a){return LocalHistory['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],c=new Set((a||[])['map'](e=>String(e))),d=b['filter'](f=>c['has'](f['key']));return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b['filter'](f=>!c['has'](f['key']))}),!![]),d;});}async['clear'](){return LocalHistory['_dataLock']['run'](async()=>{return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':[]}),!![]),!![];});}};export{BUITIN_IDS,HistoryMaxEntries,HistoryRetainDays,LocalHistory,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,isValidAddress};
1
+ import{o as a83a,u as a83b}from'../../wow-types-DctQuD2J.mjs';import{o as a83c}from'../../exception-D2n4LV8F.mjs';import{y as a83d}from'../../constants-BGKNJZYa.mjs';import{d as a83e}from'../../storage-D1bEi2b7.mjs';import{Cache}from'./cache.mjs';import{Config}from'./config.mjs';const BUITIN_IDS=['0x5','0x6','0x7','0x8','0x9','0xa','0xc','0xd','0x403','0xacc',...Object['keys'](a83d)],isValidAddress=a=>{return a&&(a83a(a)||BUITIN_IDS['includes'](a));},LocalMarkNameMaxLength=0x40,LocalMarkTagMaxLength=0x40,LocalMarkTagMaxCount=0x32,LocalInfoNameMaxLength=0x40,LocalInfoContentMaxLength=0x12c,LocalInfoContentMaxCount=0x32,LocalInfoNameDefault='Address\x20of\x20delivery';var LocalMark=class LocalMark{static{this['_instanceLock']=new a83e();}static{this['_dataLocks']=new Map();}constructor(){this['config']=Config['Instance']();}static['dataLock'](a){let b=LocalMark['_dataLocks']['get'](a);return!b&&(b=new a83e(),LocalMark['_dataLocks']['set'](a,b)),b;}async['getCacheKey'](){return['mark',await this['config']['network_get']()];}static['Instance'](){if(LocalMark['_instance'])return LocalMark['_instance'];if(!LocalMark['_instance'])LocalMark['_instance']=new LocalMark();return LocalMark['_instance'];}static['nameMatch'](a,b){if(a==null||b==null)return![];return a['toLowerCase']()===b['toLowerCase']();}['resolve_tags'](a){return a=a?.['slice'](0x0,0x32),a=a?.['filter'](b=>b!==''&&b)?.['map'](b=>{return b['slice'](0x0,0x40);}),a;}['resolve_name'](a){return a['slice'](0x0,0x40);}async['put'](a){const b=await this['getCacheKey']();return LocalMark['dataLock'](b['join'](':'))['run'](async()=>{const c=(await Cache['read'](b,async()=>void 0x0))?.['data']||[],d=[];for(const f of a){const g=f['address']['toLowerCase']();f['address']=g;if(!isValidAddress(f['address']))a83c('invalid\x20address','LocalMark.put.mark.address:\x20'+f['address']);if(f?.['name']?.['value'])f['name']['value']=this['resolve_name'](f?.['name']?.['value']);f['tags']=this['resolve_tags'](f?.['tags']);const h=Date['now']();let i;if(f?.['name']?.['value']!=null)for(const j of c){if(!LocalMark['nameMatch'](j['name'],f['name']['value']))continue;if(j['address']['toLowerCase']()===g)i=j;else{if(f?.['name']?.['replaceExistName'])j['name']=void 0x0,j['updatedAt']=h;else a83c('local\x20mark\x20name\x20exist','LocalMark.put.mark.name:\x20'+f['name']['value']);}}if(!i)i=c['find'](k=>k['address']['toLowerCase']()===g&&(k['name']==null||f?.['name']?.['value']==null));if(i){if(f?.['name']?.['value']!=null)i['name']=f['name']['value'];if(f['tags']?.['length']){const k=new Set([...i['tags']??[],...f['tags']]);i['tags']=[...k]['slice'](0x0,0x32);}i['updatedAt']=h;if(!d['includes'](i))d['push'](i);}else{const l={'name':f?.['name']?.['value'],'address':f['address'],'tags':f['tags'],'createdAt':h,'updatedAt':h};c['push'](l),d['push'](l);}}const e=await Cache['readStoredRaw'](b);if(e?.['data']?.['length'])for(const n of e['data']){const o=c['find'](p=>p['address']['toLowerCase']()===n['address']['toLowerCase']()&&(p['name']??'')===(n['name']??''));if(!o)c['push'](n);else{if((o['updatedAt']??0x0)<(n['updatedAt']??0x0))Object['assign'](o,n);}}return await Cache['read'](b,async()=>({'expire':'INFINITE','data':c}),!![]),d;});}async['get'](a){if(a===void 0x0||a===null)return;const b=await this['getCacheKey']();return(await Cache['read'](b,async()=>void 0x0))?.['data']?.['find'](c=>LocalMark['nameMatch'](c['name'],a)||c['address']['toLowerCase']()===a['toLowerCase']());}async['get_address'](a){if(a&&isValidAddress(a))return a83b(a);return(await this['get'](a))?.['address'];}async['get_many'](a){if(!Array['isArray'](a)||a['length']===0x0)return[];const b=await this['getCacheKey'](),c=(await Cache['read'](b,async()=>void 0x0))?.['data']||[];return a['map'](d=>{return c['find'](e=>LocalMark['nameMatch'](e['name'],d)||e['address']['toLowerCase']()===d?.['toLowerCase']());});}async['get_many_address'](a){const b=new Array(a['length'])['fill'](void 0x0),c=new Map();a['forEach']((g,h)=>{if(g===null||g===void 0x0)b[h]=void 0x0;else{if(isValidAddress(g))b[h]=g['toLowerCase']();else c['set'](h,g);}});const d=Array['from'](c['values']());if(d['length']===0x0)return b;const e=await this['get_many'](d);let f=0x0;return c['forEach']((g,h)=>{b[h]=e[f]?.['address'],f++;}),b;}async['get_many_address_availables'](a){return(await this['get_many_address'](a))['filter'](b=>b!=null);}async['del'](a,b=![]){const c=await this['getCacheKey']();return LocalMark['dataLock'](c['join'](':'))['run'](async()=>{const d=(await Cache['read'](c,async()=>void 0x0))?.['data']||[],e=d['filter'](g=>{const h=a['map'](m=>m['toLowerCase']()),i=g['name']!==void 0x0&&g['name']!==null&&a['some'](m=>LocalMark['nameMatch'](g['name'],m)),j=h['includes'](g['address']['toLowerCase']()),k=i||j,l=g['name']===void 0x0||g['name']===null;if(b)return!k&&!l;else return!k;}),f=d['filter'](g=>!e['includes'](g));if(e['length']!==d['length'])await Cache['read'](c,async()=>({'expire':'INFINITE','data':e}),!![]);return f;});}async['clear'](){const a=await this['getCacheKey']();return LocalMark['dataLock'](a['join'](':'))['run'](async()=>{return await Cache['read'](a,async()=>({'expire':'INFINITE','data':[]}),!![]),!![];});}async['rename'](a,b){b=this['resolve_name'](b);if(a===b)return!![];const c=await this['getCacheKey']();return LocalMark['dataLock'](c['join'](':'))['run'](async()=>{const d=(await Cache['read'](c,async()=>void 0x0))?.['data']||[],e=d['find'](f=>LocalMark['nameMatch'](f['name'],a));if(e&&d['findIndex'](f=>LocalMark['nameMatch'](f['name'],b))===-0x1){const f=Date['now']();return e['name']=b,e['updatedAt']=f,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];});}async['swap_name'](a,b){if(a===b)return!![];const c=await this['getCacheKey']();return LocalMark['dataLock'](c['join'](':'))['run'](async()=>{const d=(await Cache['read'](c,async()=>void 0x0))?.['data']||[],e=d['find'](g=>LocalMark['nameMatch'](g['name'],a)),f=d['find'](g=>LocalMark['nameMatch'](g['name'],b));if(e&&f){const g=Date['now']();return e['name']=b,e['updatedAt']=g,f['name']=a,f['updatedAt']=g,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];});}async['set_tags'](a,b){b=this['resolve_tags'](b);const c=await this['getCacheKey']();return LocalMark['dataLock'](c['join'](':'))['run'](async()=>{const d=(await Cache['read'](c,async()=>void 0x0))?.['data']||[],e=d['find'](f=>LocalMark['nameMatch'](f['name'],a)||f['address']['toLowerCase']()===a['toLowerCase']());if(e){const f=Date['now']();return e['tags']=b,e['updatedAt']=f,await Cache['read'](c,async()=>({'expire':'INFINITE','data':d}),!![]),!![];}return![];});}async['add_tags'](a,b){const c=this['resolve_tags'](b);if(!c||c['length']===0x0)return![];const d=await this['getCacheKey']();return LocalMark['dataLock'](d['join'](':'))['run'](async()=>{const e=(await Cache['read'](d,async()=>void 0x0))?.['data']||[],f=e['find'](i=>LocalMark['nameMatch'](i['name'],a)||i['address']['toLowerCase']()===a['toLowerCase']());if(!f)return![];const g=new Set(f['tags']??[]),h=[...g];for(const i of c){!g['has'](i)&&(h['push'](i),g['add'](i));if(h['length']>=0x32)break;}return f['tags']=h,f['updatedAt']=Date['now'](),await Cache['read'](d,async()=>({'expire':'INFINITE','data':e}),!![]),!![];});}async['list'](a){if(a&&a['tags'])a['tags']=a['tags']['filter'](c=>c!==''&&c);const b=await this['getCacheKey']();return((await Cache['read'](b,async()=>void 0x0))?.['data']||[])['filter'](c=>{if(a?.['address']&&c['address']['toLowerCase']()!==a['address']['toLowerCase']())return![];if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0&&(!c['createdAt']||c['createdAt']<a['createdAt']['gte']))return![];if(a['createdAt']['lte']!==void 0x0&&(!c['createdAt']||c['createdAt']>a['createdAt']['lte']))return![];}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0&&(!c['updatedAt']||c['updatedAt']<a['updatedAt']['gte']))return![];if(a['updatedAt']['lte']!==void 0x0&&(!c['updatedAt']||c['updatedAt']>a['updatedAt']['lte']))return![];}return!![];})['map'](c=>{let d=0x0;const e=c['name']?.['toLowerCase']()||'',f=a?.['name']?.['toLowerCase']()||'';if(a?.['name']){if(e===f)d+=0x64;else{if(e['startsWith'](f))d+=0x32;else{if(e['includes'](f))d+=0x19;}}}if(a?.['tags']&&a['tags']['length']>0x0)a['tags']['forEach'](g=>{const h=g['toLowerCase']();if(c['tags'])c['tags']['forEach'](i=>{const j=i['toLowerCase']();if(j===h)d+=0x14;else{if(j['startsWith'](h))d+=0xf;else{if(j['includes'](h))d+=0xa;}}});});if((a?.['name']||a?.['tags'])&&d===0x0)d=-0x1;return{'mark':c,'score':d};})['filter'](({score:c})=>c>=0x0)['sort']((c,d)=>{if(d['score']!==c['score'])return d['score']-c['score'];const e=(c['mark']['name']||'')['length'],f=(d['mark']['name']||'')['length'];if(e!==f)return e-f;return(c['mark']['name']||'')['localeCompare'](d['mark']['name']||'');})['map'](({mark:c})=>c);}},LocalInfo=class LocalInfo{constructor(){this['cacheKey']=['info'];}static{this['_dataLock']=new a83e();}static['Instance'](){if(LocalInfo['_instance'])return LocalInfo['_instance'];if(!LocalInfo['_instance'])LocalInfo['_instance']=new LocalInfo();return LocalInfo['_instance'];}static['nameMatch'](a,b){if(a==null||b==null)return![];return a['toLowerCase']()===b['toLowerCase']();}['resolve_contents'](a){return a=a['slice'](0x0,0x32),a['map'](b=>b['slice'](0x0,0x12c));}['resolve_name'](a){return a['slice'](0x0,0x40);}async['add'](a){return LocalInfo['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};for(const c of a){const d=this['resolve_name'](c['name']),e=c['default']['slice'](0x0,0x12c);if(b[d]){const f=Date['now'](),g=b[d];g['default']=e;if(c['contents']!==void 0x0)g['contents']=this['resolve_contents'](c['contents']);g['updatedAt']=f;}else{const h=Date['now']();b[d]={'default':e,'contents':c['contents']?this['resolve_contents'](c['contents']):[],'createdAt':h,'updatedAt':h};}}return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b}),!![]),!![];});}async['get'](a=LocalInfoNameDefault){const b=((await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{})[a];return b?{'name':a,...b}:void 0x0;}async['get_default'](a=LocalInfoNameDefault){return(await this['get'](a))?.['default'];}async['get_many'](a){if(!Array['isArray'](a)||a['length']===0x0)return[];const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};return a['map'](c=>{const d=b[c];return d?{'name':c,...d}:void 0x0;});}async['del'](a=LocalInfoNameDefault){return LocalInfo['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};delete b[a],await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b}),!![]);});}async['reset_contents'](a=LocalInfoNameDefault,b){return LocalInfo['_dataLock']['run'](async()=>{const c=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{},d=c[a];if(d){const e=Date['now']();return d['contents']=this['resolve_contents'](b),d['updatedAt']=e,await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':c}),!![]),!![];}return![];});}async['clear'](){return LocalInfo['_dataLock']['run'](async()=>{await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}}),!![]);});}async['list'](a){const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':{}})))?.['data']||{};return Object['entries'](b)['map'](([c,d])=>{let e=0x0;const f={'name':c,...d};if(a?.['name']){const g=c['toLowerCase'](),h=a['name']['toLowerCase']();if(g===h)e+=0x64;else{if(g['startsWith'](h))e+=0x32;else{if(g['includes'](h))e+=0x19;}}}if(a?.['default']){const i=d['default']['toLowerCase'](),j=a['default']['toLowerCase']();if(i===j)e+=0x5a;else{if(i['startsWith'](j))e+=0x2d;else{if(i['includes'](j))e+=0x16;}}}if(a?.['contents']&&a['contents']['length']>0x0)a['contents']['forEach'](k=>{const l=k['toLowerCase']();if(d['contents'])d['contents']['forEach'](m=>{const n=m['toLowerCase']();if(n===l)e+=0x14;else{if(n['startsWith'](l))e+=0xf;else{if(n['includes'](l))e+=0xa;}}});});if((a?.['name']||a?.['default']||a?.['contents'])&&e===0x0)e=-0x1;return{'info':f,'score':e};})['filter'](({score:c,info:d})=>{if(c<0x0)return![];if(a?.['createdAt']){if(a['createdAt']['gte']!==void 0x0&&(!d['createdAt']||d['createdAt']<a['createdAt']['gte']))return![];if(a['createdAt']['lte']!==void 0x0&&(!d['createdAt']||d['createdAt']>a['createdAt']['lte']))return![];}if(a?.['updatedAt']){if(a['updatedAt']['gte']!==void 0x0&&(!d['updatedAt']||d['updatedAt']<a['updatedAt']['gte']))return![];if(a['updatedAt']['lte']!==void 0x0&&(!d['updatedAt']||d['updatedAt']>a['updatedAt']['lte']))return![];}return!![];})['sort']((c,d)=>{if(d['score']!==c['score'])return d['score']-c['score'];const e=c['info']['name']['length'],f=d['info']['name']['length'];if(e!==f)return e-f;return c['info']['name']['localeCompare'](d['info']['name']);})['map'](({info:c})=>c);}};const HistoryRetainDays=0x1e,HistoryMaxEntries=0x12c;var LocalHistory=class LocalHistory{constructor(){this['cacheKey']=['history'];}static{this['_dataLock']=new a83e();}static['Instance'](){if(LocalHistory['_instance'])return LocalHistory['_instance'];if(!LocalHistory['_instance'])LocalHistory['_instance']=new LocalHistory();return LocalHistory['_instance'];}['dayKey'](a){const b=new Date(a),c=String(b['getMonth']()+0x1)['padStart'](0x2,'0'),e=String(b['getDate']())['padStart'](0x2,'0');return b['getFullYear']()+'-'+c+'-'+e;}['prune'](a){const b=new Set([...new Set(a['map'](c=>this['dayKey'](c['ts'])))]['sort']()['reverse']()['slice'](0x0,0x1e));return a['filter'](c=>b['has'](this['dayKey'](c['ts'])))['sort']((c,d)=>d['ts']-c['ts'])['slice'](0x0,0x12c);}async['list'](){const a=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':[]})))?.['data']||[];return this['prune'](a);}async['put'](a){return LocalHistory['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],c=[];for(const d of a||[]){if(!d||typeof d!=='object'||typeof d['key']!=='string'||typeof d['address']!=='string'||typeof d['ts']!=='number')continue;const e={'key':d['key'],...typeof d['objType']==='string'&&d['objType']?{'objType':d['objType']}:{},'address':d['address'],'network':typeof d['network']==='string'&&d['network']?d['network']:'testnet','ts':d['ts']},f=b['findIndex'](g=>g['key']===e['key']);if(f>=0x0)b[f]=e;else b['unshift'](e);c['push'](e);}return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':this['prune'](b)}),!![]),c;});}async['del'](a){return LocalHistory['_dataLock']['run'](async()=>{const b=(await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':[]})))?.['data']||[],c=new Set((a||[])['map'](e=>String(e))),d=b['filter'](f=>c['has'](f['key']));return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':b['filter'](f=>!c['has'](f['key']))}),!![]),d;});}async['clear'](){return LocalHistory['_dataLock']['run'](async()=>{return await Cache['read'](this['cacheKey'],async()=>({'expire':'INFINITE','data':[]}),!![]),!![];});}};export{BUITIN_IDS,HistoryMaxEntries,HistoryRetainDays,LocalHistory,LocalInfo,LocalInfoContentMaxCount,LocalInfoContentMaxLength,LocalInfoNameDefault,LocalInfoNameMaxLength,LocalMark,LocalMarkNameMaxLength,LocalMarkTagMaxCount,LocalMarkTagMaxLength,isValidAddress};
@@ -1,2 +1,2 @@
1
- import { Ch as TokenTypeInfo, Sh as TokenInfo, xh as TokenDataFilter } from "../../index-5DmaIrpk.mjs";
1
+ import { $h as TokenDataFilter, eg as TokenInfo, tg as TokenTypeInfo } from "../../index-DKne9Aij.mjs";
2
2
  export { TokenDataFilter, TokenInfo, TokenTypeInfo };
@@ -1 +1 @@
1
- import{t as a86a}from'../../client-HlvevC--.mjs';import{o as a86b}from'../../exception-o3XVk35a.mjs';import{a as a86c}from'../../network-UpRYD8EM.mjs';import'../../common-DhtZTgkX.mjs';import{d as a86d}from'../../storage-D1bEi2b7.mjs';import{Cache}from'./cache.mjs';import{Config}from'./config.mjs';var TokenInfo=class TokenInfo{constructor(){this['cacheKey']=['token'];}static{this['_instanceLock']=new a86d();}static['Instance'](){if(TokenInfo['_instance'])return TokenInfo['_instance'];if(!TokenInfo['_instance'])TokenInfo['_instance']=new TokenInfo();return TokenInfo['_instance'];}static['isValidMetadata'](a){if(!a)return![];const b=a['decimals'];return typeof b==='number'&&Number['isInteger'](b)&&b>=0x0&&b<=0xff;}async['fetch_imp'](a,b,c){const d=await new a86a({'url':a86c(a),'network':a})['getCoinMetadata']({'coinType':b});if(TokenInfo['isValidMetadata'](d))return{'alias':c,'type':b,...d};}async['fetch'](a,b,c){a=a??'0x2::wow::WOW';const d=await Config['Instance']()['network_get'](c),e=await Cache['read']([...this['cacheKey'],d],async g=>{return{'expire':'INFINITE','data':[]};});let f=e?.['data']?.['find'](g=>g['type']===a);if(!f){f=await this['fetch_imp'](d,a,b);if(!f){a86b('token\x20not\x20found','token\x20type:\x20'+a);return;}const g=[...e?.['data']||[],f];await Cache['read']([...this['cacheKey'],d],async h=>({'expire':'INFINITE','data':g}),!![]);}else{if(b&&f['alias']!==b){f['alias']=b;const h=e?.['data']?.['map'](i=>i['type']===a?f:i)||[];await Cache['read']([...this['cacheKey'],d],async i=>({'expire':'INFINITE','data':h}),!![]);}}return f;}async['list'](a,b){const c=await Config['Instance']()['network_get'](b);let d=await Cache['read']([...this['cacheKey'],c],async h=>{return{'expire':'INFINITE','data':[]};}),e=d?.['data']||[];const f=a?.['type']??'0x2::wow::WOW',g=a?.['type']?a?.['alias_or_name']:void 0x0;if(!e['find'](h=>h['type']===f)){const h=await this['fetch_imp'](c,f,g);if(h){const i=[...e,h];await Cache['read']([...this['cacheKey'],c],async j=>({'expire':'INFINITE','data':i}),!![]),d=await Cache['read']([...this['cacheKey'],c],async j=>({'expire':'INFINITE','data':i})),e=d?.['data']||[];}}if(a){e=e['filter'](j=>{let k=!![];if(a['symbol']&&k)k=j['symbol']?.['toLowerCase']()===a['symbol']['toLowerCase']();if(a['type']&&k)k=j['type']===f;return k;});if(a['alias_or_name']){const j=a['alias_or_name']['toLowerCase']();e=e['map'](k=>{let l=0x0;const m=k['alias']?.['toLowerCase']()||'',n=k['name']?.['toLowerCase']()||'';if(m===j||n===j)l=0x3;else{if(m['startsWith'](j)||n['startsWith'](j))l=0x2;else{if(m['includes'](j)||n['includes'](j))l=0x1;}}return{...k,'_score':l};}),e=e['filter'](k=>k['_score']>0x0)['sort']((k,l)=>{const m=l['_score']-k['_score'];if(m!==0x0)return m;return(k['alias']?.['length']||0x0)+(k['name']?.['length']||0x0)-((l['alias']?.['length']||0x0)+(l['name']?.['length']||0x0));}),e=e['map'](k=>{const {_score:l,...m}=k;return m;});}}return e;}};export{TokenInfo};
1
+ import{t as a86a}from'../../client-DYIgIItb.mjs';import{o as a86b}from'../../exception-D2n4LV8F.mjs';import{a as a86c}from'../../network-UpRYD8EM.mjs';import'../../common-DC9BAaSg.mjs';import{d as a86d}from'../../storage-D1bEi2b7.mjs';import{Cache}from'./cache.mjs';import{Config}from'./config.mjs';var TokenInfo=class TokenInfo{constructor(){this['cacheKey']=['token'];}static{this['_instanceLock']=new a86d();}static['Instance'](){if(TokenInfo['_instance'])return TokenInfo['_instance'];if(!TokenInfo['_instance'])TokenInfo['_instance']=new TokenInfo();return TokenInfo['_instance'];}static['isValidMetadata'](a){if(!a)return![];const b=a['decimals'];return typeof b==='number'&&Number['isInteger'](b)&&b>=0x0&&b<=0xff;}async['fetch_imp'](a,b,c){const d=await new a86a({'url':a86c(a),'network':a})['getCoinMetadata']({'coinType':b});if(TokenInfo['isValidMetadata'](d))return{'alias':c,'type':b,...d};}async['fetch'](a,b,c){a=a??'0x2::wow::WOW';const d=await Config['Instance']()['network_get'](c),e=await Cache['read']([...this['cacheKey'],d],async g=>{return{'expire':'INFINITE','data':[]};});let f=e?.['data']?.['find'](g=>g['type']===a);if(!f){f=await this['fetch_imp'](d,a,b);if(!f){a86b('token\x20not\x20found','token\x20type:\x20'+a);return;}const g=[...e?.['data']||[],f];await Cache['read']([...this['cacheKey'],d],async h=>({'expire':'INFINITE','data':g}),!![]);}else{if(b&&f['alias']!==b){f['alias']=b;const h=e?.['data']?.['map'](i=>i['type']===a?f:i)||[];await Cache['read']([...this['cacheKey'],d],async i=>({'expire':'INFINITE','data':h}),!![]);}}return f;}async['list'](a,b){const c=await Config['Instance']()['network_get'](b);let d=await Cache['read']([...this['cacheKey'],c],async h=>{return{'expire':'INFINITE','data':[]};}),e=d?.['data']||[];const f=a?.['type']??'0x2::wow::WOW',g=a?.['type']?a?.['alias_or_name']:void 0x0;if(!e['find'](h=>h['type']===f)){const h=await this['fetch_imp'](c,f,g);if(h){const i=[...e,h];await Cache['read']([...this['cacheKey'],c],async j=>({'expire':'INFINITE','data':i}),!![]),d=await Cache['read']([...this['cacheKey'],c],async j=>({'expire':'INFINITE','data':i})),e=d?.['data']||[];}}if(a){e=e['filter'](j=>{let k=!![];if(a['symbol']&&k)k=j['symbol']?.['toLowerCase']()===a['symbol']['toLowerCase']();if(a['type']&&k)k=j['type']===f;return k;});if(a['alias_or_name']){const j=a['alias_or_name']['toLowerCase']();e=e['map'](k=>{let l=0x0;const m=k['alias']?.['toLowerCase']()||'',n=k['name']?.['toLowerCase']()||'';if(m===j||n===j)l=0x3;else{if(m['startsWith'](j)||n['startsWith'](j))l=0x2;else{if(m['includes'](j)||n['includes'](j))l=0x1;}}return{...k,'_score':l};}),e=e['filter'](k=>k['_score']>0x0)['sort']((k,l)=>{const m=l['_score']-k['_score'];if(m!==0x0)return m;return(k['alias']?.['length']||0x0)+(k['name']?.['length']||0x0)-((l['alias']?.['length']||0x0)+(l['name']?.['length']||0x0));}),e=e['map'](k=>{const {_score:l,...m}=k;return m;});}}return e;}};export{TokenInfo};
@@ -0,0 +1,2 @@
1
+ import { An as BuiltAttachmentEnvelope, Bn as extOf, Fn as ReadPresentationOptions, Gn as sniffKindAndMime, Hn as presentMessageForRead, In as SniffOptions, Ln as assertZipMagic, Mn as ENVELOPE_MAX_TOTAL_BYTES, Nn as MANIFEST_ENTRY, Pn as PAYLOAD_PREFIX, Rn as buildAttachmentEnvelope, Un as presentMessagesForRead, Vn as parseAttachmentEnvelope, Wn as sanitizeFileName, jn as ENVELOPE_MAX_ENTRIES, kn as BuildAttachmentEnvelopeInput, zn as describeAttachmentFromMetadata } from "../../index-DKne9Aij.mjs";
2
+ export { BuildAttachmentEnvelopeInput, BuiltAttachmentEnvelope, ENVELOPE_MAX_ENTRIES, ENVELOPE_MAX_TOTAL_BYTES, MANIFEST_ENTRY, PAYLOAD_PREFIX, ReadPresentationOptions, SniffOptions, assertZipMagic, buildAttachmentEnvelope, describeAttachmentFromMetadata, extOf, parseAttachmentEnvelope, presentMessageForRead, presentMessagesForRead, sanitizeFileName, sniffKindAndMime };
@@ -0,0 +1 @@
1
+ import{MessengerError}from'./types.mjs';import{parseReplyPlaintext}from'./reply.mjs';const MANIFEST_ENTRY='.wowok-manifest.json',PAYLOAD_PREFIX='payload/',ENVELOPE_MAX_ENTRIES=0x10,ENVELOPE_MAX_TOTAL_BYTES=0x14*0x400*0x400,ZIP_LEVEL_STORE=0x0,ZIP_LEVEL_DEFLATE=0x6,EXT_KIND_MIME={'jpg':{'kind':'image','mime':'image/jpeg'},'jpeg':{'kind':'image','mime':'image/jpeg'},'png':{'kind':'image','mime':'image/png'},'gif':{'kind':'image','mime':'image/gif'},'webp':{'kind':'image','mime':'image/webp'},'bmp':{'kind':'image','mime':'image/bmp'},'avif':{'kind':'image','mime':'image/avif'},'heic':{'kind':'image','mime':'image/heic'},'heif':{'kind':'image','mime':'image/heif'},'svg':{'kind':'image','mime':'image/svg+xml'},'ico':{'kind':'image','mime':'image/x-icon'},'mp4':{'kind':'video','mime':'video/mp4'},'m4v':{'kind':'video','mime':'video/x-m4v'},'mov':{'kind':'video','mime':'video/quicktime'},'webm':{'kind':'video','mime':'video/webm'},'mkv':{'kind':'video','mime':'video/x-matroska'},'avi':{'kind':'video','mime':'video/x-msvideo'},'mp3':{'kind':'audio','mime':'audio/mpeg'},'wav':{'kind':'audio','mime':'audio/wav'},'ogg':{'kind':'audio','mime':'audio/ogg'},'oga':{'kind':'audio','mime':'audio/ogg'},'opus':{'kind':'audio','mime':'audio/ogg'},'m4a':{'kind':'audio','mime':'audio/mp4'},'aac':{'kind':'audio','mime':'audio/aac'},'flac':{'kind':'audio','mime':'audio/flac'}},KIND_MEDIA_STORE=new Set(['image','video','audio','voice']);function extOf(a){const b=a['lastIndexOf']('.');if(b<0x0||b===a['length']-0x1)return'';return a['slice'](b+0x1)['toLowerCase']();}function sniffKindAndMime(a,b={}){if(b['contentType']==='wts')return{'kind':'wts','mimeType':b['mimeType']??'application/octet-stream'};if(b['contentType']==='wip')return{'kind':'wip','mimeType':b['mimeType']??'application/octet-stream'};const c=EXT_KIND_MIME[extOf(a)];if(b['kind']){let d=b['mimeType'];if(!d){if(b['kind']==='voice')d='audio/webm';else{if(b['kind']===c?.['kind'])d=c['mime'];else d='application/octet-stream';}}return{'kind':b['kind'],'mimeType':d};}if(c)return{'kind':c['kind'],'mimeType':b['mimeType']??c['mime']};return{'kind':'file','mimeType':b['mimeType']??'application/octet-stream'};}function sanitizeFileName(a){let b=(String(a??'')['replace'](/\\/g,'/')['split']('/')['map'](c=>c['trim']())['filter'](c=>c['length']>0x0)['pop']()??'')['replace'](/[\x00-\x1f]/g,'')['trim']();if(!b||b==='.'||b==='..'||b==='.wowok-manifest.json'||/^[a-zA-Z]:$/['test'](b))b='file';return b;}function assertSafeEntryName(a){if(!a||a['endsWith']('/'))return;if(a['includes']('\x5c')||/^[a-zA-Z]:/['test'](a)||a['startsWith']('/'))throw new MessengerError('INVALID_INPUT','Unsafe\x20zip\x20entry\x20path:\x20'+a);if(a['split']('/')['includes']('..'))throw new MessengerError('INVALID_INPUT','Unsafe\x20zip\x20entry\x20path:\x20'+a);}async function buildAttachmentEnvelope(a){const b=sanitizeFileName(a['fileName']),c=a['bytes'];if(!c||c['length']===0x0)throw new MessengerError('INVALID_INPUT','Attachment\x20payload\x20is\x20empty');const {kind:d,mimeType:e}=sniffKindAndMime(b,{'kind':a['kind'],'mimeType':a['mimeType'],'contentType':a['contentType']}),f=PAYLOAD_PREFIX+b,g={'v':0x2,'kind':d,'fileName':b,'mimeType':e,'entries':[{'name':f,'size':c['length']}]},h=a['caption']?.['trim']();if(h)g['caption']=h;if(typeof a['durationMs']==='number'&&Number['isFinite'](a['durationMs'])&&a['durationMs']>0x0)g['durationMs']=Math['round'](a['durationMs']);if(typeof a['width']==='number'&&Number['isFinite'](a['width'])&&a['width']>0x0)g['width']=Math['round'](a['width']);if(typeof a['height']==='number'&&Number['isFinite'](a['height'])&&a['height']>0x0)g['height']=Math['round'](a['height']);const {ZipWriter:i,BlobWriter:j,Uint8ArrayReader:k}=await import('@zip.js/zip.js'),l=new j('application/zip'),m=new i(l);return await m['add'](MANIFEST_ENTRY,new k(Buffer['from'](JSON['stringify'](g),'utf8')),{'level':ZIP_LEVEL_DEFLATE}),await m['add'](f,new k(c),{'level':KIND_MEDIA_STORE['has'](d)?ZIP_LEVEL_STORE:ZIP_LEVEL_DEFLATE}),await m['close'](),{'zip':new Uint8Array(await(await l['getData']())['arrayBuffer']()),'manifest':g};}function assertZipMagic(a){if(a['length']<0x4||a[0x0]!==0x50||a[0x1]!==0x4b)throw new MessengerError('INVALID_INPUT','Invalid\x20ZIP\x20data:\x20magic\x20bytes\x20mismatch\x20(expected\x20PK,\x20got\x20'+Buffer['from'](a['slice'](0x0,0x2))['toString']('hex')+')');}function parseManifest(a){let b;try{b=JSON['parse'](a);}catch{throw new MessengerError('INVALID_INPUT','Attachment\x20manifest\x20is\x20not\x20valid\x20JSON');}const c=b;if(!c||typeof c!=='object'||c['v']!==0x2||typeof c['kind']!=='string'||typeof c['fileName']!=='string'||typeof c['mimeType']!=='string'||!Array['isArray'](c['entries'])||c['entries']['length']===0x0)throw new MessengerError('INVALID_INPUT','Attachment\x20manifest\x20is\x20missing\x20required\x20fields');return c;}async function parseAttachmentEnvelope(a,b={}){assertZipMagic(a);const {ZipReader:c,BlobReader:d,BlobWriter:f}=await import('@zip.js/zip.js'),g=new Uint8Array(a),h=new c(new d(new Blob([g])));let i;try{i=await h['getEntries']();}finally{await h['close']();}const j=i['filter'](t=>!t['directory']);if(j['length']===0x0)throw new MessengerError('INVALID_INPUT','ZIP\x20archive\x20contains\x20no\x20files');if(j['length']>0x10)throw new MessengerError('INVALID_INPUT','ZIP\x20archive\x20contains\x20too\x20many\x20entries\x20('+j['length']+'\x20>\x2016)');for(const t of j)assertSafeEntryName(t['filename']);const k=j['reduce']((u,v)=>u+(Number(v['uncompressedSize'])||0x0),0x0);if(k>0x1400000)throw new MessengerError('INVALID_INPUT','Uncompressed\x20attachment\x20size\x20'+k+'\x20exceeds\x20limit\x20'+ENVELOPE_MAX_TOTAL_BYTES);const l=j['find'](u=>u['filename']===MANIFEST_ENTRY);if(l){const u=new f(),v=parseManifest(await(await l['getData'](u))['text']()),w=sanitizeFileName(v['fileName']),x=v['entries'][0x0]['name'],y=j['find'](D=>D['filename']===x)??j['find'](D=>D['filename']['startsWith']('payload/'));if(!y)throw new MessengerError('INVALID_INPUT','Attachment\x20manifest\x20references\x20a\x20payload\x20entry\x20missing\x20from\x20the\x20archive');const z=new f(),A=await y['getData'](z),B=new Uint8Array(await A['arrayBuffer']());if(B['length']>0x1400000)throw new MessengerError('INVALID_INPUT','Uncompressed\x20attachment\x20size\x20'+B['length']+'\x20exceeds\x20limit\x20'+ENVELOPE_MAX_TOTAL_BYTES);const C={'kind':v['kind'],'fileName':w,'mimeType':v['mimeType'],'size':B['length'],'bytes':B};if(v['caption'])C['caption']=v['caption'];if(v['durationMs'])C['durationMs']=v['durationMs'];if(v['width'])C['width']=v['width'];if(v['height'])C['height']=v['height'];return C;}const m=j[0x0],n=sanitizeFileName(m['filename']),{kind:o,mimeType:p}=sniffKindAndMime(n,{'contentType':b['contentType']}),q=new f(),r=await m['getData'](q),s=new Uint8Array(await r['arrayBuffer']());return{'kind':o,'fileName':n,'mimeType':p,'size':s['length'],'bytes':s};}function describeAttachmentFromMetadata(a){const b=a['fileName']['replace'](/\.zip$/i,''),{kind:c,mimeType:d}=sniffKindAndMime(b,{'contentType':a['contentType']});return{'kind':c,'fileName':b,'mimeType':d,'size':a['fileSize']};}function presentMessageForRead(a,b={}){if(a['zipMetadata']){if(b['includeAttachmentPayload'])return a;const c={...a};return delete c['plaintext'],{...c,'plaintext':void 0x0,'attachment':describeAttachmentFromMetadata(a['zipMetadata'])};}if(a['plaintext']!==void 0x0){const d=parseReplyPlaintext(a['plaintext']);if(d['replyTo'])return{...a,'plaintext':d['content']};}return a;}function presentMessagesForRead(a,b={}){return a['map'](c=>presentMessageForRead(c,b));}export{ENVELOPE_MAX_ENTRIES,ENVELOPE_MAX_TOTAL_BYTES,MANIFEST_ENTRY,PAYLOAD_PREFIX,assertZipMagic,buildAttachmentEnvelope,describeAttachmentFromMetadata,extOf,parseAttachmentEnvelope,presentMessageForRead,presentMessagesForRead,sanitizeFileName,sniffKindAndMime};
@@ -1,2 +1,2 @@
1
- import { $n as sign_wts, An as BlacklistResponse, Bn as extract_zip_messages, Di as WTS_FILE_BYTES_LIMIT, Fn as GuardlistResponse, Gn as mark_conversation_as_viewed, Gr as MessengerConfig, Hn as generate_wts, Hr as MessageStatus, In as SettingsRequest, Ir as Message, Jn as pull_messages, Jr as NORMAL_MESSAGE_BYTES_LIMIT, Kn as mark_messages_as_viewed, Kr as MessengerError, Ln as SettingsResponse, Lr as MessageContentType, Mi as WtsGenerationParams, Mn as FriendslistResponse, Nn as GuardParam, Nr as MAX_QUERY_LIMIT, Oi as WTS_MAX_MESSAGE_COUNT, Pn as GuardlistRequest, Qn as settings, Rn as blacklist, Rr as MessageDirection, Sr as DecryptedMessage, Un as getMessengerManager, Vn as friendslist, Vr as MessageListResult, Wn as guardlist, Wr as MessageType, Xn as send_file, Yn as search_messages, Zn as send_message, _r as ConversationInfo, ar as Messenger, br as DEFAULT_MESSENGER_CONFIG, er as verify_wts, ir as MessengerManager, ji as WtsFileResult, jn as FriendslistRequest, kn as BlacklistRequest, nr as watch_messages, qn as proof_message, qr as MessengerErrorCode, rr as wts2html, si as SendMessageResult, tr as watch_conversations, vr as ConversationsFilter, xr as DEFAULT_QUERY_LIMIT, zn as extractZipFromPlaintext, zr as MessageFilter } from "../../index-5DmaIrpk.mjs";
2
- export { BlacklistRequest, BlacklistResponse, type ConversationInfo, type ConversationsFilter, DEFAULT_MESSENGER_CONFIG, DEFAULT_QUERY_LIMIT, type DecryptedMessage, FriendslistRequest, FriendslistResponse, GuardParam, GuardlistRequest, GuardlistResponse, MAX_QUERY_LIMIT, type Message, type MessageContentType, MessageDirection, type MessageFilter, type MessageListResult, MessageStatus, MessageType, Messenger, type MessengerConfig, MessengerError, MessengerErrorCode, MessengerManager, NORMAL_MESSAGE_BYTES_LIMIT, type SendMessageResult, SettingsRequest, SettingsResponse, WTS_FILE_BYTES_LIMIT, WTS_MAX_MESSAGE_COUNT, type WtsFileResult, type WtsGenerationParams, blacklist, extractZipFromPlaintext, extract_zip_messages, friendslist, generate_wts, getMessengerManager, guardlist, mark_conversation_as_viewed, mark_messages_as_viewed, proof_message, pull_messages, search_messages, send_file, send_message, settings, sign_wts, verify_wts, watch_conversations, watch_messages, wts2html };
1
+ import { $n as SettingsRequest, An as BuiltAttachmentEnvelope, Ar as Attachment, Bn as extOf, Cr as watch_messages, Ei as PullAccountResult, Er as Messenger, Fn as ReadPresentationOptions, Gn as sniffKindAndMime, Gr as DEFAULT_MESSENGER_CONFIG, Hn as presentMessageForRead, Hr as ConversationInfo, Ii as SendMessageResult, In as SniffOptions, Jn as FriendslistRequest, Kn as BlacklistRequest, Kr as DEFAULT_QUERY_LIMIT, Ln as assertZipMagic, Mn as ENVELOPE_MAX_TOTAL_BYTES, Mr as AttachmentKind, Ni as SendAttachmentOptions, Nn as MANIFEST_ENTRY, Nr as AttachmentManifest, Pn as PAYLOAD_PREFIX, Qn as GuardlistResponse, Rn as buildAttachmentEnvelope, Sr as watch_conversations, Tr as MessengerManager, Un as presentMessagesForRead, Ur as ConversationsFilter, Vn as parseAttachmentEnvelope, Wn as sanitizeFileName, Xn as GuardParam, Yn as FriendslistResponse, Zn as GuardlistRequest, _i as MessageType, _r as send_file, ai as MAX_QUERY_LIMIT, ar as extract_zip_messages, bi as MessengerErrorCode, br as sign_wts, ci as Message, cr as getMessengerManager, di as MessageFilter, dr as mark_conversation_as_viewed, er as SettingsResponse, fr as mark_messages_as_viewed, gr as search_messages, hi as MessageStatus, hr as pull_messages, ir as extractZipFromPlaintext, jn as ENVELOPE_MAX_ENTRIES, jr as AttachmentDescriptor, kn as BuildAttachmentEnvelopeInput, li as MessageContentType, lr as get_attachment, mr as proof_message, na as WTS_FILE_BYTES_LIMIT, nr as emergency_pull, oa as WtsFileResult, or as friendslist, pi as MessageListResult, pr as peer_registered, qn as BlacklistResponse, qr as DecryptedMessage, ra as WTS_MAX_MESSAGE_COUNT, rr as export_attachment, sa as WtsGenerationParams, sr as generate_wts, tr as blacklist, ui as MessageDirection, ur as guardlist, va as ZipContentType, vi as MessengerConfig, vr as send_message, wr as wts2html, xi as NORMAL_MESSAGE_BYTES_LIMIT, xr as verify_wts, ya as ZipMetadata, yi as MessengerError, yr as settings, zn as describeAttachmentFromMetadata } from "../../index-DKne9Aij.mjs";
2
+ export { type Attachment, type AttachmentDescriptor, type AttachmentKind, type AttachmentManifest, BlacklistRequest, BlacklistResponse, BuildAttachmentEnvelopeInput, BuiltAttachmentEnvelope, type ConversationInfo, type ConversationsFilter, DEFAULT_MESSENGER_CONFIG, DEFAULT_QUERY_LIMIT, type DecryptedMessage, ENVELOPE_MAX_ENTRIES, ENVELOPE_MAX_TOTAL_BYTES, FriendslistRequest, FriendslistResponse, GuardParam, GuardlistRequest, GuardlistResponse, MANIFEST_ENTRY, MAX_QUERY_LIMIT, type Message, type MessageContentType, MessageDirection, type MessageFilter, type MessageListResult, MessageStatus, MessageType, Messenger, type MessengerConfig, MessengerError, MessengerErrorCode, MessengerManager, NORMAL_MESSAGE_BYTES_LIMIT, PAYLOAD_PREFIX, type PullAccountResult, ReadPresentationOptions, type SendAttachmentOptions, type SendMessageResult, SettingsRequest, SettingsResponse, SniffOptions, WTS_FILE_BYTES_LIMIT, WTS_MAX_MESSAGE_COUNT, type WtsFileResult, type WtsGenerationParams, type ZipContentType, type ZipMetadata, assertZipMagic, blacklist, buildAttachmentEnvelope, describeAttachmentFromMetadata, emergency_pull, export_attachment, extOf, extractZipFromPlaintext, extract_zip_messages, friendslist, generate_wts, getMessengerManager, get_attachment, guardlist, mark_conversation_as_viewed, mark_messages_as_viewed, parseAttachmentEnvelope, peer_registered, presentMessageForRead, presentMessagesForRead, proof_message, pull_messages, sanitizeFileName, search_messages, send_file, send_message, settings, sign_wts, sniffKindAndMime, verify_wts, watch_conversations, watch_messages, wts2html };