@wowok/wowok 2.3.11 → 2.3.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/esm/{arb-DzF0MkFj.mjs → arb-DJFsMaw8.mjs} +1 -1
  2. package/dist/esm/base-C6G3xkf-.mjs +1 -0
  3. package/dist/esm/bcs/index.d.mts +1 -1
  4. package/dist/esm/{call-CGeMCqkj.mjs → call-DPC7BB9z.mjs} +1 -1
  5. package/dist/esm/client/index.d.mts +1 -1
  6. package/dist/esm/client/index.mjs +1 -1
  7. package/dist/esm/{client-sb0S5kkY.mjs → client-Qky9ahYr.mjs} +1 -1
  8. package/dist/esm/cryptography/index.d.mts +1 -1
  9. package/dist/esm/graphql/index.d.mts +1 -1
  10. package/dist/esm/graphql/index.mjs +1 -1
  11. package/dist/esm/{graphql-BUAdI3fK.mjs → graphql-ChU-TqO3.mjs} +1 -1
  12. package/dist/esm/grpc/index.d.mts +1 -1
  13. package/dist/esm/grpc/index.mjs +1 -1
  14. package/dist/esm/{grpc-pWeVYO9k.mjs → grpc-Blljyw_0.mjs} +1 -1
  15. package/dist/esm/{index-Cj4KHtbw.d.mts → index-B8BZSNzI.d.mts} +6 -6
  16. package/dist/esm/{index-DQzZu-2W.d.mts → index-CT5v_n9y.d.mts} +51 -3
  17. package/dist/esm/index.d.mts +3 -3
  18. package/dist/esm/index.mjs +1 -1
  19. package/dist/esm/jsonRpc/index.d.mts +1 -1
  20. package/dist/esm/jsonRpc/index.mjs +1 -1
  21. package/dist/esm/keypairs/ed25519/index.d.mts +1 -1
  22. package/dist/esm/keypairs/falcon512/index.d.mts +1 -1
  23. package/dist/esm/keypairs/passkey/index.d.mts +1 -1
  24. package/dist/esm/keypairs/secp256k1/index.d.mts +1 -1
  25. package/dist/esm/keypairs/secp256r1/index.d.mts +1 -1
  26. package/dist/esm/messenger-CsKfzhTO.mjs +1 -0
  27. package/dist/esm/messenger-api-5Rsz17OK.mjs +1 -0
  28. package/dist/esm/multisig/index.d.mts +1 -1
  29. package/dist/esm/{object-BZ_iF8UV.mjs → object-CnzImhYw.mjs} +1 -1
  30. package/dist/esm/proof-BC83Au5Z.mjs +1 -0
  31. package/dist/esm/{query-C21BX7t1.mjs → query-kEOQO88T.mjs} +1 -1
  32. package/dist/esm/{received-CLkbwKVD.mjs → received-CR3BScdG.mjs} +1 -1
  33. package/dist/esm/{service-CHsYFr_k.mjs → service-Cm5BQ2jN.mjs} +1 -1
  34. package/dist/esm/transactions/index.d.mts +1 -1
  35. package/dist/esm/{util-DBKo02vY.mjs → util-B-taRQwn.mjs} +1 -1
  36. package/dist/esm/verify/index.d.mts +1 -1
  37. package/dist/esm/w/call/allocation.d.mts +1 -1
  38. package/dist/esm/w/call/allocation.mjs +1 -1
  39. package/dist/esm/w/call/arbitration.d.mts +1 -1
  40. package/dist/esm/w/call/arbitration.mjs +1 -1
  41. package/dist/esm/w/call/base.d.mts +1 -1
  42. package/dist/esm/w/call/base.mjs +1 -1
  43. package/dist/esm/w/call/demand.d.mts +1 -1
  44. package/dist/esm/w/call/demand.mjs +1 -1
  45. package/dist/esm/w/call/guard.d.mts +1 -1
  46. package/dist/esm/w/call/guard.mjs +1 -1
  47. package/dist/esm/w/call/index.d.mts +2 -2
  48. package/dist/esm/w/call/index.mjs +1 -1
  49. package/dist/esm/w/call/machine.d.mts +1 -1
  50. package/dist/esm/w/call/machine.mjs +1 -1
  51. package/dist/esm/w/call/passport.d.mts +2 -2
  52. package/dist/esm/w/call/passport.mjs +1 -1
  53. package/dist/esm/w/call/payment.d.mts +1 -1
  54. package/dist/esm/w/call/payment.mjs +1 -1
  55. package/dist/esm/w/call/permission.d.mts +1 -1
  56. package/dist/esm/w/call/permission.mjs +1 -1
  57. package/dist/esm/w/call/progress.d.mts +1 -1
  58. package/dist/esm/w/call/progress.mjs +1 -1
  59. package/dist/esm/w/call/repository.d.mts +1 -1
  60. package/dist/esm/w/call/repository.mjs +1 -1
  61. package/dist/esm/w/call/reward.d.mts +1 -1
  62. package/dist/esm/w/call/reward.mjs +1 -1
  63. package/dist/esm/w/call/service.d.mts +1 -1
  64. package/dist/esm/w/call/service.mjs +1 -1
  65. package/dist/esm/w/call/treasury.d.mts +1 -1
  66. package/dist/esm/w/call/treasury.mjs +1 -1
  67. package/dist/esm/w/common.d.mts +1 -1
  68. package/dist/esm/w/index.d.mts +2 -2
  69. package/dist/esm/w/index.mjs +1 -1
  70. package/dist/esm/w/local/account.d.mts +1 -1
  71. package/dist/esm/w/local/account.mjs +1 -1
  72. package/dist/esm/w/local/index.d.mts +1 -1
  73. package/dist/esm/w/local/token.d.mts +1 -1
  74. package/dist/esm/w/local/token.mjs +1 -1
  75. package/dist/esm/w/messenger/crypto.d.mts +12 -8
  76. package/dist/esm/w/messenger/crypto.mjs +1 -1
  77. package/dist/esm/w/messenger/index.d.mts +2 -2
  78. package/dist/esm/w/messenger/index.mjs +1 -1
  79. package/dist/esm/w/messenger/messenger-api.d.mts +2 -2
  80. package/dist/esm/w/messenger/messenger-api.mjs +1 -1
  81. package/dist/esm/w/messenger/messenger.d.mts +1 -1
  82. package/dist/esm/w/messenger/messenger.mjs +1 -1
  83. package/dist/esm/w/messenger/pq/erasure.mjs +1 -1
  84. package/dist/esm/w/messenger/storage.d.mts +1 -1
  85. package/dist/esm/w/messenger/types.d.mts +1 -1
  86. package/dist/esm/w/query/index.d.mts +1 -1
  87. package/dist/esm/w/query/index.mjs +1 -1
  88. package/dist/esm/w/query/object.d.mts +1 -1
  89. package/dist/esm/w/query/object.mjs +1 -1
  90. package/dist/esm/w-BFHLwfOM.mjs +1 -0
  91. package/package.json +1 -1
  92. package/dist/esm/base-CpcBBUyX.mjs +0 -1
  93. package/dist/esm/messenger-XaS-GpCz.mjs +0 -1
  94. package/dist/esm/messenger-api-GLDmqXiO.mjs +0 -1
  95. package/dist/esm/proof-Bs6HQZeE.mjs +0 -1
  96. package/dist/esm/w-YL0Jr-BM.mjs +0 -1
@@ -1,2 +1,2 @@
1
- import { $d as TreasuryOp, $u as ObjectArbitration, Ad as PurchasedItem, Af as queryTableItem_RewardRecord, Au as Amount, Bd as TableAnswerItem, Bi as queryProtocolInfo, Bu as GuardSubmission, Cd as ObjectsQuery, Cf as queryTableItem_DemandPresenter, Cm as ReceivedBalance, Dd as PolicyWriteGuard, Df as queryTableItem_PermissionPerm, Dm as ReceivedObjects, Du as AllocationSharing, Ed as PolicyRule, Ef as queryTableItem_MachineNode, Em as ReceivedNormal, Eu as AllocationMode, Fd as QueryTableItem_byU64, Ff as query_table, Fu as ArbProposition, Gd as TableItem_EntityRegistrar, Gu as MachineForward, Hd as TableItem_AddressMark, Hu as IdFromInput, Id as RewardGuard, If as query_tableItem, Ii as INFO_CONSTANT, Iu as ArbStatus, Jd as TableItem_ProgressHistory, Ju as MachineNodePair, Kd as TableItem_MachineNode, Ku as MachineForwardGuard, Ld as ServiceGuard, Lf as query_table_json, Li as ProtocolInfoQuery, Lu as ArbVoted, Md as QueryTableItem_byAddress, Mf as query_objects, Mu as AmountFromWithdrawGuard, Nd as QueryTableItem_byNameAddress, Nf as query_objects_json, Nu as AmountType, Od as ProgressSession, Of as queryTableItem_ProgressHistory, Om as ReceivedObjectsOrRecently, Ou as Allocator, Pd as QueryTableItem_byString, Pf as query_personal, Pu as ArbIndemnity, Qd as TableQuery, Qu as ObjectArb, Rd as ServiceSale, Rf as raw2type, Ri as ProtocolInfoResult, Ru as DiscountType, Sd as ObjectsAnswer, Sf as queryTableItem_AddressMark, Sm as QueryReceived, Td as PersonalQuery, Tf as queryTableItem_EntityRegistrar, Tm as ReceivedBalanceOrRecently, Ud as TableItem_DemandPresenter, Uh as ObjectType, Uu as Im, Vd as TableItemQuery, Vu as IdFrom, Wd as TableItem_EntityLinker, Wu as MAX_OBJECTS_PER_QUERY, Xd as TableItem_RewardRecord, Xu as OBJECT_TYPE_DEFINITIONS, Yd as TableItem_RepositoryData, Yu as NamedOperator, Zd as TableItem_TreasuryHistory, Zu as ObjectAllocation, _a as query_events_json, _d as ObjectResource, _f as idFromToString, aa as ArbEvent, ad as ObjectEntityLinker, af as WitnessTargetType, bd as ObjectTreasury, bf as objectTypeToNumber, ca as EventAnswer, cd as ObjectMachine, cf as getMoveNameFromObjectType, da as EventQuery, dd as ObjectPayment, df as getNumbersFromObjectTypes, ed as ObjectBase, ef as TreasuryRecord, fa as EventType, fd as ObjectPermission, ff as getObjectTypeDefinition, ga as query_events, gd as ObjectRepository, gf as getObjectTypesFromNumbers, ha as ProgressEvent, hd as ObjectProof, hf as getObjectTypeFromNumber, id as ObjectEntity, if as WitnessSourceType, jd as QueryTableItem_Entity, jf as queryTableItem_TreasuryHistory, ju as AmountFromDepositGuard, kd as ProgressSessionHolder, kf as queryTableItem_RepositoryData, km as query_received, ku as Allocators, la as EventBase, ld as ObjectOrder, lf as getNumberFromMoveName, ma as NewOrderEvent, md as ObjectProgress, mf as getObjectTypeFromMoveName, nd as ObjectDemand, nf as VotingGuard, oa as DemandFeedbackEvent, od as ObjectEntityRegistrar, of as data2object, pa as NewEntityEvent, pd as ObjectPersonal, pf as getObjectTypeDefinitionFromNumber, qd as TableItem_PermissionPerm, qu as MachineNode, rd as ObjectDiscount, rf as WReceivedObject, sa as DemandPresentEvent, sd as ObjectGuard, sf as getMoveNameFromNumber, td as ObjectContact, tf as VoteWeight, ua as EventCursor, ud as ObjectPassport, uf as getNumberFromObjectType, va as queryObjectWithType, vd as ObjectReward, vf as isValidIdFromInput, wd as PaymentInfo, wf as queryTableItem_EntityLinker, wm as ReceivedBalanceObject, xd as ObjectTypeDefinition, xf as parseIdFrom, ya as queryObjectsWithType, yd as ObjectService, yf as numberToObjectType, zd as TableAnswer, zi as queryPermissions, zu as GuardInPassport } from "../../index-DQzZu-2W.mjs";
1
+ import { $d as TableItem_RepositoryData, $u as NamedOperator, Ad as PolicyRule, Af as queryTableItem_MachineNode, Am as ReceivedBalanceOrRecently, Au as AllocationMode, Bd as RewardGuard, Bf as query_tableItem, Bi as queryPermissions, Bu as ArbStatus, Cd as ObjectService, Cf as numberToObjectType, Dd as ObjectsQuery, Df as queryTableItem_DemandPresenter, Dm as QueryReceived, Ed as ObjectsAnswer, Ef as queryTableItem_AddressMark, Fd as QueryTableItem_Entity, Ff as queryTableItem_TreasuryHistory, Fu as AmountFromDepositGuard, Gd as TableItemQuery, Gu as IdFrom, Hd as ServiceSale, Hf as raw2type, Hu as DiscountType, Id as QueryTableItem_byAddress, If as query_objects, Iu as AmountFromWithdrawGuard, Jd as TableItem_EntityLinker, Jh as ObjectType, Ju as MAX_OBJECTS_PER_QUERY, Kd as TableItem_AddressMark, Ku as IdFromInput, Ld as QueryTableItem_byNameAddress, Lf as query_objects_json, Li as INFO_CONSTANT, Lu as AmountType, Md as ProgressSession, Mf as queryTableItem_ProgressHistory, Mm as ReceivedObjects, Mu as Allocator, Nd as ProgressSessionHolder, Nf as queryTableItem_RepositoryData, Nm as ReceivedObjectsOrRecently, Nu as Allocators, Od as PaymentInfo, Of as queryTableItem_EntityLinker, Om as ReceivedBalance, Pd as PurchasedItem, Pf as queryTableItem_RewardRecord, Pm as query_received, Pu as Amount, Qd as TableItem_ProgressHistory, Qu as MachineNodePair, Rd as QueryTableItem_byString, Rf as query_personal, Ri as ProtocolInfoQuery, Ru as ArbIndemnity, Sd as ObjectReward, Sf as isValidIdFromInput, Td as ObjectTypeDefinition, Tf as parseIdFrom, Ud as TableAnswer, Uu as GuardInPassport, Vd as ServiceGuard, Vf as query_table_json, Vi as queryProtocolInfo, Vu as ArbVoted, Wd as TableAnswerItem, Wu as GuardSubmission, Xd as TableItem_MachineNode, Xu as MachineForwardGuard, Yd as TableItem_EntityRegistrar, Yu as MachineForward, Zd as TableItem_PermissionPerm, Zu as MachineNode, _a as query_events, _d as ObjectPersonal, _f as getObjectTypeDefinitionFromNumber, ad as ObjectContact, af as VoteWeight, ba as queryObjectsWithType, bd as ObjectRepository, bf as getObjectTypesFromNumbers, ca as DemandPresentEvent, cd as ObjectEntity, cf as WitnessSourceType, da as EventCursor, dd as ObjectGuard, df as getMoveNameFromNumber, ed as OBJECT_TYPE_DEFINITIONS, ef as TableItem_RewardRecord, fa as EventQuery, fd as ObjectMachine, ff as getMoveNameFromObjectType, ga as ProgressEvent, gd as ObjectPermission, gf as getObjectTypeDefinition, ha as NewOrderEvent, hd as ObjectPayment, hf as getNumbersFromObjectTypes, id as ObjectBase, if as TreasuryRecord, jd as PolicyWriteGuard, jf as queryTableItem_PermissionPerm, jm as ReceivedNormal, ju as AllocationSharing, kd as PersonalQuery, kf as queryTableItem_EntityRegistrar, km as ReceivedBalanceObject, la as EventAnswer, ld as ObjectEntityLinker, lf as WitnessTargetType, ma as NewEntityEvent, md as ObjectPassport, mf as getNumberFromObjectType, nd as ObjectArb, nf as TableQuery, oa as ArbEvent, od as ObjectDemand, of as VotingGuard, pa as EventType, pd as ObjectOrder, pf as getNumberFromMoveName, qd as TableItem_DemandPresenter, qu as Im, rd as ObjectArbitration, rf as TreasuryOp, sa as DemandFeedbackEvent, sd as ObjectDiscount, sf as WReceivedObject, td as ObjectAllocation, tf as TableItem_TreasuryHistory, ua as EventBase, ud as ObjectEntityRegistrar, uf as data2object, va as query_events_json, vd as ObjectProgress, vf as getObjectTypeFromMoveName, wd as ObjectTreasury, wf as objectTypeToNumber, xd as ObjectResource, xf as idFromToString, ya as queryObjectWithType, yd as ObjectProof, yf as getObjectTypeFromNumber, zd as QueryTableItem_byU64, zf as query_table, zi as ProtocolInfoResult, zu as ArbProposition } from "../../index-CT5v_n9y.mjs";
2
2
  export { AllocationMode, AllocationSharing, Allocator, Allocators, Amount, AmountFromDepositGuard, AmountFromWithdrawGuard, AmountType, ArbEvent, ArbIndemnity, ArbProposition, ArbStatus, ArbVoted, DemandFeedbackEvent, DemandPresentEvent, DiscountType, EventAnswer, EventBase, EventCursor, EventQuery, EventType, GuardInPassport, GuardSubmission, INFO_CONSTANT, IdFrom, IdFromInput, Im, MAX_OBJECTS_PER_QUERY, MachineForward, MachineForwardGuard, MachineNode, MachineNodePair, NamedOperator, NewEntityEvent, NewOrderEvent, OBJECT_TYPE_DEFINITIONS, ObjectAllocation, ObjectArb, ObjectArbitration, ObjectBase, ObjectContact, ObjectDemand, ObjectDiscount, ObjectEntity, ObjectEntityLinker, ObjectEntityRegistrar, ObjectGuard, ObjectMachine, ObjectOrder, ObjectPassport, ObjectPayment, ObjectPermission, ObjectPersonal, ObjectProgress, ObjectProof, ObjectRepository, ObjectResource, ObjectReward, ObjectService, ObjectTreasury, ObjectType, ObjectTypeDefinition, ObjectsAnswer, ObjectsQuery, PaymentInfo, PersonalQuery, PolicyRule, PolicyWriteGuard, ProgressEvent, ProgressSession, ProgressSessionHolder, ProtocolInfoQuery, ProtocolInfoResult, PurchasedItem, QueryReceived, QueryTableItem_Entity, QueryTableItem_byAddress, QueryTableItem_byNameAddress, QueryTableItem_byString, QueryTableItem_byU64, ReceivedBalance, ReceivedBalanceObject, ReceivedBalanceOrRecently, ReceivedNormal, ReceivedObjects, ReceivedObjectsOrRecently, RewardGuard, ServiceGuard, ServiceSale, TableAnswer, TableAnswerItem, TableItemQuery, TableItem_AddressMark, TableItem_DemandPresenter, TableItem_EntityLinker, TableItem_EntityRegistrar, TableItem_MachineNode, TableItem_PermissionPerm, TableItem_ProgressHistory, TableItem_RepositoryData, TableItem_RewardRecord, TableItem_TreasuryHistory, TableQuery, TreasuryOp, TreasuryRecord, VoteWeight, VotingGuard, WReceivedObject, WitnessSourceType, WitnessTargetType, data2object, getMoveNameFromNumber, getMoveNameFromObjectType, getNumberFromMoveName, getNumberFromObjectType, getNumbersFromObjectTypes, getObjectTypeDefinition, getObjectTypeDefinitionFromNumber, getObjectTypeFromMoveName, getObjectTypeFromNumber, getObjectTypesFromNumbers, idFromToString, isValidIdFromInput, numberToObjectType, objectTypeToNumber, parseIdFrom, queryObjectWithType, queryObjectsWithType, queryPermissions, queryProtocolInfo, queryTableItem_AddressMark, queryTableItem_DemandPresenter, queryTableItem_EntityLinker, queryTableItem_EntityRegistrar, queryTableItem_MachineNode, queryTableItem_PermissionPerm, queryTableItem_ProgressHistory, queryTableItem_RepositoryData, queryTableItem_RewardRecord, queryTableItem_TreasuryHistory, query_events, query_events_json, query_objects, query_objects_json, query_personal, query_received, query_table, query_tableItem, query_table_json, raw2type };
@@ -1 +1 @@
1
- import{E as a103a}from'../../common-CQggZ8z4.mjs';import{A as a103b,B as a103c,C as a103d,D as a103e,E as a103f,F as a103g,H as a103h,I as a103i,L as a103j,M as a103k,N as a103l,O as a103m,P as a103n,R as a103o,S as a103p,T as a103q,U as a103r,V as a103s,_ as a103t,a as a103u,b as a103v,c as a103w,d as a103x,f as a103y,g as a103z,h as a103A,i as a103B,j as a103C,k as a103D,l as a103E,m as a103F,n as a103G,o as a103H,p as a103I,r as a103J,s as a103K,t as a103L,u as a103M,v as a103N,w as a103O,x as a103P,y as a103Q,z as a103R}from'../../object-BZ_iF8UV.mjs';import{t as a103S}from'../../received-CLkbwKVD.mjs';import{n as a103T,t as a103U}from'../../util-DBKo02vY.mjs';import{b as a103V,n as a103W,r as a103X,t as a103Y,x as a103Z}from'../../query-C21BX7t1.mjs';export{a103L as AllocationMode,a103G as AmountType,a103J as ArbStatus,a103B as DiscountType,a103Y as INFO_CONSTANT,a103u as IdFrom,a103H as MAX_OBJECTS_PER_QUERY,a103K as OBJECT_TYPE_DEFINITIONS,a103a as ObjectType,a103w as TreasuryOp,a103E as WitnessSourceType,a103M as WitnessTargetType,a103x as data2object,a103y as getMoveNameFromNumber,a103I as getMoveNameFromObjectType,a103F as getNumberFromMoveName,a103A as getNumberFromObjectType,a103z as getNumbersFromObjectTypes,a103t as getObjectTypeDefinition,a103N as getObjectTypeDefinitionFromNumber,a103Q as getObjectTypeFromMoveName,a103v as getObjectTypeFromNumber,a103P as getObjectTypesFromNumbers,a103p as idFromToString,a103d as isValidIdFromInput,a103O as numberToObjectType,a103q as objectTypeToNumber,a103f as parseIdFrom,a103U as queryObjectWithType,a103T as queryObjectsWithType,a103W as queryPermissions,a103X as queryProtocolInfo,a103e as queryTableItem_AddressMark,a103m as queryTableItem_DemandPresenter,a103D as queryTableItem_EntityLinker,a103b as queryTableItem_EntityRegistrar,a103C as queryTableItem_MachineNode,a103k as queryTableItem_PermissionPerm,a103l as queryTableItem_ProgressHistory,a103n as queryTableItem_RepositoryData,a103g as queryTableItem_RewardRecord,a103i as queryTableItem_TreasuryHistory,a103V as query_events,a103Z as query_events_json,a103j as query_objects,a103o as query_objects_json,a103R as query_personal,a103S as query_received,a103c as query_table,a103s as query_tableItem,a103h as query_table_json,a103r as raw2type};
1
+ import{E as a103a}from'../../common-CQggZ8z4.mjs';import{A as a103b,B as a103c,C as a103d,D as a103e,E as a103f,F as a103g,H as a103h,I as a103i,L as a103j,M as a103k,N as a103l,O as a103m,P as a103n,R as a103o,S as a103p,T as a103q,U as a103r,V as a103s,_ as a103t,a as a103u,b as a103v,c as a103w,d as a103x,f as a103y,g as a103z,h as a103A,i as a103B,j as a103C,k as a103D,l as a103E,m as a103F,n as a103G,o as a103H,p as a103I,r as a103J,s as a103K,t as a103L,u as a103M,v as a103N,w as a103O,x as a103P,y as a103Q,z as a103R}from'../../object-CnzImhYw.mjs';import{t as a103S}from'../../received-CR3BScdG.mjs';import{n as a103T,t as a103U}from'../../util-B-taRQwn.mjs';import{b as a103V,n as a103W,r as a103X,t as a103Y,x as a103Z}from'../../query-kEOQO88T.mjs';export{a103L as AllocationMode,a103G as AmountType,a103J as ArbStatus,a103B as DiscountType,a103Y as INFO_CONSTANT,a103u as IdFrom,a103H as MAX_OBJECTS_PER_QUERY,a103K as OBJECT_TYPE_DEFINITIONS,a103a as ObjectType,a103w as TreasuryOp,a103E as WitnessSourceType,a103M as WitnessTargetType,a103x as data2object,a103y as getMoveNameFromNumber,a103I as getMoveNameFromObjectType,a103F as getNumberFromMoveName,a103A as getNumberFromObjectType,a103z as getNumbersFromObjectTypes,a103t as getObjectTypeDefinition,a103N as getObjectTypeDefinitionFromNumber,a103Q as getObjectTypeFromMoveName,a103v as getObjectTypeFromNumber,a103P as getObjectTypesFromNumbers,a103p as idFromToString,a103d as isValidIdFromInput,a103O as numberToObjectType,a103q as objectTypeToNumber,a103f as parseIdFrom,a103U as queryObjectWithType,a103T as queryObjectsWithType,a103W as queryPermissions,a103X as queryProtocolInfo,a103e as queryTableItem_AddressMark,a103m as queryTableItem_DemandPresenter,a103D as queryTableItem_EntityLinker,a103b as queryTableItem_EntityRegistrar,a103C as queryTableItem_MachineNode,a103k as queryTableItem_PermissionPerm,a103l as queryTableItem_ProgressHistory,a103n as queryTableItem_RepositoryData,a103g as queryTableItem_RewardRecord,a103i as queryTableItem_TreasuryHistory,a103V as query_events,a103Z as query_events_json,a103j as query_objects,a103o as query_objects_json,a103R as query_personal,a103S as query_received,a103c as query_table,a103s as query_tableItem,a103h as query_table_json,a103r as raw2type};
@@ -1,2 +1,2 @@
1
- import { $d as TreasuryOp, $u as ObjectArbitration, Ad as PurchasedItem, Af as queryTableItem_RewardRecord, Au as Amount, Bd as TableAnswerItem, Bu as GuardSubmission, Cd as ObjectsQuery, Cf as queryTableItem_DemandPresenter, Dd as PolicyWriteGuard, Df as queryTableItem_PermissionPerm, Du as AllocationSharing, Ed as PolicyRule, Ef as queryTableItem_MachineNode, Eu as AllocationMode, Fd as QueryTableItem_byU64, Ff as query_table, Fu as ArbProposition, Gd as TableItem_EntityRegistrar, Gu as MachineForward, Hd as TableItem_AddressMark, Hu as IdFromInput, Id as RewardGuard, If as query_tableItem, Iu as ArbStatus, Jd as TableItem_ProgressHistory, Ju as MachineNodePair, Kd as TableItem_MachineNode, Ku as MachineForwardGuard, Ld as ServiceGuard, Lf as query_table_json, Lu as ArbVoted, Md as QueryTableItem_byAddress, Mf as query_objects, Mu as AmountFromWithdrawGuard, Nd as QueryTableItem_byNameAddress, Nf as query_objects_json, Nu as AmountType, Od as ProgressSession, Of as queryTableItem_ProgressHistory, Ou as Allocator, Pd as QueryTableItem_byString, Pf as query_personal, Pu as ArbIndemnity, Qd as TableQuery, Qu as ObjectArb, Rd as ServiceSale, Rf as raw2type, Ru as DiscountType, Sd as ObjectsAnswer, Sf as queryTableItem_AddressMark, Td as PersonalQuery, Tf as queryTableItem_EntityRegistrar, Ud as TableItem_DemandPresenter, Uh as ObjectType, Uu as Im, Vd as TableItemQuery, Vu as IdFrom, Wd as TableItem_EntityLinker, Wu as MAX_OBJECTS_PER_QUERY, Xd as TableItem_RewardRecord, Xu as OBJECT_TYPE_DEFINITIONS, Yd as TableItem_RepositoryData, Yu as NamedOperator, Zd as TableItem_TreasuryHistory, Zu as ObjectAllocation, _d as ObjectResource, _f as idFromToString, ad as ObjectEntityLinker, af as WitnessTargetType, bd as ObjectTreasury, bf as objectTypeToNumber, cd as ObjectMachine, cf as getMoveNameFromObjectType, dd as ObjectPayment, df as getNumbersFromObjectTypes, ed as ObjectBase, ef as TreasuryRecord, fd as ObjectPermission, ff as getObjectTypeDefinition, gd as ObjectRepository, gf as getObjectTypesFromNumbers, hd as ObjectProof, hf as getObjectTypeFromNumber, id as ObjectEntity, if as WitnessSourceType, jd as QueryTableItem_Entity, jf as queryTableItem_TreasuryHistory, ju as AmountFromDepositGuard, kd as ProgressSessionHolder, kf as queryTableItem_RepositoryData, ku as Allocators, ld as ObjectOrder, lf as getNumberFromMoveName, md as ObjectProgress, mf as getObjectTypeFromMoveName, nd as ObjectDemand, nf as VotingGuard, od as ObjectEntityRegistrar, of as data2object, pd as ObjectPersonal, pf as getObjectTypeDefinitionFromNumber, qd as TableItem_PermissionPerm, qu as MachineNode, rd as ObjectDiscount, rf as WReceivedObject, sd as ObjectGuard, sf as getMoveNameFromNumber, td as ObjectContact, tf as VoteWeight, ud as ObjectPassport, uf as getNumberFromObjectType, vd as ObjectReward, vf as isValidIdFromInput, wd as PaymentInfo, wf as queryTableItem_EntityLinker, xd as ObjectTypeDefinition, xf as parseIdFrom, yd as ObjectService, yf as numberToObjectType, zd as TableAnswer, zu as GuardInPassport } from "../../index-DQzZu-2W.mjs";
1
+ import { $d as TableItem_RepositoryData, $u as NamedOperator, Ad as PolicyRule, Af as queryTableItem_MachineNode, Au as AllocationMode, Bd as RewardGuard, Bf as query_tableItem, Bu as ArbStatus, Cd as ObjectService, Cf as numberToObjectType, Dd as ObjectsQuery, Df as queryTableItem_DemandPresenter, Ed as ObjectsAnswer, Ef as queryTableItem_AddressMark, Fd as QueryTableItem_Entity, Ff as queryTableItem_TreasuryHistory, Fu as AmountFromDepositGuard, Gd as TableItemQuery, Gu as IdFrom, Hd as ServiceSale, Hf as raw2type, Hu as DiscountType, Id as QueryTableItem_byAddress, If as query_objects, Iu as AmountFromWithdrawGuard, Jd as TableItem_EntityLinker, Jh as ObjectType, Ju as MAX_OBJECTS_PER_QUERY, Kd as TableItem_AddressMark, Ku as IdFromInput, Ld as QueryTableItem_byNameAddress, Lf as query_objects_json, Lu as AmountType, Md as ProgressSession, Mf as queryTableItem_ProgressHistory, Mu as Allocator, Nd as ProgressSessionHolder, Nf as queryTableItem_RepositoryData, Nu as Allocators, Od as PaymentInfo, Of as queryTableItem_EntityLinker, Pd as PurchasedItem, Pf as queryTableItem_RewardRecord, Pu as Amount, Qd as TableItem_ProgressHistory, Qu as MachineNodePair, Rd as QueryTableItem_byString, Rf as query_personal, Ru as ArbIndemnity, Sd as ObjectReward, Sf as isValidIdFromInput, Td as ObjectTypeDefinition, Tf as parseIdFrom, Ud as TableAnswer, Uu as GuardInPassport, Vd as ServiceGuard, Vf as query_table_json, Vu as ArbVoted, Wd as TableAnswerItem, Wu as GuardSubmission, Xd as TableItem_MachineNode, Xu as MachineForwardGuard, Yd as TableItem_EntityRegistrar, Yu as MachineForward, Zd as TableItem_PermissionPerm, Zu as MachineNode, _d as ObjectPersonal, _f as getObjectTypeDefinitionFromNumber, ad as ObjectContact, af as VoteWeight, bd as ObjectRepository, bf as getObjectTypesFromNumbers, cd as ObjectEntity, cf as WitnessSourceType, dd as ObjectGuard, df as getMoveNameFromNumber, ed as OBJECT_TYPE_DEFINITIONS, ef as TableItem_RewardRecord, fd as ObjectMachine, ff as getMoveNameFromObjectType, gd as ObjectPermission, gf as getObjectTypeDefinition, hd as ObjectPayment, hf as getNumbersFromObjectTypes, id as ObjectBase, if as TreasuryRecord, jd as PolicyWriteGuard, jf as queryTableItem_PermissionPerm, ju as AllocationSharing, kd as PersonalQuery, kf as queryTableItem_EntityRegistrar, ld as ObjectEntityLinker, lf as WitnessTargetType, md as ObjectPassport, mf as getNumberFromObjectType, nd as ObjectArb, nf as TableQuery, od as ObjectDemand, of as VotingGuard, pd as ObjectOrder, pf as getNumberFromMoveName, qd as TableItem_DemandPresenter, qu as Im, rd as ObjectArbitration, rf as TreasuryOp, sd as ObjectDiscount, sf as WReceivedObject, td as ObjectAllocation, tf as TableItem_TreasuryHistory, ud as ObjectEntityRegistrar, uf as data2object, vd as ObjectProgress, vf as getObjectTypeFromMoveName, wd as ObjectTreasury, wf as objectTypeToNumber, xd as ObjectResource, xf as idFromToString, yd as ObjectProof, yf as getObjectTypeFromNumber, zd as QueryTableItem_byU64, zf as query_table, zu as ArbProposition } from "../../index-CT5v_n9y.mjs";
2
2
  export { AllocationMode, AllocationSharing, Allocator, Allocators, Amount, AmountFromDepositGuard, AmountFromWithdrawGuard, AmountType, ArbIndemnity, ArbProposition, ArbStatus, ArbVoted, DiscountType, GuardInPassport, GuardSubmission, IdFrom, IdFromInput, Im, MAX_OBJECTS_PER_QUERY, MachineForward, MachineForwardGuard, MachineNode, MachineNodePair, NamedOperator, OBJECT_TYPE_DEFINITIONS, ObjectAllocation, ObjectArb, ObjectArbitration, ObjectBase, ObjectContact, ObjectDemand, ObjectDiscount, ObjectEntity, ObjectEntityLinker, ObjectEntityRegistrar, ObjectGuard, ObjectMachine, ObjectOrder, ObjectPassport, ObjectPayment, ObjectPermission, ObjectPersonal, ObjectProgress, ObjectProof, ObjectRepository, ObjectResource, ObjectReward, ObjectService, ObjectTreasury, ObjectType, ObjectTypeDefinition, ObjectsAnswer, ObjectsQuery, PaymentInfo, PersonalQuery, PolicyRule, PolicyWriteGuard, ProgressSession, ProgressSessionHolder, PurchasedItem, QueryTableItem_Entity, QueryTableItem_byAddress, QueryTableItem_byNameAddress, QueryTableItem_byString, QueryTableItem_byU64, RewardGuard, ServiceGuard, ServiceSale, TableAnswer, TableAnswerItem, TableItemQuery, TableItem_AddressMark, TableItem_DemandPresenter, TableItem_EntityLinker, TableItem_EntityRegistrar, TableItem_MachineNode, TableItem_PermissionPerm, TableItem_ProgressHistory, TableItem_RepositoryData, TableItem_RewardRecord, TableItem_TreasuryHistory, TableQuery, TreasuryOp, TreasuryRecord, VoteWeight, VotingGuard, WReceivedObject, WitnessSourceType, WitnessTargetType, data2object, getMoveNameFromNumber, getMoveNameFromObjectType, getNumberFromMoveName, getNumberFromObjectType, getNumbersFromObjectTypes, getObjectTypeDefinition, getObjectTypeDefinitionFromNumber, getObjectTypeFromMoveName, getObjectTypeFromNumber, getObjectTypesFromNumbers, idFromToString, isValidIdFromInput, numberToObjectType, objectTypeToNumber, parseIdFrom, queryTableItem_AddressMark, queryTableItem_DemandPresenter, queryTableItem_EntityLinker, queryTableItem_EntityRegistrar, queryTableItem_MachineNode, queryTableItem_PermissionPerm, queryTableItem_ProgressHistory, queryTableItem_RepositoryData, queryTableItem_RewardRecord, queryTableItem_TreasuryHistory, query_objects, query_objects_json, query_personal, query_table, query_tableItem, query_table_json, raw2type };
@@ -1 +1 @@
1
- import{E as a104a}from'../../common-CQggZ8z4.mjs';import{A as a104b,B as a104c,C as a104d,D as a104e,E as a104f,F as a104g,H as a104h,I as a104i,L as a104j,M as a104k,N as a104l,O as a104m,P as a104n,R as a104o,S as a104p,T as a104q,U as a104r,V as a104s,_ as a104t,a as a104u,b as a104v,c as a104w,d as a104x,f as a104y,g as a104z,h as a104A,i as a104B,j as a104C,k as a104D,l as a104E,m as a104F,n as a104G,o as a104H,p as a104I,r as a104J,s as a104K,t as a104L,u as a104M,v as a104N,w as a104O,x as a104P,y as a104Q,z as a104R}from'../../object-BZ_iF8UV.mjs';export{a104L as AllocationMode,a104G as AmountType,a104J as ArbStatus,a104B as DiscountType,a104u as IdFrom,a104H as MAX_OBJECTS_PER_QUERY,a104K as OBJECT_TYPE_DEFINITIONS,a104a as ObjectType,a104w as TreasuryOp,a104E as WitnessSourceType,a104M as WitnessTargetType,a104x as data2object,a104y as getMoveNameFromNumber,a104I as getMoveNameFromObjectType,a104F as getNumberFromMoveName,a104A as getNumberFromObjectType,a104z as getNumbersFromObjectTypes,a104t as getObjectTypeDefinition,a104N as getObjectTypeDefinitionFromNumber,a104Q as getObjectTypeFromMoveName,a104v as getObjectTypeFromNumber,a104P as getObjectTypesFromNumbers,a104p as idFromToString,a104d as isValidIdFromInput,a104O as numberToObjectType,a104q as objectTypeToNumber,a104f as parseIdFrom,a104e as queryTableItem_AddressMark,a104m as queryTableItem_DemandPresenter,a104D as queryTableItem_EntityLinker,a104b as queryTableItem_EntityRegistrar,a104C as queryTableItem_MachineNode,a104k as queryTableItem_PermissionPerm,a104l as queryTableItem_ProgressHistory,a104n as queryTableItem_RepositoryData,a104g as queryTableItem_RewardRecord,a104i as queryTableItem_TreasuryHistory,a104j as query_objects,a104o as query_objects_json,a104R as query_personal,a104c as query_table,a104s as query_tableItem,a104h as query_table_json,a104r as raw2type};
1
+ import{E as a104a}from'../../common-CQggZ8z4.mjs';import{A as a104b,B as a104c,C as a104d,D as a104e,E as a104f,F as a104g,H as a104h,I as a104i,L as a104j,M as a104k,N as a104l,O as a104m,P as a104n,R as a104o,S as a104p,T as a104q,U as a104r,V as a104s,_ as a104t,a as a104u,b as a104v,c as a104w,d as a104x,f as a104y,g as a104z,h as a104A,i as a104B,j as a104C,k as a104D,l as a104E,m as a104F,n as a104G,o as a104H,p as a104I,r as a104J,s as a104K,t as a104L,u as a104M,v as a104N,w as a104O,x as a104P,y as a104Q,z as a104R}from'../../object-CnzImhYw.mjs';export{a104L as AllocationMode,a104G as AmountType,a104J as ArbStatus,a104B as DiscountType,a104u as IdFrom,a104H as MAX_OBJECTS_PER_QUERY,a104K as OBJECT_TYPE_DEFINITIONS,a104a as ObjectType,a104w as TreasuryOp,a104E as WitnessSourceType,a104M as WitnessTargetType,a104x as data2object,a104y as getMoveNameFromNumber,a104I as getMoveNameFromObjectType,a104F as getNumberFromMoveName,a104A as getNumberFromObjectType,a104z as getNumbersFromObjectTypes,a104t as getObjectTypeDefinition,a104N as getObjectTypeDefinitionFromNumber,a104Q as getObjectTypeFromMoveName,a104v as getObjectTypeFromNumber,a104P as getObjectTypesFromNumbers,a104p as idFromToString,a104d as isValidIdFromInput,a104O as numberToObjectType,a104q as objectTypeToNumber,a104f as parseIdFrom,a104e as queryTableItem_AddressMark,a104m as queryTableItem_DemandPresenter,a104D as queryTableItem_EntityLinker,a104b as queryTableItem_EntityRegistrar,a104C as queryTableItem_MachineNode,a104k as queryTableItem_PermissionPerm,a104l as queryTableItem_ProgressHistory,a104n as queryTableItem_RepositoryData,a104g as queryTableItem_RewardRecord,a104i as queryTableItem_TreasuryHistory,a104j as query_objects,a104o as query_objects_json,a104R as query_personal,a104c as query_table,a104s as query_tableItem,a104h as query_table_json,a104r as raw2type};
@@ -0,0 +1 @@
1
+ import{t as a105a}from'./client-Qky9ahYr.mjs';import{t as a105b}from'./Transaction-B_HAG_T7.mjs';import{n as a105c}from'./network-CeDd07Hg.mjs';import{o as a105d}from'./exception--UEPnygY.mjs';import{SQLiteStorage}from'./w/local/storage.mjs';import{Config}from'./w/local/config.mjs';import{Account}from'./w/local/account.mjs';import{bigIntToBytes,bytesToHex,hexToBytes as a105e}from'./w/local/evm/rlp.mjs';import{registerBridgeEvmNetworks}from'./w/local/evm/networks.mjs';import{EvmAccount}from'./w/local/evm-account.mjs';import{d as a105f,i as a105g,o as a105h,s as a105i}from'./query-kEOQO88T.mjs';import{keccak_256}from'@noble/hashes/sha3.js';const BRIDGE_ETH_V2_SIG='bridgeETHV2(bytes,uint8)',BRIDGE_ETH_V2_SELECTOR='b4b7068c',BRIDGE_ETH_V1_SELECTOR='9449ebd2',BRIDGE_ERC20_V1_SELECTOR='212afaff',BRIDGE_ERC20_V2_SIG='bridgeERC20V2(uint8,uint256,bytes,uint8)',BRIDGE_ERC20_V2_SELECTOR='0bdba58b',TRANSFER_BRIDGED_V2_SIG='transferBridgedTokensWithSignaturesV2(bytes[],(uint8,uint8,uint64,uint8,bytes))',TRANSFER_BRIDGED_V2_SELECTOR='9c3ecefb',TRANSFER_BRIDGED_V1_SIG='transferBridgedTokensWithSignatures(bytes[],(uint8,uint8,uint64,uint8,bytes))',APPROVE_SIG='approve(address,uint256)',APPROVE_SELECTOR='095ea7b3',WORD_SIZE=0x20;function uintWord(a){const b=bigIntToBytes(BigInt(a)),c=new Uint8Array(WORD_SIZE);return c['set'](b,WORD_SIZE-b['length']),c;}function addressWord(a){const b=a105e(a['startsWith']('0x')?a['slice'](0x2):a);if(b['length']!==0x14)throw new Error('Invalid\x20EVM\x20address\x20length:\x20'+a);const c=new Uint8Array(WORD_SIZE);return c['set'](b,WORD_SIZE-0x14),c;}function padToWord(a){const b=a['length']%WORD_SIZE;if(b===0x0)return a;const c=new Uint8Array(a['length']+WORD_SIZE-b);return c['set'](a,0x0),c;}function concat(...b){const c=b['reduce']((f,g)=>f+g['length'],0x0),d=new Uint8Array(c);let e=0x0;for(const f of b){d['set'](f,e),e+=f['length'];}return d;}function encodeBytes(a){return concat(uintWord(BigInt(a['length'])),padToWord(a));}function computeSelector(a){return bytesToHex(keccak_256(new TextEncoder()['encode'](a))['slice'](0x0,0x4));}function computeEventTopic(a){return'0x'+bytesToHex(keccak_256(new TextEncoder()['encode'](a)));}function encodeBridgeETHV2(a,b){const c=a105e(a['startsWith']('0x')?a['slice'](0x2):a);if(c['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes,\x20got\x20'+c['length']);const d=uintWord(0x40n),e=uintWord(b),f=encodeBytes(c);return'0x'+bytesToHex(concat(a105e(BRIDGE_ETH_V2_SELECTOR),d,e,f));}function encodeBridgeETH(a,b){const c=a105e(a['startsWith']('0x')?a['slice'](0x2):a);if(c['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes,\x20got\x20'+c['length']);const d=uintWord(0x40n),e=uintWord(b),f=encodeBytes(c);return'0x'+bytesToHex(concat(a105e(BRIDGE_ETH_V1_SELECTOR),d,e,f));}function encodeBridgeERC20V2(a,b,c,d){const e=a105e(c['startsWith']('0x')?c['slice'](0x2):c);if(e['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes');const f=uintWord(0x80n),g=encodeBytes(e);return'0x'+bytesToHex(concat(a105e(BRIDGE_ERC20_V2_SELECTOR),uintWord(a),uintWord(b),f,uintWord(d),g));}function encodeBridgeERC20(a,b,c,d){const e=a105e(c['startsWith']('0x')?c['slice'](0x2):c);if(e['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes');const f=uintWord(0x80n),g=encodeBytes(e);return'0x'+bytesToHex(concat(a105e(BRIDGE_ERC20_V1_SELECTOR),uintWord(a),uintWord(b),f,uintWord(d),g));}function encodeMessage(a){return concat(uintWord(a['messageType']),uintWord(a['version']),uintWord(a['nonce']),uintWord(a['chainID']),uintWord(0xa0n),encodeBytes(a['payload']));}function encodeBytesArray(a){const b=a['length'],c=b*0x20,d=[];let e=0x0n;for(const g of a){d['push'](BigInt(c)+e),e+=BigInt(0x20+Math['ceil'](g['length']/0x20)*0x20);}const f=[uintWord(BigInt(b))];for(const h of d)f['push'](uintWord(h));for(const i of a)f['push'](encodeBytes(i));return concat(...f);}function encodeTransferBridgedTokensWithSignatures(a,b,c=!![]){const d=c?TRANSFER_BRIDGED_V2_SELECTOR:computeSelector(TRANSFER_BRIDGED_V1_SIG),e=encodeBytesArray(a),f=encodeMessage(b),g=uintWord(0x40n),h=uintWord(BigInt(0x40+e['length']));return'0x'+bytesToHex(concat(a105e(d),g,h,e,f));}function encodeApprove(a,b){return'0x'+bytesToHex(concat(a105e(APPROVE_SELECTOR),addressWord(a),uintWord(b)));}function encodeTokenTransferPayloadV2(a){const {senderAddress:b,targetChain:c,recipientAddress:d,tokenID:e,amount:f,timestampMs:g}=a;if(b['length']!==0x20)throw new Error('senderAddress\x20must\x20be\x2032\x20bytes');if(d['length']!==0x14)throw new Error('recipientAddress\x20must\x20be\x2020\x20bytes');const h=new Uint8Array(0x48);let i=0x0;h[i++]=0x20,h['set'](b,i),i+=0x20,h[i++]=c,h[i++]=0x14,h['set'](d,i),i+=0x14,h[i++]=e;const j=bigIntToBytes(f);h['set'](j,i+0x8-j['length']),i+=0x8;const k=bigIntToBytes(g);return h['set'](k,i+0x8-k['length']),h;}function verifySelectors(){const a=[[BRIDGE_ETH_V2_SIG,BRIDGE_ETH_V2_SELECTOR],[BRIDGE_ERC20_V2_SIG,BRIDGE_ERC20_V2_SELECTOR],[TRANSFER_BRIDGED_V2_SIG,TRANSFER_BRIDGED_V2_SELECTOR],[APPROVE_SIG,APPROVE_SELECTOR]];for(const [b,c]of a){const d=computeSelector(b);if(d!==c)throw new Error('ABI\x20selector\x20mismatch\x20for\x20'+b+':\x20expected\x20'+c+',\x20got\x20'+d);}}verifySelectors();const TOKENS_DEPOSITED_V2_TOPIC=computeEventTopic('TokensDepositedV2(uint8,uint64,uint8,uint8,uint64,address,bytes,uint256)'),TOKENS_DEPOSITED_TOPIC=computeEventTopic('TokensDeposited(uint8,uint64,uint8,uint8,uint64,address,bytes)'),TOKENS_CLAIMED_TOPIC=computeEventTopic('TokensClaimed(uint8,uint64,uint8,uint8,uint64,address,bytes)'),ERC20_TRANSFER_TOPIC=computeEventTopic('Transfer(address,address,uint256)');async function depositEth(a,b){try{const c=b['destinationChainId']??0x0,d=b['version']!=='v1'?encodeBridgeETHV2(b['recipientWowAddress'],c):encodeBridgeETH(b['recipientWowAddress'],c),f={'to':b['bridgeProxyAddress'],'value':a,'data':d,'network':b['network'],'rpcUrl':b['rpcUrl'],'gasLimit':0x3d090n},g=EvmAccount['Instance']();await g['active']();const h=await g['sign_and_send'](f,b['rpcUrl']);if(h['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20deposit\x20transaction\x20reverted','revertReason':'txHash:\x20'+h['transactionHash']}};return{'success':!![],'txHash':h['transactionHash']};}catch(i){return{'success':![],'error':{'code':'UNKNOWN','message':'ETH\x20deposit\x20failed:\x20'+(i?.['message']??String(i)),'raw':i}};}}async function depositErc20(a,b){try{const c=EvmAccount['Instance']();await c['active']();const d=b['destinationChainId']??0x0,f={'to':b['tokenAddress'],'data':encodeApprove(b['bridgeProxyAddress'],a),'network':b['network'],'rpcUrl':b['rpcUrl']},g=await c['sign_and_send'](f,b['rpcUrl']);if(g['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ERC20\x20approve\x20reverted','revertReason':'txHash:\x20'+g['transactionHash']}};const h=b['version']!=='v1'?encodeBridgeERC20V2(b['tokenId'],a,b['recipientWowAddress'],d):encodeBridgeERC20(b['tokenId'],a,b['recipientWowAddress'],d),i={'to':b['bridgeProxyAddress'],'value':0x0n,'data':h,'network':b['network'],'rpcUrl':b['rpcUrl']},j=await c['sign_and_send'](i,b['rpcUrl']);if(j['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ERC20\x20deposit\x20transaction\x20reverted','revertReason':'txHash:\x20'+j['transactionHash']}};return{'success':!![],'txHash':j['transactionHash']};}catch(k){return{'success':![],'error':{'code':'UNKNOWN','message':'ERC20\x20deposit\x20failed:\x20'+(k?.['message']??String(k)),'raw':k}};}}async function depositFromEth(a,b){if(a['tokenAddress']){if(a['tokenId']===void 0x0)return{'success':![],'error':{'code':'INVALID_PARAM','message':'tokenId\x20is\x20required\x20for\x20ERC20\x20deposit'}};return depositErc20(a['amount'],{...b,'tokenAddress':a['tokenAddress'],'tokenId':a['tokenId']});}return depositEth(a['amount'],b);}function buildClaimMessage(a){const b=encodeTokenTransferPayloadV2({'senderAddress':a['senderAddress'],'targetChain':a['targetChain'],'recipientAddress':a['recipientAddress'],'tokenID':a['tokenId'],'amount':a['amount'],'timestampMs':a['timestampMs']});return{'messageType':a['messageType'],'version':a['version'],'nonce':a['nonce'],'chainID':a['sourceChain'],'payload':b};}function signaturesToBytes(a){return a['map'](b=>{const c=a105e(b['signature']['startsWith']('0x')?b['signature']['slice'](0x2):b['signature']);if(c['length']!==0x41)throw new Error('Invalid\x20signature\x20length:\x20'+c['length']+'\x20(expected\x2065)');return c;});}async function claimOnEth(a,b){try{const c=b['useV2']??!![];let d=await b['nodeClient']['signWowToEth'](a['wowTxDigest'],a['eventIndex']);d['length']===0x0&&(console['warn']('tx_digest\x20路径未收集到签名,回退到\x20seq\x20路径:',a['message']['chainID'],a['message']['messageType'],a['message']['nonce']),d=await b['nodeClient']['signWowTokenTransfer'](a['message']['chainID'],a['message']['messageType'],a['message']['nonce']));if(d['length']===0x0)return{'success':![],'error':{'code':'NO_SIGNATURES','message':buildNoSignaturesMessage(a['message']['chainID'],a['message']['messageType'],a['message']['nonce'])}};const f=d[0x0]['action']?messageFromActionData(d[0x0]['action'],a['message']):a['message'],g=encodeTransferBridgedTokensWithSignatures(signaturesToBytes(d),f,c),h={'to':b['bridgeProxyAddress'],'value':0x0n,'data':g,'network':b['network'],'rpcUrl':b['rpcUrl']},i=EvmAccount['Instance']();await i['active']();const j=await i['sign_and_send'](h,b['rpcUrl']);if(j['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20transaction\x20reverted','revertReason':'txHash:\x20'+j['transactionHash']}};return{'success':!![],'txHash':j['transactionHash']};}catch(k){return wrapBridgeError(k,'UNKNOWN','ETH\x20claim\x20failed');}}function bridgeChainNameToId(a){switch(a){case'WowMainnet':return 0x0;case'EthMainnet':return 0xa;default:throw new Error('Unknown\x20bridge\x20chain\x20name:\x20'+a);}}function messageFromActionData(a,b){if(!a||typeof a!=='object')return b;const c=a;if(c['WowToEthTokenTransferV2']){const d=c['WowToEthTokenTransferV2'],e=d['wow_address']['startsWith']('0x')?d['wow_address']['slice'](0x2):d['wow_address'],f=d['eth_address']['startsWith']('0x')?d['eth_address']['slice'](0x2):d['eth_address'],g=a105e(e),h=a105e(f),i=encodeTokenTransferPayloadV2({'senderAddress':g,'targetChain':bridgeChainNameToId(d['eth_chain_id']),'recipientAddress':h,'tokenID':d['token_id'],'amount':BigInt(d['amount_adjusted']),'timestampMs':BigInt(d['timestamp_ms'])});return{'messageType':0x0,'version':0x2,'nonce':BigInt(d['nonce']),'chainID':bridgeChainNameToId(d['wow_chain_id']),'payload':i};}return console['warn']('[claimOnEthBySeq]\x20Unknown\x20action\x20data\x20type,\x20falling\x20back\x20to\x20local\x20message:',Object['keys'](c)),b;}async function claimOnEthBySeq(a,b){try{const c=b['useV2']??!![],d=await b['nodeClient']['signWowTokenTransfer'](a['sourceChain'],a['messageType'],a['seqNum']);if(d['length']===0x0)return{'success':![],'error':{'code':'NO_SIGNATURES','message':buildNoSignaturesMessage(a['sourceChain'],a['messageType'],a['seqNum'])}};const f=d[0x0]['action']?messageFromActionData(d[0x0]['action'],a['message']):a['message'],g=encodeTransferBridgedTokensWithSignatures(signaturesToBytes(d),f,c),h={'to':b['bridgeProxyAddress'],'value':0x0n,'data':g,'network':b['network'],'rpcUrl':b['rpcUrl']},i=EvmAccount['Instance']();await i['active']();let j;try{await i['ethCall'](h);}catch(l){const m=l?.['message']??String(l);if(m['includes']('execution\x20reverted')||m['includes']('reverted\x20with\x20reason'))j=m;else console['warn']('\x20\x20[claimOnEthBySeq]\x20eth_call\x20warning\x20(skipped):',m['slice'](0x0,0x78));}if(j)return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20reverted','revertReason':j}};const k=await i['sign_and_send'](h,b['rpcUrl']);if(k['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20transaction\x20reverted','revertReason':'txHash:\x20'+k['transactionHash']}};return{'success':!![],'txHash':k['transactionHash']};}catch(n){return wrapBridgeError(n,'UNKNOWN','ETH\x20claim\x20(by\x20seq)\x20failed');}}function buildNoSignaturesMessage(a,b,c){return['No\x20signatures\x20collected\x20for\x20seq='+c+'\x20(sourceChain='+a+',\x20messageType='+b+').','Possible\x20reasons:','\x20\x201)\x20Bridge\x20nodes\x20are\x20not\x20reachable\x20or\x20not\x20synced','\x20\x202)\x20The\x20seq\x20'+c+'\x20does\x20not\x20exist\x20on\x20source\x20chain','\x20\x203)\x20The\x20message\x20has\x20already\x20expired','\x20\x204)\x20Insufficient\x20quorum\x20(need\x202/3\x20of\x20total\x20committee\x20weight)','Check\x20node\x20health\x20with\x20nodeClient.pingAll().']['join']('\x0a');}function wrapBridgeError(a,b,c){return{'success':![],'error':{'code':b,'message':c+':\x20'+(a?.['message']??String(a)),'raw':a}};}const BRIDGE_PACKAGE$1='0xb',DEFAULT_BRIDGE_OBJECT_ID$1='0x9',CLOCK_OBJECT_ID$1='0x6',EVM_ADDRESS_LENGTH=0x14,TOKEN_DEPOSITED_EVENT_V2_TYPE=BRIDGE_PACKAGE$1+'::bridge::TokenDepositedEventV2';async function depositFromWow(a,b){if(!a['tokenType']||a['tokenType']['split']('::')['length']<0x3)a105d('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['amount']<=0x0n)a105d('invalid\x20parameter','amount\x20must\x20be\x20positive');const c=parseEvmAddress(a['recipientEthAddress']),d=a['destinationChainId']??0xa,f=a['bridgeObjectId']??DEFAULT_BRIDGE_OBJECT_ID$1,g=new a105b(),h=await Account['Instance']()['get_coin_object'](g,a['amount'],a['tokenType'],await getEnvAccount$1(b),b['network']);if(!h)a105d('fail','Failed\x20to\x20get\x20coin\x20object');g['moveCall']({'target':BRIDGE_PACKAGE$1+'::bridge::send_token_v2','arguments':[g['object'](f),g['pure']['u8'](d),g['pure']['vector']('u8',c),h,g['object'](CLOCK_OBJECT_ID$1)],'typeArguments':[a['tokenType']]});const i=await Account['Instance']()['sign_and_commit'](g,await getEnvAccount$1(b),b['network']);if(!i||!i['digest'])a105d('fail','WOW\x20deposit\x20transaction\x20failed');let j=i;if(!i['events']||i['events']['length']===0x0){const {WowClient:l}=await import('./client/index.mjs'),{Config:m}=await import('./w/local/config.mjs'),n=await m['Instance']()['network_get'](b['network']),o=new l({'url':a105c(n),'network':n});let p;for(let q=0x0;q<0xa;q++){try{j=await o['getTransactionBlock']({'digest':i['digest'],'options':{'showEvents':!![],'showEffects':!![]}});if(j['events']&&j['events']['length']>0x0)break;}catch(r){p=r;}await new Promise(s=>setTimeout(s,0x3e8*(q+0x1)));}if(!j['events']||j['events']['length']===0x0)throw p??new Error('Failed\x20to\x20fetch\x20events\x20for\x20tx\x20'+i['digest']);}const k=parseSeqNumFromReceipt(j);if(k===void 0x0)a105d('fail','Failed\x20to\x20parse\x20seqNum\x20from\x20WOW\x20tx\x20'+i['digest']);return{'digest':i['digest'],'seqNum':k,'receipt':i};}function parseEvmAddress(a){let b=a;if(b['startsWith']('0x')||b['startsWith']('0X'))b=b['slice'](0x2);if(b['length']!==EVM_ADDRESS_LENGTH*0x2)a105d('invalid\x20parameter','Invalid\x20EVM\x20address:\x20'+a+'\x20(expected\x2020\x20bytes)');const c=new Uint8Array(EVM_ADDRESS_LENGTH);for(let d=0x0;d<EVM_ADDRESS_LENGTH;d++)c[d]=parseInt(b['slice'](d*0x2,d*0x2+0x2),0x10);return c;}function normalizeEventType$1(a){const b=a['split']('::');if(b['length']>0x0&&b[0x0]['startsWith']('0x')){const c=b[0x0]['toLowerCase']()['replace'](/^0x0+/,'0x');b[0x0]=c==='0x'?'0x0':c;}return b['join']('::');}function parseSeqNumFromReceipt(a){const b=a['events'];if(!b||b['length']===0x0)return void 0x0;const c=normalizeEventType$1(TOKEN_DEPOSITED_EVENT_V2_TYPE);for(const d of b){if(normalizeEventType$1(d['type'])!==c)continue;const e=d['parsedJson'];if(!e)continue;const f=e['seq_num'];if(typeof f==='string'||typeof f==='number')return BigInt(f);}}async function getEnvAccount$1(a){return a['account']??void 0x0;}const BRIDGE_PACKAGE='0xb',CLOCK_OBJECT_ID='0x6',TOKEN_TRANSFER_APPROVED_TYPE=BRIDGE_PACKAGE+'::bridge::TokenTransferApproved',TOKEN_TRANSFER_CLAIMED_TYPE=BRIDGE_PACKAGE+'::bridge::TokenTransferClaimed',DEFAULT_BRIDGE_OBJECT_ID='0x9';async function claimOnWow(a,b){if(!a['tokenType']||a['tokenType']['split']('::')['length']<0x3)a105d('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['bridgeSeqNum']<0x0n)a105d('invalid\x20parameter','bridgeSeqNum\x20must\x20be\x20non-negative');const c=a['sourceChainId']??0xa,d=a['bridgeObjectId']??DEFAULT_BRIDGE_OBJECT_ID,e=new a105b();e['moveCall']({'target':BRIDGE_PACKAGE+'::bridge::claim_and_transfer_token','arguments':[e['object'](d),e['object'](CLOCK_OBJECT_ID),e['pure']['u8'](c),e['pure']['u64'](a['bridgeSeqNum'])],'typeArguments':[a['tokenType']]});const f=await Account['Instance']()['sign_and_commit'](e,await getEnvAccount(b),b['network']);if(!f||!f['digest'])a105d('fail','WOW\x20claim\x20transaction\x20failed');return{'digest':f['digest'],'receipt':f};}let WowClaimStatus=function(a){return a['NotApproved']='not_approved',a['Approved']='approved',a['Claimed']='claimed',a['NotFound']='not_found',a;}({});async function queryWowClaimStatus(a,b){const c=a['sourceChainId']??0xa,d=await Config['Instance']()['network_get'](b),e=new a105a({'url':a105c(d),'network':d}),f=await e['queryEvents']({'query':{'MoveEventType':TOKEN_TRANSFER_CLAIMED_TYPE},'limit':0x64,'order':'descending'});for(const h of f['data']){const i=h['parsedJson'];if(!i)continue;const j=i['message_key'];if(!j)continue;const k=Number(j['source_chain']),l=BigInt(j['bridge_seq_num']??0x0);if(k===c&&l===a['bridgeSeqNum'])return{'status':'claimed','claimedTxHash':h['id']?.['txDigest']};}const g=await e['queryEvents']({'query':{'MoveEventType':TOKEN_TRANSFER_APPROVED_TYPE},'limit':0x64,'order':'descending'});for(const m of g['data']){const n=m['parsedJson'];if(!n)continue;const o=n['message_key'];if(!o)continue;const p=Number(o['source_chain']),q=BigInt(o['bridge_seq_num']??0x0);if(p===c&&q===a['bridgeSeqNum'])return{'status':'approved','approvedEventId':m['id']?.['eventSeq']};}return{'status':'not_approved'};}async function getEnvAccount(a){return a['account']??void 0x0;}async function queryEthTxReceipt(a,b,c=0x2710){const d=new AbortController(),f=setTimeout(()=>d['abort'](),c);try{const g=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_getTransactionReceipt','params':[a]}),'signal':d['signal']}))['json']();if(g['error'])throw new Error('JSON-RPC\x20error:\x20'+g['error']['message']);return g['result'];}catch(h){if(h?.['name']==='AbortError')throw new Error('queryEthTxReceipt\x20timeout\x20after\x20'+c+'ms');throw h;}finally{clearTimeout(f);}}async function queryEthBalance(a,b){const c=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_getBalance','params':[a,'latest']})}))['json']();if(c['error'])throw new Error('JSON-RPC\x20error:\x20'+c['error']['message']);return BigInt(c['result']);}async function queryErc20Balance(a,b,c){const d='0x70a08231000000000000000000000000'+b['slice'](0x2)['toLowerCase'](),e=await(await fetch(c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_call','params':[{'to':a,'data':d},'latest']})}))['json']();if(e['error'])throw new Error('JSON-RPC\x20error:\x20'+e['error']['message']);return BigInt(e['result']);}async function queryEthTxConfirmations(a,b,c=0x2710){const d=await queryEthTxReceipt(a,b,c);if(!d?.['blockNumber'])return 0x0;const e=new AbortController(),f=setTimeout(()=>e['abort'](),c);try{const g=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x2,'method':'eth_blockNumber','params':[]}),'signal':e['signal']}))['json'](),h=BigInt(g['result']),i=BigInt(d['blockNumber']);return Number(h-i);}finally{clearTimeout(f);}}async function queryWowTx(a,b){try{return await a['getTransactionBlock']({'digest':b,'options':{'showEffects':!![],'showEvents':!![]}});}catch{return null;}}let BridgeTransferDirection=function(a){return a['EvmToWow']='evm_to_wow',a['WowToEvm']='wow_to_evm',a;}({}),BridgeTransferStep=function(a){return a['NotStarted']='not_started',a['SourceTxPending']='source_tx_pending',a['SourceTxConfirmed']='source_tx_confirmed',a['NodeSigning']='node_signing',a['SignaturesReady']='signatures_ready',a['ClaimTxPending']='claim_tx_pending',a['Completed']='completed',a['Failed']='failed',a;}({});const BRIDGE_STEP_DESCRIPTIONS={['not_started']:'尚未发起跨链',['source_tx_pending']:'源链交易已提交,等待区块确认',['source_tx_confirmed']:'源链交易已确认,等待\x20bridge\x20节点签名\x20approve',['node_signing']:'bridge\x20节点签名收集中',['signatures_ready']:'签名已收集完毕,可发起目标链\x20claim',['claim_tx_pending']:'目标链\x20claim\x20交易已提交,待确认',['completed']:'跨链完成',['failed']:'跨链失败'};let BridgeTransferStatus=function(a){return a['NotStarted']='not_started',a['Pending']='pending',a['Confirmed']='confirmed',a['SignaturesReady']='signatures_ready',a['Claiming']='claiming',a['Completed']='completed',a['Failed']='failed',a;}({});function makeBridgeTransferState(a){return{'status':stepToStatus(a['step']),'stepDescription':BRIDGE_STEP_DESCRIPTIONS[a['step']],'updatedAt':Date['now'](),...a};}function stepToStatus(a){switch(a){case'not_started':return'not_started';case'source_tx_pending':return'pending';case'source_tx_confirmed':return'confirmed';case'node_signing':return'confirmed';case'signatures_ready':return'signatures_ready';case'claim_tx_pending':return'claiming';case'completed':return'completed';case'failed':return'failed';}}function parseEthDepositEvent(a,b){const c=b['toLowerCase']();for(const d of a['logs']){if(d['address']['toLowerCase']()!==c)continue;const e=d['topics'][0x0]===TOKENS_DEPOSITED_V2_TOPIC,f=d['topics'][0x0]===TOKENS_DEPOSITED_TOPIC;if(!e&&!f)continue;const g=a105e(d['data']);if(g['length']<0x80)continue;const h=u=>g[u*0x20+0x1f],i=u=>{const v=g['slice'](u*0x20,u*0x20+0x20);return BigInt('0x'+bytesToHex(v['slice'](0x18,0x20)));},j=u=>'0x'+bytesToHex(g['slice'](u*0x20+0xc,u*0x20+0x20)),k=h(0x0),l=i(0x1),m=j(0x2),n=Number(i(0x3)),o=Number(BigInt('0x'+bytesToHex(g['slice'](n,n+0x20))['slice'](0x30))),p='0x'+bytesToHex(g['slice'](n+0x20,n+0x20+o)),q=d['topics'][0x1]?.['slice'](0x40)??'00',r=parseInt(q,0x10),s=d['topics'][0x3]?.['slice'](0x40)??'00',t=parseInt(s,0x10);return{'bridgeSeq':BigInt('0x'+(d['topics'][0x2]?.['slice'](0x38)??'0')),'sourceChain':r,'sender':m,'targetChain':t,'recipient':p,'tokenID':k,'amount':l};}return null;}function parseEthClaimEvent(a,b){const c=b['toLowerCase']();for(const d of a['logs']){if(d['address']['toLowerCase']()!==c)continue;if(d['topics'][0x0]!==TOKENS_CLAIMED_TOPIC)continue;const e=a105e(d['data']);if(e['length']<0x80)continue;const f=n=>e[n*0x20+0x1f],g=n=>{const o=e['slice'](n*0x20,n*0x20+0x20);return BigInt('0x'+bytesToHex(o['slice'](0x18,0x20)));},h=n=>'0x'+bytesToHex(e['slice'](n*0x20+0xc,n*0x20+0x20));f(0x0);const i=g(0x1),j=h(0x2),k=Number(g(0x3)),l=Number(BigInt('0x'+bytesToHex(e['slice'](k,k+0x20))['slice'](0x30))),m='0x'+bytesToHex(e['slice'](k+0x20,k+0x20+l));return{'bridgeSeq':BigInt('0x'+(d['topics'][0x2]?.['slice'](0x38)??'0')),'claimer':j,'recipient':m,'amount':i};}return null;}async function queryEvmToWowTransferStatus(a,b,c){const d=await queryEthTxReceipt(a,b);if(!d)return makeBridgeTransferState({'step':'source_tx_pending','direction':'evm_to_wow','sourceTxHash':a});if(d['status']!=='0x1')return makeBridgeTransferState({'step':'failed','direction':'evm_to_wow','sourceTxHash':a,'ethReceipt':d,'error':'ETH\x20source\x20transaction\x20reverted'});const e=parseEthDepositEvent(d,c);if(!e)return makeBridgeTransferState({'step':'failed','direction':'evm_to_wow','sourceTxHash':a,'ethReceipt':d,'error':'No\x20TokensDeposited/TokensDepositedV2\x20event\x20found\x20in\x20receipt'});let f=0x0;try{f=await queryEthTxConfirmations(a,b);}catch{}return makeBridgeTransferState({'step':'source_tx_confirmed','direction':'evm_to_wow','sourceTxHash':a,'bridgeSeq':e['bridgeSeq'],'confirmations':f,'ethReceipt':d});}async function queryWowToEvmTransferStatus(a,b){const c=await queryWowTx(a,b);if(!c)return makeBridgeTransferState({'step':'source_tx_pending','direction':'wow_to_evm','sourceTxHash':b});if(c['effects']?.['status']?.['status']!=='success')return makeBridgeTransferState({'step':'failed','direction':'wow_to_evm','sourceTxHash':b,'wowReceipt':c,'error':c['effects']?.['status']?.['error']||'WOW\x20transaction\x20failed'});return makeBridgeTransferState({'step':'source_tx_confirmed','direction':'wow_to_evm','sourceTxHash':b,'bridgeSeq':parseWowDepositSeqFromReceipt(c),'wowReceipt':c});}function normalizeEventType(a){const b=a['split']('::');if(b['length']>0x0&&b[0x0]['startsWith']('0x')){const c=b[0x0]['toLowerCase']()['replace'](/^0x0+/,'0x');b[0x0]=c==='0x'?'0x0':c;}return b['join']('::');}function parseWowDepositSeqFromReceipt(a){const b=a['events'];if(!b||b['length']===0x0)return void 0x0;const c=normalizeEventType('0xb::bridge::TokenDepositedEventV2');for(const d of b){if(normalizeEventType(d['type'])!==c)continue;const e=d['parsedJson'];if(!e)continue;const f=e['seq_num'];if(typeof f==='string'||typeof f==='number')return BigInt(f);}}async function waitForEthTx(a,b,c=0x1,d=0x2ee0,e=0x1e*0xea60){const f=Math['max'](0x1,Math['ceil'](e/d));for(let g=0x0;g<f;g++){const h=await queryEthTxReceipt(a,b);if(h){const j=await queryEthTxConfirmations(a,b);if(j>=c)return h;console['log']('[waitForEthTx]\x20'+(g+0x1)+'/'+f+':\x20'+j+'/'+c+'\x20confirmations');}else console['log']('[waitForEthTx]\x20'+(g+0x1)+'/'+f+':\x20pending');await sleep$1(d);}a105d('fail','Timeout\x20waiting\x20for\x20ETH\x20tx\x20'+a+'\x20after\x20'+f+'\x20iterations');}async function waitForWowTx(a,b,c=0xbb8,d=0x5*0xea60){const e=Math['max'](0x1,Math['ceil'](d/c));for(let f=0x0;f<e;f++){const g=await queryWowTx(a,b);if(g&&g['effects']?.['status']?.['status']==='success')return g;if(g&&g['effects']?.['status']?.['status']==='failure')a105d('fail','WOW\x20tx\x20'+b+'\x20failed:\x20'+(g['effects']['status']['error']||'unknown'));console['log']('[waitForWowTx]\x20'+(f+0x1)+'/'+e+':\x20pending'),await sleep$1(c);}a105d('fail','Timeout\x20waiting\x20for\x20WOW\x20tx\x20'+b+'\x20after\x20'+e+'\x20iterations');}function sleep$1(a){return new Promise(b=>setTimeout(b,a));}function isBase64(a){return/^[A-Za-z0-9+/]*={0,2}$/['test'](a)&&a['length']>0x0;}function decodeFlex(a){if(a['startsWith']('0x')||a['startsWith']('0X'))return a105e(a);if(/^[0-9a-fA-F]+$/['test'](a)&&a['length']%0x2===0x0)return a105e(a);if(isBase64(a))return Buffer['from'](a,'base64');throw new Error('Cannot\x20decode\x20signature/pubkey\x20string:\x20'+a);}function parseSignedAction(a,b){const c=decodeFlex(a['auth_signature']['authority_pub_key']),d=decodeFlex(a['auth_signature']['signature']);if(c['length']!==0x21&&c['length']!==0x41)throw new Error('Invalid\x20pubkey\x20length:\x20'+c['length']+'\x20(expected\x2033\x20or\x2065)');if(d['length']!==0x41)throw new Error('Invalid\x20signature\x20length:\x20'+d['length']+'\x20(expected\x2065)');return{'signerPubkey':'0x'+bytesToHex(c),'signature':'0x'+bytesToHex(d),'weight':b,'action':a['data']};}var BridgeNodeClient=class{constructor(a){this['committee']=a['committee'],this['timeoutMs']=a['timeoutMs']??0x7530,this['quorumRatio']=a['quorumRatio']??0x2/0x3;}get['totalWeight'](){return this['committee']['reduce']((a,b)=>a+b['weight'],0x0);}get['quorumWeight'](){return Math['floor'](this['totalWeight']*this['quorumRatio'])+0x1;}async['signEthToWow'](a,b){const c='/sign/bridge_tx/eth/wow/'+a+'/'+b;return this['collectSignatures'](c);}async['signWowToEth'](a,b){const c='/sign/bridge_tx/wow/eth/'+a+'/'+b;return this['collectSignatures'](c);}async['signWowTokenTransfer'](a,b,c){const d='/sign/bridge_action/wow/eth/'+a+'/'+b+'/'+c;return this['collectSignatures'](d);}async['ping'](a){try{const b=new AbortController(),c=setTimeout(()=>b['abort'](),Math['min'](this['timeoutMs'],0x2710)),d=await fetch(a+'/ping',{'signal':b['signal']});return clearTimeout(c),d['ok'];}catch{return![];}}async['pingAll'](){return Promise['all'](this['committee']['map'](async a=>({'url':a['baseUrl'],'healthy':await this['ping'](a['baseUrl'])})));}async['collectSignatures'](a){const b=new Map();let c=0x0;const d=this['committee']['map'](async f=>{try{return{'action':parseSignedAction(await this['fetchFromNode'](f['baseUrl'],a),f['weight']),'ok':!![]};}catch(g){return{'action':null,'ok':![],'error':g['message']};}}),e=await Promise['all'](d);for(const f of e){if(!f['ok']||!f['action'])continue;!b['has'](f['action']['signerPubkey'])&&(b['set'](f['action']['signerPubkey'],f['action']),c+=f['action']['weight']);}if(c<this['quorumWeight'])a105d('fail','Quorum\x20not\x20reached:\x20collected\x20'+c+',\x20required\x20'+this['quorumWeight']+'\x20(total\x20'+this['totalWeight']+')');return Array['from'](b['values']());}async['fetchFromNode'](a,b){const c=new AbortController(),d=setTimeout(()=>c['abort'](),this['timeoutMs']);try{const e=await fetch(''+a+b,{'signal':c['signal'],'headers':{'Accept':'application/json'}});if(!e['ok'])throw new Error('Node\x20'+a+'\x20returned\x20'+e['status']+':\x20'+await e['text']());return await e['json']();}finally{clearTimeout(d);}}},BridgeClient=class BridgeClient{constructor(a={}){this['_transferHistory']=new Map(),this['_transferCounter']=0x0,this['_loadHistoryPromise']=Promise['resolve'](),this['config']=a['config']??loadDefaultConfig(),this['wowEnv']=a['wowEnv'],registerBridgeEvmNetworks({'evmChain':{'chainId':this['config']['ethereum']['chainId'],'rpcUrl':this['config']['ethereum']['rpcUrl']},'setAsDefault':!![]});if(this['config']['l2']){for(const c of Object['values'](this['config']['l2']))if(c)registerBridgeEvmNetworks({'evmChain':{'chainId':c['chainId'],'rpcUrl':c['rpcUrl']}});}const b=this['config']['bridgeNodeUrls']['map']((d,e)=>({'pubkey':a105h[e]??'0x'+e['toString']()['padStart'](0x40,'0'),'weight':a105i[e]??0x1,'baseUrl':d}));this['nodeClient']=new BridgeNodeClient({'committee':b,'timeoutMs':this['config']['timeouts']['nodeRpcMs']}),this['_loadHistoryPromise']=this['_loadHistory']();}async['bridgeNativeEvmToWow'](a){return this['depositEvmToWowAndFinalize']({'amount':a['amount'],'recipientWowAddress':a['recipientWowAddress'],'waitForFinalization':a['waitForFinalization'],'token':'ETH'});}async['bridgeErc20ToWow'](a){if(a['token']==='ETH')a105d('invalid\x20parameter','Use\x20bridgeNativeEvmToWow()\x20for\x20native\x20ETH;\x20bridgeErc20ToWow()\x20only\x20accepts\x20WETH/WBTC/USDC/USDT');return this['depositEvmToWowAndFinalize']({'amount':a['amount'],'recipientWowAddress':a['recipientWowAddress'],'waitForFinalization':a['waitForFinalization'],'token':a['token']});}async['resolveEvmRpcUrl'](){const a=this['config']['ethereum'];if(a['rpcUrl'])return a['rpcUrl'];const {EvmNetworkRegistry:b}=await import('./w/local/evm/networks.mjs'),c=b['Instance'](),d=await c['resolve'](a['chainId']),e=c['pickHealthyRpc'](d);if(!e)a105d('invalid\x20parameter','No\x20healthy\x20EVM\x20RPC\x20available\x20for\x20chainId\x20'+a['chainId']+'.\x20Use\x20manage_evm_rpc\x20to\x20add\x20RPC\x20endpoints\x20first.');return e;}async['depositEvmToWowAndFinalize'](a){const b=this['config']['ethereum'],c=a['waitForFinalization']??!![],d=await this['resolveEvmRpcUrl'](),e=a105f(this['config'],a['token']);if(!e)a105d('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const f=a['token']==='ETH',g=this['config']['defaultVersion']===0x1?'v1':'v2',h={'recipientWowAddress':a['recipientWowAddress'],'bridgeProxyAddress':b['bridgeProxyAddress'],'network':b['chainId'],'rpcUrl':d,'version':g},j=await depositFromEth({'amount':a['amount'],'tokenAddress':f?void 0x0:e['evmAddress'],'tokenId':f?void 0x0:e['tokenId']},h);if(!j['success']||!j['txHash'])a105d('fail','EVM\x20deposit\x20failed:\x20'+(j['error']?.['message']??'unknown\x20error'));const k=j['txHash'];if(!c)return{'depositTxHash':k};await waitForEthTx(k,d,0x40,0x2ee0,this['config']['timeouts']['signatureCollectMs']);const l=await queryEthTxReceipt(k,d);if(!l)return{'depositTxHash':k};const m=parseEthDepositEvent(l,b['bridgeProxyAddress']);if(!m)return{'depositTxHash':k};if(!this['wowEnv'])a105d('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20EVM→WOW\x20finalization\x20(claim\x20on\x20WOW)');const n=this['config']['timeouts']['autoClaimMs'],o=this['config']['timeouts']['signaturePollIntervalMs'],p=Math['max'](0x1,Math['ceil'](n/o));let q;for(let s=0x0;s<p;s++){q=await queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':m['bridgeSeq']},this['config']['wow']['network']),console['log']('[depositEvmToWowAndFinalize]\x20wait\x20approve\x20'+(s+0x1)+'/'+p+':\x20status='+q['status']);if(q['status']==='approved'||q['status']==='claimed')break;await sleep(o);}if(!q||q['status']==='not_approved')a105d('fail','Timeout\x20waiting\x20for\x20bridge\x20nodes\x20to\x20approve\x20bridgeSeq='+m['bridgeSeq']+'\x20after\x20'+p+'\x20iterations');if(q['status']==='claimed')return{'depositTxHash':k,'bridgeSeq':m['bridgeSeq'],'claimTxDigest':q['claimedTxHash']};const r=await claimOnWow({'sourceChainId':0xa,'bridgeSeqNum':m['bridgeSeq'],'tokenType':e['wowTypeTag'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']},this['wowEnv']);return{'depositTxHash':k,'bridgeSeq':m['bridgeSeq'],'claimTxDigest':r['digest']};}async['bridgeWowToEvm'](a){if(!this['wowEnv'])a105d('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20bridge');const b=a['waitForFinalization']??!![],c=this['config']['ethereum'],d=await this['resolveEvmRpcUrl'](),e=a105f(this['config'],a['token']);if(!e)a105d('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const f=e['wowTypeTag'],g=e['tokenId'],h=await depositFromWow({'amount':a['amount'],'tokenType':f,'recipientEthAddress':a['recipientEthAddress'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']},this['wowEnv']),{WowClient:i}=await import('./client/index.mjs'),{Config:j}=await import('./w/local/config.mjs'),{getFullnodeUrl:k}=await import('./network-CeDd07Hg.mjs')['then'](u=>u['r']),l=await j['Instance']()['network_get'](this['wowEnv']['network']),m=new i({'url':k(l),'network':l});await waitForWowTx(m,h['digest'],this['config']['timeouts']['signaturePollIntervalMs'],this['config']['timeouts']['signatureCollectMs']);if(!b)return{'depositTxDigest':h['digest'],'bridgeSeq':h['seqNum']};const n=await m['getTransactionBlock']({'digest':h['digest'],'options':{'showEffects':!![]}}),o=n['timestampMs']?BigInt(n['timestampMs']):BigInt(Date['now']()),p=(await Account['Instance']()['get'](this['wowEnv']['account']))?.['address']??'';if(!p)a105d('fail','Failed\x20to\x20resolve\x20WOW\x20sender\x20address');const q=buildClaimMessage({'messageType':0x0,'version':0x2,'nonce':h['seqNum'],'sourceChain':0x0,'targetChain':0xa,'recipientAddress':hexToBytes(a['recipientEthAddress']['slice'](0x2)),'tokenId':g,'amount':a['amount'],'timestampMs':o,'senderAddress':hexToBytes(p['startsWith']('0x')?p['slice'](0x2):p)}),r={'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':d,'nodeClient':this['nodeClient']},s=await claimOnEthBySeq({'sourceChain':0x0,'messageType':0x0,'seqNum':h['seqNum'],'message':q},r);if(!s['success']||!s['txHash'])a105d('fail','EVM\x20claim\x20failed:\x20'+(s['error']?.['revertReason']?'revert:\x20'+s['error']['revertReason']:s['error']?.['message']??'unknown\x20error'));const t=s['txHash'];return await waitForEthTx(t,d,0x1,0x2ee0,this['config']['timeouts']['signatureCollectMs']),{'depositTxDigest':h['digest'],'bridgeSeq':h['seqNum'],'claimTxHash':t};}async['queryEvmToWowStatus'](a){const b=this['config']['ethereum'],{EvmNetworkRegistry:c}=await import('./w/local/evm/networks.mjs'),d=c['Instance'](),f=await d['resolve'](b['chainId']),g=Date['now'](),h=[...f['rpcUrls']]['sort']((j,k)=>{const l=d['unhealthyRpc']?.['get'](j)??0x0,m=d['unhealthyRpc']?.['get'](k)??0x0,n=d['unhealthyCounter']?.['get'](j)??0x0,o=d['unhealthyCounter']?.['get'](k)??0x0,p=l<g?0x0:0x1,q=m<g?0x0:0x1;if(p!==q)return p-q;return n-o;});let i;for(const j of h)try{const k=await queryEvmToWowTransferStatus(a,j,b['bridgeProxyAddress']);d['markHealthy'](j);if(k['step']==='source_tx_confirmed'&&k['bridgeSeq']&&this['wowEnv'])try{const l=await queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':BigInt(k['bridgeSeq'])},this['config']['wow']['network']);if(l['status']==='claimed')k['status']='completed',k['step']='completed',k['claimTxDigest']=l['claimedTxHash'];else{if(l['status']==='approved')k['status']='signatures_ready',k['step']='signatures_ready';else{if(l['status']==='not_approved'){}}}}catch{}return k;}catch(m){i=m,d['markUnhealthy'](j);}return{'status':'pending','step':'source_tx_pending','direction':'evm_to_wow','sourceTxHash':a,'error':i instanceof Error?i['message']:String(i)};}async['queryWowToEvmStatus'](a){const {WowClient:b}=await import('./client/index.mjs'),{Config:c}=await import('./w/local/config.mjs'),{getFullnodeUrl:d}=await import('./network-CeDd07Hg.mjs')['then'](f=>f['r']),e=await c['Instance']()['network_get'](this['wowEnv']?.['network']);return queryWowToEvmTransferStatus(new b({'url':d(e),'network':e}),a);}async['queryEvmToWowClaimStatus'](a){return queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':a['bridgeSeqNum']},this['config']['wow']['network']);}async['claimWowToEvm'](a){if(!this['wowEnv'])a105d('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20claim');await this['_loadHistoryPromise'];const b=this['_transferHistory']['get'](a);if(!b)a105d('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20not\x20found');if(b['direction']!=='wow_to_evm')a105d('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20is\x20not\x20a\x20wow_to_evm\x20transfer');if(!b['depositTxDigest']||!b['bridgeSeq'])a105d('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20missing\x20deposit\x20info\x20(depositTxDigest\x20or\x20bridgeSeq)');const c=this['config']['ethereum'],d=await this['resolveEvmRpcUrl'](),e=a105f(this['config'],b['token']);if(!e)a105d('invalid\x20parameter','Token\x20'+b['token']+'\x20not\x20found\x20in\x20config');const f=e['tokenId'],{WowClient:g}=await import('./client/index.mjs'),{Config:h}=await import('./w/local/config.mjs'),{getFullnodeUrl:i}=await import('./network-CeDd07Hg.mjs')['then'](q=>q['r']),j=await h['Instance']()['network_get'](this['wowEnv']['network']),k=await new g({'url':i(j),'network':j})['getTransactionBlock']({'digest':b['depositTxDigest'],'options':{'showEffects':!![]}}),l=k['timestampMs']?BigInt(k['timestampMs']):BigInt(Date['now']()),m=(await Account['Instance']()['get'](this['wowEnv']['account']))?.['address']??'';if(!m)a105d('fail','Failed\x20to\x20resolve\x20WOW\x20sender\x20address');const n=buildClaimMessage({'messageType':0x0,'version':0x2,'nonce':BigInt(b['bridgeSeq']),'sourceChain':0x0,'targetChain':0xa,'recipientAddress':hexToBytes(b['recipientEth']['slice'](0x2)),'tokenId':f,'amount':BigInt(b['amount']),'timestampMs':l,'senderAddress':hexToBytes(m['startsWith']('0x')?m['slice'](0x2):m)}),o={'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':d,'nodeClient':this['nodeClient']},p=await claimOnEthBySeq({'sourceChain':0x0,'messageType':0x0,'seqNum':BigInt(b['bridgeSeq']),'message':n},o);if(!p['success']||!p['txHash'])a105d('fail','EVM\x20claim\x20failed:\x20'+(p['error']?.['revertReason']?'revert:\x20'+p['error']['revertReason']:p['error']?.['message']??'unknown\x20error'));return this['_updateTransfer'](a,{'step':'claimed','status':'success','claimTxHash':p['txHash']}),{'claimTxHash':p['txHash'],'transferId':a};}async['bridgeWowToEvmSimple'](a){if(!this['wowEnv'])a105d('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20bridge');const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=(await b['Instance']()['active']())['address'],d=await this['_recordTransfer']({'direction':'wow_to_evm','token':a['token'],'amount':a['amount'],'recipientEth':a['withdrawTo']??c,'intermediateEthAccount':c,'withdrawToProvided':!!a['withdrawTo']});try{this['_updateTransfer'](d,{'step':'deposit','status':'in_progress'});const e=await this['bridgeWowToEvm']({'token':a['token'],'amount':a['amount'],'recipientEthAddress':c,'waitForFinalization':a['waitForFinalization']??!![]});if(e['claimTxHash'])this['_updateTransfer'](d,{'step':'claimed','status':'success','depositTxDigest':e['depositTxDigest'],'bridgeSeq':e['bridgeSeq']?.['toString'](),'claimTxHash':e['claimTxHash']});else this['_updateTransfer'](d,{'step':'deposit','status':'in_progress','depositTxDigest':e['depositTxDigest'],'bridgeSeq':e['bridgeSeq']?.['toString']()});let f;if(a['withdrawTo']&&e['claimTxHash']){this['_updateTransfer'](d,{'step':'withdraw','status':'in_progress'});const g=a105f(this['config'],a['token']);f=(await b['Instance']()['withdrawFromActive']({'to':a['withdrawTo'],'amount':a['amount'],'tokenAddress':a['token']==='ETH'?void 0x0:g?.['evmAddress'],'network':this['config']['ethereum']['chainId']}))['transactionHash'],this['_updateTransfer'](d,{'step':'withdrawn','status':'success','withdrawTxHash':f});}return{'depositTxDigest':e['depositTxDigest'],'bridgeSeq':e['bridgeSeq'],'claimTxHash':e['claimTxHash'],'withdrawTxHash':f,'activeEvmAccount':c,'transferId':d};}catch(h){this['_updateTransfer'](d,{'status':'failed','error':h?.['message']??String(h)});throw h;}}async['bridgeEvmToWowSimple'](a){if(!this['wowEnv'])a105d('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20EVM→WOW\x20bridge');const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=await b['Instance']()['active']();let d=a['recipientWowAddress'];if(!d){const i=await Account['Instance']()['get'](this['wowEnv']['account']);if(!i?.['address'])a105d('fail','Failed\x20to\x20resolve\x20WOW\x20recipient\x20address');d=i['address'];}const e=a105f(this['config'],a['token']);if(!e)a105d('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const f=a['token']==='ETH';let g;if(f)g=await b['Instance']()['balance'](this['config']['ethereum']['chainId']);else g=await b['Instance']()['balanceOf'](e['evmAddress'],this['config']['ethereum']['chainId']);if(g===void 0x0||g<a['amount'])a105d('fail','Insufficient\x20'+(f?'ETH':'ERC20')+'\x20balance\x20on\x20activeEvmAccount\x20('+c['address']+')\x20on\x20chain\x20'+this['config']['ethereum']['chainId']+':\x20have\x20'+(g??0x0n)+',\x20need\x20'+a['amount']+'.\x20Please\x20recharge\x20the\x20activeEvmAccount\x20from\x20your\x20wallet\x20(transfer\x20'+(f?'ETH':'the\x20token')+'\x20to\x20'+c['address']+'),\x20then\x20retry\x20the\x20cross-chain\x20transfer.');const h=await this['_recordTransfer']({'direction':'evm_to_wow','token':a['token'],'amount':a['amount'],'recipientWow':d,'intermediateEthAccount':c['address']});try{this['_updateTransfer'](h,{'step':'deposit','status':'in_progress'});let j;if(f)j=await this['bridgeNativeEvmToWow']({'amount':a['amount'],'recipientWowAddress':d,'waitForFinalization':a['waitForFinalization']??!![]});else j=await this['bridgeErc20ToWow']({'token':a['token'],'amount':a['amount'],'recipientWowAddress':d,'waitForFinalization':a['waitForFinalization']??!![]});const k=a['waitForFinalization']??!![];return this['_updateTransfer'](h,{'step':k?'claimed':'deposit','status':k?'success':'in_progress','depositTxHash':j['depositTxHash'],'bridgeSeq':j['bridgeSeq']?.['toString'](),'claimTxDigest':j['claimTxDigest']}),{...j,'activeEvmAccount':c['address'],'transferId':h};}catch(l){this['_updateTransfer'](h,{'status':'failed','error':l?.['message']??String(l)});throw l;}}async['withdrawFromActiveEvmAccount'](a){const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=await b['Instance']()['active']();let d=a['tokenAddress'];if(!d&&a['token']&&a['token']!=='ETH')d=a105f(this['config'],a['token'])?.['evmAddress'];const e=await this['_recordTransfer']({'direction':'withdraw','token':a['token'],'amount':a['amount'],'recipientEth':a['to'],'intermediateEthAccount':c['address']});try{this['_updateTransfer'](e,{'step':'withdraw','status':'in_progress'});const f=await b['Instance']()['withdrawFromActive']({'to':a['to'],'amount':a['amount'],'tokenAddress':d,'network':a['network']??this['config']['ethereum']['chainId']});return this['_updateTransfer'](e,{'step':'withdrawn','status':'success','withdrawTxHash':f['transactionHash']}),{'txHash':f['transactionHash'],'transferId':e};}catch(g){this['_updateTransfer'](e,{'status':'failed','error':g?.['message']??String(g)});throw g;}}async['querySupportedEvmChains'](){const {EvmNetworkRegistry:a}=await import('./w/local/evm/networks.mjs'),b=a['Instance']()['listRpcStatus'](this['config']['ethereum']['chainId']),c=b['filter'](d=>d['healthy'])['length'];return[{'chainId':this['config']['ethereum']['chainId'],'name':'mainnet','description':'Ethereum\x20Mainnet','bridgeChainId':this['config']['ethereum']['bridgeChainId'],'explorerUrl':'https://etherscan.io','rpcCount':b['length'],'healthyRpcCount':c}];}async['querySupportedTokens'](a){const b=await this['querySupportedEvmChains'](),c=a?.['network']?b['filter'](e=>typeof a['network']==='number'?e['chainId']===a['network']:e['name']['toLowerCase']()===String(a['network'])['toLowerCase']()):b,d=[];for(const e of c){const f=this['config']['tokens']['filter'](g=>!g['evmChains']||g['evmChains']['includes'](e['bridgeChainId']))['map'](g=>({'tokenId':g['tokenId'],'symbol':g['symbol'],'evmAddress':g['evmAddress'],'evmDecimals':g['evmDecimals'],'wowTypeTag':g['wowTypeTag'],'wowDecimals':g['wowDecimals'],'description':g['description']??g['symbol']+'\x20(tokenId='+g['tokenId']+')'}));d['push']({'chainId':e['chainId'],'chainName':e['name'],'bridgeChainId':e['bridgeChainId'],'tokens':f});}return d;}async['queryActiveEvmAccount'](a){const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),{EvmNetworkRegistry:c}=await import('./w/local/evm/networks.mjs'),d=await b['Instance']()['active']();c['Instance']();const e=await this['querySupportedEvmChains'](),f=a?.['network']?e['filter'](h=>typeof a['network']==='number'?h['chainId']===a['network']:h['name']['toLowerCase']()===String(a['network'])['toLowerCase']()):e,g=[];for(const h of f){const i=await b['Instance']()['balance'](h['chainId']),j={'chainId':h['chainId'],'name':h['name'],'nativeBalance':(i??0x0n)['toString']()};if(a?.['tokens']&&a['tokens']['length']>0x0){j['tokens']=[];for(const k of a['tokens']){const l=await b['Instance']()['balanceOf'](k,h['chainId']);j['tokens']['push']({'tokenAddress':k,'balance':(l??0x0n)['toString']()});}}g['push'](j);}return{'address':d['address'],'chains':g};}async['queryTransferList'](a){await this['_loadHistoryPromise'];const b=Array['from'](this['_transferHistory']['values']())['reverse']();if(a?.['onlyActive'])return b['filter'](c=>c['status']==='in_progress'||c['status']==='pending');return b;}async['queryTransferStatus'](a){return await this['_loadHistoryPromise'],this['_transferHistory']['get'](a);}async['refreshTransferStatus'](a){await this['_loadHistoryPromise'];const b=this['_transferHistory']['get'](a);if(!b)return void 0x0;if(b['direction']==='withdraw')return b;try{if(b['direction']==='evm_to_wow'&&b['depositTxHash']){const c=await this['queryEvmToWowStatus'](b['depositTxHash']);if(typeof c['bridgeSeq']==='bigint')c['bridgeSeq']=c['bridgeSeq']['toString']();b['latestState']=c,c['status']==='completed'&&b['status']==='in_progress'&&(b['status']='success',b['step']='claimed');}else{if(b['direction']==='wow_to_evm'&&b['depositTxDigest']){const d=await this['queryWowToEvmStatus'](b['depositTxDigest']);if(typeof d['bridgeSeq']==='bigint')d['bridgeSeq']=d['bridgeSeq']['toString']();if(b['claimTxHash']){if(d['step']==='source_tx_confirmed'||d['step']==='signatures_ready')try{const e=await this['resolveEvmRpcUrl'](),f=await queryEthTxReceipt(b['claimTxHash'],e);f?(d['claimReceipt']=f,f['status']==='0x1'?(d['status']='completed',d['step']='completed'):(d['status']='failed',d['step']='failed',d['error']='EVM\x20claim\x20transaction\x20reverted')):(d['status']='claiming',d['step']='claim_tx_pending');}catch{}}else d['hint']='claim_wow_to_evm\x20(step\x202)\x20not\x20yet\x20called.\x20Call\x20claim_wow_to_evm\x20after\x20bridge\x20nodes\x20sign\x20(~1-5\x20min).';b['latestState']=d,d['status']==='completed'&&b['status']==='in_progress'&&(b['status']='success',b['step']='claimed');}}}catch(g){b['error']=g?.['message']??String(g);}return b;}async['manageEvmRpc'](a){const {EvmNetworkRegistry:b}=await import('./w/local/evm/networks.mjs'),c=b['Instance'](),d=a['network']??this['config']['ethereum']['chainId'];switch(a['op']){case'list':return{'op':'list','success':!![],'result':c['listRpcStatus'](d)};case'add':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a105d('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27add\x27\x20op');{const e=c['addRpcs'](d,a['rpcUrls']);return{'op':'add','success':e>0x0,'result':{'added':e}};}case'remove':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a105d('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27remove\x27\x20op');{const f=c['removeRpcs'](d,a['rpcUrls']);return{'op':'remove','success':f>0x0,'result':{'removed':f}};}case'set':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a105d('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27set\x27\x20op');return{'op':'set','success':c['setRpcs'](d,a['rpcUrls'])};case'ping':{const g=c['listRpcStatus'](d),h=[];for(const i of g){const j=await c['ping'](i['url']);h['push']({'url':i['url'],'healthy':j});}return{'op':'ping','success':!![],'result':h};}default:a105d('invalid\x20parameter','Unknown\x20op:\x20'+a['op']);}}static{this['HISTORY_DB_KEY']='bridge:transfers:all';}async['_loadHistory'](){try{this['_historyStore']=new SQLiteStorage();const a=await this['_historyStore']['get'](BridgeClient['HISTORY_DB_KEY']);if(a){const b=JSON['parse'](a);if(Array['isArray'](b)){for(const d of b)if(d['transferId'])this['_transferHistory']['set'](d['transferId'],d);for(const e of b){const f=e['transferId']?.['match'](/_(\d+)$/);if(f){const g=parseInt(f[0x1],0xa);if(g>this['_transferCounter'])this['_transferCounter']=g;}}}}}catch{}}async['_saveHistory'](){try{if(!this['_historyStore'])return;const a=Array['from'](this['_transferHistory']['values']());await this['_historyStore']['put'](BridgeClient['HISTORY_DB_KEY'],JSON['stringify'](a));}catch{}}async['_recordTransfer'](a){this['_transferCounter']+=0x1;const b='br_'+Date['now']()+'_'+this['_transferCounter'],c={'transferId':b,'direction':a['direction'],'token':a['token'],'amount':a['amount']['toString'](),'recipientEth':a['recipientEth'],'recipientWow':a['recipientWow'],'intermediateEthAccount':a['intermediateEthAccount'],'withdrawToProvided':a['withdrawToProvided'],'step':'init','status':'pending','createdAt':Date['now'](),'updatedAt':Date['now']()};return this['_transferHistory']['set'](b,c),await this['_saveHistory'](),b;}async['_updateTransfer'](a,b){const c=this['_transferHistory']['get'](a);if(!c)return;Object['assign'](c,b,{'updatedAt':Date['now']()}),await this['_saveHistory']();}};function sleep(a){return new Promise(b=>setTimeout(b,a));}function loadDefaultConfig(){return a105g;}function hexToBytes(a){const b=a['startsWith']('0x')?a['slice'](0x2):a,c=new Uint8Array(b['length']/0x2);for(let d=0x0;d<c['length'];d++)c[d]=parseInt(b['slice'](d*0x2,d*0x2+0x2),0x10);return c;}export{TOKENS_CLAIMED_TOPIC as A,buildClaimMessage as C,depositEth as D,depositErc20 as E,encodeBridgeERC20V2 as F,encodeBridgeETH as I,encodeBridgeETHV2 as L,TOKENS_DEPOSITED_V2_TOPIC as M,encodeApprove as N,depositFromEth as O,encodeBridgeERC20 as P,encodeTokenTransferPayloadV2 as R,depositFromWow as S,claimOnEthBySeq as T,waitForEthTx as _,BridgeTransferStatus as a,claimOnWow as b,parseEthClaimEvent as c,queryEthBalance as d,queryEthTxConfirmations as f,queryWowTx as g,queryWowToEvmTransferStatus as h,BridgeTransferDirection as i,TOKENS_DEPOSITED_TOPIC as j,ERC20_TRANSFER_TOPIC as k,parseEthDepositEvent as l,queryEvmToWowTransferStatus as m,BridgeNodeClient as n,BridgeTransferStep as o,queryEthTxReceipt as p,BRIDGE_STEP_DESCRIPTIONS as r,makeBridgeTransferState as s,BridgeClient as t,queryErc20Balance as u,waitForWowTx as v,claimOnEth as w,queryWowClaimStatus as x,WowClaimStatus as y,encodeTransferBridgedTokensWithSignatures as z};
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "wowok <build@wowok.net>",
4
4
  "description": "Wowok Blockchain TypeScript API",
5
5
  "homepage": "https://wowok.net",
6
- "version": "2.3.11",
6
+ "version": "2.3.13",
7
7
  "license": "Apache-2.0",
8
8
  "sideEffects": false,
9
9
  "files": [
@@ -1 +0,0 @@
1
- import{a as a2a}from'./sui-types-CuBKFvrd.mjs';import{t as a2b}from'./client-sb0S5kkY.mjs';import{t as a2c}from'./Transaction-B_HAG_T7.mjs';import{n as a2d}from'./network-CeDd07Hg.mjs';import{B as a2e,J as a2f,U as a2g,g as a2h,lt as a2i,rt as a2j,st as a2k,ut as a2l}from'./common-CQggZ8z4.mjs';import{o as a2m}from'./exception--UEPnygY.mjs';import{Cache}from'./w/local/cache.mjs';import{Config}from'./w/local/config.mjs';import{LocalMark}from'./w/local/local.mjs';import{Account}from'./w/local/account.mjs';import{A as a2n,G as a2o,K as a2p,L as a2q,M as a2r,U as a2s,ct as a2t,st as a2u}from'./object-BZ_iF8UV.mjs';import{destroy,freeze,get_guardSubmissions,guardAdd,newPassport,verify}from'./w/call/passport.mjs';import a2v from'lodash';function resourceFn(a){return'0x2::resource::'+a;}function addObjectTags(a,b,c){if(c['tags']['length']>0x64)a2m('resource\x20tag\x20count\x20exceeded','Tags\x20count\x20exceeds\x20maximum\x20limit\x20100');c['tags']['forEach'](f=>{if(!a2g(f))a2m('invalid\x20name','Tag\x20name\x20exceeds\x20maximum\x20length\x2064');});if(c['nick']!=null&&typeof c['nick']==='string'){if(!a2g(c['nick']))a2m('invalid\x20name','Nick\x20name\x20exceeds\x20maximum\x20length\x2064');}const d=a['pure']['option']('string',c['nick']??null),e=a['pure']['vector']('string',c['tags']);a['moveCall']({'target':resourceFn('add_object_tags'),'arguments':[a2i(a,b),a2k(a,c['address']),d,e]});}function removeObjectTags(a,b,c){if(typeof c['nick']==='string'&&!a2g(c['nick']))a2m('invalid\x20name','Nick\x20name\x20exceeds\x20maximum\x20length\x2064');const d=a['pure']['option']('string',c['nick']??null),e=a['pure']['vector']('string',c['tags']);a['moveCall']({'target':resourceFn('remove_object_tags'),'arguments':[a2i(a,b),a2k(a,c['address']),d,e]});}function removeObject(a,b,c){a['moveCall']({'target':resourceFn('remove_object'),'arguments':[a2i(a,b),a2k(a,c)]});}function create(a,b){a['moveCall']({'target':resourceFn('create'),'arguments':[a2i(a,b)]});}const MAX_RECORD_COUNT=0x3e8,MAX_RECORD_LENGTH=0xfa0;function registrarFn(a){return'0x2::registrar::'+a;}function register_with_resource_forced(a,b){return b=b&&a2a(b)?b:null,a['moveCall']({'target':registrarFn('entity_register_with_resource_forced'),'arguments':[a['object']['mutEntity'],a['pure']['option']('address',b??null),a['object']['clock']]});}function resource_destroy(a,b){a2u([b]),a['moveCall']({'target':registrarFn('entity_resource_destroy'),'arguments':[a['object']['mutEntity'],a2i(a,b)]});}function resource_use(a,b,c){a2u([b]),c=c&&a2a(c)?c:null,a['moveCall']({'target':registrarFn('entity_resource_use'),'arguments':[a['object']['mutEntity'],a2i(a,b),a['pure']['option']('address',c??null),a['object']['clock']]});}function resource_transfer(a,b,c){a2u([b,c]),a['moveCall']({'target':registrarFn('entity_resource_transfer'),'arguments':[a['object']['mutEntity'],a2i(a,b),a2k(a,c)]});}async function record(a,b){if(typeof b['name']==='string'&&!a2g(b['name']))a2m('invalid\x20name','name\x20'+b['name']+'\x20is\x20exceeded\x20max\x20length\x2064');const c=await a2t(a2j(b['value_type']),b['value']);if(c['length']>0xfa0)a2m('invalid\x20parameter','value_bytes\x20length\x20'+c['length']+'\x20is\x20greater\x20than\x20max\x20'+MAX_RECORD_LENGTH);return a['moveCall']({'target':registrarFn('record'),'arguments':[a2l(a,b['name']),a['pure']['vector']('u8',Array['from'](c))]});}async function description_set(a,b,c){if(!a2e(b))a2m('invalid\x20parameter','description\x20length\x20'+b['length']+'\x20is\x20greater\x20than\x20max\x20'+a2h);c=c&&a2a(c)?c:null,a['moveCall']({'target':registrarFn('entity_description_set'),'arguments':[a['object']['mutEntity'],a['pure']['string'](b),a['pure']['option']('address',c??null),a['object']['clock']]});}async function info_add(a,b,c,d){d=d&&a2a(d)?d:null;const e=b['map'](g=>record(a,g)),f=await Promise['all'](e);if(f['length']>0x3e8)a2m('invalid\x20parameter','records\x20count\x20'+f['length']+'\x20is\x20greater\x20than\x20max\x20'+MAX_RECORD_COUNT);if(c&&!a2e(c))a2m('invalid\x20parameter','description\x20length\x20'+c['length']+'\x20is\x20greater\x20than\x20max\x20'+a2h);a['moveCall']({'target':registrarFn('entity_info_add'),'arguments':[a['object']['mutEntity'],a['pure']['option']('string',c??null),a['makeMoveVec']({'elements':f,'type':'0x2::registrar::Record'}),a['pure']['option']('address',d??null),a['object']['clock']]});}function info_remove(a,b){if(b['length']===0x0)return;if(b['length']>0x3e8)a2m('invalid\x20parameter','recordNames\x20count\x20'+b['length']+'\x20is\x20greater\x20than\x20max\x20'+MAX_RECORD_COUNT);a['moveCall']({'target':registrarFn('entity_info_remove'),'arguments':[a['object']['mutEntity'],a['pure']['vector']('string',b)]});}function info_clear(a){a['moveCall']({'target':registrarFn('entity_info_clear'),'arguments':[a['object']['mutEntity']]});}function isCallResultSubmission(a){return a?.['submission']&&a?.['submission']?.['length']>0x0;}function ResponseData(a){if(a?.['digest']){const b=[];return a?.['objectChanges']?.['forEach'](c=>{const d=c?.['objectType'],e=a2s(d);if(e)b['push']({'type':e,'type_raw':d,'object':c?.['objectId'],'version':c?.['version'],'owner':c?.['owner'],'change':c['type']});}),b;}return[];}var CallBase=class{constructor(){this['traceMarkNew']=new Map(),this['content']=void 0x0,this['env_ready']=![],this['env_prepare_promise']=null;}async['operate'](a,b,c,d){}async['prepare'](a){await this['env_prepare'](a);}async['call'](a){}async['env_prepare'](a){if(this['env_ready'])return;if(this['env_prepare_promise'])return this['env_prepare_promise'];return this['env_prepare_promise']=a2p(a)['then'](()=>{this['env_ready']=!![],this['env_prepare_promise']=null;}),this['env_prepare_promise'];}async['call_with_submission'](a,b,c){b['guard']['length']>0x0&&(await this['prepare'](a),await this['check_passport'](a,b,c));}async['check_guard_and_call'](a,b){a['permission_guard']?.['forEach'](c=>{if(!a2a(c))a2m('invalid\x20address','env\x20permission_guard:\x20'+c);b['push'](c);});if(b['length']>0x0){const c=await get_guardSubmissions(a,b);if(c['submission']['length']>0x0)return{'type':'submission','guard':c['guard'],'submission':c['submission']};return await this['check_passport'](a,c);}else return await this['exec'](a);}async['check_permission_and_call'](a,b,c,d,e,f){let g=![];const h=await a2q({'objects':[b],'no_cache':a['no_cache'],'network':a['network']});if(!h['objects']?.[0x0]||h['objects']?.[0x0]['type']!=='Permission')a2m('no\x20permission','permission\x20object\x20not\x20found');const i=h['objects']?.[0x0],j=await a2o(a);g=i['admin']['includes'](j);if(e&&i['builder']!==j)a2m('no\x20permission',j+'\x20owner\x20permission\x20required');if(f&&!g)a2m('no\x20permission',j+'\x20admin\x20permission\x20required');a['permission_guard']?.['forEach'](k=>{if(!a2a(k))a2m('invalid\x20address','env\x20permission_guard\x20'+k);d['push'](k);});if(c['length']>0x0&&!g){const k=[j,...a['permission_guard']??[]]['map'](async o=>{const q=await a2r({'parent':b,'address':o,'no_cache':a['no_cache'],'network':a['network']});if(q&&q['type']==='TableItem_PermissionPerm')return{'address':o,'permissions':q['perm']};return{'address':o,'permissions':[]};}),l=await Promise['all'](k),m=new Set();l['forEach'](o=>{o['permissions']['forEach'](q=>m['add'](q));});const n=c['filter'](o=>!m['has'](o));if(n['length']>0x0)a2m('no\x20permission','Missing\x20permissions\x20'+n['join'](',\x20')+'\x20in\x20'+b);}if(d['length']>0x0){const o=await get_guardSubmissions(a,d);if(o['submission']['length']>0x0)return{'type':'submission','guard':o['guard'],'submission':o['submission']};return await this['check_passport'](a,o);}else return await this['exec'](a);}async['check_passport'](a,b,c){const d=new a2c(),e=newPassport(d);for(const f of b['guard'])await guardAdd(d,e,f['object'],b['submission']['find'](g=>g['guard']===f['object'])?.['submission']??[],f['impack']);verify(d,e),await this['operate'](a,d,e,b['submission']);if(c)freeze(d,e);else destroy(d,e);return await this['sign_and_commit'](a,d);}async['exec'](a){const b=new a2c();return await this['operate'](a,b),await this['sign_and_commit'](a,b);}async['new_with_mark'](a,b,c,d,f,g=['launch']){const h=f?.['tags']?a2v['uniq']([...f['tags'],...g]):a2v['uniq']([...g]);f&&(f['tags']=h,this['traceMarkNew']['set'](c,f));if(!f?.['onChain'])return;if(!this['newResource']){let i;try{i=await a2n({'address':await a2o(a),'no_cache':a['no_cache'],'network':a['network']});}catch(j){}if(i&&i['type']!=='TableItem_EntityRegistrar')a2m('no\x20permission','no\x20entity\x20registrar\x20found');if(i?.['mark_object']){addObjectTags(b,i['mark_object'],{'address':d,'tags':h});return;}else this['newResource']=register_with_resource_forced(b,typeof a['referrer']==='string'?a['referrer']:null);}if(this['newResource'])addObjectTags(b,this['newResource'],{'address':d,'tags':h});}async['update_content'](a,b,c){if(this['content']||!c)return;const d=await a2q({'objects':[c],'no_cache':a['no_cache'],'network':a['network']});if(!d['objects']||d?.['objects']?.['length']!==0x1||d?.['objects'][0x0]?.['type']!==b)a2m('fail','Fetch\x20'+b+'\x20object\x20'+c+'\x20failed');this['content']=d?.['objects'][0x0];}async['sign_and_commit'](a,b){this['newResource']&&(create(b,this['newResource']),this['newResource']=void 0x0);let c=await Account['Instance']()['sign_and_commit'](b,await a2o(a),a['network']);if(!c)a2m('fail','sign\x20and\x20commit\x20failed');if(c?.['digest']&&!c?.['objectChanges']){const e=await Config['Instance']()['network_get'](a['network']);c=await new a2b({'url':a2d(e),'network':e})['getTransactionBlock']({'digest':c?.['digest'],'options':{'showObjectChanges':!![]}});}const d=ResponseData(c);for(let f=0x0;f<d['length'];++f){const g=d[f];if(g['type']&&g['change']==='created'){const h=this['traceMarkNew']['get'](g['type']);if(h)await LocalMark['Instance']()['put']([{'name':h['name']?{'value':h['name'],'replaceExistName':h['replaceExistName']}:void 0x0,'address':g['object'],'tags':h?.['tags']?[...h['tags'],g['type']]:[g['type']]}]);}}if(a['network']){const j=d['filter'](k=>k['object']&&(k['change']==='created'||k['change']==='mutated'))['map'](k=>k['object']);if(j['length']>0x0){const k='object:'+a['network'];await Cache['del_many'](k,j);}}return c;}};async function getCoinParam(a,b,c,d){let e;if('balance'in c&&c['balance']!=null){if(!a2f(c['balance']))a2m('invalid\x20u64','Total\x20pay\x20balance\x20'+c['balance']+'\x20is\x20not\x20valid');e=await Account['Instance']()['get_coin_object'](b,c['balance'],d,await a2o(a),a['network']);}else{if('coin'in c&&c['coin']!=null){if(typeof c['coin']==='string')e=await LocalMark['Instance']()['get_address'](c['coin']);else e=c['coin'];}}if(!e)a2m('invalid\x20parameter','Total\x20pay\x20'+JSON['stringify'](c)+'\x20is\x20allocated\x20failed');return a2i(b,e);}export{description_set as a,info_remove as c,resource_transfer as d,resource_use as f,removeObjectTags as g,removeObject as h,isCallResultSubmission as i,register_with_resource_forced as l,create as m,ResponseData as n,info_add as o,addObjectTags as p,getCoinParam as r,info_clear as s,CallBase as t,resource_destroy as u};
@@ -1 +0,0 @@
1
- import{a as a30a}from'./sui-types-CuBKFvrd.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*as a30b from'path';import*as a30c from'fs';import{createHash}from'crypto';var MessengerServerClient=class{constructor(a){this['config']={...DEFAULT_MESSENGER_CONFIG,...a};}async['registerDevice'](a){try{const b=await fetch(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 fetch(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=new URLSearchParams({'publicKey':c,'signatureScheme':d['signatureScheme'],'signature':d['signature'],'timestamp':d['timestamp']['toString'](),'nonce':d['nonce']}),g=await fetch(this['config']['serverUrl']+'/v1/bundle/'+a+'?'+f);if(!g['ok']){if(g['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'+g['statusText']);}return await g['json']();}catch(h){if(h instanceof MessengerError)throw h;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20fetch\x20remote\x20bundle',h);}}async['sendMessage'](a){try{const b=await fetch(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 URLSearchParams({'publicKey':b,'signatureScheme':c['signatureScheme'],'signature':c['signature'],'timestamp':c['timestamp']['toString'](),'nonce':c['nonce']});if(d!==void 0x0)e['set']('limit',d['toString']());const f=await fetch(this['config']['serverUrl']+'/v1/messages/'+a+'?'+e);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['getPrekeyStatus'](a){try{const b=await fetch(this['config']['serverUrl']+'/v1/prekeys/'+a+'/status');if(!b['ok'])throw new MessengerError('SERVER_ERROR','Failed\x20to\x20get\x20prekey\x20status:\x20'+b['statusText']);const c=await b['json']();return{'currentCount':c['currentCount'],'maxAllowed':c['maxAllowed'],'threshold':c['threshold'],'shouldRefill':c['shouldRefill']};}catch(d){if(d instanceof MessengerError)throw d;throw new MessengerError('NETWORK_ERROR','Failed\x20to\x20get\x20prekey\x20status',d);}}async['acknowledgeMessages'](a,b,c){try{const d=await fetch(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 fetch(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']();console['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 fetch(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 fetch(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 fetch(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 fetch(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 fetch(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)};await this['serverClient']['registerDevice'](t),await this['verifyRegistrationComplete'](a);}async['verifyRegistrationComplete'](a,b=0xa,c=0x1f4){for(let d=0x0;d<b;d++)try{await this['serverClient']['getPrekeyStatus'](a);return;}catch(e){if(e?.['message']?.['includes']('404')||e?.['status']===0x194){if(d<b-0x1){await new Promise(f=>setTimeout(f,c));continue;}}throw e;}throw new MessengerError('REGISTRATION_FAILED','Registration\x20verification\x20failed\x20after\x20'+b+'\x20attempts');}async['isDeviceRegistered'](a){try{if(!await this['pqStore']['getSignedPreKeySignature'](0x1))return![];return await this['serverClient']['getPrekeyStatus'](a),!![];}catch(b){if(b?.['message']?.['includes']('404')||b?.['status']===0x194)return![];return![];}}async['generatePreKeyBatch'](a,b){if(a<=0x0)return[];const c=[],{generateX25519KeyPair:d}=await import('./w/messenger/pq/crypto.mjs'),e=Math['floor'](Math['random']()*0x7fffff00);for(let f=0x0;f<a;f++){const g=e+f,h=await this['pqStore']['getOneTimePreKey'](g);if(h){const m=bytesToBase64(h['publicKey']),n=await(await getAccount$1())['signData'](b,h['publicKey']),o=Buffer['from'](n['signature']['slice'](0x2),'hex');c['push']({'keyId':g,'publicKey':m,'signature':bytesToBase64(o)});continue;}const j=d(),k=await(await getAccount$1())['signData'](b,j['publicKey']),l=Buffer['from'](k['signature']['slice'](0x2),'hex');await this['pqStore']['setOneTimePreKey'](g,j),c['push']({'keyId':g,'publicKey':bytesToBase64(j['publicKey']),'signature':bytesToBase64(l)});}return c;}async['ensurePreKeys'](a,b=![]){const c=await this['serverClient']['getPrekeyStatus'](a);if(!b&&c['currentCount']>=c['maxAllowed'])return;const d=c['maxAllowed']-c['currentCount'];if(d<=0x0)return;await this['ensureIdentity'](a);const e=await this['generatePreKeyBatch'](d,a);if(e['length']===0x0)return;const f=await(await getAccount$1())['get'](a,![]);if(!f?.['pubkey'])throw new MessengerError('IDENTITY_NOT_FOUND','Account\x20not\x20found\x20for\x20'+a);const g=Date['now'](),h=this['generateNonce'](),i='upload_prekeys:'+f['pubkey']+':'+g+':'+h,j=await(await getAccount$1())['signData'](a,i),k=Buffer['from'](j['signature']['slice'](0x2),'hex');await this['serverClient']['uploadPreKeys']({'userAddress':a,'prekeys':e,'publicKey':f['pubkey'],'signatureScheme':'Falcon512','signature':bytesToBase64(k),'timestamp':g,'nonce':h});}['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{!await this['pqCipher']['hasSession'](b,d)&&(console['log']('[Session]\x20建立新会话\x20(尝试\x20'+(e+0x1)+'/6)'),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){console['error']('[Session]\x20加密失败\x20(尝试\x20'+(e+0x1)+'/6):',i);if(e>=f)throw i;console['log']('[Session]\x20尝试删除旧会话并重新建立...');try{await this['pqStore']['removeSession'](b,d),e++,await new Promise(j=>setTimeout(j,0x64));}catch(j){console['error']('[Session]\x20重新建立会话失败:',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){console['log']('[Session]\x20收到\x20WHISPER_MESSAGE\x20但无现有会话,需要等待\x20PREKEY_MESSAGE');throw new Error('收到\x20WHISPER_MESSAGE\x20但无现有会话,需要等待\x20PREKEY_MESSAGE');}while(h<=i)try{let k;if(d===0x3){console['log']('[Session]\x20收到\x20PREKEY_MESSAGE,尝试解密\x20(尝试\x20'+(h+0x1)+'/6)');try{return k=await this['pqCipher']['decryptMessage'](b,g,e),console['log']('[Session]\x20PREKEY_MESSAGE\x20解密成功!'),f['decode'](k);}catch(l){console['log']('[Session]\x20直接解密\x20PREKEY_MESSAGE\x20失败:\x20'+(l instanceof Error?l['message']:String(l)));if(j&&h===0x0){const m=a['toLowerCase'](),n=b['toLowerCase']();if(m<n){console['log']('[Session]\x20我的地址较小\x20('+m+'\x20<\x20'+n+'),保留我的会话,稍后重试');throw new Error('PREKEY\x20竞争:我的地址较小,保留我的会话');}else return console['log']('[Session]\x20我的地址较大\x20('+m+'\x20>\x20'+n+'),删除我的会话,用对方的\x20PREKEY_MESSAGE\x20建立新会话'),await this['pqStore']['removeSession'](b,e),console['log']('[Session]\x20已删除旧会话,重新尝试解密...'),k=await this['pqCipher']['decryptMessage'](b,g,e),console['log']('[Session]\x20PREKEY_MESSAGE\x20解密成功,新会话已建立'),f['decode'](k);}else throw l;}}else k=await this['pqCipher']['decryptMessage'](b,g,e);return f['decode'](k);}catch(o){console['error']('[Session\x20Debug]\x20解密失败\x20(尝试\x20'+(h+0x1)+'/6):'),console['error']('\x20\x20错误消息:\x20'+(o instanceof Error?o['message']:String(o))),console['error']('\x20\x20上下文:'),console['error']('\x20\x20\x20\x20-\x20myAddress:\x20'+a),console['error']('\x20\x20\x20\x20-\x20peerAddress:\x20'+b),console['error']('\x20\x20\x20\x20-\x20msgType:\x20'+d+'\x20('+(d===0x3?'PREKEY':'WHISPER')+')');if(h>=i)throw o;console['log']('[Session]\x20尝试重新建立会话...');try{j&&(console['log']('[Session]\x20删除旧会话'),await this['pqStore']['removeSession'](b,e));if(d===0x3)console['log']('[Session]\x20收到的是\x20PREKEY_MESSAGE,等待发送方的\x20PreKey\x20即可重建会话');else console['log']('[Session]\x20收到的是\x20WHISPER_MESSAGE,需要让对方重新发送\x20PREKEY_MESSAGE');h++,await new Promise(p=>setTimeout(p,0x64));}catch(p){console['error']('[Session]\x20重新建立会话失败:',p);throw o;}}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),console['log']('[SessionState]\x20回滚会话:\x20'+a+'.'+b);}else await this['store']['removeSession'](a,b),console['log']('[SessionState]\x20清除会话:\x20'+a+'.'+b);}async['commitSession'](a,b){console['log']('[SessionState]\x20提交新会话');}},DecryptionEngine=class{constructor(a){this['store']=a,this['cipher']=new PQSessionCipher(a),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){console['log']('[Decrypt]\x20处理\x20PREKEY_MESSAGE\x20from\x20'+b);const f=new TextDecoder(),g=new Uint8Array(c),h=await this['cipher']['decryptMessage'](b,g,d),i=f['decode'](h);console['log']('[Decrypt]\x20PREKEY_MESSAGE\x20解密成功'),await this['sessionManager']['commitSession'](b,d);const j=a['toLowerCase']();if(j<b['toLowerCase']())console['log']('[Decrypt]\x20小地址('+j+')保存接收会话用于解密,发送会话保持不变');else console['log']('[Decrypt]\x20大地址('+j+')接受新会话');return{'success':!![],'plaintext':i,'sessionUpdated':!![],'sessionRolledBack':![],'messageType':'PREKEY'};}async['handleWhisperMessage'](a,b,c,d,e){console['log']('[Decrypt]\x20处理\x20WHISPER_MESSAGE\x20from\x20'+b);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),i=f['decode'](h);return console['log']('[Decrypt]\x20WHISPER_MESSAGE\x20解密成功'),{'success':!![],'plaintext':i,'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['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']),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&&a30a(a)&&a30a(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){if(!this['userAddress'])throw new MessengerError('IDENTITY_NOT_FOUND','User\x20address\x20not\x20set');const d=Date['now'](),e=Date['now'](),f=this['generateNonce'](),g=new TextEncoder()['encode'](b)['length'];if(g>0x2800)throw new MessengerError('INVALID_INPUT','Message\x20size\x20('+g+'\x20bytes)\x20exceeds\x20maximum\x20allowed\x20size\x20('+NORMAL_MESSAGE_BYTES_LIMIT+'\x20bytes).\x20Consider\x20using\x20sendZipFile\x20for\x20large\x20content.');await this['pullMessages']();const h=this['messageStorage']['getLastReceivedLeafIndex'](this['userAddress'],a),i=await this['session']['encryptMessage'](this['userAddress'],a,b),j=Buffer['from'](new Uint8Array(i['body']))['toString']('base64'),k=hashPlaintext(b,d,c?.['guardAddress'],c?.['passportAddress'],h),l=await(await getAccount())['get'](this['userAddress'],![]);if(!l)throw new MessengerError('IDENTITY_NOT_FOUND','User\x20account\x20not\x20found');const m=l['pubkey'],n=c?.['guardAddress']||'',o=c?.['passportAddress']||'',p=h>=0x0?h['toString']():'',q=c?.['force']?'true':'false',r='send_message:'+this['userAddress']+':'+a+':'+n+':'+o+':'+k+':'+p+':'+m+':'+e+':'+f+':'+q,s=await(await getAccount())['signData'](this['userAddress'],r),t=Buffer['from'](s['signature']['slice'](0x2),'hex'),u=bytesToBase64(new Uint8Array(t)),v=await this['serverClient']['sendMessage']({'sender':s['publicKey'],'recipient':a,'ciphertext':j,'plaintextHash':k,'clientTimestamp':d,'msgType':i['type'],'signatureScheme':'Falcon512','signature':u,'timestamp':e,'nonce':f,'guardAddress':c?.['guardAddress'],'passportAddress':c?.['passportAddress'],'force':c?.['force'],'lastReceivedLeafIndex':h>=0x0?h:void 0x0}),w={'messageId':v['messageId'],'fromAddress':this['userAddress'],'toAddress':a,'plaintextHash':k,'plaintext':b,'guardAddress':c?.['guardAddress'],'passportAddress':c?.['passportAddress'],'lastReceivedLeafIndex':h,'direction':'sent','status':v['status']==='confirmed'?'confirmed':'pending','msgType':i['type'],'createdAt':d};v['merkleData']&&(w['leafIndex']=v['merkleData']['leafIndex'],w['prevRoot']=v['merkleData']['prevRoot'],w['newRoot']=v['merkleData']['newRoot'],w['serverSignature']=v['merkleData']['serverSignature'],w['serverTimestamp']=v['merkleData']['serverTimestamp'],w['serverPublicKey']=v['merkleData']['serverPublicKey'],this['sessionStateStorage']['updateSessionState'](this['userAddress'],a,{'currentRoot':v['merkleData']['newRoot'],'prevRoot':v['merkleData']['prevRoot'],'lastLeafIndex':v['merkleData']['leafIndex'],'lastSyncAt':Date['now']()}));this['messageStorage']['saveMessage'](w);if(v['pendingMerkleData'])for(const [x,y]of Object['entries'](v['pendingMerkleData'])){const z=this['messageStorage']['getMessage'](x);if(z&&z['status']==='pending')this['messageStorage']['updateMessageStatus'](x,'confirmed',{'leafIndex':y['leafIndex'],'newRoot':y['newRoot'],'serverSignature':y['serverSignature'],'serverTimestamp':y['serverTimestamp'],'serverPublicKey':y['serverPublicKey']});}return this['triggerFastPoll'](),{'messageId':v['messageId'],'status':w['status'],'merkleData':v['merkleData'],'guardList':v['guard_list'],'lastReceivedLeafIndex':h>=0x0?h:void 0x0};}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-Bs6HQZeE.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':d['sessionId']})['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']||a30b['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=hashPlaintext(o,r,u,v,q),x=Date['now'](),y=this['generateNonce'](),z=await(await getAccount())['get'](this['userAddress'],![]);if(!z)throw new MessengerError('IDENTITY_NOT_FOUND','User\x20account\x20not\x20found');const A=z['pubkey'],B=q>=0x0?q['toString']():'',C=c?.['force']?'true':'false',D='send_message:'+this['userAddress']+':'+a+':'+u+':'+v+':'+w+':'+B+':'+A+':'+x+':'+y+':'+C,E=await(await getAccount())['signData'](this['userAddress'],D),F=Buffer['from'](E['signature']['slice'](0x2),'hex'),G=bytesToBase64(new Uint8Array(F)),H=await this['serverClient']['sendMessage']({'sender':E['publicKey'],'recipient':a,'ciphertext':t,'plaintextHash':w,'clientTimestamp':r,'msgType':s['type'],'zipMetadata':p,'guardAddress':c?.['guardAddress'],'passportAddress':c?.['passportAddress'],'force':c?.['force'],'lastReceivedLeafIndex':q>=0x0?q:void 0x0,'signatureScheme':'Falcon512','signature':G,'timestamp':x,'nonce':y}),I={'messageId':H['messageId'],'fromAddress':this['userAddress'],'toAddress':a,'plaintextHash':w,'plaintext':o,'guardAddress':c?.['guardAddress'],'passportAddress':c?.['passportAddress'],'lastReceivedLeafIndex':q,'direction':'sent','status':H['status']==='confirmed'?'confirmed':'pending','msgType':s['type'],'zipMetadata':p,'createdAt':r};H['merkleData']&&(I['leafIndex']=H['merkleData']['leafIndex'],I['prevRoot']=H['merkleData']['prevRoot'],I['newRoot']=H['merkleData']['newRoot'],I['serverSignature']=H['merkleData']['serverSignature'],I['serverTimestamp']=H['merkleData']['serverTimestamp'],I['serverPublicKey']=H['merkleData']['serverPublicKey'],this['sessionStateStorage']['updateSessionState'](this['userAddress'],a,{'currentRoot':H['merkleData']['newRoot'],'prevRoot':H['merkleData']['prevRoot'],'lastLeafIndex':H['merkleData']['leafIndex'],'lastSyncAt':Date['now']()}));this['messageStorage']['saveMessage'](I);if(H['pendingMerkleData'])for(const [J,K]of Object['entries'](H['pendingMerkleData'])){const L=this['messageStorage']['getMessage'](J);if(L&&L['status']==='pending')this['messageStorage']['updateMessageStatus'](J,'confirmed',{'leafIndex':K['leafIndex'],'newRoot':K['newRoot'],'serverSignature':K['serverSignature'],'serverTimestamp':K['serverTimestamp'],'serverPublicKey':K['serverPublicKey']});}return this['triggerFastPoll'](),{'messageId':H['messageId'],'status':I['status'],'merkleData':H['merkleData'],'guardList':H['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=a30b['resolve'](a);if(!a30c['existsSync'](b))throw new MessengerError('FILE_NOT_FOUND','File\x20not\x20found:\x20'+b);const c=a30c['readFileSync'](b);return new Uint8Array(c);}['detectContentType'](a){switch(a30b['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(a30a(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'];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 e=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(!e['valid'])throw new Error(e['error']);const f={'messageId':a['id'],'fromAddress':a['from'],'toAddress':this['userAddress'],'plaintextHash':a['plaintextHash'],'plaintext':d,'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 g=a['merkleMetadata']?.['serverTimestamp']||a['clientTimestamp']||Date['now']();if(a['lastReceivedLeafIndex']!==void 0x0&&a['lastReceivedLeafIndex']>=0x0){const h=this['messageStorage']['getMessagesBySession'](this['userAddress'],a['from'])['filter'](i=>i['direction']==='sent'&&i['status']==='confirmed'&&i['leafIndex']!==void 0x0&&i['leafIndex']<=a['lastReceivedLeafIndex']);for(const i of h)this['messageStorage']['updateMessageStatus'](i['messageId'],'read');}return{'success':!![],'shouldRetry':![],'message':f,'decryptedData':{'id':a['id'],'from':a['from'],'plaintext':d,'timestamp':g,'merkleVerified':!!a['merkleMetadata'],'merkleData':a['merkleMetadata']?{'leafIndex':a['merkleMetadata']['leafIndex'],'rootHash':a['merkleMetadata']['newRoot']}:void 0x0},'sessionUpdated':c['sessionUpdated']};}catch(j){const k=j instanceof Error?j['message']:String(j);return{'success':![],'shouldRetry':this['isRetryableError'](k),'error':k};}}['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};