@wowok/wowok 2.7.10 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{Transaction-BlZi1w6F.mjs → Transaction-D1AlW3t_.mjs} +1 -1
- package/dist/esm/{arb-C7iVd3R0.mjs → arb-D0c_1-0E.mjs} +1 -1
- package/dist/esm/{base-CE2-2noZ.mjs → base-C-bmf-9P.mjs} +1 -1
- package/dist/esm/bcs/index.d.mts +1 -1
- package/dist/esm/bcs/index.mjs +1 -1
- package/dist/esm/{bcs-BrmSFFhn.mjs → bcs-Cjvfeyqf.mjs} +1 -1
- package/dist/esm/{call-p7U4CbV8.mjs → call-B89EWeo5.mjs} +1 -1
- package/dist/esm/client/index.d.mts +1 -1
- package/dist/esm/client/index.mjs +1 -1
- package/dist/esm/client-CYziyi68.mjs +1 -0
- package/dist/esm/{common-Guc0E9Tj.mjs → common-BXJtePqk.mjs} +1 -1
- package/dist/esm/cryptography/index.d.mts +1 -1
- package/dist/esm/cryptography/index.mjs +1 -1
- package/dist/esm/{ed25519-9wJMPpyI.mjs → ed25519-CQkeZzxT.mjs} +1 -1
- package/dist/esm/{evm-account-BIyan_LX.d.mts → evm-account-DiQ0dl_e.d.mts} +2 -2
- package/dist/esm/{falcon512-C_L8D0FB.mjs → falcon512-Dl5rncUq.mjs} +1 -1
- package/dist/esm/graphql/index.d.mts +1 -1
- package/dist/esm/graphql/index.mjs +1 -1
- package/dist/esm/{graphql-DR76wicu.mjs → graphql-CUsco9b3.mjs} +1 -1
- package/dist/esm/grpc/index.d.mts +1 -1
- package/dist/esm/grpc/index.mjs +1 -1
- package/dist/esm/{grpc-BNJsaTtI.mjs → grpc-IoJ51B_A.mjs} +1 -1
- package/dist/esm/{index-DWq5l_Q3.d.mts → index-B7GX5gzh.d.mts} +35 -1
- package/dist/esm/{index-2ntZAxNs.d.mts → index-DCFY4cxp.d.mts} +59 -14
- package/dist/esm/{index-B-cxGU73.d.mts → index-o_aMVwsK.d.mts} +6 -6
- package/dist/esm/index.d.mts +7 -7
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/jsonRpc/index.d.mts +1 -1
- package/dist/esm/jsonRpc/index.mjs +1 -1
- package/dist/esm/{keypair-CvKz39ZO.mjs → keypair-Y6T-6uC9.mjs} +1 -1
- package/dist/esm/keypairs/ed25519/index.d.mts +1 -1
- package/dist/esm/keypairs/ed25519/index.mjs +1 -1
- package/dist/esm/keypairs/falcon512/index.d.mts +1 -1
- package/dist/esm/keypairs/falcon512/index.mjs +1 -1
- package/dist/esm/keypairs/passkey/index.d.mts +1 -1
- package/dist/esm/keypairs/passkey/index.mjs +1 -1
- package/dist/esm/keypairs/secp256k1/index.d.mts +1 -1
- package/dist/esm/keypairs/secp256k1/index.mjs +1 -1
- package/dist/esm/keypairs/secp256r1/index.d.mts +1 -1
- package/dist/esm/keypairs/secp256r1/index.mjs +1 -1
- package/dist/esm/messenger-CjfCX1gd.mjs +1 -0
- package/dist/esm/{messenger-api-6XMqfsOv.mjs → messenger-api-D6aPgQqj.mjs} +1 -1
- package/dist/esm/multisig/index.d.mts +1 -1
- package/dist/esm/multisig/index.mjs +1 -1
- package/dist/esm/object-C5tKBfgP.mjs +1 -0
- package/dist/esm/{passkey-hU0KN8tj.mjs → passkey-C1gbCkoK.mjs} +1 -1
- package/dist/esm/{passport-CgwpB5Gw.mjs → passport-CLMoL1-c.mjs} +1 -1
- package/dist/esm/{proof-BZIhxZT6.mjs → proof-BRpLwdbL.mjs} +1 -1
- package/dist/esm/{publickey-CO7mE1h4.mjs → publickey-CQJKhU0a.mjs} +1 -1
- package/dist/esm/{publickey-DioRydm4.mjs → publickey-CZRptlhE.mjs} +1 -1
- package/dist/esm/{publickey-CvsHmrwa.mjs → publickey-CcBVAm0Y.mjs} +1 -1
- package/dist/esm/{publickey-D1qNOZY_.mjs → publickey-Co-74gWq.mjs} +1 -1
- package/dist/esm/{publickey-C1XTriFK.mjs → publickey-Kr58241y.mjs} +1 -1
- package/dist/esm/{publickey-CaeLjex_.mjs → publickey-x1pzVVw_.mjs} +1 -1
- package/dist/esm/{query-DVYI8fBn.mjs → query-Co2trHrE.mjs} +1 -1
- package/dist/esm/{received-BQ__z6hY.mjs → received-Dldrb1fk.mjs} +1 -1
- package/dist/esm/{secp256k1-DbTX5WTS.mjs → secp256k1-Pg5TWkCH.mjs} +1 -1
- package/dist/esm/{secp256r1-tIVPNUMT.mjs → secp256r1-VjWddrx1.mjs} +1 -1
- package/dist/esm/{secure-storage-BKJ5fAL_.d.mts → secure-storage-WrSCAIOu.d.mts} +1 -1
- package/dist/esm/{service-C_foi6xl.mjs → service-78UXm0js.mjs} +1 -1
- package/dist/esm/{storage-C2pp9602.d.mts → storage-C_8llI0r.d.mts} +14 -11
- package/dist/esm/{storage-BnZ78gPJ.mjs → storage-D1bEi2b7.mjs} +1 -1
- package/dist/esm/transactions/index.d.mts +1 -1
- package/dist/esm/transactions/index.mjs +1 -1
- package/dist/esm/{transactions-Cpkdf1BJ.mjs → transactions-_w64QTEl.mjs} +1 -1
- package/dist/esm/{util-lcqHgHoI.mjs → util-IEjKV3n4.mjs} +1 -1
- package/dist/esm/utils/index.d.mts +2 -2
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/{utils-CoXIRMWK.mjs → utils-CtyqDDA5.mjs} +1 -1
- package/dist/esm/verify/index.d.mts +1 -1
- package/dist/esm/verify/index.mjs +1 -1
- package/dist/esm/w/call/allocation.d.mts +1 -1
- package/dist/esm/w/call/allocation.mjs +1 -1
- package/dist/esm/w/call/arbitration.d.mts +1 -1
- package/dist/esm/w/call/arbitration.mjs +1 -1
- package/dist/esm/w/call/base.d.mts +1 -1
- package/dist/esm/w/call/base.mjs +1 -1
- package/dist/esm/w/call/demand.d.mts +1 -1
- package/dist/esm/w/call/demand.mjs +1 -1
- package/dist/esm/w/call/guard.d.mts +1 -1
- package/dist/esm/w/call/guard.mjs +1 -1
- package/dist/esm/w/call/index.d.mts +1 -1
- package/dist/esm/w/call/index.mjs +1 -1
- package/dist/esm/w/call/machine.d.mts +1 -1
- package/dist/esm/w/call/machine.mjs +1 -1
- package/dist/esm/w/call/passport.d.mts +1 -1
- package/dist/esm/w/call/passport.mjs +1 -1
- package/dist/esm/w/call/payment.d.mts +1 -1
- package/dist/esm/w/call/payment.mjs +1 -1
- package/dist/esm/w/call/permission.d.mts +1 -1
- package/dist/esm/w/call/permission.mjs +1 -1
- package/dist/esm/w/call/progress.d.mts +1 -1
- package/dist/esm/w/call/progress.mjs +1 -1
- package/dist/esm/w/call/repository.d.mts +1 -1
- package/dist/esm/w/call/repository.mjs +1 -1
- package/dist/esm/w/call/reward.d.mts +1 -1
- package/dist/esm/w/call/reward.mjs +1 -1
- package/dist/esm/w/call/service.d.mts +1 -1
- package/dist/esm/w/call/service.mjs +1 -1
- package/dist/esm/w/call/treasury.d.mts +1 -1
- package/dist/esm/w/call/treasury.mjs +1 -1
- package/dist/esm/w/common.d.mts +1 -1
- package/dist/esm/w/common.mjs +1 -1
- package/dist/esm/w/index.d.mts +5 -5
- package/dist/esm/w/index.mjs +1 -1
- package/dist/esm/w/local/account.d.mts +2 -2
- package/dist/esm/w/local/account.mjs +1 -1
- package/dist/esm/w/local/cache.mjs +1 -1
- package/dist/esm/w/local/config.mjs +1 -1
- package/dist/esm/w/local/evm/networks.mjs +1 -1
- package/dist/esm/w/local/evm-account.d.mts +1 -1
- package/dist/esm/w/local/evm-account.mjs +1 -1
- package/dist/esm/w/local/index.d.mts +5 -5
- package/dist/esm/w/local/index.mjs +1 -1
- package/dist/esm/w/local/local.mjs +1 -1
- package/dist/esm/w/local/secure-storage.d.mts +1 -1
- package/dist/esm/w/local/secure-storage.mjs +1 -1
- package/dist/esm/w/local/storage.d.mts +2 -2
- package/dist/esm/w/local/storage.mjs +1 -1
- package/dist/esm/w/local/token.d.mts +1 -1
- package/dist/esm/w/local/token.mjs +1 -1
- package/dist/esm/w/local/wip.mjs +1 -1
- package/dist/esm/w/messenger/index.d.mts +1 -1
- package/dist/esm/w/messenger/index.mjs +1 -1
- package/dist/esm/w/messenger/messenger-api.d.mts +1 -1
- package/dist/esm/w/messenger/messenger-api.mjs +1 -1
- package/dist/esm/w/messenger/messenger.d.mts +1 -1
- package/dist/esm/w/messenger/messenger.mjs +1 -1
- package/dist/esm/w/messenger/reply.d.mts +1 -1
- package/dist/esm/w/messenger/storage.d.mts +1 -1
- package/dist/esm/w/messenger/types.d.mts +1 -1
- package/dist/esm/w/query/index.d.mts +2 -2
- package/dist/esm/w/query/index.mjs +1 -1
- package/dist/esm/w/query/object.d.mts +2 -2
- package/dist/esm/w/query/object.mjs +1 -1
- package/dist/esm/{w-B08W7cXA.mjs → w-BImJL-ey.mjs} +1 -1
- package/dist/esm/{wow-types-DcqbnAaK.mjs → wow-types-DctQuD2J.mjs} +1 -1
- package/package.json +1 -1
- package/dist/esm/client-DyKuVUmu.mjs +0 -1
- package/dist/esm/messenger-BynJuae-.mjs +0 -1
- package/dist/esm/object-DDKcSofO.mjs +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as a7a,c as a7b,i as a7c,l as a7d,o as a7e,s as a7f,u as a7g}from'./wow-types-DcqbnAaK.mjs';import{c as a7h,o as a7i,u as a7j}from'./bcs-BrmSFFhn.mjs';import{M as a7k,O as a7l,S as a7m}from'./utils-CoXIRMWK.mjs';import{g as a7n,m as a7o,o as a7p,p as a7q,s as a7r,t as a7s}from'./Transaction-BlZi1w6F.mjs';import{t as a7t}from'./exception-Xd2RFs2i.mjs';import{fromBase58,fromBase64,toBase64,toHex}from'@mysten/bcs';import{chunk,toBase64 as a7u}from'@mysten/utils';var ClientCache=class ClientCache{#prefix;#cache;constructor({prefix:a,cache:b}={}){this.#prefix=a??[],this.#cache=b??new Map();}['read'](a,b){const c=[this.#prefix,...a]['join'](':');if(this.#cache['has'](c))return this.#cache['get'](c);const d=b();this.#cache['set'](c,d);if(typeof d==='object'&&d!==null&&'then'in d)return Promise['resolve'](d)['then'](e=>{return this.#cache['set'](c,e),e;})['catch'](e=>{this.#cache['delete'](c);throw e;});return d;}['readSync'](a,b){const c=[this.#prefix,...a]['join'](':');if(this.#cache['has'](c))return this.#cache['get'](c);const d=b();return this.#cache['set'](c,d),d;}['clear'](a){const b=[...this.#prefix,...a??[]]['join'](':');if(!b){this.#cache['clear']();return;}for(const c of this.#cache['keys']())if(c['startsWith'](b))this.#cache['delete'](c);}['scope'](a){return new ClientCache({'prefix':[...this.#prefix,...Array['isArray'](a)?a:[a]],'cache':this.#cache});}},BaseClient=class{constructor({network:a,base:b,cache:cache=b?.['cache']??new ClientCache()}){this['network']=a,this['base']=b??this,this['cache']=cache;}['$extend'](...a){const b=Object['fromEntries'](a['map'](d=>{return[d['name'],d['register'](this)];})),c=new Map();return new Proxy(this,{'get'(d,e,f){if(typeof e==='string'&&e in b)return b[e];const g=Reflect['get'](d,e,f);if(typeof g==='function'){if(e==='$extend')return g['bind'](f);if(!c['has'](e))c['set'](e,g['bind'](d));return c['get'](e);}return g;}});}},CoreClient=class extends BaseClient{constructor(a){super(a),this['core']=this;}async['getObject'](a){const {objectId:b}=a,{objects:[c]}=await this['getObjects']({'objectIds':[b],'signal':a['signal'],'include':a['include']});if(c instanceof Error)throw c;return{'object':c};}async['getDynamicField'](a){const b=a7j['parseFromStr'](a['name']['type']),c=a7k(a['parentId'],b,a['name']['bcs']),{objects:[d]}=await this['getObjects']({'objectIds':[c],'signal':a['signal'],'include':{'previousTransaction':!![],'content':!![]}});if(d instanceof Error)throw d;const e=a7g(d['type']),f=await d['content'],g=e['typeParams'][0x0],h=typeof g!=='string'&&g['module']==='dynamic_object_field'&&g['name']==='Wrapper',i=f['slice'](0x20+a['name']['bcs']['length']),j=typeof e['typeParams'][0x1]==='string'?e['typeParams'][0x1]:a7f(e['typeParams'][0x1]);return{'dynamicField':{'$kind':h?'DynamicObject':'DynamicField','fieldId':d['objectId'],'digest':d['digest'],'version':d['version'],'type':d['type'],'previousTransaction':d['previousTransaction'],'name':{'type':typeof g==='string'?g:a7f(g),'bcs':a['name']['bcs']},'value':{'type':j,'bcs':i},'childId':h?a7i['Address']['parse'](i):void 0x0}};}async['getDynamicObjectField'](a){const b='0x2::dynamic_object_field::Wrapper<'+a['name']['type']+'>',{dynamicField:c}=await this['getDynamicField']({'parentId':a['parentId'],'name':{'type':b,'bcs':a['name']['bcs']},'signal':a['signal']}),{object:d}=await this['getObject']({'objectId':c['childId'],'signal':a['signal'],'include':a['include']});return{'object':d};}async['waitForTransaction'](a){const {signal:b,timeout:timeout=0x3c*0x3e8,pollSchedule:c,include:d}=a,e='result'in a&&a['result']?(a['result']['Transaction']??a['result']['FailedTransaction'])['digest']:a['digest'],f=b?AbortSignal['any']([AbortSignal['timeout'](timeout),b]):AbortSignal['timeout'](timeout),g=new Promise((l,m)=>{f['addEventListener']('abort',()=>m(f['reason']));});g['catch'](()=>{});const h=c??[0x0,0x12c,0x258,0x5dc,0xdac],i=Date['now']();let j=0x0;const k=h['length']>0x0?h[h['length']-0x1]-(h[h['length']-0x2]??0x0):0x7d0;while(!![]){if(j<h['length']){const l=i+h[j]-Date['now']();j++;if(l>0x0)await Promise['race']([new Promise(m=>setTimeout(m,l)),g]);}else await Promise['race']([new Promise(m=>setTimeout(m,k)),g]);f['throwIfAborted']();try{return await this['getTransaction']({'digest':e,'include':d,'signal':f});}catch{}}}async['signAndExecuteTransaction']({transaction:a,signer:b,additionalSignatures:additionalSignatures=[],...c}){let d;if(a instanceof Uint8Array)d=a;else a['setSenderIfNotSet'](b['toWowAddress']()),d=await a['build']({'client':this});const {signature:e}=await b['signTransaction'](d);return this['executeTransaction']({'transaction':d,'signatures':[e,...additionalSignatures],...c});}};const ordinalRules=new Intl['PluralRules']('en-US',{'type':'ordinal'}),ordinalSuffixes=new Map([['one','st'],['two','nd'],['few','rd'],['other','th']]);function formatOrdinal(a){return''+a+ordinalSuffixes['get'](ordinalRules['select'](a));}const WOWOK_ADDRESS='0x0000000000000000000000000000000000000000000000000000000000000002';function formatMoveAbortMessage(a){const {command:b,location:c,abortCode:d,cleverError:e}=a,f=[];if(b!=null)f['push']('MoveAbort\x20in\x20'+formatOrdinal(b+0x1)+'\x20command');else f['push']('MoveAbort');if(e?.['constantName']){const g=e['value']?'\x27'+e['constantName']+'\x27:\x20'+e['value']:'\x27'+e['constantName']+'\x27';f['push'](g);}else{let h='abort\x20code:\x20'+d;if(c?.['package']&&c?.['module']){const i=c['package']['startsWith']('0x')?c['package']:'0x'+c['package'];if(i['toLowerCase']()===WOWOK_ADDRESS||i['toLowerCase']()==='0x2'){const j=parseInt(d,0xa);if(!isNaN(j)){const k=a7t['find'](l=>l['module']===c['module']&&l['code']===j)?.['description']??null;if(k)h='abort\x20code:\x20'+d+'\x20('+k+')';}}}f['push'](h);}if(c?.['package']&&c?.['module']){const l=['in\x20\x27'+[c['package']['startsWith']('0x')?c['package']:'0x'+c['package'],c['module'],c['functionName']]['filter'](Boolean)['join']('::')+'\x27'];if(e?.['lineNumber']!=null)l['push']('(line\x20'+e['lineNumber']+')');else{if(c['instruction']!=null)l['push']('(instruction\x20'+c['instruction']+')');}f['push'](l['join']('\x20'));}return f['join'](',\x20');}const MinimalEffectsWithError=a7i['struct']('MinimalEffectsWithError',{'status':a7h}),MinimalTransactionEffectsWithError=a7i['enum']('MinimalTransactionEffectsWithError',{'V1':MinimalEffectsWithError,'V2':MinimalEffectsWithError}),MinimalExecutionStatusNoError=a7i['enum']('MinimalExecutionStatusNoError',{'Success':null,'Failed':null}),MinimalEffectsNoError=a7i['struct']('MinimalEffectsNoError',{'status':MinimalExecutionStatusNoError}),MinimalTransactionEffectsNoError=a7i['enum']('MinimalTransactionEffectsNoError',{'V1':MinimalEffectsNoError,'V2':MinimalEffectsNoError});function formatErrorMessage(a,b){if(b!==null&&b!==void 0x0&&typeof b!=='boolean')return a+'('+JSON['stringify'](b,(c,d)=>typeof d==='bigint'?d['toString']():d)+')';return a;}function parseBcsExecutionError(a){const b=a['error'],c=a['command']!=null?Number(a['command']):void 0x0;switch(b['$kind']){case'MoveAbort':{const [d,e]=b['MoveAbort'],f={'package':d['module']['address'],'module':d['module']['name'],'function':d['function'],'functionName':d['functionName']??void 0x0,'instruction':d['instruction']};return{'$kind':'MoveAbort','message':formatMoveAbortMessage({'command':c,'location':f,'abortCode':String(e)}),'command':c,'MoveAbort':{'abortCode':String(e),'location':f}};}case'MoveObjectTooBig':return{'$kind':'SizeError','message':formatErrorMessage('MoveObjectTooBig',b['MoveObjectTooBig']),'command':c,'SizeError':{'name':'ObjectTooBig','size':Number(b['MoveObjectTooBig']['objectSize']),'maxSize':Number(b['MoveObjectTooBig']['maxObjectSize'])}};case'MovePackageTooBig':return{'$kind':'SizeError','message':formatErrorMessage('MovePackageTooBig',b['MovePackageTooBig']),'command':c,'SizeError':{'name':'PackageTooBig','size':Number(b['MovePackageTooBig']['objectSize']),'maxSize':Number(b['MovePackageTooBig']['maxObjectSize'])}};case'EffectsTooLarge':return{'$kind':'SizeError','message':formatErrorMessage('EffectsTooLarge',b['EffectsTooLarge']),'command':c,'SizeError':{'name':'EffectsTooLarge','size':Number(b['EffectsTooLarge']['currentSize']),'maxSize':Number(b['EffectsTooLarge']['maxSize'])}};case'WrittenObjectsTooLarge':return{'$kind':'SizeError','message':formatErrorMessage('WrittenObjectsTooLarge',b['WrittenObjectsTooLarge']),'command':c,'SizeError':{'name':'WrittenObjectsTooLarge','size':Number(b['WrittenObjectsTooLarge']['currentSize']),'maxSize':Number(b['WrittenObjectsTooLarge']['maxSize'])}};case'MoveVectorElemTooBig':return{'$kind':'SizeError','message':formatErrorMessage('MoveVectorElemTooBig',b['MoveVectorElemTooBig']),'command':c,'SizeError':{'name':'MoveVectorElemTooBig','size':Number(b['MoveVectorElemTooBig']['valueSize']),'maxSize':Number(b['MoveVectorElemTooBig']['maxScaledSize'])}};case'MoveRawValueTooBig':return{'$kind':'SizeError','message':formatErrorMessage('MoveRawValueTooBig',b['MoveRawValueTooBig']),'command':c,'SizeError':{'name':'MoveRawValueTooBig','size':Number(b['MoveRawValueTooBig']['valueSize']),'maxSize':Number(b['MoveRawValueTooBig']['maxScaledSize'])}};case'CommandArgumentError':return{'$kind':'CommandArgumentError','message':formatErrorMessage('CommandArgumentError',b['CommandArgumentError']),'command':c,'CommandArgumentError':{'argument':b['CommandArgumentError']['argIdx'],'name':b['CommandArgumentError']['kind']['$kind']}};case'TypeArgumentError':return{'$kind':'TypeArgumentError','message':formatErrorMessage('TypeArgumentError',b['TypeArgumentError']),'command':c,'TypeArgumentError':{'typeArgument':b['TypeArgumentError']['argumentIdx'],'name':b['TypeArgumentError']['kind']['$kind']}};case'PackageUpgradeError':{const g=b['PackageUpgradeError']['upgradeError'];return{'$kind':'PackageUpgradeError','message':formatErrorMessage('PackageUpgradeError',b['PackageUpgradeError']),'command':c,'PackageUpgradeError':{'name':g['$kind'],'packageId':g['$kind']==='UnableToFetchPackage'?g['UnableToFetchPackage']['packageId']:void 0x0,'digest':g['$kind']==='DigestDoesNotMatch'?a7u(g['DigestDoesNotMatch']['digest']):void 0x0}};}case'ExecutionCancelledDueToSharedObjectCongestion':return{'$kind':'CongestedObjects','message':formatErrorMessage('ExecutionCancelledDueToSharedObjectCongestion',b['ExecutionCancelledDueToSharedObjectCongestion']),'command':c,'CongestedObjects':{'name':'ExecutionCanceledDueToConsensusObjectCongestion','objects':b['ExecutionCancelledDueToSharedObjectCongestion']['congested_objects']}};case'AddressDeniedForCoin':return{'$kind':'CoinDenyListError','message':formatErrorMessage('AddressDeniedForCoin',b['AddressDeniedForCoin']),'command':c,'CoinDenyListError':{'name':'AddressDeniedForCoin','address':b['AddressDeniedForCoin']['address'],'coinType':b['AddressDeniedForCoin']['coinType']}};case'CoinTypeGlobalPause':return{'$kind':'CoinDenyListError','message':formatErrorMessage('CoinTypeGlobalPause',b['CoinTypeGlobalPause']),'command':c,'CoinDenyListError':{'name':'CoinTypeGlobalPause','coinType':b['CoinTypeGlobalPause']['coinType']}};case'CircularObjectOwnership':return{'$kind':'ObjectIdError','message':formatErrorMessage('CircularObjectOwnership',b['CircularObjectOwnership']),'command':c,'ObjectIdError':{'name':'CircularObjectOwnership','objectId':b['CircularObjectOwnership']['object']}};case'InvalidGasObject':return{'$kind':'ObjectIdError','message':'InvalidGasObject','command':c,'ObjectIdError':{'name':'InvalidGasObject','objectId':''}};case'InputObjectDeleted':return{'$kind':'ObjectIdError','message':'InputObjectDeleted','command':c,'ObjectIdError':{'name':'InputObjectDeleted','objectId':''}};case'InvalidTransferObject':return{'$kind':'ObjectIdError','message':'InvalidTransferObject','command':c,'ObjectIdError':{'name':'InvalidTransferObject','objectId':''}};case'NonExclusiveWriteInputObjectModified':return{'$kind':'Unknown','message':formatErrorMessage('NonExclusiveWriteInputObjectModified',b['NonExclusiveWriteInputObjectModified']),'command':c,'Unknown':null};case'InsufficientGas':case'InvariantViolation':case'FeatureNotYetSupported':case'InsufficientCoinBalance':case'CoinBalanceOverflow':case'PublishErrorNonZeroAddress':case'WowMoveVerificationError':case'MovePrimitiveRuntimeError':case'VMVerificationOrDeserializationError':case'VMInvariantViolation':case'FunctionNotFound':case'ArityMismatch':case'TypeArityMismatch':case'NonEntryFunctionInvoked':case'UnusedValueWithoutDrop':case'InvalidPublicFunctionReturnType':case'PublishUpgradeMissingDependency':case'PublishUpgradeDependencyDowngrade':case'CertificateDenied':case'WowMoveVerificationTimedout':case'SharedObjectOperationNotAllowed':case'ExecutionCancelledDueToRandomnessUnavailable':case'InvalidLinkage':case'InsufficientBalanceForWithdraw':return{'$kind':'Unknown','message':b['$kind'],'command':c,'Unknown':null};default:return{'$kind':'Unknown','message':'Unknown\x20error','command':c,'Unknown':null};}}function parseTransactionBcs(a,b=![]){return(b?a7n['fromKindBytes'](a):a7n['fromBytes'](a))['snapshot']();}function extractStatusFromEffectsBcs(a){let b=null;try{b=MinimalTransactionEffectsWithError['parse'](a);}catch{const d=MinimalTransactionEffectsNoError['parse'](a);if((d['V1']??d['V2'])['status']['$kind']==='Success')return{'success':!![],'error':null};return{'success':![],'error':{'$kind':'Unknown','message':'ExecutionFailed','Unknown':null}};}const c=(b['V1']??b['V2'])['status'];if(c['$kind']==='Success')return{'success':!![],'error':null};return{'success':![],'error':parseBcsExecutionError(c['Failure'])};}function parseTransactionEffectsBcs(a){const b=a7i['TransactionEffects']['parse'](a);switch(b['$kind']){case'V1':return parseTransactionEffectsV1({'bytes':a,'effects':b['V1']});case'V2':return parseTransactionEffectsV2({'bytes':a,'effects':b['V2']});default:throw new Error('Unknown\x20transaction\x20effects\x20version:\x20'+b['$kind']);}}function parseTransactionEffectsV1(a){throw new Error('V1\x20effects\x20are\x20not\x20supported\x20yet');}function parseTransactionEffectsV2({bytes:a,effects:b}){const c=b['changedObjects']['map'](([d,e])=>{return{'objectId':d,'inputState':e['inputState']['$kind']==='Exist'?'Exists':'DoesNotExist','inputVersion':e['inputState']['Exist']?.[0x0][0x0]??null,'inputDigest':e['inputState']['Exist']?.[0x0][0x1]??null,'inputOwner':e['inputState']['Exist']?.[0x1]??null,'outputState':e['outputState']['$kind']==='NotExist'?'DoesNotExist':e['outputState']['$kind'],'outputVersion':e['outputState']['$kind']==='PackageWrite'?e['outputState']['PackageWrite']?.[0x0]:e['outputState']['$kind']==='ObjectWrite'?b['lamportVersion']:null,'outputDigest':e['outputState']['$kind']==='PackageWrite'?e['outputState']['PackageWrite']?.[0x1]:e['outputState']['$kind']==='ObjectWrite'?e['outputState']['ObjectWrite']?.[0x0]??null:null,'outputOwner':e['outputState']['$kind']==='ObjectWrite'?e['outputState']['ObjectWrite'][0x1]:null,'idOperation':e['idOperation']['$kind']};});return{'bcs':a,'version':0x2,'status':b['status']['$kind']==='Success'?{'success':!![],'error':null}:{'success':![],'error':parseBcsExecutionError(b['status']['Failure'])},'gasUsed':b['gasUsed'],'transactionDigest':b['transactionDigest'],'gasObject':b['gasObjectIndex']===null?null:c[b['gasObjectIndex']]??null,'eventsDigest':b['eventsDigest'],'dependencies':b['dependencies'],'lamportVersion':b['lamportVersion'],'changedObjects':c,'unchangedConsensusObjects':b['unchangedConsensusObjects']['map'](([d,e])=>{return{'kind':e['$kind'],'objectId':d,'version':e['$kind']==='ReadOnlyRoot'?e['ReadOnlyRoot'][0x0]:e[e['$kind']],'digest':e['$kind']==='ReadOnlyRoot'?e['ReadOnlyRoot'][0x1]:null};}),'auxiliaryDataDigest':b['auxDataDigest']};}const PACKAGE_VERSION='2.7.10',CODE_TO_ERROR_TYPE={'-32700':'ParseError','-32701':'OversizedRequest','-32702':'OversizedResponse','-32600':'InvalidRequest','-32601':'MethodNotFound','-32602':'InvalidParams','-32603':'InternalError','-32604':'ServerBusy','-32000':'CallExecutionFailed','-32001':'UnknownError','-32003':'SubscriptionClosed','-32004':'SubscriptionClosedWithError','-32005':'BatchesNotSupported','-32006':'TooManySubscriptions','-32050':'TransientError','-32002':'TransactionExecutionClientError'};var WowHTTPTransportError=class extends Error{},JsonRpcError=class extends WowHTTPTransportError{constructor(a,b){super(a),this['code']=b,this['type']=CODE_TO_ERROR_TYPE[b]??'ServerError';}},WowHTTPStatusError=class extends WowHTTPTransportError{constructor(a,b,c){super(a),this['status']=b,this['statusText']=c;}},JsonRpcHTTPTransport=class{#requestId=0x0;#options;constructor(a){this.#options=a;}['fetch'](a,b){const c=this.#options['fetch']??fetch;if(!c)throw new Error('The\x20current\x20environment\x20does\x20not\x20support\x20fetch,\x20you\x20can\x20provide\x20a\x20fetch\x20implementation\x20in\x20the\x20options\x20for\x20WowHTTPTransport.');return c(a,b);}async['request'](a){this.#requestId+=0x1;const b=await this['fetch'](this.#options['rpc']?.['url']??this.#options['url'],{'method':'POST','signal':a['signal'],'headers':{'Content-Type':'application/json','Client-Sdk-Type':'typescript','Client-Sdk-Version':PACKAGE_VERSION,'Client-Request-Method':a['method'],...this.#options['rpc']?.['headers']},'body':JSON['stringify']({'jsonrpc':'2.0','id':this.#requestId,'method':a['method'],'params':a['params']})});if(!b['ok'])throw new WowHTTPStatusError('Unexpected\x20status\x20code:\x20'+b['status'],b['status'],b['statusText']);const c=await b['json']();if('error'in c&&c['error']!=null)throw new JsonRpcError(c['error']['message'],c['error']['code']);return c['result'];}};let realTimeWindowMs=((()=>{const a=process['env']['WOWOK_REALTIME_WINDOW_MS'];if(!a)return 0x1388;const b=Number(a);return Number['isFinite'](b)&&b>=0x0?b:0x1388;})());const lastWriteAt=new Map();function touchWriteClock(a,b=Date['now']()){lastWriteAt['set'](a,b);}function lastWriteAtFor(a){return lastWriteAt['get'](a)??0x0;}function isRealtimeWindow(a){return Date['now']()-lastWriteAtFor(a)<=realTimeWindowMs;}const MAX_GAS=0xba43b7400;function convertBcsExpirationToInput(a){if(!a)return null;if('None'in a)return{'None':!![]};if('Epoch'in a)return{'Epoch':Number(a['Epoch'])};if('ValidDuring'in a)return{'ValidDuring':a['ValidDuring']};return null;}function parseJsonRpcExecutionStatus(a,b){if(a['status']==='success')return{'success':!![],'error':null};const c=a['error']??'Unknown';if(b){const d=c['match'](/in command (\d+)/),e=d?parseInt(d[0x1],0xa):void 0x0,f=c['match'](/instruction:\s*(\d+)/),g=f?parseInt(f[0x1],0xa):void 0x0,h=b['module_id']?.['split']('::')??[],i=h[0x0]?a7b(h[0x0]):void 0x0,j=h[0x1];return{'success':![],'error':{'$kind':'MoveAbort','message':formatMoveAbortMessage({'command':e,'location':i&&j?{'package':i,'module':j,'functionName':b['function']??void 0x0,'instruction':g}:void 0x0,'abortCode':String(b['error_code']??0x0),'cleverError':b['line']!=null?{'lineNumber':b['line']}:void 0x0}),'command':e,'MoveAbort':{'abortCode':String(b['error_code']??0x0),'location':b['module_id']?{'package':a7b(b['module_id']['split']('::')[0x0]??''),'module':b['module_id']['split']('::')[0x1]??'','functionName':b['function']??void 0x0,'instruction':g}:void 0x0}}};}return{'success':![],'error':{'$kind':'Unknown','message':c,'Unknown':null}};}var JSONRpcCoreClient=class extends CoreClient{#jsonRpcClient;constructor({jsonRpcClient:a}){super({'network':a['network'],'base':a}),this.#jsonRpcClient=a;}async['getObjects'](a){const b=chunk(a['objectIds'],0x32),c=[];for(const d of b){const e=await this.#jsonRpcClient['multiGetObjects']({'objectIds':d,'options':{'showOwner':!![],'showType':!![],'showBcs':a['include']?.['content']||a['include']?.['objectBcs']?!![]:![],'showPreviousTransaction':a['include']?.['previousTransaction']||a['include']?.['objectBcs']?!![]:![],'showStorageRebate':a['include']?.['objectBcs']??![],'showContent':a['include']?.['json']??![],'showDisplay':a['include']?.['display']??![]},'signal':a['signal']});for(const [f,g]of e['entries']())if(g['error'])c['push'](a7o['fromResponse'](g['error'],d[f]));else c['push'](parseObject(g['data'],a['include']));}return{'objects':c};}async['listOwnedObjects'](a){let b=null;if(a['type']){const d=a['type']['split']('::');if(d['length']===0x1)b={'Package':a['type']};else{if(d['length']===0x2)b={'MoveModule':{'package':d[0x0],'module':d[0x1]}};else b={'StructType':a['type']};}}const c=await this.#jsonRpcClient['getOwnedObjects']({'owner':a['owner'],'limit':a['limit'],'cursor':a['cursor'],'options':{'showOwner':!![],'showType':!![],'showBcs':a['include']?.['content']||a['include']?.['objectBcs']?!![]:![],'showPreviousTransaction':a['include']?.['previousTransaction']||a['include']?.['objectBcs']?!![]:![],'showStorageRebate':a['include']?.['objectBcs']??![],'showContent':a['include']?.['json']??![],'showDisplay':a['include']?.['display']??![]},'filter':b,'signal':a['signal']});return{'objects':c['data']['map'](e=>{if(e['error'])throw a7o['fromResponse'](e['error']);return parseObject(e['data'],a['include']);}),'hasNextPage':c['hasNextPage'],'cursor':c['nextCursor']??null};}async['listSharedObjects'](a){throw new Error('listSharedObjects\x20is\x20GraphQL-only:\x20the\x20JSON-RPC\x20API\x20has\x20no\x20global\x20shared-object\x20enumeration.\x20Use\x20the\x20GraphQL\x20transport\x20(WOWOK_TRANSPORT=graphql)\x20with\x20a\x20GraphQL\x20endpoint\x20configured\x20for\x20the\x20target\x20network.');}async['listCoins'](a){const b=await this.#jsonRpcClient['getCoins']({'owner':a['owner'],'coinType':a['coinType'],'limit':a['limit'],'cursor':a['cursor'],'signal':a['signal']});return{'objects':b['data']['map'](c=>({'objectId':c['coinObjectId'],'version':c['version'],'digest':c['digest'],'balance':c['balance'],'type':a7f('0x2::coin::Coin<'+c['coinType']+'>'),'owner':{'$kind':'AddressOwner','AddressOwner':a['owner']}})),'hasNextPage':b['hasNextPage'],'cursor':b['nextCursor']??null};}async['getBalance'](a){const b=await this.#jsonRpcClient['getBalance']({'owner':a['owner'],'coinType':a['coinType'],'signal':a['signal']}),c=b['fundsInAddressBalance']??'0',d=String(BigInt(b['totalBalance'])-BigInt(c));return{'balance':{'coinType':a7f(b['coinType']),'balance':b['totalBalance'],'coinBalance':d,'addressBalance':c}};}async['getCoinMetadata'](a){const b=a['coinType'],c=await this.#jsonRpcClient['getCoinMetadata']({'coinType':b,'signal':a['signal']});if(!c)return{'coinMetadata':null};return{'coinMetadata':{'id':c['id']??null,'decimals':c['decimals'],'name':c['name'],'symbol':c['symbol'],'description':c['description'],'iconUrl':c['iconUrl']??null}};}async['listBalances'](a){return{'balances':(await this.#jsonRpcClient['getAllBalances']({'owner':a['owner'],'signal':a['signal']}))['map'](b=>{const c=b['fundsInAddressBalance']??'0',d=String(BigInt(b['totalBalance'])-BigInt(c));return{'coinType':a7f(b['coinType']),'balance':b['totalBalance'],'coinBalance':d,'addressBalance':c};}),'hasNextPage':![],'cursor':null};}async['getTransaction'](a){return parseTransaction(await this.#jsonRpcClient['getTransactionBlock']({'digest':a['digest'],'options':{'showRawInput':!![],'showEffects':!![],'showObjectChanges':a['include']?.['objectTypes']??![],'showRawEffects':a['include']?.['effects']??![],'showEvents':a['include']?.['events']??![],'showBalanceChanges':a['include']?.['balanceChanges']??![]},'signal':a['signal']}),a['include']);}async['executeTransaction'](a){const b=await this.#jsonRpcClient['executeTransactionBlock']({'txBytes':toBase64(a['transaction']),'signatures':a['signatures'],'options':{'showRawInput':!![],'showEffects':!![],'showRawEffects':a['include']?.['effects']??![],'showEvents':a['include']?.['events']??![],'showObjectChanges':a['include']?.['objectTypes']??![],'showBalanceChanges':a['include']?.['balanceChanges']??![]},'signal':a['signal']});return touchWriteClock(this['network']),parseTransaction(b,a['include']);}async['simulateTransaction'](a){if(!(a['transaction']instanceof Uint8Array))await a['transaction']['build']({'client':this,'onlyTransactionKind':!![]});const b=a7s['from'](a['transaction']),c=a['transaction']instanceof Uint8Array?null:a7n['restore'](a['transaction']['getData']()),d=c?c['build']({'overrides':{'gasData':{'budget':c['gasData']['budget']??String(MAX_GAS),'price':c['gasData']['price']??String(await this.#jsonRpcClient['getReferenceGasPrice']()),'payment':c['gasData']['payment']??[]}}}):a['transaction'],f=b['getData']()['sender']??a7b('0x0'),g=a['checksEnabled']===![];let h=null;try{h=await this.#jsonRpcClient['dryRunTransactionBlock']({'txBytes':toBase64(d),'signal':a['signal']});}catch(q){if(!g)throw q;}let i=null;if(a['include']?.['commandResults']||g)try{i=await this.#jsonRpcClient['devInspectTransactionBlock']({'senderAddress':f,'txBytes':toBase64(d),'signal':a['signal']});}catch{}const j=!h||h['effects']['status']['status']!=='success',k=g&&j&&i?i:h??i;if(!k)throw new Error('simulateTransaction\x20failed:\x20no\x20results\x20from\x20dryRun\x20or\x20devInspect');const {effects:l,objectTypes:m}=parseTransactionEffectsJson({'effects':k['effects'],'objectChanges':(!j?h?.['objectChanges']:null)??[]});let n;if(a['include']?.['transaction']){n=parseTransactionBcs(d);if(c&&!j&&l['gasUsed']){if(!c['gasData']['budget'])n['gasData']['budget']=a7p(l['gasUsed']);}}const o={'digest':a7n['getDigestFromBytes'](d),'epoch':null,'status':l['status'],'effects':a['include']?.['effects']?l:void 0x0,'objectTypes':a['include']?.['objectTypes']?m:void 0x0,'signatures':[],'transaction':n??void 0x0,'bcs':a['include']?.['bcs']?d:void 0x0,'balanceChanges':a['include']?.['balanceChanges']&&h&&!j?h['balanceChanges']['map'](r=>({'coinType':a7f(r['coinType']),'address':parseOwnerAddress(r['owner']),'amount':r['amount']})):void 0x0,'events':a['include']?.['events']?k['events']?.['map'](r=>({'packageId':r['packageId'],'module':r['transactionModule'],'sender':r['sender'],'eventType':r['type'],'bcs':'bcs'in r?fromBase64(r['bcs']):new Uint8Array(),'json':r['parsedJson']??null}))??[]:void 0x0};let p;if(a['include']?.['commandResults']&&i?.['results'])p=i['results']['map'](r=>({'returnValues':(r['returnValues']??[])['map'](([s])=>({'bcs':new Uint8Array(s)})),'mutatedReferences':(r['mutableReferenceOutputs']??[])['map'](([,s])=>({'bcs':new Uint8Array(s)}))}));return l['status']['success']?{'$kind':'Transaction','Transaction':o,'commandResults':p}:{'$kind':'FailedTransaction','FailedTransaction':o,'commandResults':p};}async['getReferenceGasPrice'](a){const b=await this.#jsonRpcClient['getReferenceGasPrice']({'signal':a?.['signal']});return{'referenceGasPrice':String(b)};}async['getProtocolConfig'](a){const b=await this.#jsonRpcClient['getProtocolConfig']({'signal':a?.['signal']}),c={};for(const [d,e]of Object['entries'](b['attributes']))if(e===null)c[d]=null;else{if('u16'in e)c[d]=e['u16'];else{if('u32'in e)c[d]=e['u32'];else{if('u64'in e)c[d]=e['u64'];else{if('f64'in e)c[d]=e['f64'];else{if('bool'in e)c[d]=e['bool'];else{const f=Object['entries'](e);c[d]=f['length']===0x1?String(f[0x0][0x1]):JSON['stringify'](e);}}}}}}return{'protocolConfig':{'protocolVersion':b['protocolVersion'],'featureFlags':{...b['featureFlags']},'attributes':c}};}async['getCurrentSystemState'](a){const b=await this.#jsonRpcClient['getLatestWowSystemState']({'signal':a?.['signal']});return{'systemState':{'systemStateVersion':b['systemStateVersion'],'epoch':b['epoch'],'protocolVersion':b['protocolVersion'],'referenceGasPrice':b['referenceGasPrice']?.['toString']()??null,'epochStartTimestampMs':b['epochStartTimestampMs'],'safeMode':b['safeMode'],'safeModeStorageRewards':b['safeModeStorageRewards'],'safeModeComputationRewards':b['safeModeComputationRewards'],'safeModeStorageRebates':b['safeModeStorageRebates'],'safeModeNonRefundableStorageFee':b['safeModeNonRefundableStorageFee'],'parameters':{'epochDurationMs':b['epochDurationMs'],'stakeSubsidyStartEpoch':b['stakeSubsidyStartEpoch'],'maxValidatorCount':b['maxValidatorCount'],'minValidatorJoiningStake':b['minValidatorJoiningStake'],'validatorLowStakeThreshold':b['validatorLowStakeThreshold'],'validatorLowStakeGracePeriod':b['validatorLowStakeGracePeriod']},'storageFund':{'totalObjectStorageRebates':b['storageFundTotalObjectStorageRebates'],'nonRefundableBalance':b['storageFundNonRefundableBalance']},'stakeSubsidy':{'balance':b['stakeSubsidyBalance'],'distributionCounter':b['stakeSubsidyDistributionCounter'],'currentDistributionAmount':b['stakeSubsidyCurrentDistributionAmount'],'stakeSubsidyPeriodLength':b['stakeSubsidyPeriodLength'],'stakeSubsidyDecreaseRate':b['stakeSubsidyDecreaseRate']}}};}async['listDynamicFields'](a){const b=await this.#jsonRpcClient['getDynamicFields']({'parentId':a['parentId'],'limit':a['limit'],'cursor':a['cursor']});return{'dynamicFields':b['data']['map'](c=>{const d=c['type']==='DynamicObject',e=d?'0x2::dynamic_field::Field<0x2::dynamic_object_field::Wrapper<'+c['name']['type']+'>,\x200x2::object::ID>':'0x2::dynamic_field::Field<'+c['name']['type']+',\x20'+c['objectType']+'>',f=fromBase64(c['bcsName']),g=d?'0x2::dynamic_object_field::Wrapper<'+c['name']['type']+'>':c['name']['type'];return{'$kind':d?'DynamicObject':'DynamicField','fieldId':a7k(a['parentId'],g,f),'type':a7f(e),'name':{'type':c['name']['type'],'bcs':f},'valueType':c['objectType'],'childId':d?c['objectId']:void 0x0};}),'hasNextPage':b['hasNextPage'],'cursor':b['nextCursor']};}['resolveTransactionPlugin'](){return a7r;}async['getMoveFunction'](a){const b=await this.#jsonRpcClient['getNormalizedMoveFunction']({'package':a['packageId'],'moduleName':a['moduleName'],'functionName':a['name']});return{'function':{'packageId':a7b(a['packageId']),'moduleName':a['moduleName'],'name':a['name'],'visibility':parseVisibility(b['visibility']),'isEntry':b['isEntry'],'typeParameters':b['typeParameters']['map'](c=>({'isPhantom':![],'constraints':parseAbilities(c)})),'parameters':b['parameters']['map'](c=>parseNormalizedWowMoveType(c)),'returns':b['return']['map'](c=>parseNormalizedWowMoveType(c))}};}async['getChainIdentifier'](a){return this['cache']['read'](['chainIdentifier'],async()=>{return{'chainIdentifier':(await this.#jsonRpcClient['getCheckpoint']({'id':'0'}))['digest']};});}};function serializeObjectToBcs(a){if(a['bcs']?.['dataType']!=='moveObject')return;try{const b=a7f(a['bcs']['type']);let c;const d=a7b(a7m),e=a7f(a7m+'::coin::Coin<'+a7m+'::wow::WOW>'),f=a7f(a7l+'::staking_pool::StakedWow'),g=d+'::coin::Coin<';if(b===e)c={'GasCoin':null};else{if(b===f)c={'StakedWow':null};else{if(b['startsWith'](g)){const j=b['match'](new RegExp(d['replace'](/[.*+?^${}()|[\]\\]/g,'\x5c$&')+'::coin::Coin<(.+)>$'));if(j)c={'Coin':a7j['parseFromStr'](j[0x1],!![])};else throw new Error('Failed\x20to\x20parse\x20Coin\x20type');}else{const k=a7j['parseFromStr'](b,!![]);if(typeof k!=='object'||!('struct'in k))throw new Error('Expected\x20struct\x20type\x20tag');c={'Other':k['struct']};}}}const h=fromBase64(a['bcs']['bcsBytes']),i=convertOwnerToBcs(a['owner']);return a7i['Object']['serialize']({'data':{'Move':{'type':c,'hasPublicTransfer':a['bcs']['hasPublicTransfer'],'version':a['bcs']['version'],'contents':h}},'owner':i,'previousTransaction':a['previousTransaction'],'storageRebate':a['storageRebate']})['toBytes']();}catch{return;}}function parseObject(a,b){const c=a['bcs']?.['dataType']==='moveObject'?fromBase64(a['bcs']['bcsBytes']):void 0x0,d=b?.['objectBcs']?serializeObjectToBcs(a):void 0x0,e=a['type']&&a['type']['includes']('::')?a7f(a['type']):a['type']??'',f=b?.['json']&&a['content']?.['dataType']==='moveObject'?a['content']['fields']:b?.['json']?null:void 0x0,g=b?.['display']?a['display']?.['data']!=null?{'output':a['display']['data'],'errors':null}:null:void 0x0;return{'objectId':a['objectId'],'version':a['version'],'digest':a['digest'],'type':e,'content':b?.['content']?c:void 0x0,'owner':parseOwner(a['owner']),'previousTransaction':b?.['previousTransaction']?a['previousTransaction']??void 0x0:void 0x0,'objectBcs':d,'json':f,'display':g};}function parseOwner(a){if(a==='Immutable')return{'$kind':'Immutable','Immutable':!![]};if('ConsensusAddressOwner'in a)return{'$kind':'ConsensusAddressOwner','ConsensusAddressOwner':{'owner':a['ConsensusAddressOwner']['owner'],'startVersion':a['ConsensusAddressOwner']['start_version']}};if('AddressOwner'in a)return{'$kind':'AddressOwner','AddressOwner':a['AddressOwner']};if('ObjectOwner'in a)return{'$kind':'ObjectOwner','ObjectOwner':a['ObjectOwner']};if('Shared'in a)return{'$kind':'Shared','Shared':{'initialSharedVersion':a['Shared']['initial_shared_version']}};throw new Error('Unknown\x20owner\x20type:\x20'+JSON['stringify'](a));}function convertOwnerToBcs(a){if(a==='Immutable')return{'Immutable':null};if('AddressOwner'in a)return{'AddressOwner':a['AddressOwner']};if('ObjectOwner'in a)return{'ObjectOwner':a['ObjectOwner']};if('Shared'in a)return{'Shared':{'initialSharedVersion':a['Shared']['initial_shared_version']}};if(typeof a==='object'&&a!==null&&'ConsensusAddressOwner'in a)return{'ConsensusAddressOwner':{'startVersion':a['ConsensusAddressOwner']['start_version'],'owner':a['ConsensusAddressOwner']['owner']}};throw new Error('Unknown\x20owner\x20type:\x20'+JSON['stringify'](a));}function parseOwnerAddress(a){if(a==='Immutable')return null;if('ConsensusAddressOwner'in a)return a['ConsensusAddressOwner']['owner'];if('AddressOwner'in a)return a['AddressOwner'];if('ObjectOwner'in a)return a['ObjectOwner'];if('Shared'in a)return null;throw new Error('Unknown\x20owner\x20type:\x20'+JSON['stringify'](a));}function parseTransaction(a,b){const c={};if(b?.['objectTypes'])a['objectChanges']?.['forEach'](j=>{if(j['type']!=='published')c[j['objectId']]=a7f(j['objectType']);});let d,e=[],f;if(a['rawTransaction']){const j=a7i['SenderSignedData']['parse'](fromBase64(a['rawTransaction']))[0x0];e=j['txSignatures'];if(b?.['transaction']||b?.['bcs']){const k=a7i['TransactionData']['serialize'](j['intentMessage']['value'])['toBytes']();if(b?.['bcs'])f=k;if(b?.['transaction'])d={...a7n['restore']({'version':0x2,'sender':j['intentMessage']['value']['V1']['sender'],'expiration':convertBcsExpirationToInput(j['intentMessage']['value']['V1']['expiration']),'gasData':j['intentMessage']['value']['V1']['gasData'],'inputs':j['intentMessage']['value']['V1']['kind']['ProgrammableTransaction']['inputs'],'commands':j['intentMessage']['value']['V1']['kind']['ProgrammableTransaction']['commands']})};}}const g=a['effects']?.['status']?parseJsonRpcExecutionStatus(a['effects']['status'],a['effects']['abortError']):{'success':![],'error':{'$kind':'Unknown','message':'Unknown','Unknown':null}},h=a['rawEffects']?new Uint8Array(a['rawEffects']):null,i={'digest':a['digest'],'epoch':a['effects']?.['executedEpoch']??null,'status':g,'effects':b?.['effects']&&h?parseTransactionEffectsBcs(h):void 0x0,'objectTypes':b?.['objectTypes']?c:void 0x0,'transaction':d,'bcs':f,'signatures':e,'balanceChanges':b?.['balanceChanges']?a['balanceChanges']?.['map'](l=>({'coinType':a7f(l['coinType']),'address':parseOwnerAddress(l['owner']),'amount':l['amount']}))??[]:void 0x0,'events':b?.['events']?a['events']?.['map'](l=>({'packageId':l['packageId'],'module':l['transactionModule'],'sender':l['sender'],'eventType':l['type'],'bcs':'bcs'in l?fromBase64(l['bcs']):new Uint8Array(),'json':l['parsedJson']??null}))??[]:void 0x0};return g['success']?{'$kind':'Transaction','Transaction':i}:{'$kind':'FailedTransaction','FailedTransaction':i};}function parseTransactionEffectsJson({bytes:a,effects:b,objectChanges:c}){const d=[],e=[],f={};return c?.['forEach'](g=>{switch(g['type']){case'published':d['push']({'objectId':g['packageId'],'inputState':'DoesNotExist','inputVersion':null,'inputDigest':null,'inputOwner':null,'outputState':'PackageWrite','outputVersion':g['version'],'outputDigest':g['digest'],'outputOwner':null,'idOperation':'Created'});break;case'transferred':d['push']({'objectId':g['objectId'],'inputState':'Exists','inputVersion':g['version'],'inputDigest':g['digest'],'inputOwner':{'$kind':'AddressOwner','AddressOwner':g['sender']},'outputState':'ObjectWrite','outputVersion':g['version'],'outputDigest':g['digest'],'outputOwner':parseOwner(g['recipient']),'idOperation':'None'}),f[g['objectId']]=a7f(g['objectType']);break;case'mutated':d['push']({'objectId':g['objectId'],'inputState':'Exists','inputVersion':g['previousVersion'],'inputDigest':null,'inputOwner':parseOwner(g['owner']),'outputState':'ObjectWrite','outputVersion':g['version'],'outputDigest':g['digest'],'outputOwner':parseOwner(g['owner']),'idOperation':'None'}),f[g['objectId']]=a7f(g['objectType']);break;case'deleted':d['push']({'objectId':g['objectId'],'inputState':'Exists','inputVersion':g['version'],'inputDigest':b['deleted']?.['find'](h=>h['objectId']===g['objectId'])?.['digest']??null,'inputOwner':null,'outputState':'DoesNotExist','outputVersion':null,'outputDigest':null,'outputOwner':null,'idOperation':'Deleted'}),f[g['objectId']]=a7f(g['objectType']);break;case'wrapped':d['push']({'objectId':g['objectId'],'inputState':'Exists','inputVersion':g['version'],'inputDigest':null,'inputOwner':{'$kind':'AddressOwner','AddressOwner':g['sender']},'outputState':'ObjectWrite','outputVersion':g['version'],'outputDigest':b['wrapped']?.['find'](h=>h['objectId']===g['objectId'])?.['digest']??null,'outputOwner':{'$kind':'ObjectOwner','ObjectOwner':g['sender']},'idOperation':'None'}),f[g['objectId']]=a7f(g['objectType']);break;case'created':d['push']({'objectId':g['objectId'],'inputState':'DoesNotExist','inputVersion':null,'inputDigest':null,'inputOwner':null,'outputState':'ObjectWrite','outputVersion':g['version'],'outputDigest':g['digest'],'outputOwner':parseOwner(g['owner']),'idOperation':'Created'}),f[g['objectId']]=a7f(g['objectType']);break;}}),{'objectTypes':f,'effects':{'bcs':a??null,'version':0x2,'status':parseJsonRpcExecutionStatus(b['status'],b['abortError']),'gasUsed':b['gasUsed'],'transactionDigest':b['transactionDigest'],'gasObject':{'objectId':b['gasObject']?.['reference']['objectId'],'inputState':'Exists','inputVersion':null,'inputDigest':null,'inputOwner':null,'outputState':'ObjectWrite','outputVersion':b['gasObject']['reference']['version'],'outputDigest':b['gasObject']['reference']['digest'],'outputOwner':parseOwner(b['gasObject']['owner']),'idOperation':'None'},'eventsDigest':b['eventsDigest']??null,'dependencies':b['dependencies']??[],'lamportVersion':b['gasObject']['reference']['version'],'changedObjects':d,'unchangedConsensusObjects':e,'auxiliaryDataDigest':null}};}function parseNormalizedWowMoveType(a){if(typeof a!=='string'){if('Reference'in a)return{'reference':'immutable','body':parseNormalizedWowMoveTypeBody(a['Reference'])};if('MutableReference'in a)return{'reference':'mutable','body':parseNormalizedWowMoveTypeBody(a['MutableReference'])};}return{'reference':null,'body':parseNormalizedWowMoveTypeBody(a)};}function parseNormalizedWowMoveTypeBody(a){switch(a){case'Address':return{'$kind':'address'};case'Bool':return{'$kind':'bool'};case'U8':return{'$kind':'u8'};case'U16':return{'$kind':'u16'};case'U32':return{'$kind':'u32'};case'U64':return{'$kind':'u64'};case'U128':return{'$kind':'u128'};case'U256':return{'$kind':'u256'};}if(typeof a==='string')throw new Error('Unknown\x20type:\x20'+a);if('Vector'in a)return{'$kind':'vector','vector':parseNormalizedWowMoveTypeBody(a['Vector'])};if('Struct'in a)return{'$kind':'datatype','datatype':{'typeName':a7b(a['Struct']['address'])+'::'+a['Struct']['module']+'::'+a['Struct']['name'],'typeParameters':a['Struct']['typeArguments']['map'](b=>parseNormalizedWowMoveTypeBody(b))}};if('TypeParameter'in a)return{'$kind':'typeParameter','index':a['TypeParameter']};throw new Error('Unknown\x20type:\x20'+JSON['stringify'](a));}function parseAbilities(a){return a['abilities']['map'](b=>{switch(b){case'Copy':return'copy';case'Drop':return'drop';case'Store':return'store';case'Key':return'key';default:return'unknown';}});}function parseVisibility(a){switch(a){case'Public':return'public';case'Private':return'private';case'Friend':return'friend';default:return'unknown';}}const WOW_CLIENT_BRAND=Symbol['for']('@mysten/WowJsonRpcClient');function isWowJsonRpcClient(a){return typeof a==='object'&&a!==null&&a[WOW_CLIENT_BRAND]===!![];}var WowJsonRpcClient=class extends BaseClient{get[WOW_CLIENT_BRAND](){return!![];}constructor(a){super({'network':a['network']}),this['jsonRpc']=this,this['transport']=a['transport']??new JsonRpcHTTPTransport({'url':a['url']}),this['core']=new JSONRpcCoreClient({'jsonRpcClient':this});}async['getRpcApiVersion']({signal:a}={}){return(await this['transport']['request']({'method':'rpc.discover','params':[],'signal':a}))['info']['version'];}async['getCoins']({coinType:a,owner:b,cursor:c,limit:d,signal:e}){if(!b||!a7a(a7b(b)))throw new Error('Invalid\x20Wow\x20address');const f=await this['transport']['request']({'method':'wx_getCoins','params':[b,a,c,d],'signal':e});return{...f,'data':f['data']['filter'](g=>!a7q(g['digest']))};}async['getAllCoins'](a){if(!a['owner']||!a7a(a7b(a['owner'])))throw new Error('Invalid\x20Wow\x20address');const b=await this['transport']['request']({'method':'wx_getAllCoins','params':[a['owner'],a['cursor'],a['limit']],'signal':a['signal']});return{...b,'data':b['data']['filter'](c=>!a7q(c['digest']))};}async['getBalance']({owner:a,coinType:b,signal:c}){if(!a||!a7a(a7b(a)))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getBalance','params':[a,b],'signal':c});}async['getAllBalances'](a){if(!a['owner']||!a7a(a7b(a['owner'])))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getAllBalances','params':[a['owner']],'signal':a['signal']});}async['getCoinMetadata']({coinType:a,signal:b}){return await this['transport']['request']({'method':'wx_getCoinMetadata','params':[a],'signal':b});}async['getTotalSupply']({coinType:a,signal:b}){return await this['transport']['request']({'method':'wx_getTotalSupply','params':[a],'signal':b});}async['call'](a,b,{signal:c}={}){return await this['transport']['request']({'method':a,'params':b,'signal':c});}async['getMoveFunctionArgTypes']({package:a,module:b,function:c,signal:d}){return await this['transport']['request']({'method':'w_getMoveFunctionArgTypes','params':[a,b,c],'signal':d});}async['getNormalizedMoveModulesByPackage']({package:a,signal:b}){return await this['transport']['request']({'method':'w_getNormalizedMoveModulesByPackage','params':[a],'signal':b});}async['getNormalizedMoveModule']({package:a,moduleName:b,signal:c}){return await this['transport']['request']({'method':'w_getNormalizedMoveModule','params':[a,b],'signal':c});}async['getNormalizedMoveFunction']({package:a,moduleName:b,functionName:c,signal:d}){return await this['transport']['request']({'method':'w_getNormalizedMoveFunction','params':[a,b,c],'signal':d});}async['getNormalizedMoveStruct']({package:a,moduleName:b,structName:c,signal:d}){return await this['transport']['request']({'method':'w_getNormalizedMoveStruct','params':[a,b,c],'signal':d});}async['getOwnedObjects'](a){if(!a['owner']||!a7a(a7b(a['owner'])))throw new Error('Invalid\x20Wow\x20address');const b=a['filter']?{...a['filter']}:void 0x0;return await this['transport']['request']({'method':'wx_getOwnedObjects','params':[a['owner'],{'filter':b,'options':a['options']},a['cursor'],a['limit']],'signal':a['signal']});}async['getObject'](a){if(!a['objectId']||!a7e(a7d(a['objectId'])))throw new Error('Invalid\x20Wow\x20Object\x20id');return await this['transport']['request']({'method':'w_getObject','params':[a['objectId'],a['options']],'signal':a['signal']});}async['tryGetPastObject'](a){return await this['transport']['request']({'method':'w_tryGetPastObject','params':[a['objectId'],a['version'],a['options']],'signal':a['signal']});}async['multiGetObjects'](a){if(!a||!a['objectIds']||!Array['isArray'](a['objectIds']))throw new Error('Invalid\x20input\x20for\x20multiGetObjects:\x20expected\x20{\x20objectIds:\x20string[]\x20},\x20got\x20'+JSON['stringify'](a));a['objectIds']['forEach'](b=>{if(!b||!a7e(a7d(b)))throw new Error('Invalid\x20Wow\x20Object\x20id\x20'+b);});if(a['objectIds']['length']!==new Set(a['objectIds'])['size'])throw new Error('Duplicate\x20object\x20ids\x20in\x20batch\x20call\x20'+a['objectIds']);return await this['transport']['request']({'method':'w_multiGetObjects','params':[a['objectIds'],a['options']],'signal':a['signal']});}async['queryTransactionBlocks']({filter:a,options:b,cursor:c,limit:d,order:e,signal:f}){return await this['transport']['request']({'method':'wx_queryTransactionBlocks','params':[{'filter':a,'options':b},c,d,e==='descending'],'signal':f});}async['getTransactionBlock'](a){if(!a7c(a['digest']))throw new Error('Invalid\x20Transaction\x20digest');return await this['transport']['request']({'method':'w_getTransactionBlock','params':[a['digest'],a['options']],'signal':a['signal']});}async['multiGetTransactionBlocks'](a){a['digests']['forEach'](b=>{if(!a7c(b))throw new Error('Invalid\x20Transaction\x20digest\x20'+b);});if(a['digests']['length']!==new Set(a['digests'])['size'])throw new Error('Duplicate\x20digests\x20in\x20batch\x20call\x20'+a['digests']);return await this['transport']['request']({'method':'w_multiGetTransactionBlocks','params':[a['digests'],a['options']],'signal':a['signal']});}async['executeTransactionBlock']({txBytes:a,signatures:b,options:c,requestType:d,signal:e}){return await this['transport']['request']({'method':'w_executeTransactionBlock','params':[a,b,c,d],'signal':e});}async['signAndExecuteTransaction']({transaction:a,signer:b,options:c,requestType:d,signal:e}){let f;if(a instanceof Uint8Array)f=a;else a['setSenderIfNotSet'](b['toWowAddress']()),f=await a['build']({'client':this});const {signature:g,bytes:h}=await b['signTransaction'](f);return this['executeTransactionBlock']({'txBytes':h,'signatures':[g],'options':c,'requestType':d,'signal':e});}async['getTotalTransactionBlocks']({signal:a}={}){const b=await this['transport']['request']({'method':'w_getTotalTransactionBlocks','params':[],'signal':a});return BigInt(b);}async['getReferenceGasPrice']({signal:a}={}){const b=await this['transport']['request']({'method':'wx_getReferenceGasPrice','params':[],'signal':a});return BigInt(b);}async['getStakes'](a){if(!a['owner']||!a7a(a7b(a['owner'])))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getStakes','params':[a['owner']],'signal':a['signal']});}async['getStakesByIds'](a){return a['stakedWowIds']['forEach'](b=>{if(!b||!a7e(a7d(b)))throw new Error('Invalid\x20Wow\x20Stake\x20id\x20'+b);}),await this['transport']['request']({'method':'wx_getStakesByIds','params':[a['stakedWowIds']],'signal':a['signal']});}async['getLatestWowSystemState']({signal:a}={}){return await this['transport']['request']({'method':'wx_getLatestWowSystemState','params':[],'signal':a});}async['queryEvents']({query:a,cursor:b,limit:c,order:d,signal:e}){return await this['transport']['request']({'method':'wx_queryEvents','params':[a,b,c,d==='descending'],'signal':e});}async['devInspectTransactionBlock'](a){return await this['transport']['request']({'method':'w_devInspectTransactionBlock','params':[a['senderAddress'],a['txBytes'],a['gasPrice'],a['epoch'],a['additionalArgs']],'signal':a['signal']});}async['dryRunTransactionBlock'](a){return await this['transport']['request']({'method':'w_dryRunTransactionBlock','params':[a['txBytes']],'signal':a['signal']});}async['getDynamicFields'](a){if(!a['parentId']||!a7e(a7d(a['parentId'])))throw new Error('Invalid\x20Wow\x20Object\x20id');return await this['transport']['request']({'method':'wx_getDynamicFields','params':[a['parentId'],a['cursor'],a['limit']],'signal':a['signal']});}async['getDynamicFieldObject'](a){return await this['transport']['request']({'method':'wx_getDynamicFieldObject','params':[a['parentId'],a['name']],'signal':a['signal']});}async['getLatestCheckpointSequenceNumber']({signal:a}={}){const b=await this['transport']['request']({'method':'w_getLatestCheckpointSequenceNumber','params':[],'signal':a});return String(b);}async['getCheckpoint'](a){return await this['transport']['request']({'method':'w_getCheckpoint','params':[a['id']],'signal':a['signal']});}async['getCheckpoints'](a){return await this['transport']['request']({'method':'w_getCheckpoints','params':[a['cursor'],a?.['limit'],a['descendingOrder']],'signal':a['signal']});}async['getCommitteeInfo'](a){return await this['transport']['request']({'method':'wx_getCommitteeInfo','params':[a?.['epoch']],'signal':a?.['signal']});}async['getEpochs'](a){return await this['transport']['request']({'method':'wx_getEpochs','params':[a?.['cursor'],a?.['limit'],a?.['descendingOrder']],'signal':a?.['signal']});}async['getCurrentEpoch']({signal:a}={}){return await this['transport']['request']({'method':'wx_getCurrentEpoch','params':[],'signal':a});}async['getValidatorsApy']({signal:a}={}){return await this['transport']['request']({'method':'wx_getValidatorsApy','params':[],'signal':a});}async['getChainIdentifier']({signal:a}={}){return toHex(fromBase58((await this['getCheckpoint']({'id':'0','signal':a}))['digest'])['slice'](0x0,0x4));}async['getProtocolConfig'](a){return await this['transport']['request']({'method':'w_getProtocolConfig','params':[a?.['version']],'signal':a?.['signal']});}async['waitForTransaction']({signal:a,timeout:timeout=0x3c*0x3e8,pollInterval:pollInterval=0x2*0x3e8,...b}){const c=AbortSignal['timeout'](timeout),d=new Promise((e,f)=>{c['addEventListener']('abort',()=>f(c['reason']));});d['catch'](()=>{});while(!c['aborted']){a?.['throwIfAborted']();try{return await this['getTransactionBlock'](b);}catch{await Promise['race']([new Promise(e=>setTimeout(e,pollInterval)),d]);}}c['throwIfAborted']();throw new Error('Unexpected\x20error\x20while\x20waiting\x20for\x20transaction\x20block.');}},WowClient=class extends WowJsonRpcClient{constructor(a){super({'url':a['url'],'network':a['network']??'testnet'});}};export{touchWriteClock as a,WowHTTPStatusError as c,formatMoveAbortMessage as d,parseTransactionBcs as f,ClientCache as g,BaseClient as h,isRealtimeWindow as i,WowHTTPTransportError as l,CoreClient as m,WowJsonRpcClient as n,JsonRpcHTTPTransport as o,parseTransactionEffectsBcs as p,isWowJsonRpcClient as r,JsonRpcError as s,WowClient as t,extractStatusFromEffectsBcs as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as a31a}from'./wow-types-DcqbnAaK.mjs';import{r as a31b}from'./logger-Cs5Mf7Mf.mjs';import{PQSessionCipher}from'./w/messenger/pq/session.mjs';import{PQSessionStoreAdapter}from'./w/messenger/pq/store-adapter.mjs';import{DEFAULT_MESSENGER_CONFIG,MessengerError,NORMAL_MESSAGE_BYTES_LIMIT,WTS_FILE_BYTES_LIMIT}from'./w/messenger/types.mjs';import{MessageStorage,SessionStateStorage,getDatabase}from'./w/messenger/storage.mjs';import{base64ToBytes,bytesToBase64,hashPlaintext,verifyMessage}from'./w/messenger/crypto.mjs';import{REPLY_HEADER,buildReplyPlaintext,parseReplyPlaintext}from'./w/messenger/reply.mjs';import{randomBytes}from'@noble/hashes/utils.js';import*as a31c from'path';import*as a31d from'fs';import{createHash}from'crypto';const logger=a31b('messenger:server');var MessengerServerClient=class{constructor(a){this['config']={...DEFAULT_MESSENGER_CONFIG,...a};}async['fetchWithTimeout'](a,b={},c){const d=c??this['config']['requestTimeoutMs']??0x7530,e=new AbortController(),f=setTimeout(()=>e['abort'](),d);try{return await fetch(a,{...b,'signal':e['signal']});}finally{clearTimeout(f);}}async['registerDevice'](a){try{const b=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/register',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](a)});if(!b['ok']){const d=await b['text']();if(b['status']===0x199){if(d['includes']('different\x20key'))throw new MessengerError('IDENTITY_CONFLICT','Identity\x20already\x20exists\x20with\x20different\x20key:\x20'+d);return{'success':!![],'uploadedCount':0x0,'failedPrekeys':[],'currentTotal':0x0,'maxAllowed':0x64};}throw new MessengerError('SERVER_ERROR','Registration\x20failed:\x20'+b['status']+'\x20'+b['statusText']+'\x20-\x20'+d);}const c=await b['json']();if(c['failedPrekeys']&&c['failedPrekeys']['length']>0x0){}return{'success':c['success'],'uploadedCount':c['uploaded_count'],'failedPrekeys':c['failed_prekeys']||[],'currentTotal':c['current_total'],'maxAllowed':c['max_allowed']};}catch(e){if(e instanceof MessengerError)throw e;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20register\x20device',e);}}async['uploadPreKeys'](a){try{const b=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/prekeys/upload',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](a)});if(!b['ok']){const d=await b['text']();throw new MessengerError('SERVER_ERROR','Failed\x20to\x20upload\x20prekeys:\x20'+b['status']+'\x20'+b['statusText']+'\x20-\x20'+d);}const c=await b['json']();if(c['failedPrekeys']&&c['failedPrekeys']['length']>0x0)throw new MessengerError('SERVER_ERROR','Some\x20prekeys\x20failed\x20to\x20upload:\x20'+JSON['stringify'](c['failedPrekeys']));return{'success':c['success'],'uploadedCount':c['uploaded_count'],'failedPrekeys':c['failed_prekeys']||[],'currentTotal':c['current_total'],'maxAllowed':c['max_allowed']};}catch(e){if(e instanceof MessengerError)throw e;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20upload\x20prekeys',e);}}async['fetchRemoteBundle'](a,b,c,d,e){try{const f=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/bundle/'+a,{'headers':{'X-PublicKey':c,'X-SignatureScheme':d['signatureScheme'],'X-Signature':d['signature'],'X-Timestamp':d['timestamp']['toString'](),'X-Nonce':d['nonce']}});if(!f['ok']){if(f['status']===0x194)throw new MessengerError('IDENTITY_NOT_FOUND','User\x20'+a+'\x20not\x20found\x20on\x20server');throw new MessengerError('SERVER_ERROR','Failed\x20to\x20fetch\x20remote\x20bundle:\x20'+f['statusText']);}return await f['json']();}catch(g){if(g instanceof MessengerError)throw g;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20fetch\x20remote\x20bundle',g);}}async['sendMessage'](a){try{const b=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/message',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](a)}),c=await b['json']();if(!b['ok']){const d=new MessengerError('SERVER_ERROR',c?.['error']?.['message']||c?.['message']||b['statusText']);d['guardList']=c?.['error']?.['guard_list']||c?.['guard_list'];throw d;}return c;}catch(e){if(e instanceof MessengerError)throw e;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20send\x20message',e);}}async['pullMessages'](a,b,c,d){try{const e=new URL(this['config']['serverUrl']+'/v1/messages/'+a);if(d!==void 0x0)e['searchParams']['set']('limit',d['toString']());const f=await this['fetchWithTimeout'](e['toString'](),{'headers':{'X-PublicKey':b,'X-SignatureScheme':c['signatureScheme'],'X-Signature':c['signature'],'X-Timestamp':c['timestamp']['toString'](),'X-Nonce':c['nonce']}});if(!f['ok'])throw new MessengerError('SERVER_ERROR','Failed\x20to\x20pull\x20messages:\x20'+f['statusText']);return await f['json']();}catch(g){if(g instanceof MessengerError)throw g;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20pull\x20messages',g);}}async['popPreKey'](a,b){try{const c=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/prekeys/'+a+'/one',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'publicKey':b['publicKey'],'signatureScheme':b['signatureScheme'],'signature':b['signature'],'timestamp':b['timestamp'],'nonce':b['nonce']})});if(c['status']===0x1ad)throw new MessengerError('SERVER_ERROR','Rate\x20limited:\x20too\x20many\x20pop\x20prekey\x20requests');if(c['status']===0x191)throw new MessengerError('SERVER_ERROR','Unauthorized:\x20signature\x20verification\x20failed\x20or\x20address\x20mismatch');if(!c['ok'])throw new MessengerError('SERVER_ERROR','Failed\x20to\x20pop\x20prekey:\x20'+c['statusText']);return await c['json']();}catch(d){if(d instanceof MessengerError)throw d;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20pop\x20prekey',d);}}async['getPrekeyStatus'](a,b,c){try{const d=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/prekeys/'+a+'/status',{'headers':{'X-PublicKey':b,'X-SignatureScheme':c['signatureScheme'],'X-Signature':c['signature'],'X-Timestamp':c['timestamp']['toString'](),'X-Nonce':c['nonce']}});if(!d['ok'])throw new MessengerError('SERVER_ERROR','Failed\x20to\x20get\x20prekey\x20status:\x20'+d['statusText']);const e=await d['json']();return{'currentCount':e['currentCount'],'maxAllowed':e['maxAllowed'],'threshold':e['threshold'],'shouldRefill':e['shouldRefill']};}catch(f){if(f instanceof MessengerError)throw f;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20get\x20prekey\x20status',f);}}async['acknowledgeMessages'](a,b,c){try{const d=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/messages/ack',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'publicKey':c['publicKey'],'messageIds':a,'senderPublicKey':b,'signatureScheme':c['signatureScheme'],'signature':c['signature'],'timestamp':c['timestamp'],'nonce':c['nonce']})});if(!d['ok'])throw new MessengerError('SERVER_ERROR','Failed\x20to\x20acknowledge\x20messages:\x20'+d['statusText']);}catch(e){if(e instanceof MessengerError)throw e;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20acknowledge\x20messages',e);}}async['addToBlacklist'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/blacklist',b,'POST');}async['removeFromBlacklist'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/blacklist',b,'DELETE');}async['clearBlacklist'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/blacklist/clear',b,'POST');}async['getBlacklist'](a,b){try{const c=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/blacklist/get',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](b)});if(!c['ok']){const d=await c['text']();logger['error']('getBlacklist\x20error\x20response:',d);throw new MessengerError('SERVER_ERROR','Failed\x20to\x20get\x20blacklist:\x20'+c['statusText']+'\x20-\x20'+d);}return await c['json']();}catch(e){if(e instanceof MessengerError)throw e;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20get\x20blacklist',e);}}async['existInBlacklist'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/blacklist/exist',b,'POST');}async['addToFriendsList'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/friends-list',b,'POST');}async['removeFromFriendsList'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/friends-list',b,'DELETE');}async['clearFriendsList'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/friends-list/clear',b,'POST');}async['getFriendsList'](a,b){try{const c=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/friends-list/get',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](b)});if(!c['ok'])throw new MessengerError('SERVER_ERROR','Failed\x20to\x20get\x20friends\x20list:\x20'+c['statusText']);return await c['json']();}catch(d){if(d instanceof MessengerError)throw d;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20get\x20friends\x20list',d);}}async['existInFriendsList'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/friends-list/exist',b,'POST');}async['addToGuardList'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/guard-list',b,'POST');}async['removeFromGuardList'](a,b){return this['_listOperation'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/guard-list',b,'DELETE');}async['getGuardList'](a,b){try{const c=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/guard-list/get',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](b)});if(!c['ok'])throw new MessengerError('SERVER_ERROR','Failed\x20to\x20get\x20guard\x20list:\x20'+c['statusText']);return await c['json']();}catch(d){if(d instanceof MessengerError)throw d;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20get\x20guard\x20list',d);}}async['updateSettings'](a,b){try{const c=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/settings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](b)});if(!c['ok']){const d=await c['text']();throw new MessengerError('SERVER_ERROR','Failed\x20to\x20update\x20settings:\x20'+c['statusText']+'\x20-\x20'+d);}return(await c['json']())['success'];}catch(e){if(e instanceof MessengerError)throw e;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20update\x20settings',e);}}async['getSettings'](a,b){try{const c=await this['fetchWithTimeout'](this['config']['serverUrl']+'/v1/spam-protection/'+a+'/settings/get',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](b)});if(!c['ok']){const d=await c['text']();throw new MessengerError('SERVER_ERROR','Failed\x20to\x20get\x20settings:\x20'+c['statusText']+'\x20-\x20'+d);}return await c['json']();}catch(e){if(e instanceof MessengerError)throw e;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20get\x20settings',e);}}async['_listOperation'](a,b,c='POST'){try{const d=await this['fetchWithTimeout'](a,{'method':c,'headers':{'Content-Type':'application/json'},'body':JSON['stringify'](b)});if(!d['ok']){const e=await d['text']();throw new MessengerError('SERVER_ERROR','List\x20operation\x20failed:\x20'+d['statusText']+'\x20-\x20'+e);}return await d['json']();}catch(f){if(f instanceof MessengerError)throw f;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20perform\x20list\x20operation',f);}}};new MessengerServerClient();async function getAccount$1(){const {Account:a}=await import('./w/local/account.mjs');return a['Instance']();}var MessengerSession=class{constructor(a,b){this['identity']=null,this['config']={...DEFAULT_MESSENGER_CONFIG,...b},this['serverClient']=new MessengerServerClient(this['config']),this['userAddress']=a;const c=getDatabase(a);this['pqStore']=new PQSessionStoreAdapter(c,a),this['pqCipher']=new PQSessionCipher(this['pqStore'],async()=>{return(await(await getAccount$1())['deriveX25519Identity'](a))['falcon512KeyPair'];});}get['store'](){return this['pqStore'];}get['cipher'](){return this['pqCipher'];}async['ensureIdentity'](a){if(this['identity'])return this['identity'];const b=await this['pqStore']['getIdentityKeyPair'](),c=await this['pqStore']['getRegistrationId']();if(b&&c)return this['identity']={'x25519KeyPair':b,'registrationId':c},this['identity'];const d=await(await getAccount$1())['deriveX25519Identity'](this['userAddress']);return await this['pqStore']['setIdentityKeyPair'](d['x25519KeyPair']),await this['pqStore']['setRegistrationId'](d['registrationId']),this['identity']={'x25519KeyPair':d['x25519KeyPair'],'registrationId':d['registrationId']},this['identity'];}['deriveRegistrationId'](a){const b=a[0x0]<<0x8|a[0x1];return b===0x0?0x1:b;}async['registerDevice'](a){const b=await this['ensureIdentity'](a),c=0x1,d=0x1;let e,f;const g=await this['pqStore']['getSignedPreKeySignature'](c),h=await this['pqStore']['getSignedPreKey'](c),i=await this['pqStore']['getPQPreKey'](d),j=await this['pqStore']['getPQPreKeySignature'](d);if(h&&g&&i&&j)e=h['publicKey'],f=g;else{const u=await this['pqCipher']['generatePreKeyBundle'](c,d,this['config']['prekey_count']);e=u['signedPreKey']['keyPair']['publicKey'],f=u['signedPreKey']['signature'];}const k=await this['generatePreKeyBatch'](this['config']['prekey_count'],a),l=await(await getAccount$1())['get'](a,![],!![]);if(!l?.['pubkey'])throw new MessengerError('IDENTITY_NOT_FOUND','Account\x20not\x20found\x20for\x20'+a);const m=Date['now'](),n=this['generateNonce'](),o='register:'+l['pubkey']+':'+m+':'+n,p=await(await getAccount$1())['signData'](a,o),q=Buffer['from'](p['signature']['slice'](0x2),'hex'),r=await this['pqStore']['getPQPreKey'](d),s=await this['pqStore']['getPQPreKeySignature'](d),t={'userAddress':a,'deviceId':0x1,'registrationId':b['registrationId'],'identityKey':bytesToBase64(b['x25519KeyPair']['publicKey']),'falcon512PublicKey':bytesToBase64(base64ToBytes(l['pubkey'])['slice'](0x1)),'signedPrekey':{'keyId':c,'publicKey':bytesToBase64(e),'signature':bytesToBase64(f)},'prekeys':k,'publicKey':l['pubkey'],'signatureScheme':'Falcon512','signature':bytesToBase64(q),'timestamp':m,'nonce':n};if(r&&s)t['pqPrekey']={'keyId':d,'publicKey':bytesToBase64(r['publicKey']),'signature':bytesToBase64(s)};if(h){let v=bytesToBase64(h['publicKey']);try{const z=Date['now'](),A=this['generateNonce'](),B='get_bundle:'+a+':'+z+':'+A,C=await(await getAccount$1())['signData'](a,B),D=Buffer['from'](C['signature']['slice'](0x2),'hex'),E=await this['serverClient']['fetchRemoteBundle'](a,a,l['pubkey'],{'signatureScheme':'Falcon512','signature':bytesToBase64(new Uint8Array(D)),'timestamp':z,'nonce':A});if(E?.['signedPrekey']?.['publicKey'])v=E['signedPrekey']['publicKey'];}catch{}const w=new TextEncoder()['encode'](v),x=await(await getAccount$1())['signData'](a,w),y=Buffer['from'](x['signature']['slice'](0x2),'hex');t['oldSignedPrekeySignature']=bytesToBase64(new Uint8Array(y));}await this['serverClient']['registerDevice'](t),await this['verifyRegistrationComplete'](a);}async['verifyRegistrationComplete'](a,b=0xa,c=0x1f4){for(let d=0x0;d<b;d++)try{const e=await(await getAccount$1())['get'](a,![],!![]);if(!e?.['pubkey'])throw new MessengerError('IDENTITY_NOT_FOUND','Account\x20not\x20found\x20for\x20'+a);const f=Date['now'](),g=this['generateNonce'](),h='prekey_status:'+a+':'+f+':'+g,j=await(await getAccount$1())['signData'](a,h),k=Buffer['from'](j['signature']['slice'](0x2),'hex');await this['serverClient']['getPrekeyStatus'](a,e['pubkey'],{'signatureScheme':'Falcon512','signature':bytesToBase64(new Uint8Array(k)),'timestamp':f,'nonce':g});return;}catch(l){if(l?.['message']?.['includes']('404')||l?.['status']===0x194){if(d<b-0x1){await new Promise(m=>setTimeout(m,c));continue;}}throw l;}throw new MessengerError('REGISTRATION_FAILED','Registration\x20verification\x20failed\x20after\x20'+b+'\x20attempts');}async['isDeviceRegistered'](a){try{if(!await this['pqStore']['getSignedPreKeySignature'](0x1))return![];const b=await(await getAccount$1())['get'](a,![],!![]);if(!b?.['pubkey'])return![];const c=Date['now'](),d=this['generateNonce'](),e='prekey_status:'+a+':'+c+':'+d,f=await(await getAccount$1())['signData'](a,e),g=Buffer['from'](f['signature']['slice'](0x2),'hex');return await this['serverClient']['getPrekeyStatus'](a,b['pubkey'],{'signatureScheme':'Falcon512','signature':bytesToBase64(new Uint8Array(g)),'timestamp':c,'nonce':d}),!![];}catch(h){if(h?.['message']?.['includes']('404')||h?.['status']===0x194)return![];return![];}}async['generatePreKeyBatch'](a,b){if(a<=0x0)return[];const c=[],{generateX25519KeyPair:d}=await import('./w/messenger/pq/crypto.mjs'),e=randomBytes(0x4),f=(e[0x0]<<0x18|e[0x1]<<0x10|e[0x2]<<0x8|e[0x3])&0x7fffff00;for(let g=0x0;g<a;g++){const h=f+g,j=await this['pqStore']['getOneTimePreKey'](h);if(j){const n=bytesToBase64(j['publicKey']),o=await(await getAccount$1())['signData'](b,j['publicKey']),p=Buffer['from'](o['signature']['slice'](0x2),'hex');c['push']({'keyId':h,'publicKey':n,'signature':bytesToBase64(p)});continue;}const k=d(),l=await(await getAccount$1())['signData'](b,k['publicKey']),m=Buffer['from'](l['signature']['slice'](0x2),'hex');await this['pqStore']['setOneTimePreKey'](h,k),c['push']({'keyId':h,'publicKey':bytesToBase64(k['publicKey']),'signature':bytesToBase64(m)});}return c;}async['ensurePreKeys'](a,b=![]){const c=await(await getAccount$1())['get'](a,![],!![]);if(!c?.['pubkey'])throw new MessengerError('IDENTITY_NOT_FOUND','Account\x20not\x20found\x20for\x20'+a);const d=Date['now'](),e=this['generateNonce'](),f='prekey_status:'+a+':'+d+':'+e,g=await(await getAccount$1())['signData'](a,f),h=Buffer['from'](g['signature']['slice'](0x2),'hex'),i=await this['serverClient']['getPrekeyStatus'](a,c['pubkey'],{'signatureScheme':'Falcon512','signature':bytesToBase64(new Uint8Array(h)),'timestamp':d,'nonce':e});if(!b&&i['currentCount']>=i['maxAllowed'])return;const j=i['maxAllowed']-i['currentCount'];if(j<=0x0)return;await this['ensureIdentity'](a);const k=await this['generatePreKeyBatch'](j,a);if(k['length']===0x0)return;const l=Date['now'](),m=this['generateNonce'](),n='upload_prekeys:'+c['pubkey']+':'+l+':'+m,o=await(await getAccount$1())['signData'](a,n),p=Buffer['from'](o['signature']['slice'](0x2),'hex');await this['serverClient']['uploadPreKeys']({'userAddress':a,'prekeys':k,'publicKey':c['pubkey'],'signatureScheme':'Falcon512','signature':bytesToBase64(p),'timestamp':l,'nonce':m});}['generateNonce'](){const a=new Uint8Array(0x10);return crypto['getRandomValues'](a),Array['from'](a,c=>c['toString'](0x10)['padStart'](0x2,'0'))['join']('');}async['establishSession'](a,b,c=0x1,d){if(await this['pqCipher']['hasSession'](b,c))return;if(!d){const k=await(await getAccount$1())['get'](a,![],!![]);if(!k?.['pubkey'])throw new MessengerError('IDENTITY_NOT_FOUND','Account\x20not\x20found\x20for\x20'+a);const l=Date['now'](),m=this['generateNonce'](),n=k['pubkey'],o='get_bundle:'+a+':'+l+':'+m,p=await(await getAccount$1())['signData'](a,o),q=Buffer['from'](p['signature']['slice'](0x2),'hex');d=await this['serverClient']['fetchRemoteBundle'](b,a,n,{'signatureScheme':'Falcon512','signature':bytesToBase64(new Uint8Array(q)),'timestamp':l,'nonce':m},c);}const e=d['signedPrekey'];if(!e)throw new MessengerError('IDENTITY_NOT_FOUND','No\x20signed\x20prekey\x20available\x20for\x20'+b);const f=base64ToBytes(d['identityKey']),g=d['falcon512PublicKey']?base64ToBytes(d['falcon512PublicKey']):f,h=base64ToBytes(e['publicKey']),i=base64ToBytes(e['signature']),j={'registrationId':d['registrationId'],'deviceId':c,'identityKey':f,'falcon512PublicKey':g,'signedPreKey':{'keyId':e['keyId'],'publicKey':h,'signature':i},'pqPreKey':d['pqPrekey']?{'keyId':d['pqPrekey']['keyId'],'publicKey':base64ToBytes(d['pqPrekey']['publicKey']),'signature':base64ToBytes(d['pqPrekey']['signature'])}:void 0x0};if(d['oneTimePrekey']){const r=base64ToBytes(d['oneTimePrekey']['publicKey']);j['oneTimePreKey']={'keyId':d['oneTimePrekey']['keyId'],'publicKey':r};}if(d['pqPrekey']){const s=base64ToBytes(d['pqPrekey']['publicKey']),t=base64ToBytes(d['pqPrekey']['signature']);j['pqPreKey']={'keyId':d['pqPrekey']['keyId'],'publicKey':s,'signature':t};}await this['pqCipher']['processPreKeyBundle'](b,c,j);}async['encryptMessage'](a,b,c,d=0x1){let e=0x0;const f=0x5;while(e<=f)try{if(!await this['pqCipher']['hasSession'](b,d))await this['establishSession'](a,b,d);const g=new TextEncoder()['encode'](c),h=await this['pqCipher']['encryptMessage'](b,g,d);return{'type':h['type'],'body':h['body']['buffer'],'registrationId':h['registrationId']};}catch(i){if(e>=f)throw i;try{await this['pqStore']['removeSession'](b,d),e++,await new Promise(j=>setTimeout(j,0x64));}catch(j){throw i;}}throw new MessengerError('ENCRYPTION_FAILED','Encryption\x20failed\x20after\x20multiple\x20attempts');}async['decryptMessage'](a,b,c,d,e=0x1){const f=new TextDecoder(),g=new Uint8Array(c);let h=0x0;const i=0x5,j=await this['pqCipher']['hasSession'](b,e);if(d!==0x3&&!j)throw new Error('收到\x20WHISPER_MESSAGE\x20但无现有会话,需要等待\x20PREKEY_MESSAGE');while(h<=i)try{let k;if(d===0x3)try{return k=await this['pqCipher']['decryptMessage'](b,g,e),f['decode'](k);}catch(l){if(j&&h===0x0){if(a['toLowerCase']()<b['toLowerCase']())throw new Error('PREKEY\x20竞争:我的地址较小,保留我的会话');else return await this['pqStore']['removeSession'](b,e),k=await this['pqCipher']['decryptMessage'](b,g,e),f['decode'](k);}else throw l;}else k=await this['pqCipher']['decryptMessage'](b,g,e);return f['decode'](k);}catch(m){if(h>=i)throw m;try{if(j)await this['pqStore']['removeSession'](b,e);if(d===0x3){}h++,await new Promise(n=>setTimeout(n,0x64));}catch(n){throw m;}}throw new MessengerError('DECRYPTION_FAILED','Decryption\x20failed\x20after\x20multiple\x20attempts');}async['getIdentityKey'](){return bytesToBase64((await this['ensureIdentity']())['x25519KeyPair']['publicKey']);}async['getRegistrationId'](){return(await this['ensureIdentity']())['registrationId'];}},SessionStateManager=class{constructor(a){this['store']=a;}async['snapshotSession'](a,b){const c=await this['store']['getSession'](a,b);return{'sessionData':c?JSON['stringify'](c):null,'timestamp':Date['now']()};}async['rollbackSession'](a,b,c){if(c['sessionData']){const d=JSON['parse'](c['sessionData']);await this['store']['setSession'](a,b,d);}else await this['store']['removeSession'](a,b);}async['commitSession'](a,b){}},DecryptionEngine=class{constructor(a,b){this['store']=a,this['cipher']=new PQSessionCipher(a,b),this['sessionManager']=new SessionStateManager(a);}async['decryptMessage'](a,b,c,d,e=0x1){const f=await this['sessionManager']['snapshotSession'](b,e);try{if(d===0x3)return await this['handlePreKeyMessage'](a,b,c,e,f);else return await this['handleWhisperMessage'](a,b,c,e,f);}catch(g){return await this['sessionManager']['rollbackSession'](b,e,f),{'success':![],'sessionUpdated':![],'sessionRolledBack':!![],'messageType':d===0x3?'PREKEY':'WHISPER','error':g instanceof Error?g['message']:String(g)};}}async['handlePreKeyMessage'](a,b,c,d,e){const f=new TextDecoder(),g=new Uint8Array(c),h=await this['cipher']['decryptMessage'](b,g,d),i=f['decode'](h);await this['sessionManager']['commitSession'](b,d);if(a['toLowerCase']()<b['toLowerCase']()){}return{'success':!![],'plaintext':i,'sessionUpdated':!![],'sessionRolledBack':![],'messageType':'PREKEY'};}async['handleWhisperMessage'](a,b,c,d,e){if(!await this['cipher']['hasSession'](b,d))throw new Error('No\x20session\x20for\x20WHISPER_MESSAGE');const f=new TextDecoder(),g=new Uint8Array(c),h=await this['cipher']['decryptMessage'](b,g,d);return{'success':!![],'plaintext':f['decode'](h),'sessionUpdated':!![],'sessionRolledBack':![],'messageType':'WHISPER'};}};function canonicalizeJson(a){if(a===void 0x0)return'null';if(a===null||typeof a!=='object')return JSON['stringify'](a);if(Array['isArray'](a))return'['+a['map'](canonicalizeJson)['join'](',')+']';const b=a;return'{'+Object['keys'](b)['sort']()['filter'](c=>b[c]!==void 0x0)['map'](c=>'\x22'+c+'\x22:'+canonicalizeJson(b[c]))['join'](',')+'}';}async function getAccount(){const {Account:a}=await import('./w/local/account.mjs');return a['Instance']();}var Messenger=class{constructor(a,b){this['userAddress']=null,this['onMessageCallback']=null,this['pollingTimer']=null,this['messageConsecutiveEmptyPulls']=0x0,this['prekeyConsecutiveOkCount']=0x0,this['isPollingRunning']=![],this['waitingMessages']=new Map(),this['failedMessages']=new Map(),this['waitingMessageRetries']=new Map(),this['sendPromise']=Promise['resolve'](),this['userAddress']=a,this['config']={...DEFAULT_MESSENGER_CONFIG,...b},this['session']=new MessengerSession(a,this['config']),this['serverClient']=new MessengerServerClient(this['config']),this['messageStorage']=new MessageStorage(a),this['sessionStateStorage']=new SessionStateStorage(a),this['decryptionEngine']=new DecryptionEngine(this['session']['store'],async()=>{return(await(await getAccount())['deriveX25519Identity'](a))['falcon512KeyPair'];}),this['currentMessageInterval']=this['config']['message_poll_default_interval_ms']??0x168*0x3e8;}['getUserAddress'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');return this['userAddress'];}async['getPublicKey'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');return(await(await getAccount())['get'](this['userAddress'],![],!![]))?.['pubkey']||'';}['isValidGuardMessage'](a,b){return Boolean(a&&b&&a31a(a)&&a31a(b));}async['generateSignatureParams'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const b=await(await getAccount())['get'](this['userAddress'],![]);if(!b?.['secret'])throw new MessengerError('IDENTITY_NOT_FOUND','Account\x20not\x20found\x20or\x20no\x20secret\x20key\x20for\x20'+this['userAddress']);const {Falcon512Keypair:c}=await import('./keypairs/falcon512/index.mjs'),d=c['fromSecretKey'](b['secret']),e=d['getPublicKey']()['toWowPublicKey'](),f=Date['now'](),g=this['generateNonce'](),h=a+':'+e+':'+f+':'+g,i=await d['sign'](new TextEncoder()['encode'](h));return{'signatureScheme':'Falcon512','signature':Buffer['from'](i)['toString']('base64'),'timestamp':f,'nonce':g};}['generateNonce'](){const a=new Uint8Array(0x10);return crypto['getRandomValues'](a),Array['from'](a,c=>c['toString'](0x10)['padStart'](0x2,'0'))['join']('');}async['initialize'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');await this['session']['ensureIdentity'](this['userAddress']),await this['session']['registerDevice'](this['userAddress']),await this['session']['ensurePreKeys'](this['userAddress']),await this['checkAndRefillPrekeys'](),this['startPollingTimer']();}async['checkAndRefillPrekeys'](){if(!this['userAddress'])return;await this['session']['ensurePreKeys'](this['userAddress'],![]);}['startPollingTimer'](){if(this['pollingTimer'])clearTimeout(this['pollingTimer']);this['isPollingRunning']=!![],this['scheduleNextPoll']();}['stopPollingTimer'](){this['isPollingRunning']=![],this['pollingTimer']&&(clearTimeout(this['pollingTimer']),this['pollingTimer']=null);}['scheduleNextPoll'](){if(!this['isPollingRunning'])return;const a=this['getNextPollInterval']();this['pollingTimer']=setTimeout(()=>{this['poll']()['catch'](b=>{})['finally'](()=>{this['scheduleNextPoll']();});},a);}['getNextPollInterval'](){if(this['waitingMessages']['size']>0x0)return this['config']['message_poll_waiting_interval_ms']??0x3*0x3e8;return this['currentMessageInterval'];}async['poll'](){if(!this['userAddress'])return;try{const a=await this['pullMessages']();if(a['messages']['length']>0x0){this['messageConsecutiveEmptyPulls']=0x0,this['currentMessageInterval']=this['config']['message_poll_fast_interval_ms']??0x6*0x3e8;if(this['onMessageCallback'])this['onMessageCallback'](a['messages']);}else this['messageConsecutiveEmptyPulls']++,this['messageConsecutiveEmptyPulls']>=(this['config']['message_poll_consecutive_empty_limit']??0x3)&&(this['currentMessageInterval']=this['config']['message_poll_default_interval_ms']??0x168*0x3e8,this['messageConsecutiveEmptyPulls']=0x0);if(a['prekey_status']){if(a['prekey_status']['shouldRefill'])this['prekeyConsecutiveOkCount']=0x0,await this['checkAndRefillPrekeys']();else{this['prekeyConsecutiveOkCount']++;if(this['prekeyConsecutiveOkCount']>=(this['config']['prekey_poll_consecutive_ok_limit']??0x3))this['prekeyConsecutiveOkCount']=0x0;}}}catch(b){}}['triggerFastPoll'](){this['currentMessageInterval']=this['config']['message_poll_fast_interval_ms']??0x6*0x3e8,this['messageConsecutiveEmptyPulls']=0x0;if(this['isPollingRunning']){if(this['pollingTimer'])clearTimeout(this['pollingTimer']);this['scheduleNextPoll']();}}async['sendMessage'](a,b,c){const d=this['sendPromise'];let e;this['sendPromise']=new Promise(f=>{e=f;}),await d;try{if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');if(c?.['replyTo']){const B=this['messageStorage']['getMessageById'](c['replyTo']['messageId']);if(!B)throw new MessengerError('INVALID_INPUT','sendMessage.replyTo.messageId\x20'+c['replyTo']['messageId']+'\x20not\x20found\x20in\x20local\x20storage');const C=this['userAddress']['toLowerCase'](),D=a['toLowerCase'](),E=B['fromAddress']['toLowerCase'](),F=B['toAddress']['toLowerCase']();if(!(E===C&&F===D||E===D&&F===C))throw new MessengerError('INVALID_INPUT','sendMessage.replyTo.messageId\x20'+c['replyTo']['messageId']+'\x20does\x20not\x20belong\x20to\x20this\x20conversation');}else{if(b['startsWith']('@REPLY@'))throw new MessengerError('INVALID_INPUT','Message\x20content\x20cannot\x20start\x20with\x20the\x20reserved\x20prefix\x20\x22'+REPLY_HEADER+'\x22.\x20Use\x20the\x20reply\x20feature\x20to\x20send\x20a\x20quoted\x20message,\x20or\x20rephrase\x20your\x20content.');}const f=Date['now'](),g=Date['now'](),h=this['generateNonce'](),i=c?.['replyTo']?buildReplyPlaintext(b,c['replyTo']):b,j=new TextEncoder()['encode'](i)['length'];if(j>0x2800)throw new MessengerError('INVALID_INPUT','Message\x20size\x20('+j+'\x20bytes)\x20exceeds\x20maximum\x20allowed\x20size\x20('+NORMAL_MESSAGE_BYTES_LIMIT+'\x20bytes).\x20Consider\x20using\x20sendZipFile\x20for\x20large\x20content.');await this['pullMessages']();const k=this['messageStorage']['getLastReceivedLeafIndex'](this['userAddress'],a),l=await this['session']['encryptMessage'](this['userAddress'],a,i),m=Buffer['from'](new Uint8Array(l['body']))['toString']('base64'),n=hashPlaintext(i,f,c?.['guardAddress'],c?.['passportAddress'],k),o=await(await getAccount())['get'](this['userAddress'],![],!![]);if(!o)throw new MessengerError('IDENTITY_NOT_FOUND','User\x20account\x20not\x20found');const p=o['pubkey'],q=c?.['guardAddress']||'',r=c?.['passportAddress']||'',s=c?.['network']||'',t=k>=0x0?k['toString']():'',u=c?.['force']?'true':'false',v='send_message:'+this['userAddress']+':'+a+':'+q+':'+r+':'+n+':'+t+':'+p+':'+g+':'+h+':'+u+':'+s,w=await(await getAccount())['signData'](this['userAddress'],v),x=Buffer['from'](w['signature']['slice'](0x2),'hex'),y=bytesToBase64(new Uint8Array(x)),z=await this['serverClient']['sendMessage']({'sender':w['publicKey'],'recipient':a,'ciphertext':m,'plaintextHash':n,'clientTimestamp':f,'msgType':l['type'],'signatureScheme':'Falcon512','signature':y,'timestamp':g,'nonce':h,'guardAddress':c?.['guardAddress'],'passportAddress':c?.['passportAddress'],'network':c?.['network'],'force':c?.['force'],'lastReceivedLeafIndex':k>=0x0?k:void 0x0}),A={'messageId':z['messageId'],'fromAddress':this['userAddress'],'toAddress':a,'plaintextHash':n,'plaintext':i,'replyTo':c?.['replyTo'],'guardAddress':c?.['guardAddress'],'passportAddress':c?.['passportAddress'],'lastReceivedLeafIndex':k,'direction':'sent','status':z['status']==='confirmed'?'confirmed':'pending','msgType':l['type'],'createdAt':f};z['merkleData']&&(A['leafIndex']=z['merkleData']['leafIndex'],A['prevRoot']=z['merkleData']['prevRoot'],A['newRoot']=z['merkleData']['newRoot'],A['serverSignature']=z['merkleData']['serverSignature'],A['serverTimestamp']=z['merkleData']['serverTimestamp'],A['serverPublicKey']=z['merkleData']['serverPublicKey'],this['sessionStateStorage']['updateSessionState'](this['userAddress'],a,{'currentRoot':z['merkleData']['newRoot'],'prevRoot':z['merkleData']['prevRoot'],'lastLeafIndex':z['merkleData']['leafIndex'],'lastSyncAt':Date['now']()}));this['messageStorage']['saveMessage'](A);if(z['pendingMerkleData'])for(const [G,H]of Object['entries'](z['pendingMerkleData'])){const I=this['messageStorage']['getMessage'](G);if(I&&I['status']==='pending')this['messageStorage']['updateMessageStatus'](G,'confirmed',{'leafIndex':H['leafIndex'],'newRoot':H['newRoot'],'serverSignature':H['serverSignature'],'serverTimestamp':H['serverTimestamp'],'serverPublicKey':H['serverPublicKey']});}return this['triggerFastPoll'](),{'messageId':z['messageId'],'status':A['status'],'merkleData':z['merkleData'],'guardList':z['guard_list'],'lastReceivedLeafIndex':k>=0x0?k:void 0x0};}finally{e();}}async['pullMessages'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const b=Date['now'](),c=this['generateNonce'](),d='fetch_messages:'+this['userAddress']+':'+(a||0x64)+':'+b+':'+c,e=(await(await getAccount())['get'](this['userAddress'],![],!![]))?.['pubkey']||'',f=await(await getAccount())['signData'](this['userAddress'],d),g={'signatureScheme':'Falcon512','signature':bytesToBase64(Buffer['from'](f['signature']['slice'](0x2),'hex')),'timestamp':b,'nonce':c},h=await this['serverClient']['pullMessages'](this['userAddress'],e,g,a);if(h['messages']['length']===0x0)return{'messages':[],'prekey_status':h['prekey_status']};const i=[],j=[],k=[...h['messages']]['sort'](function(l,m){return(l['clientTimestamp']||0x0)-(m['clientTimestamp']||0x0);});await this['processWaitingMessages'](i,j);for(const l of k){if(this['waitingMessages']['has'](l['id'])){j['push'](l['id']);continue;}if(this['failedMessages']['has'](l['id'])){j['push'](l['id']);continue;}if(this['messageStorage']['getMessage'](l['id'])){j['push'](l['id']);continue;}const m=await this['tryDecryptMessage'](l);if(m['success']&&m['message']&&m['decryptedData'])this['messageStorage']['saveMessage'](m['message']),i['push'](m['decryptedData']),j['push'](l['id']),this['waitingMessages']['delete'](l['id']);else{if(m['shouldRetry'])this['waitingMessages']['set'](l['id'],l);else this['failedMessages']['set'](l['id'],{'message':l,'error':m['error']||'Unknown\x20error'}),await this['saveFailedMessage'](l,m['error']||'Unknown\x20error'),j['push'](l['id']);}}if(this['waitingMessages']['size']>0x0&&this['isPollingRunning'])this['reschedulePolling']();if(j['length']>0x0&&this['userAddress']){const n=Date['now'](),o=this['generateNonce'](),p=await(await getAccount())['get'](this['userAddress'],![],!![]);if(p?.['pubkey']){const q='ack_messages:'+this['userAddress']+':'+j['join'](',')+':'+p['pubkey']+':'+n+':'+o,r=await(await getAccount())['signData'](this['userAddress'],q),s=Buffer['from'](r['signature']['slice'](0x2),'hex'),t=bytesToBase64(new Uint8Array(s));await this['serverClient']['acknowledgeMessages'](j,r['publicKey'],{'publicKey':r['publicKey'],'signatureScheme':'Falcon512','signature':t,'timestamp':n,'nonce':o});}}return{'messages':i,'prekey_status':h['prekey_status']};}['getLastSentLeafIndex'](a){if(!this['userAddress'])return-0x1;const b=this['messageStorage']['getMessagesBySession'](this['userAddress'],a)['filter'](c=>c['direction']==='sent'&&c['leafIndex']!==void 0x0);if(b['length']===0x0)return-0x1;return Math['max'](...b['map'](c=>c['leafIndex']));}['getSessionMessages'](a){if(!this['userAddress'])return[];return this['messageStorage']['getMessagesBySession'](this['userAddress'],a);}['getSessionState'](a){if(!this['userAddress'])return;return this['sessionStateStorage']['getSessionState'](this['userAddress'],a);}async['submitChainProof'](a,b,c){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const d=this['sessionStateStorage']['getSessionState'](this['userAddress'],b);if(!d||!d['currentRoot'])throw new MessengerError('SESSION_NOT_ESTABLISHED','No\x20session\x20state\x20found');const e=this['messageStorage']['getMessagesBySession'](this['userAddress'],b),f=e[e['length']-0x1];if(!f||!f['serverPublicKey']||!f['serverSignature'])throw new MessengerError('INVALID_PROOF','No\x20temporal\x20proof\x20(missing\x20server\x20public\x20key\x20or\x20signature),\x20cannot\x20submit\x20Proof\x20to\x20WoWok\x20blockchain');const g=f['serverPublicKey'],h=f['serverSignature'],i={'sessionId':d['sessionId'],'merkleRoot':d['currentRoot'],'messageCount':d['messageCount'],'timestamp':Date['now']()},{CallProof:j}=await import('./proof-BZIhxZT6.mjs')['then'](l=>l['r']),k=await new j({'proof':JSON['stringify'](i),'server_pubkey':g,'server_signature':h,'proof_type':0x1,'description':c||'Messenger\x20session\x20proof\x20for\x20'+this['userAddress']+'\x20<->\x20'+b,'item_count':d['messageCount'],'about_address':b})['call'](a);return{'proofAddress':(k?.['objectChanges'])?.['find'](l=>l['objectType']?.['includes']('Proof'))?.['objectId']||'','txHash':k?.['digest']||''};}['destroy'](){this['stopPollingTimer']();}['disconnect'](){this['destroy']();}['setOnMessageCallback'](a){this['onMessageCallback']=a;}async['sendZipFile'](a,b,c){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const d=await this['loadFileData'](b),{ZipWriter:e,BlobWriter:f,Uint8ArrayReader:g}=await import('@zip.js/zip.js'),h=c?.['fileName']||a31c['basename'](b)||'file.zip',i=c?.['contentType']||this['detectContentType'](h),j=new f('application/zip'),k=new e(j);await k['add'](h,new g(d)),await k['close']();const l=await j['getData'](),m=new Uint8Array(await l['arrayBuffer']());if(m['length']>0x500000)throw new MessengerError('INVALID_INPUT','ZIP\x20file\x20size\x20('+m['length']+'\x20bytes)\x20exceeds\x20local\x20maximum\x20allowed\x20size\x20('+WTS_FILE_BYTES_LIMIT+'\x20bytes)');const n='0x'+createHash('sha256')['update'](m)['digest']('hex'),o=Buffer['from'](m)['toString']('base64'),p={'fileName':h+'.zip','fileSize':m['length'],'fileHash':n,'contentType':i};await this['pullMessages']();const q=this['messageStorage']['getLastReceivedLeafIndex'](this['userAddress'],a),r=Date['now'](),s=await this['session']['encryptMessage'](this['userAddress'],a,o),t=Buffer['from'](new Uint8Array(s['body']))['toString']('base64'),u=c?.['guardAddress']||'',v=c?.['passportAddress']||'',w=c?.['network']||'',x=hashPlaintext(o,r,u,v,q),y=Date['now'](),z=this['generateNonce'](),A=await(await getAccount())['get'](this['userAddress'],![],!![]);if(!A)throw new MessengerError('IDENTITY_NOT_FOUND','User\x20account\x20not\x20found');const B=A['pubkey'],C=q>=0x0?q['toString']():'',D=c?.['force']?'true':'false',E='send_message:'+this['userAddress']+':'+a+':'+u+':'+v+':'+x+':'+C+':'+B+':'+y+':'+z+':'+D+':'+w,F=await(await getAccount())['signData'](this['userAddress'],E),G=Buffer['from'](F['signature']['slice'](0x2),'hex'),H=bytesToBase64(new Uint8Array(G)),I=await this['serverClient']['sendMessage']({'sender':F['publicKey'],'recipient':a,'ciphertext':t,'plaintextHash':x,'clientTimestamp':r,'msgType':s['type'],'zipMetadata':p,'guardAddress':c?.['guardAddress'],'passportAddress':c?.['passportAddress'],'network':c?.['network'],'force':c?.['force'],'lastReceivedLeafIndex':q>=0x0?q:void 0x0,'signatureScheme':'Falcon512','signature':H,'timestamp':y,'nonce':z}),J={'messageId':I['messageId'],'fromAddress':this['userAddress'],'toAddress':a,'plaintextHash':x,'plaintext':o,'guardAddress':c?.['guardAddress'],'passportAddress':c?.['passportAddress'],'lastReceivedLeafIndex':q,'direction':'sent','status':I['status']==='confirmed'?'confirmed':'pending','msgType':s['type'],'zipMetadata':p,'createdAt':r};I['merkleData']&&(J['leafIndex']=I['merkleData']['leafIndex'],J['prevRoot']=I['merkleData']['prevRoot'],J['newRoot']=I['merkleData']['newRoot'],J['serverSignature']=I['merkleData']['serverSignature'],J['serverTimestamp']=I['merkleData']['serverTimestamp'],J['serverPublicKey']=I['merkleData']['serverPublicKey'],this['sessionStateStorage']['updateSessionState'](this['userAddress'],a,{'currentRoot':I['merkleData']['newRoot'],'prevRoot':I['merkleData']['prevRoot'],'lastLeafIndex':I['merkleData']['leafIndex'],'lastSyncAt':Date['now']()}));this['messageStorage']['saveMessage'](J);if(I['pendingMerkleData'])for(const [K,L]of Object['entries'](I['pendingMerkleData'])){const M=this['messageStorage']['getMessage'](K);if(M&&M['status']==='pending')this['messageStorage']['updateMessageStatus'](K,'confirmed',{'leafIndex':L['leafIndex'],'newRoot':L['newRoot'],'serverSignature':L['serverSignature'],'serverTimestamp':L['serverTimestamp'],'serverPublicKey':L['serverPublicKey']});}return this['triggerFastPoll'](),{'messageId':I['messageId'],'status':J['status'],'merkleData':I['merkleData'],'guardList':I['guard_list'],'lastReceivedLeafIndex':q>=0x0?q:void 0x0};}async['loadFileData'](a){if(a['startsWith']('http://')||a['startsWith']('https://')){const d=await fetch(a);if(!d['ok'])throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20fetch\x20file\x20from\x20'+a+':\x20'+d['statusText']);const e=await d['arrayBuffer']();return new Uint8Array(e);}const b=a31c['resolve'](a);if(!a31d['existsSync'](b))throw new MessengerError('FILE_NOT_FOUND','File\x20not\x20found:\x20'+b);const c=a31d['readFileSync'](b);return new Uint8Array(c);}['detectContentType'](a){switch(a31c['extname'](a)['toLowerCase']()){case'.wts':return'wts';case'.wip':return'wip';default:return'zip';}}async['_createSignedRequest'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const b=Date['now'](),c=this['generateNonce'](),d=b+':'+c+':'+canonicalizeJson(a),e=await(await getAccount())['signData'](this['userAddress'],d),f=Buffer['from'](e['signature']['slice'](0x2),'hex'),g=bytesToBase64(new Uint8Array(f)),h=await(await getAccount())['get'](this['userAddress'],![],!![]);if(!h||!h['pubkey'])throw new MessengerError('IDENTITY_NOT_FOUND','Account\x20public\x20key\x20not\x20found');return{'userAddress':this['userAddress'],'publicKey':h['pubkey'],'signatureScheme':'Falcon512','signature':g,'timestamp':b,'nonce':c,'data':a};}['_validateAddresses'](a){const b=[],c=[];for(const d of a)if(a31a(d))b['push'](d);else c['push'](d);return{'valid':b,'invalid':c};}async['addToBlacklist'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const {valid:b,invalid:c}=this['_validateAddresses'](a);if(c['length']>0x0)return{'success':![],'operation':'add','modifiedCount':0x0,'currentCount':0x0,'maxCount':0x0,'invalidAddresses':c,'message':'Invalid\x20addresses:\x20'+c['join'](',\x20')};const d={'addresses':b},e=await this['_createSignedRequest'](d);return this['serverClient']['addToBlacklist'](this['userAddress'],e);}async['removeFromBlacklist'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const {valid:b,invalid:c}=this['_validateAddresses'](a);if(c['length']>0x0)return{'success':![],'operation':'remove','modifiedCount':0x0,'currentCount':0x0,'maxCount':0x0,'invalidAddresses':c,'message':'Invalid\x20addresses:\x20'+c['join'](',\x20')};const d={'addresses':b},e=await this['_createSignedRequest'](d);return this['serverClient']['removeFromBlacklist'](this['userAddress'],e);}async['clearBlacklist'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const a=await this['_createSignedRequest']({});return this['serverClient']['clearBlacklist'](this['userAddress'],a);}async['getBlacklist'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const a=await this['_createSignedRequest']({});return this['serverClient']['getBlacklist'](this['userAddress'],a);}async['existInBlacklist'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const {valid:b,invalid:c}=this['_validateAddresses'](a);if(c['length']>0x0)return{'success':![],'operation':'exist','modifiedCount':0x0,'currentCount':0x0,'maxCount':0x0,'invalidAddresses':c,'message':'Invalid\x20addresses:\x20'+c['join'](',\x20')};const d={'addresses':b},e=await this['_createSignedRequest'](d);return this['serverClient']['existInBlacklist'](this['userAddress'],e);}async['addToFriendsList'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const {valid:b,invalid:c}=this['_validateAddresses'](a);if(c['length']>0x0)return{'success':![],'operation':'add','modifiedCount':0x0,'currentCount':0x0,'maxCount':0x0,'invalidAddresses':c,'message':'Invalid\x20addresses:\x20'+c['join'](',\x20')};const d={'addresses':b},e=await this['_createSignedRequest'](d);return this['serverClient']['addToFriendsList'](this['userAddress'],e);}async['removeFromFriendsList'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const {valid:b,invalid:c}=this['_validateAddresses'](a);if(c['length']>0x0)return{'success':![],'operation':'remove','modifiedCount':0x0,'currentCount':0x0,'maxCount':0x0,'invalidAddresses':c,'message':'Invalid\x20addresses:\x20'+c['join'](',\x20')};const d={'addresses':b},e=await this['_createSignedRequest'](d);return this['serverClient']['removeFromFriendsList'](this['userAddress'],e);}async['clearFriendsList'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const a=await this['_createSignedRequest']({});return this['serverClient']['clearFriendsList'](this['userAddress'],a);}async['getFriendsList'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const a=await this['_createSignedRequest']({});return this['serverClient']['getFriendsList'](this['userAddress'],a);}async['existInFriendsList'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const {valid:b,invalid:c}=this['_validateAddresses'](a);if(c['length']>0x0)return{'success':![],'operation':'exist','modifiedCount':0x0,'currentCount':0x0,'maxCount':0x0,'invalidAddresses':c,'message':'Invalid\x20addresses:\x20'+c['join'](',\x20')};const d={'addresses':b},e=await this['_createSignedRequest'](d);return this['serverClient']['existInFriendsList'](this['userAddress'],e);}async['addToGuardList'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const b={'guards':a},c=await this['_createSignedRequest'](b);return this['serverClient']['addToGuardList'](this['userAddress'],c);}async['removeFromGuardList'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const {valid:b,invalid:c}=this['_validateAddresses'](a);if(c['length']>0x0)return{'success':![],'operation':'remove','modifiedCount':0x0,'currentCount':0x0,'maxCount':0x0,'invalidAddresses':c,'message':'Invalid\x20addresses:\x20'+c['join'](',\x20')};const d={'addresses':b},e=await this['_createSignedRequest'](d);return this['serverClient']['removeFromGuardList'](this['userAddress'],e);}async['getGuardList'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const a=await this['_createSignedRequest']({});return this['serverClient']['getGuardList'](this['userAddress'],a);}async['getSettings'](){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const a=await this['_createSignedRequest']({});return this['serverClient']['getSettings'](this['userAddress'],a);}async['setSettings'](a){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const b={'allowStrangerMessages':a['allowStrangerMessages'],'maxInboxSize':a['maxInboxSize']},c=await this['_createSignedRequest'](b);return this['serverClient']['updateSettings'](this['userAddress'],c);}async['tryDecryptMessage'](a){try{const b=Uint8Array['from'](Buffer['from'](a['bodyB64'],'base64')),c=await this['decryptionEngine']['decryptMessage'](this['userAddress'],a['from'],b['buffer'],a['msgType']);if(!c['success'])return{'success':![],'shouldRetry':this['isRetryableError'](c['error']||''),'error':c['error'],'sessionUpdated':c['sessionUpdated']};const d=c['plaintext'],e=parseReplyPlaintext(d);if(!a['clientTimestamp'])throw new Error('Missing\x20clientTimestamp\x20for\x20message\x20'+a['id']);if(!a['plaintextHash'])throw new Error('Missing\x20plaintextHash\x20for\x20message\x20'+a['id']);const f=verifyMessage({'messageId':a['id'],'plaintext':d,'plaintextHash':a['plaintextHash'],'createdAt':a['clientTimestamp'],'guardAddress':a['guardAddress'],'passportAddress':a['passportAddress'],'lastReceivedLeafIndex':a['lastReceivedLeafIndex'],'serverSignature':a['merkleMetadata']?.['serverSignature'],'serverPublicKey':a['merkleMetadata']?.['serverPublicKey'],'merkleMetadata':a['merkleMetadata']?{'prevRoot':a['merkleMetadata']['prevRoot'],'newRoot':a['merkleMetadata']['newRoot'],'serverTimestamp':a['merkleMetadata']['serverTimestamp'],'leafIndex':a['merkleMetadata']['leafIndex'],'proofSiblings':a['merkleMetadata']['proofSiblings'],'proofIndices':a['merkleMetadata']['proofIndices']}:void 0x0});if(!f['valid'])throw new Error(f['error']);const g={'messageId':a['id'],'fromAddress':a['from'],'toAddress':this['userAddress'],'plaintextHash':a['plaintextHash'],'plaintext':d,'replyTo':e['replyTo'],'guardAddress':a['guardAddress'],'passportAddress':a['passportAddress'],'lastReceivedLeafIndex':a['lastReceivedLeafIndex'],'direction':'received','status':'decrypted','msgType':a['msgType'],'leafIndex':a['merkleMetadata']?.['leafIndex'],'prevRoot':a['merkleMetadata']?.['prevRoot'],'newRoot':a['merkleMetadata']?.['newRoot'],'serverSignature':a['merkleMetadata']?.['serverSignature'],'serverTimestamp':a['merkleMetadata']?.['serverTimestamp'],'serverPublicKey':a['merkleMetadata']?.['serverPublicKey'],'createdAt':a['clientTimestamp'],'receivedAt':Date['now'](),'zipMetadata':a['zipMetadata']};if(a['merkleMetadata'])this['sessionStateStorage']['updateSessionState'](this['userAddress'],a['from'],{'currentRoot':a['merkleMetadata']['newRoot'],'prevRoot':a['merkleMetadata']['prevRoot'],'lastLeafIndex':a['merkleMetadata']['leafIndex'],'lastSyncAt':Date['now']()});const h=a['merkleMetadata']?.['serverTimestamp']||a['clientTimestamp']||Date['now']();if(a['lastReceivedLeafIndex']!==void 0x0&&a['lastReceivedLeafIndex']>=0x0){const i=this['messageStorage']['getMessagesBySession'](this['userAddress'],a['from'])['filter'](j=>j['direction']==='sent'&&j['status']==='confirmed'&&j['leafIndex']!==void 0x0&&j['leafIndex']<=a['lastReceivedLeafIndex']);for(const j of i)this['messageStorage']['updateMessageStatus'](j['messageId'],'read');}return{'success':!![],'shouldRetry':![],'message':g,'decryptedData':{'id':a['id'],'from':a['from'],'plaintext':d,'timestamp':h,'merkleVerified':!!a['merkleMetadata'],'merkleData':a['merkleMetadata']?{'leafIndex':a['merkleMetadata']['leafIndex'],'rootHash':a['merkleMetadata']['newRoot']}:void 0x0},'sessionUpdated':c['sessionUpdated']};}catch(k){const l=k instanceof Error?k['message']:String(k);return{'success':![],'shouldRetry':this['isRetryableError'](l),'error':l};}}['isRetryableError'](a){return[/message number/i,/chain key/i,/session not found/i,/prekey not found/i,/PREKEY 竞争:我的地址较小,保留我的会话/i,/The operation failed for an operation-specific reason/i,/DOMException/i,/收到 WHISPER_MESSAGE 但无现有会话,需要等待 PREKEY_MESSAGE/i]['some'](b=>b['test'](a));}async['processWaitingMessages'](a,b){if(this['waitingMessages']['size']===0x0)return;const c=[],d=Array['from'](this['waitingMessages']['values']())['sort'](function(e,f){return(e['clientTimestamp']||0x0)-(f['clientTimestamp']||0x0);});for(const e of d){const f=e['id'],g=await this['tryDecryptMessage'](e);if(g['success']&&g['message']&&g['decryptedData'])this['messageStorage']['saveMessage'](g['message']),a['push'](g['decryptedData']),b['push'](f),c['push'](f),this['waitingMessageRetries']['delete'](f);else{if(!g['shouldRetry'])this['failedMessages']['set'](f,{'message':e,'error':g['error']||'Unknown\x20error'}),await this['saveFailedMessage'](e,g['error']||'Unknown\x20error'),b['push'](f),c['push'](f),this['waitingMessageRetries']['delete'](f);else{const h=(this['waitingMessageRetries']['get'](f)||0x0)+0x1;if(h>=0x3)this['failedMessages']['set'](f,{'message':e,'error':g['error']||'Retry\x20limit\x20exceeded'}),await this['saveFailedMessage'](e,g['error']||'Retry\x20limit\x20exceeded'),b['push'](f),c['push'](f),this['waitingMessageRetries']['delete'](f);else this['waitingMessageRetries']['set'](f,h);}}}for(const i of c)this['waitingMessages']['delete'](i);if(c['length']>0x0){}}async['saveFailedMessage'](a,b){const c={'messageId':a['id'],'fromAddress':a['from'],'toAddress':this['userAddress'],'plaintextHash':a['plaintextHash']||'','guardAddress':a['guardAddress'],'passportAddress':a['passportAddress'],'lastReceivedLeafIndex':a['lastReceivedLeafIndex'],'direction':'received','status':'decrypt_failed','msgType':a['msgType'],'leafIndex':a['merkleMetadata']?.['leafIndex'],'prevRoot':a['merkleMetadata']?.['prevRoot'],'newRoot':a['merkleMetadata']?.['newRoot'],'serverSignature':a['merkleMetadata']?.['serverSignature'],'serverTimestamp':a['merkleMetadata']?.['serverTimestamp'],'serverPublicKey':a['merkleMetadata']?.['serverPublicKey'],'createdAt':a['clientTimestamp']||Date['now'](),'receivedAt':Date['now'](),'zipMetadata':a['zipMetadata'],'decryptError':b,'decryptAttempts':0x1,'lastDecryptAttemptAt':Date['now']()};this['messageStorage']['saveMessage'](c);}['reschedulePolling'](){if(!this['isPollingRunning']||!this['pollingTimer'])return;clearTimeout(this['pollingTimer']),this['pollingTimer']=null,this['scheduleNextPoll']();}['getFailedMessages'](){return Array['from'](this['failedMessages']['entries']())['map'](([a,b])=>({'messageId':a,'from':b['message']['from'],'error':b['error'],'leafIndex':b['message']['merkleMetadata']?.['leafIndex']}));}['clearFailedMessages'](a){if(a)this['failedMessages']['delete'](a);else this['failedMessages']['clear']();}['getWaitingMessageCount'](){return this['waitingMessages']['size'];}};export{canonicalizeJson as n,Messenger as t};
|