@the_library/public 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +684 -0
- package/README.md +735 -1101
- package/THIRD_PARTY_NOTICES +489 -0
- package/assets/branding/pond-enterprise-logo.svg +3 -14
- package/dist/{Book-K86JRm42.d.ts → Book-CYyj_y_4.d.ts} +22 -1
- package/dist/{bookSearchService-BmFHrvsv.d.ts → bookSearchService-YQskauJS.d.ts} +1 -1
- package/dist/branding/index.js +6 -1
- package/dist/branding/index.js.map +1 -1
- package/dist/{chunk-3XUKOVEF.js → chunk-34UDKDMR.js} +7 -2
- package/dist/chunk-34UDKDMR.js.map +1 -0
- package/dist/{chunk-7G3BMGV2.js → chunk-3ALQKSIN.js} +11 -1
- package/dist/chunk-3ALQKSIN.js.map +1 -0
- package/dist/{chunk-PV3X54EU.js → chunk-AADFZOUD.js} +6 -1
- package/dist/chunk-AADFZOUD.js.map +1 -0
- package/dist/{chunk-FN52YV7L.js → chunk-DCTN7BWB.js} +6 -1
- package/dist/chunk-DCTN7BWB.js.map +1 -0
- package/dist/{chunk-GWQNULP4.js → chunk-HZZP2YTW.js} +7 -2
- package/dist/chunk-HZZP2YTW.js.map +1 -0
- package/dist/chunk-OKIGFADW.js +7 -0
- package/dist/chunk-OKIGFADW.js.map +1 -0
- package/dist/{chunk-D4DXGA2W.js → chunk-QL7HY3IK.js} +7 -2
- package/dist/chunk-QL7HY3IK.js.map +1 -0
- package/dist/{chunk-46FQHZNM.js → chunk-SB7IRHJD.js} +6 -1
- package/dist/chunk-SB7IRHJD.js.map +1 -0
- package/dist/{chunk-OELHBR4F.js → chunk-TQW56CCL.js} +7 -2
- package/dist/chunk-TQW56CCL.js.map +1 -0
- package/dist/{chunk-SD3INWZF.js → chunk-YRTDYXAD.js} +6 -1
- package/dist/chunk-YRTDYXAD.js.map +1 -0
- package/dist/downloader/dl2-sw.js +6 -1
- package/dist/downloader/dl2-sw.js.map +1 -1
- package/dist/downloader/file-worker-v2.js +5 -0
- package/dist/downloader/file-worker-v2.js.map +1 -1
- package/dist/downloader/index.d.ts +13 -1
- package/dist/downloader/index.js +6 -1
- package/dist/downloader/index.js.map +1 -1
- package/dist/downloader/mu-worker-v2.js +5 -0
- package/dist/downloader/mu-worker-v2.js.map +1 -1
- package/dist/downloader/react.js +6 -1
- package/dist/downloader/react.js.map +1 -1
- package/dist/downloader/solid.js +6 -1
- package/dist/downloader/solid.js.map +1 -1
- package/dist/downloader/sw.js +6 -1
- package/dist/downloader/sw.js.map +1 -1
- package/dist/downloader/vue.js +6 -1
- package/dist/downloader/vue.js.map +1 -1
- package/dist/global/public.global.js +33 -23
- package/dist/global/public.manifest.json +0 -1
- package/dist/models/astro.js +6 -1
- package/dist/models/astro.js.map +1 -1
- package/dist/models/index.d.ts +3 -4
- package/dist/models/index.js +6 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/models.d.ts +2 -3
- package/dist/models/models.js +6 -1
- package/dist/models/patch-worker.js +10 -0
- package/dist/models/patch-worker.js.map +1 -1
- package/dist/models/react.js +6 -1
- package/dist/models/react.js.map +1 -1
- package/dist/models/solid.js +6 -1
- package/dist/models/solid.js.map +1 -1
- package/dist/models/vue.d.ts +2 -3
- package/dist/models/vue.js +6 -1
- package/dist/models/vue.js.map +1 -1
- package/dist/web3/auth.js +5 -0
- package/dist/web3/auth.js.map +1 -1
- package/dist/web3/index.js +6 -1
- package/dist/web3/index.js.map +1 -1
- package/dist/web3/network.js +6 -1
- package/dist/web3/registry.js +6 -1
- package/dist/web3/vue.js +6 -1
- package/dist/web3/vue.js.map +1 -1
- package/package.json +18 -17
- package/dist/chunk-3XUKOVEF.js.map +0 -1
- package/dist/chunk-46FQHZNM.js.map +0 -1
- package/dist/chunk-7G3BMGV2.js.map +0 -1
- package/dist/chunk-D4DXGA2W.js.map +0 -1
- package/dist/chunk-EMA2QJTW.js +0 -2
- package/dist/chunk-EMA2QJTW.js.map +0 -1
- package/dist/chunk-FN52YV7L.js.map +0 -1
- package/dist/chunk-GWQNULP4.js.map +0 -1
- package/dist/chunk-OELHBR4F.js.map +0 -1
- package/dist/chunk-PV3X54EU.js.map +0 -1
- package/dist/chunk-SD3INWZF.js.map +0 -1
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
import{a as P}from"./chunk-EMA2QJTW.js";import{g as S}from"./chunk-FN52YV7L.js";import{c as O}from"./chunk-GWQNULP4.js";import{$a as $,Fa as Ce,Ka as J,La as ve,Lb as X,Ma as x,Oa as Pe,Ra as _,U as we,Z as Ae,_a as Y,aa as Ne,cb as L,db as Re,ea as Ee,h as Ie,jb as xe,l as B,n as q}from"./chunk-7G3BMGV2.js";var _e=[{inputs:[{internalType:"bytes32",name:"id",type:"bytes32"}],name:"getPriceUnsafe",outputs:[{components:[{internalType:"int64",name:"price",type:"int64"},{internalType:"uint64",name:"conf",type:"uint64"},{internalType:"int32",name:"expo",type:"int32"},{internalType:"uint256",name:"publishTime",type:"uint256"}],internalType:"struct PythStructs.Price",name:"price",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"updateData",type:"bytes[]"}],name:"getUpdateFee",outputs:[{internalType:"uint256",name:"feeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"updateData",type:"bytes[]"}],name:"updatePriceFeeds",outputs:[],stateMutability:"payable",type:"function"}];var w=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"EmptyAddress",type:"error"},{inputs:[],name:"EmptyHash",type:"error"},{inputs:[],name:"EmptyString",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"Forbidden",type:"error"},{inputs:[],name:"NotFound",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAdmin",type:"address"},{indexed:!0,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"key",type:"string"},{indexed:!1,internalType:"string",name:"arweaveTxId",type:"string"},{indexed:!1,internalType:"bytes32",name:"sha256Hash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"BlobRefAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"name",type:"string"},{indexed:!0,internalType:"address",name:"contractAddress",type:"address"},{indexed:!1,internalType:"string",name:"abiUrl",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"ContractAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"key",type:"string"},{indexed:!1,internalType:"string",name:"value",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"DataAdded",type:"event"},{inputs:[{internalType:"string",name:"key",type:"string"},{internalType:"string",name:"arweaveTxId",type:"string"},{internalType:"bytes32",name:"sha256Hash",type:"bytes32"}],name:"addBlobRef",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"name",type:"string"},{internalType:"address",name:"contractAddress",type:"address"},{internalType:"string",name:"abiUrl",type:"string"}],name:"addContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"},{internalType:"string",name:"value",type:"string"}],name:"addData",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"getAllBlobRefKeys",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAllContractNames",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAllDataKeys",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"},{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"getBlobRefHistory",outputs:[{components:[{internalType:"string",name:"arweaveTxId",type:"string"},{internalType:"bytes32",name:"sha256Hash",type:"bytes32"}],internalType:"struct AddressRegistry.BlobRef[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"name",type:"string"}],name:"getContractHistory",outputs:[{components:[{internalType:"address",name:"contractAddress",type:"address"},{internalType:"string",name:"abiUrl",type:"string"}],internalType:"struct AddressRegistry.ContractRecord[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"}],name:"getDataHistory",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"}],name:"getLatestBlobRef",outputs:[{internalType:"string",name:"",type:"string"},{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"name",type:"string"}],name:"getLatestContract",outputs:[{internalType:"address",name:"",type:"address"},{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"}],name:"getLatestData",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}];var Le=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"EmptyAddress",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"Forbidden",type:"error"},{inputs:[],name:"ImportsFinalized",type:"error"},{inputs:[],name:"InvalidActionId",type:"error"},{inputs:[],name:"InvalidTargetMode",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"StorageFrozen",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint8",name:"actionId",type:"uint8"},{indexed:!1,internalType:"uint8",name:"objectType",type:"uint8"},{indexed:!1,internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{indexed:!1,internalType:"bool",name:"isRelation",type:"bool"},{indexed:!1,internalType:"uint8",name:"targetMode",type:"uint8"}],name:"ActionConfigSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"}],name:"AuthorizedAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"}],name:"AuthorizedRemoved",type:"event"},{anonymous:!1,inputs:[],name:"ImportsFinalized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"frozen",type:"bool"}],name:"MigrationFrozen",type:"event"},{inputs:[],name:"VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"_isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"addAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"authorizedWriters",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"actorId",type:"uint32"}],name:"countByActor",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"targetKey",type:"bytes32"}],name:"countByTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"targetUserId",type:"uint32"},{internalType:"uint32",name:"since",type:"uint32"}],name:"countNewSubscriptionsSince",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"exportActionConfigs",outputs:[{internalType:"uint8[]",name:"ids",type:"uint8[]"},{components:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{internalType:"bool",name:"isRelation",type:"bool"},{internalType:"uint8",name:"targetMode",type:"uint8"}],internalType:"struct IRelationshipIndexerStorage.ActionConfig[]",name:"configs",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportActors",outputs:[{internalType:"uint256[]",name:"actorIds",type:"uint256[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportAuthors",outputs:[{internalType:"bytes32[]",name:"objectKeys",type:"bytes32[]"},{internalType:"uint32[]",name:"authors",type:"uint32[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportHintUsers",outputs:[{internalType:"uint256[]",name:"userIds",type:"uint256[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"userId",type:"uint32"},{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportHints",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.SubscriptionHint[]",name:"hints",type:"tuple[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportTargets",outputs:[{internalType:"bytes32[]",name:"targetKeys",type:"bytes32[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"finalizeImports",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"freezeForMigration",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint8",name:"actionId",type:"uint8"}],name:"getActionConfig",outputs:[{components:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{internalType:"bool",name:"isRelation",type:"bool"},{internalType:"uint8",name:"targetMode",type:"uint8"}],internalType:"struct IRelationshipIndexerStorage.ActionConfig",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint256",name:"start",type:"uint256"},{internalType:"uint256",name:"count",type:"uint256"}],name:"getByActor",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint256",name:"start",type:"uint256"},{internalType:"uint256",name:"count",type:"uint256"}],name:"getByObjectTarget",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint256",name:"start",type:"uint256"},{internalType:"uint256",name:"count",type:"uint256"}],name:"getByTagTarget",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"targetKey",type:"bytes32"},{internalType:"uint256",name:"start",type:"uint256"},{internalType:"uint256",name:"count",type:"uint256"}],name:"getByTarget",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"targetUserId",type:"uint32"},{internalType:"uint32",name:"since",type:"uint32"}],name:"getNewSubscriptionsSince",outputs:[{internalType:"uint32[]",name:"actorIds",type:"uint32[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8[]",name:"ids",type:"uint8[]"},{components:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{internalType:"bool",name:"isRelation",type:"bool"},{internalType:"uint8",name:"targetMode",type:"uint8"}],internalType:"struct IRelationshipIndexerStorage.ActionConfig[]",name:"configs",type:"tuple[]"}],name:"importActionConfigs",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint256",name:"startIndex",type:"uint256"},{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"rs",type:"tuple[]"}],name:"importActorRelationships",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32[]",name:"objectKeys",type:"bytes32[]"},{internalType:"uint32[]",name:"authors",type:"uint32[]"}],name:"importAuthors",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"userId",type:"uint32"},{internalType:"uint256",name:"startIndex",type:"uint256"},{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.SubscriptionHint[]",name:"hints",type:"tuple[]"}],name:"importHints",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"targetKey",type:"bytes32"},{internalType:"uint256",name:"startIndex",type:"uint256"},{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"rs",type:"tuple[]"}],name:"importTargetRelationships",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"importsFinalized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"migrationFrozen",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"}],name:"objectTargetKey",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint256[]",name:"patches",type:"uint256[]"}],name:"recordActions",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"removeAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint8",name:"actionId",type:"uint8"},{components:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{internalType:"bool",name:"isRelation",type:"bool"},{internalType:"uint8",name:"targetMode",type:"uint8"}],internalType:"struct IRelationshipIndexerStorage.ActionConfig",name:"config",type:"tuple"}],name:"setActionConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint64",name:"tagId",type:"uint64"}],name:"tagTargetKey",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[],name:"unfreezeForMigration",outputs:[],stateMutability:"nonpayable",type:"function"}];import{createPublicClient as mt,http as yt}from"viem";import{DEFAULT_CHAIN_ID as gt,getChain as ft,getCanonicalRole as ht,getDeploymentEnvironment as bt,isChainDeployedForRole as St}from"@the_library/network-config";import{hexToString as at,stringToHex as it}from"viem";function W(r){let e=r.startsWith("0x")?r:"0x"+r;return at(e).replace(/\0/g,"")}function F(r){return it(r).padEnd(10,"0").slice(0,10)}import{BaseError as ot,ContractFunctionRevertedError as De,InsufficientFundsError as Me,NonceTooLowError as ke,TimeoutError as je,UserRejectedRequestError as Ue}from"viem";var st=[],f=class r extends Error{constructor(e,n,t){super(n),this.name="Web3Error",this.code=e,this.reason=t?.reason,this.data=t?.data,this.originalError=t?.originalError,Object.setPrototypeOf(this,r.prototype)}};function Z(r){if(r instanceof f)return r;let e=ut(r);for(let n of st)try{n(e)}catch(t){console.error("[web3/errors] registerOnErrorCb listener threw",t)}return e}var ct=r=>{let n=(r?.message||r?.reason||String(r)).toLowerCase();return n.includes("invalid compressedactions format")?new f("INVALID_COMPRESSED_ACTIONS","Invalid compressedActions format",{originalError:r}):n.includes("switch chain error")?new f("SWITCH_CHAIN_ERROR","Error Switching Chains",{data:r.code,reason:r.message,originalError:r}):n.includes("switching accounts while on an unsupported chainid")?new f("SWITCH_TO_UNSUPPORTED_CHAIN",n,{originalError:r}):null},Oe=r=>r instanceof Ue||r instanceof Me||r instanceof ke||r instanceof je||r instanceof De;function Be(r){if(r instanceof ot&&!Oe(r)){let e=r.walk(Oe);if(e)return Be(e)}return r instanceof Ue?new f("USER_REJECTED","User rejected the transaction",{reason:r.shortMessage,originalError:r}):r instanceof Me?new f("INSUFFICIENT_FUNDS","Insufficient funds for transaction",{reason:r.shortMessage,originalError:r}):r instanceof ke?new f("NONCE_TOO_LOW","Transaction nonce is too low",{reason:r.shortMessage,originalError:r}):r instanceof je?new f("TIMEOUT","Request timed out",{reason:r.shortMessage,originalError:r}):r instanceof De?new f("REVERT","Transaction reverted by contract",{reason:r.reason??r.data?.errorName??r.shortMessage,data:r.data,originalError:r}):null}function ut(r){let e=ct(r);if(e)return e;let n=Be(r);if(n)return n;let t=r?.message||r?.reason||String(r),a=t.toLowerCase();return a.includes("no account connected to wallet")?new f("NO_WALLET_CONNECTED","No account connected to wallet",{originalError:r}):a.includes("user rejected")||a.includes("user denied")||a.includes("user cancelled")||r?.code===4001||r?.code==="ACTION_REJECTED"?new f("USER_REJECTED","User rejected the transaction",{reason:r?.reason,originalError:r}):a.includes("insufficient funds")||a.includes("insufficient balance")||r?.code==="INSUFFICIENT_FUNDS"?new f("INSUFFICIENT_FUNDS","Insufficient funds for transaction",{reason:r?.reason,originalError:r}):a.includes("nonce too low")||a.includes("nonce has already been used")||r?.code==="NONCE_EXPIRED"?new f("NONCE_TOO_LOW","Transaction nonce is too low",{reason:r?.reason,originalError:r}):a.includes("revert")||a.includes("execution reverted")||r?.code==="CALL_EXCEPTION"||r?.code===3?new f("REVERT","Transaction reverted by contract",{reason:r?.reason||lt(r),data:r?.data,originalError:r}):a.includes("timeout")||r?.code==="TIMEOUT"?new f("TIMEOUT","Request timed out",{reason:r?.reason,originalError:r}):a.includes("network")||a.includes("connection")||r?.code==="NETWORK_ERROR"||r?.code==="ETIMEDOUT"?new f("NETWORK_ERROR","Network error occurred",{reason:r?.reason,originalError:r}):a.includes("invalid argument")||r?.code==="INVALID_ARGUMENT"?new f("INVALID_ARGUMENT","Invalid argument provided",{reason:r?.reason,originalError:r}):a.includes("unsupported")||r?.code==="UNSUPPORTED_OPERATION"?new f("UNSUPPORTED_OPERATION","Unsupported operation",{reason:r?.reason,originalError:r}):new f("UNKNOWN",t||"Unknown error occurred",{reason:r?.reason,data:r?.data,originalError:r})}function lt(r){if(r?.reason)return r.reason;if(r?.data?.message)return r.data.message;let n=(r?.message||"").match(/revert\s+(.+?)(?:\s|$|")/i);if(n)return n[1]}var pt="https://worldbibliotech.com",dt=/^https?:\/\/(?:worldbibliotech\.com|datapond\.earth)(?=$|[/?#]|https?:\/\/)/i,$e=/^[a-z][a-z0-9+.-]*:/i;function Q(r){let e;for(;e=r.match(dt);)r=r.slice(e[0].length);return!r||r.startsWith("/")||$e.test(r)?r:`/${r}`}function We(r){let e=Q(r);return $e.test(e)?e:pt+e}var Tt=3600,D=r=>[(r?.[0]||[]).map(e=>BigInt(e)),(r?.[1]||[]).map(e=>BigInt(e)),(r?.[2]||[]).map(String)],Fe=r=>({stripePaymentId:String(r.stripePaymentId??r[0]),amountUSD:BigInt(r.amountUSD??r[1]),username:String(r.username??r[2]),donor:String(r.donor??r[3]),country:String(r.country??r[4]),language:String(r.language??r[5]),timestamp:Number(r.timestamp??r[6]),chainId:Number(r.chainId??r[7])}),M=class{constructor(e,n="production"){this._contractAddresses={};this.chainId=e,this.environment=ht(n);let t=ft(e);if(this.config=t,this.deploymentEnvironment=bt(e,n),!St(e,n))throw new Error(`Chain EVM ${e} is not deployed for application environment ${n} (resolved deployment environment: ${this.deploymentEnvironment})`);this.chain=P(t),this.publicClient=mt({chain:this.chain,transport:yt(t.rpc)}),this.addressRegistry=this.createAddressRegistryReadAPI(),this.bouncerStorage=this.createBouncerStorageReadAPI(),this.scientistStorage=this.createScientistStorageReadAPI(),this.archivistStorage=this.createArchivistReadApi(),this.factory=this.createFactoryReadAPI(),this.accountManager=this.createAccountManagerReadAPI(),this.projectManagerStorage=this.createProjectManagerStorageReadAPI(),this.subscriptionManager=this.createSubscriptionManagerReadAPI(),this.libraryRegistryStorage=this.createLibraryRegistryStorageReadAPI(),this.publicLibraryStorage=this.createPublicLibraryStorageReadAPI(),this.dSafeHRStorage=this.createDSafeHRStorageReadAPI(),this.relationshipIndexerStorage=this.createRelationshipIndexerStorageReadAPI(),this._contractAddresses={...t.addresses||{}},this.ready=new Promise(async(i,s)=>{try{console.log(`[EvmClient] Initializing registry for chain ${this.chainId} (env: ${this.environment})...`);let o=await S.Initialize(this.chainId,this.addressRegistry,this.activeRegistryAddress,!0,this.environment);Object.assign(this._contractAddresses,o);let c=await S.loadAllKeys(this.chainId,this.environment);Object.assign(this._contractAddresses,c),this._manifestRegistryAddress=c.addressRegistry??o.addressRegistry,await S.waitForAbis(this.chainId,this.environment),console.log(`[EvmClient] Registry ready for ${this.chainId}. Addresses:`,this._contractAddresses),i()}catch(o){console.error(`[EvmClient] Failed to initialize registry for ${this.chainId}`,o),s(o)}})}setAccountOverride(e){this._accountOverride=e}async getUsdPrice(){let{price:e}=this.config;if(e.stable)return 1;let{pythOracle:n,usdPriceId:t}=e;if(!n||!t)throw new Error(`Pyth config missing for chain ${this.chainId}`);let a=await this.publicClient.readContract({address:n,abi:_e,functionName:"getPriceUnsafe",args:[t]}),i=Math.floor(Date.now()/1e3)-Number(a.publishTime??0);return a.publishTime!==void 0&&i>Tt&&console.warn(`[EvmClient] Pyth price on chain ${this.chainId} is ${Math.round(i/3600)}h old \u2014 contract payments will revert until a fresh price update is pushed`),Number(a.price)*Math.pow(10,Number(a.expo))}async getNativeBalance(e){return this.publicClient.getBalance({address:e})}get activeRegistryAddress(){return this._manifestRegistryAddress?this._manifestRegistryAddress:(this.deploymentEnvironment==="staging"&&this.config.addresses?.stagingAddressRegistry?this.config.addresses.stagingAddressRegistry:this.config.addresses?.addressRegistry)??""}addresses(){return this._contractAddresses}requireAbi(e){let n=S.getAbi(this.chainId,e,this.environment);if(!n)throw new Error(`[EvmClient] ABI for '${e}' on chain ${this.chainId} is not loaded. The registry ABI sync may have failed or not completed. Reads are blocked until it is ready.`);return n}async read(e){await this.ready;let n=this.addresses()[e.contractKey];if(!n){if(e.whenAddressMissing!==void 0)return e.whenAddressMissing;throw new Error(`[EvmClient] ${String(e.contractKey)} address missing for chain ${this.chainId}`)}try{let t=await this.publicClient.readContract({address:n,abi:this.requireAbi(e.contractName),functionName:e.functionName,args:e.args??[],...this._accountOverride?{account:this._accountOverride}:{}});return e.transform?e.transform(t):t}catch(t){throw Z(t)}}createAddressRegistryReadAPI(){return{getLatestContract:async e=>{let n=this.activeRegistryAddress;if(!n)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);let t=await this.publicClient.readContract({address:n,abi:w,functionName:"getLatestContract",args:[e]});return[t[0],t[1]]},getContractHistory:async e=>{let n=this.activeRegistryAddress;if(!n)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);return await this.publicClient.readContract({address:n,abi:w,functionName:"getContractHistory",args:[e]})},getAllContractNames:async()=>{let e=this.activeRegistryAddress;if(!e)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);return await this.publicClient.readContract({address:e,abi:w,functionName:"getAllContractNames",args:[]})},getLatestData:async e=>{let n=this.activeRegistryAddress;if(!n)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);let t=await this.publicClient.readContract({address:n,abi:w,functionName:"getLatestData",args:[e]});return String(t)},getAllDataKeys:async()=>{let e=this.activeRegistryAddress;if(!e)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);return await this.publicClient.readContract({address:e,abi:w,functionName:"getAllDataKeys",args:[]})},getLatestBlobRef:async e=>{let n=this.activeRegistryAddress;if(!n)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);let t=await this.publicClient.readContract({address:n,abi:w,functionName:"getLatestBlobRef",args:[e]});return[t[0],t[1]]},getBlobRefHistory:async(e,n,t)=>{let a=this.activeRegistryAddress;if(!a)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);return(await this.publicClient.readContract({address:a,abi:w,functionName:"getBlobRefHistory",args:[e,BigInt(n),BigInt(t)]})).map(s=>[s.arweaveTxId,s.sha256Hash])},admin:async()=>{let e=this.activeRegistryAddress;if(!e)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);let n=await this.publicClient.readContract({address:e,abi:w,functionName:"admin",args:[]});return String(n)},getLastUpdateInfo:async e=>{let n=this.activeRegistryAddress;if(!n)return null;let t={type:"event",name:"ContractAdded",inputs:[{type:"string",name:"name",indexed:!0},{type:"address",name:"contractAddress",indexed:!0},{type:"string",name:"abiUrl"},{type:"uint256",name:"version"}]},a=async o=>{let c=await this.publicClient.getBlock({blockNumber:o.blockNumber});return{timestamp:Number(c.timestamp),blockNumber:o.blockNumber,transactionHash:o.transactionHash}};try{let o=await this.publicClient.getLogs({address:n,event:t,args:{name:e},fromBlock:0n});return o.length===0?null:await a(o[o.length-1])}catch{}let i=9999n,s=50;try{let c=await this.publicClient.getBlockNumber();for(let p=0;p<s&&c>=0n;p++){let y=c>=i?c-i:0n,h=await this.publicClient.getLogs({address:n,event:t,args:{name:e},fromBlock:y,toBlock:c});if(h.length>0)return await a(h[h.length-1]);if(y===0n)break;c=y-1n}return null}catch(o){return console.error(`[EvmClient] Failed to get last update info for ${e}:`,o),null}}}}createArchivistReadApi(){let e="backupStorage",n="BackupStorage";return{userLevel:t=>this.read({contractKey:e,contractName:n,functionName:"userLevel",args:[t],transform:Number}),isAuthorized:t=>this.read({contractKey:e,contractName:n,functionName:"isAuthorized",args:[t],transform:Boolean}),nbWrites:t=>this.read({contractKey:e,contractName:n,functionName:"nbWrites",args:[t],transform:Number}),loadActions:t=>this.read({contractKey:e,contractName:n,functionName:"loadActions",args:[t],transform:D}),loadActionsSince:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"loadActionsSince",args:[t,a],transform:D})}}createProjectManagerStorageReadAPI(){return{nbProjects:async()=>{if(await this.ready,!this.addresses().factory)return console.error("[EvmClient] Factory address missing in config!"),0;try{return await this.read({contractKey:"factory",contractName:"Factory",functionName:"nbProjects",transform:Number})}catch(n){throw console.error("[EvmClient] nbProjects failed:",n),n}},balanceOfAddress:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getUserBalances",args:[e],transform:n=>({total:Number(n[0]),donations:Number(n[1]),unspent:Number(n[2])})}),loadProject:e=>this.read({contractKey:"factory",contractName:"Factory",functionName:"getProject",args:[e],transform:n=>({id:e,balance:n[1].reduce((t,a)=>t+Number(a),0),versions:n[2].map(t=>(t.uri=We(t.uri),t.publicationDate=new Date(Number(t.publicationDate)*1e3),t.maximumFunding=Number(t.maximumFunding),t.minimumFundingBeforeStartWork=Number(t.minimumFundingBeforeStartWork),t.tags=t.tags.map(Number),t.status=Number(t.status),t)),availableLanguages:n[3].map(t=>W(t))})}),addressDonationsPerProject:e=>this.read({contractKey:"factory",contractName:"Factory",functionName:"addressDonationsPerProject",args:[e],transform:n=>n.map(Number)}),getProjectSupportedLanguages:e=>this.read({contractKey:"factory",contractName:"Factory",functionName:"getProjectSupportedLanguages",args:[e],transform:n=>n.map(String)}),projectVotingBalances:e=>this.read({contractKey:"factory",contractName:"Factory",functionName:"getProjectAllocatedBudget",args:[e],transform:n=>n.map(Number)}),getWeeklyDonations:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getWeeklyDonations",args:[BigInt(e)],transform:n=>n.map(Fe)}),getDonationsRange:(e,n)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getDonationsRange",args:[BigInt(e),BigInt(n)],transform:t=>t.map(Fe)}),isAuthorized:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"isAuthorized",args:[e],transform:Boolean}),admin:()=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"admin",transform:String}),getNbLanguages:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getNbLanguages",args:[e],transform:Number}),getLanguageAtIndex:(e,n)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getLanguageAtIndex",args:[e,n],transform:t=>W(t)}),getNbVersions:(e,n)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getNbVersions",args:[e,F(n)],transform:Number}),getVersion:(e,n,t)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getVersion",args:[e,F(n),t],transform:a=>({uri:Q(a.uri),publicationDate:new Date(Number(a.publicationDate)*1e3),name:a.name,headline:a.headline,descriptionMarkdown:a.descriptionMarkdown,arweaveAddressLogo:a.arweaveAddressLogo,arweaveAddressBanner:a.arweaveAddressBanner,minimumFundingBeforeStartWork:Number(a.minimumFundingBeforeStartWork),maximumFunding:Number(a.maximumFunding),tags:a.tags.map(Number),status:Number(a.status),complexity:Number(a.complexity)})}),getVotingBalance:(e,n)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getVotingBalance",args:[e,F(n)]}),getUserBalances:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getUserBalances",args:[e],transform:n=>[BigInt(n[0]),BigInt(n[1]),BigInt(n[2])]}),getVotePresets:()=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getVotePresets",transform:([e,n,t])=>e.map((a,i)=>({projectId:Number(a),lang:W(n[i]),bps:Number(t[i])}))})}}createBouncerStorageReadAPI(){let e="bouncerStorage",n="BouncerStorage";return{hasAccount:async t=>{await this.ready;let a=this.addresses().bouncerStorage;if(!a)return!1;try{let i=S.getAbi(this.chainId,n,this.environment);return i?!!await this.publicClient.readContract({address:a,abi:i,functionName:"hasAccount",args:[t]}):!1}catch(i){return console.error(`[EvmClient] hasAccount FAILED for ${t} (returning false):`,i),!1}},userInfos:t=>this.read({contractKey:e,contractName:n,functionName:"userInfos",args:[t],transform:a=>[String((a.username??a[0])||""),String((a.country??a[1])||""),String((a.language??a[2])||""),Number((a.newUserId??a[3])||0)]}),userData:t=>this.read({contractKey:e,contractName:n,functionName:"userData",args:[t],transform:a=>[Number(a.id??a[0]),String(a.addr??a[1]),String(a.username??a[2]),String(a.language??a[3]),String(a.country??a[4])]}),userIdOf:t=>this.read({contractKey:e,contractName:n,functionName:"userIdOf",args:[t],transform:Number}),userIdToUsername:t=>this.read({contractKey:e,contractName:n,functionName:"userIdToUsername",args:[BigInt(t)],transform:String}),userAddr:t=>this.read({contractKey:e,contractName:n,functionName:"userAddr",args:[BigInt(t)],transform:String}),getUsernameByAddress:t=>this.read({contractKey:e,contractName:n,functionName:"getUsernameByAddress",args:[t],transform:String}),getAccountCountByCountryLanguage:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"getAccountCountByCountryLanguage",args:[t,a],transform:Number}),nbAccounts:()=>this.read({contractKey:e,contractName:n,functionName:"nbAccounts",transform:Number}),getAllLocationCounts:()=>this.read({contractKey:e,contractName:n,functionName:"getAllLocationCounts",transform:t=>t.map(a=>({country:String(a.country??a[0]),language:String(a.language??a[1]),count:Number(a.count??a[2])}))}),getActiveLocationCount:()=>this.read({contractKey:e,contractName:n,functionName:"getActiveLocationCount",transform:Number}),identityStats:()=>this.read({contractKey:e,contractName:n,functionName:"identityStats",transform:t=>[Number(t[0]),Number(t[1])]}),isAuthorized:t=>this.read({contractKey:e,contractName:n,functionName:"isAuthorized",args:[t],transform:Boolean}),getLatestRegisteredUser:async()=>{try{let t=await this.bouncerStorage.nbAccounts();return t===0?null:await this.bouncerStorage.userAddr(t)}catch(t){return console.error("[EvmClient] getLatestRegisteredUser FAILED:",t),null}},getTokenName:()=>this.read({contractKey:e,contractName:n,functionName:"getTokenName",transform:String}),usernameToUserId:t=>this.read({contractKey:e,contractName:n,functionName:"usernameToUserId",args:[t],transform:Number}),userIdByEmailHash:t=>this.read({contractKey:e,contractName:n,functionName:"userIdByEmailHash",args:[t],transform:Number})}}createScientistStorageReadAPI(){let e="scientistStorage",n="ScientistStorage";return{getDeploymentDate:()=>this.read({contractKey:e,contractName:n,functionName:"getDeploymentDate",transform:t=>[Number(t[0]),Number(t[1])]}),getLastMonthId:()=>this.read({contractKey:e,contractName:n,functionName:"getLastMonthId",transform:Number}),getStatsRaw:(t,a,i)=>this.read({contractKey:e,contractName:n,functionName:"getStatsRaw",args:[BigInt(t),BigInt(a),BigInt(i)],transform:s=>[s[0].map(o=>BigInt(o)),s[1].map(o=>Number(o))]}),isAuthorized:t=>this.read({contractKey:e,contractName:n,functionName:"isAuthorized",args:[t],transform:Boolean})}}createFactoryReadAPI(){let e="factory",n="Factory";return{nbWritesByUsername:t=>this.read({contractKey:e,contractName:n,functionName:"nbWritesByUsername",args:[t],transform:Number}),loadUsername:t=>this.read({contractKey:e,contractName:n,functionName:"loadUsername",args:[t],transform:D}),loadUsernameSince:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"loadUsernameSince",args:[t,a],transform:D}),load:()=>this.read({contractKey:e,contractName:n,functionName:"load",transform:D}),isAuthorized:t=>this.read({contractKey:e,contractName:n,functionName:"isAuthorized",args:[t],transform:Boolean}),owner:()=>this.read({contractKey:e,contractName:n,functionName:"owner",transform:String}),oracleSigner:()=>this.read({contractKey:e,contractName:n,functionName:"oracleSigner",transform:String}),bouncerStorage:()=>this.read({contractKey:e,contractName:n,functionName:"bouncerStorage",transform:String}),scientistStorage:()=>this.read({contractKey:e,contractName:n,functionName:"scientistStorage",transform:String}),backupStorage:()=>this.read({contractKey:e,contractName:n,functionName:"backupStorage",transform:String}),projectManagerStorage:()=>this.read({contractKey:e,contractName:n,functionName:"projectManagerStorage",transform:String})}}createAccountManagerReadAPI(){let e="accountManager",n="AccountManager";return{address:async()=>{await this.ready;let t=this.addresses()[e];if(!t)throw new Error(`[EvmClient] accountManager address missing for chain ${this.chainId}`);return t},oracleSigner:()=>this.read({contractKey:e,contractName:n,functionName:"oracleSigner",transform:String}),usedDeletionConsents:t=>this.read({contractKey:e,contractName:n,functionName:"usedDeletionConsents",args:[t],transform:Boolean}),isPaymentIntentUsed:t=>this.read({contractKey:e,contractName:n,functionName:"isPaymentIntentUsed",args:[t],transform:Boolean})}}createSubscriptionManagerReadAPI(){let e="subscriptionManager",n="SubscriptionManager";return{getSubscriptions:t=>this.read({contractKey:e,contractName:n,functionName:"getSubscriptions",args:[t],transform:a=>[...a],whenAddressMissing:[]}),getSubscriptionCount:t=>this.read({contractKey:e,contractName:n,functionName:"getSubscriptionCount",args:[t],transform:BigInt,whenAddressMissing:0n}),isSubscribed:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"isSubscribed",args:[t,a],transform:Boolean,whenAddressMissing:!1}),scoreOf:t=>this.read({contractKey:e,contractName:n,functionName:"scoreOf",args:[t],transform:BigInt,whenAddressMissing:0n})}}createLibraryRegistryStorageReadAPI(){let e="libraryRegistryStorage",n="LibraryRegistryStorage";return{admin:()=>this.read({contractKey:e,contractName:n,functionName:"admin",transform:String}),getUnverifiedCollectionIds:()=>this.read({contractKey:e,contractName:n,functionName:"getUnverifiedCollectionIds",transform:t=>[...t]}),getVerifiedCollectionIds:()=>this.read({contractKey:e,contractName:n,functionName:"getVerifiedCollectionIds",transform:t=>[...t]}),getCollection:t=>this.read({contractKey:e,contractName:n,functionName:"getCollection",args:[t],transform:a=>({id:String(a.id),slug:String(a.slug),manifestUrl:String(a.manifestUrl),importerUsername:String(a.importerUsername),owner:String(a.owner),verified:!!a.verified,fileCount:Number(a.fileCount),libraryType:Number(a.libraryType),publicLibraryId:Number(a.publicLibraryId),country:String(a.country),language:String(a.language),isPublic:!!a.isPublic,createdAt:Number(a.createdAt),updatedAt:Number(a.updatedAt),initialBookCount:Number(a.initialBookCount),dSafeBookCount:Number(a.dSafeBookCount),importStatus:Number(a.importStatus),published:!!a.published,preferredFormat:String(a.preferredFormat)})})}}createPublicLibraryStorageReadAPI(){let e="publicLibraryStorage",n="PublicLibraryStorage";return{libraryExists:t=>this.read({contractKey:e,contractName:n,functionName:"libraryExists",args:[t],transform:Boolean}),getPublicLibrary:t=>this.read({contractKey:e,contractName:n,functionName:"getPublicLibrary",args:[t],transform:a=>({id:Number(a.id),name:String(a.name),physicalAddress:String(a.physicalAddress),country:String(a.country),language:String(a.language),ownership:Number(a.ownership),website:String(a.website),preferredFormat:String(a.preferredFormat),createdAt:Number(a.createdAt),updatedAt:Number(a.updatedAt)})}),nbLibraries:()=>this.read({contractKey:e,contractName:n,functionName:"nbLibraries",transform:Number}),formatExists:t=>this.read({contractKey:e,contractName:n,functionName:"formatExists",args:[t],transform:Boolean}),getAllFormats:()=>this.read({contractKey:e,contractName:n,functionName:"getAllFormats",transform:t=>[...t]})}}createDSafeHRStorageReadAPI(){let e="dSafeHRStorage",n="DSafeHRStorage";return{isStaffOf:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"isStaffOf",args:[t,a],transform:Boolean}),verifyMember:t=>this.read({contractKey:e,contractName:n,functionName:"verifyMember",args:[t],transform:Boolean}),getStaffLibraries:t=>this.read({contractKey:e,contractName:n,functionName:"getStaffLibraries",args:[t],transform:a=>a.map(Number)}),getCurrentRecordCounter:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"getCurrentRecordCounter",args:[t,a],transform:Number}),getLibrarySequence:t=>this.read({contractKey:e,contractName:n,functionName:"getLibrarySequence",args:[t],transform:Number}),getPublishLock:t=>this.read({contractKey:e,contractName:n,functionName:"getPublishLock",args:[t],transform:a=>[String(a[0]),Number(a[1]),!!a[2]]})}}createRelationshipIndexerStorageReadAPI(){let e="relationshipIndexerStorage",n=i=>({actorId:Number(i.actorId??i[0]),actionId:Number(i.actionId??i[1]),objectType:Number(i.objectType??i[2]),objectId:BigInt(i.objectId??i[3]),tagId:BigInt(i.tagId??i[4]),timestamp:Number(i.timestamp??i[5])}),t=i=>(i||[]).map(n),a=async(i,s,o)=>{await this.ready;let c=this.addresses()[e];if(!c)throw new Error(`[EvmClient] relationshipIndexerStorage address missing for chain ${this.chainId}`);try{let p=await this.publicClient.readContract({address:c,abi:Le,functionName:i,args:s});return o(p)}catch(p){throw Z(p)}};return{getByObjectTarget:(i,s,o,c)=>a("getByObjectTarget",[i,s,BigInt(o),BigInt(c)],t),getByTagTarget:(i,s,o)=>a("getByTagTarget",[i,BigInt(s),BigInt(o)],t),getByActor:(i,s,o)=>a("getByActor",[i,BigInt(s),BigInt(o)],t),countByObjectTarget:async(i,s)=>{let o=await a("objectTargetKey",[i,s],c=>c);return a("countByTarget",[o],Number)},countByTagTarget:async i=>{let s=await a("tagTargetKey",[i],o=>o);return a("countByTarget",[s],Number)},countByActor:i=>a("countByActor",[i],Number),getNewSubscriptionsSince:(i,s)=>a("getNewSubscriptionsSince",[i,s],o=>(o||[]).map(Number)),countNewSubscriptionsSince:(i,s)=>a("countNewSubscriptionsSince",[i,s],Number)}}async getRegistryStatus(){return await this.ready,S.getLoadingStatus(this.chainId)}};function gn(r=gt,e="production"){return new M(r,e)}import{isChainDeployedForRole as It}from"@the_library/network-config";var wt={},At={},Nt={},Et={};function Ke(r,e){let n=e==="staging"?Et:Nt,t=e==="staging"?At:wt,a=n[r];if(!a){if(!It(r,e))throw new Error(`No EVM client for chain ${r} (${e})`);a=new M(r,e),n[r]=a,t[r]=a}return a}function A(r,e="production"){return Ke(r,e)}function ee(r,e="production"){return Ke(r,e)}async function Tn(r,e="production"){let n=ee(r,e);return await n.ready,await S.waitForAbis(r,e),n}var He="production",wn=r=>{He=r},k=()=>He;function Ct(){let r="@the_library/web3-session:",e="infos_web3_",n="active_session",t={active:null,known:[]},a=new Set,i=()=>a.forEach(u=>u()),s=(u,l)=>`${e}${l}_${u.toLowerCase()}`,o=u=>{if(typeof localStorage>"u")return;let l=s(u.account,u.chainId);localStorage.setItem(r+l,JSON.stringify(u))},c=(u,l)=>{if(typeof localStorage>"u")return;let d=s(u,l);localStorage.removeItem(r+d)},p=()=>{typeof localStorage>"u"||(t.active?localStorage.setItem(r+n,JSON.stringify({address:t.active.account,chainId:t.active.chainId})):localStorage.removeItem(r+n))},y=()=>{if(typeof localStorage>"u")return null;let u=localStorage.getItem(r+n);if(!u)return null;try{let l=JSON.parse(u);return t.known.find(d=>d.account.toLowerCase()===l.address.toLowerCase()&&d.chainId===l.chainId)||null}catch{return null}};function h(){if(typeof localStorage>"u")return;let u="infos_evm_";for(let l=0;l<localStorage.length;l++){let d=localStorage.key(l);if(!d)continue;let b=d.startsWith(r)?d.slice(r.length):null;if(b&&b.startsWith(u)){let I=r+e+b.slice(u.length);localStorage.setItem(I,localStorage.getItem(d)),localStorage.removeItem(d),l--}}}return{getState(){return t},setActive(u){t.active=u,u&&(t.known.some(d=>d.account.toLowerCase()===u.account.toLowerCase()&&d.chainId===u.chainId)||(t.known.push(u),o(u))),p(),i()},addKnown(u){let l=t.known.findIndex(d=>d.account.toLowerCase()===u.account.toLowerCase()&&d.chainId===u.chainId);l>=0?t.known[l]=u:t.known.push(u),o(u),t.active&&t.active.account.toLowerCase()===u.account.toLowerCase()&&t.active.chainId===u.chainId&&(t.active=u,p()),i()},updateAccount(u,l,d){let b=t.known.find(I=>I.account.toLowerCase()===u.toLowerCase()&&I.chainId===l);b&&(Object.assign(b,d),o(b),t.active&&t.active.account.toLowerCase()===u.toLowerCase()&&t.active.chainId===l&&(Object.assign(t.active,d),p()),i())},removeAccount(u,l){t.known=t.known.filter(d=>!(d.account.toLowerCase()===u.toLowerCase()&&d.chainId===l)),c(u,l),t.active&&t.active.account.toLowerCase()===u.toLowerCase()&&t.active.chainId===l&&(t.active=null,p()),i()},clearAll(){if(typeof localStorage<"u"){let u=[];for(let l=0;l<localStorage.length;l++){let d=localStorage.key(l);d&&d.startsWith(r)&&u.push(d)}for(let l of u)localStorage.removeItem(l)}t.active=null,t.known=[],i()},setLastSavedPatchIndex(u,l,d){this.updateAccount(u,l,{lastPatchIndex:d})},setLastRestorationIndex(u,l,d){this.updateAccount(u,l,{lastRestorationIndex:d})},lastSyncCounters(u,l){let d=t.known.find(b=>b.account.toLowerCase()===u.toLowerCase()&&b.chainId===l);return{lastPatchIndex:d?.lastPatchIndex??0,lastRestorationIndex:d?.lastRestorationIndex??0}},updateProjectVotes(u,l,d,b){let I=t.known.find(v=>v.account.toLowerCase()===u.toLowerCase()&&v.chainId===l);if(I){let v=d-1;if(v<0)return;let R=[...I.donationsPerProject||[]];for(;R.length<=v;)R.push(0);R[v]=(R[v]||0)+b,this.updateAccount(u,l,{donationsPerProject:R})}},persist(){for(let u of t.known)o(u);p()},load(){if(typeof localStorage>"u")return;h();let u=[];for(let l=0;l<localStorage.length;l++){let d=localStorage.key(l);if(d&&d.startsWith(r+e))try{let b=localStorage.getItem(d);if(b){let I=JSON.parse(b);u.push(I)}}catch(b){console.warn("Failed to parse loaded session account:",b)}}t.known=u,t.active=y(),i()},subscribe(u){return a.add(u),()=>a.delete(u)}}}var T=Ct(),Nn=()=>T.getState().known.filter(r=>r.hasAccount);var ne=class{constructor(){this.listeners=new Map}on(e,n){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(n),()=>this.off(e,n)}off(e,n){let t=this.listeners.get(e);t&&(t.delete(n),t.size===0&&this.listeners.delete(e))}emit(e,n){let t=this.listeners.get(e);t&&t.forEach(a=>{try{a(n)}catch(i){console.error(`Error in event listener for ${e}:`,i)}})}once(e,n){let t=a=>{n(a),this.off(e,t)};return this.on(e,t)}clear(e){e?this.listeners.delete(e):this.listeners.clear()}listenerCount(e){return this.listeners.get(e)?.size||0}},te=null;function re(){return te||(te=new ne),te}var vt=(c=>(c.WALLET_STATE_CHANGED="wallet:state:changed",c.WALLET_CHAIN_CHANGED="wallet:chain:changed",c.WALLET_ERROR="wallet:error",c.SESSION_UPDATED="session:updated",c.WALLET_DISCONNECTED="wallet:disconnected",c.SESSION_DELETED="session:deleted",c.SAVE_RESTORED="save:restored",c.SUBSCRIPTION_PATCHES_SYNCED="subscription:patches:synced",c))(vt||{}),Pt=(g=>(g.INITIALIZING="INITIALIZING",g.UPDATING_STATE_STARTED="UPDATING_STATE_STARTED",g.UPDATING_STATE_DONE="UPDATING_STATE_DONE",g.UPDATING_STATE_FAILED="UPDATING_STATE_FAILED",g.READY="READY",g.INTERNAL_ERROR="INTERNAL_ERROR",g.NOT_CONNECTED="NOT_CONNECTED",g.NOT_INSTALLED="NOT_INSTALLED",g.NOT_ALLOWED="NOT_ALLOWED",g.NOT_SUPPORTED="NOT_SUPPORTED",g.NOT_READY="NOT_READY",g.CONNECT_STARTED="CONNECT_STARTED",g.CONNECT_DONE="CONNECT_DONE",g.CONNECT_FAILED="CONNECT_FAILED",g.TRANSACTION_STARTED="TRANSACTION_STARTED",g.TRANSACTION_DONE="TRANSACTION_DONE",g.TRANSACTION_FAILED="TRANSACTION_FAILED",g.TIMEOUT="TIMEOUT",g.CHAIN_CHANGED_STARTED="CHAIN_CHANGED_STARTED",g.CHAIN_CHANGED_DONE="CHAIN_CHANGED_DONE",g.CHAIN_CHANGED_FAILED="CHAIN_CHANGED_FAILED",g.WALLET_INSTALLED="WALLET_INSTALLED",g))(Pt||{}),Rt=(m=>(m.NO_ACCOUNTS="NO_ACCOUNTS",m.USER_REJECTED="USER_REJECTED",m.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",m.LOGIN_INTO_WALLET="LOGIN_INTO_WALLET",m.REQUEST_ALREADY_PENDING="REQUEST_ALREADY_PENDING",m.UNKNOWN_ERROR="UNKNOWN_ERROR",m.CONFIG_MISSING="CONFIG_MISSING",m.NOT_SUPPORTED="NOT_SUPPORTED",m.NOT_CONNECTED="NOT_CONNECTED",m.NOT_INSTALLED="NOT_INSTALLED",m.NOT_ALLOWED="NOT_ALLOWED",m.NETWORK_NOT_SUPPORTED="NETWORK_NOT_SUPPORTED",m))(Rt||{}),xt=(s=>(s.NO_ACCOUNT_SWITCH="NO_ACCOUNT_SWITCH",s.NO_NETWORK_SWITCH="NO_NETWORK_SWITCH",s.NETWORK_NOT_SUPPORTED="NETWORK_NOT_SUPPORTED",s.NO_INTERNET="NO_INTERNET",s.NO_DISCONNECT="NO_DISCONNECT",s.NO_ACCOUNT_DISCONNECT="NO_ACCOUNT_DISCONNECT",s))(xt||{});var N=r=>e=>{re().emit(r,e)},E=r=>e=>re().on(r,e),ae={emitWalletStateEvent:N("wallet:state:changed"),onWalletStateEvent:E("wallet:state:changed"),emitSessionUpdated:N("session:updated"),onSessionUpdated:E("session:updated"),emitChainChanged:N("wallet:chain:changed"),onChainChanged:E("wallet:chain:changed"),emitDisconnected:N("wallet:disconnected"),onDisconnected:E("wallet:disconnected"),emitWalletSessionDeleted:N("session:deleted"),onWalletSessionDeleted:E("session:deleted"),emitWalletError:N("wallet:error"),onWalletError:E("wallet:error"),emitSaveRestored:N("save:restored"),onSaveRestored:E("save:restored"),emitSubscriptionPatchesSynced:N("subscription:patches:synced"),onSubscriptionPatchesSynced:E("subscription:patches:synced")};async function K(r,e,n,t,a){await Ce(r,e,n,t),!(!a||!$.threadInstance)&&await Promise.all([...Ee().values()].flatMap(i=>[...i.values()]).map(async i=>{let s=[],o=$.observePending(c=>{if(B(c)&&(c.objectType===i.schema.objectId&&c.objectId===i.id&&s.push(c),c.operation===q.EditRelation)){let p=Ie(c);p?.objectType===i.schema.objectId&&p.objectId===i.id&&s.push(p)}});try{let c=await $.threadInstance.sendRequest({cmd:"getRecord",payload:{objectType:i.schema.objectId,id:i.id,creatorUsername:i.creatorUsername}});if(c)i.replaceSnapshot(c);else{let p=new X(i.schema.objectId,X.createNewRequest(i.id));p.patch({operation:q.EditPropertyNumber,objectType:i.schema.objectId,objectId:i.id,propertyId:6,langId:0,value:1},!1,!1),i.replaceSnapshot(p.snapshot())}for(let p of s)i.patch(p,!1,!1);for(let p of we(i.schema))Ae.updateIndex(i.schema.objectId,p.propId,i);Ne.trigger(i)}finally{o()}}))}var _t="0xcA11bde05977b3631167028862bE2a173976CA11";function Lt(r){let e=S.getAddress(r.chainId,"subscriptionManager",r.environment),n=S.getAbi(r.chainId,"SubscriptionManager",r.environment);return!e||!n?null:{address:e,abi:n}}async function ze(r,e){let n=new Map;if(e.length===0)return n;let t=Lt(r);if(t)try{let a=await r.publicClient.multicall({multicallAddress:_t,allowFailure:!0,contracts:e.map(i=>({...t,functionName:"getSubscriptions",args:[i]}))});return e.forEach((i,s)=>{let o=a[s];if(o?.status!=="success")throw new Error(`Could not read subscriptions for ${i}`);n.set(i,(o.result??[]).map(Number))}),n}catch(a){console.warn("[subscription/contract] multicall getSubscriptions failed, falling back to sequential reads",a)}return await Promise.all(e.map(async a=>{n.set(a,await r.subscriptionManager.getSubscriptions(a))})),n}var Ot=50,Dt=1e3;async function Ge(r,e,n){let t=n?.maxNodes??Dt,a=n?.maxDepth,i=new Set([e]),s=new Map([[e,0]]),o=new Map,c=[e],p=!1;for(;c.length>0&&i.size<t;){let y=c.splice(0,Ot),h=await ze(r,y);for(let m of y){let u=h.get(m)??[];o.set(m,{userId:m,subscriptions:u});for(let l of u){if(i.has(l)||i.size>=t)continue;let d=(s.get(m)??0)+1;if(a!==void 0&&d>a){p=!0;continue}i.add(l),s.set(l,d),c.push(l)}}}return{rootUserId:e,nodes:o,truncated:c.length>0||p}}async function Mt(r,e,n){let[t,a,i]=await r.archivistStorage.loadActionsSince(e,n);return!t||t.length===0?null:{userId:e,fromIndex:n,toIndex:n+t.length,raw:{compressedActions:t,indexes:a,stringIndexes:i}}}async function Ve(r,e,n,t){let a=t?.concurrency??4,i=Array.from(e.nodes.keys()),s=[];for(let o=0;o<i.length;o+=a){let c=i.slice(o,o+a),p=await Promise.all(c.map(y=>Mt(r,y,n?.get(y)??0).catch(h=>(console.warn(`[subscription/patch-resolver] failed to fetch patches for userId ${y}`,h),null))));for(let y of p)y&&s.push(y)}return s}function H(r,e){let n=r.raw;return{version:e,patches:n.compressedActions,textIndex:n.indexes.map(Number),textData:n.stringIndexes}}var z=class{constructor(e){this.config=e;this.client=ee(e.chainId,e.environment??"production"),this.defaultMaxWalkNodes=e.maxWalkNodes,this.defaultMaxDepth=e.maxDepth}async walkGraph(e,n){return await this.client.ready,Ge(this.client,e,{maxNodes:n?.maxNodes??this.defaultMaxWalkNodes,maxDepth:n?.maxDepth??this.defaultMaxDepth})}async fetchPatches(e,n,t){return await this.client.ready,Ve(this.client,e,n,t)}async sync(e,n){let t=await this.walkGraph(e,n),a=await this.fetchPatches(t,void 0,n),i=new Map;for(let[o,c]of t.nodes)i.set(o,c.subscriptions.length);let s=new Map;for(let o of a)s.set(o.userId,Math.max(s.get(o.userId)??0,o.toIndex));for(let o of t.nodes.keys())s.has(o)||s.set(o,0);return{patches:a,cursor:{rootUserId:e,knownNodes:t.nodes,countSnapshot:i,patchIndex:s},truncated:t.truncated}}async syncSince(e,n){await this.client.ready;let t=await this.walkGraph(e.rootUserId,n);if(t.truncated)throw new Error("Subscription graph refresh truncated; increase traversal limits before retrying");let a=t.nodes,i=new Map([...a].map(([p,y])=>[p,y.subscriptions.length])),s=!1,o=await this.fetchPatches(t,e.patchIndex,n),c=new Map([...e.patchIndex].filter(([p])=>a.has(p)));for(let p of o)c.set(p.userId,Math.max(c.get(p.userId)??0,p.toIndex));for(let p of a.keys())c.has(p)||c.set(p,0);return{patches:o,cursor:{rootUserId:e.rootUserId,knownNodes:a,countSnapshot:i,patchIndex:c},truncated:s}}async getSubscriptions(e){return await this.client.ready,this.client.subscriptionManager.getSubscriptions(e)}async getScore(e){return await this.client.ready,this.client.subscriptionManager.scoreOf(e)}async loadLibraryByUsername(e){try{await this.client.ready,console.log(`[SubscriptionClient] Starting library load for @${e}...`),console.log(`[SubscriptionClient] Looking up userId for @${e}...`);let n=await this.client.bouncerStorage.usernameToUserId(e);if(!n){console.error(`[SubscriptionClient] Username @${e} not found on-chain`);return}console.log(`[SubscriptionClient] Resolved @${e} \u2192 userId ${n}`),console.log(`[SubscriptionClient] Syncing patches for userId ${n}...`);let t=await this.sync(n);if(t.truncated)throw new Error("Subscription graph truncated; refusing an incomplete view");if(await K(this.config.environment??"production",this.config.chainId,n,[...t.cursor.knownNodes.keys()],!0),console.log(`[SubscriptionClient] Fetched ${t.patches.length} patch(es), truncated: ${t.truncated}`),t.patches.length>0){console.log(`[SubscriptionClient] Applying patches for ${t.patches.length} subscription graph patch(es)...`);for(let a of t.patches)try{let i=await this.client.bouncerStorage.userIdToUsername(a.userId);if(!i){console.warn(`[SubscriptionClient] No username found for userId ${a.userId}, skipping patch`);continue}console.log(`[SubscriptionClient] Applying patch for @${i} (userId ${a.userId}, index ${a.fromIndex}\u2013${a.toIndex})...`),await L(i,H(a,_),{streamId:`${this.config.environment??"production"}:${this.config.chainId}:${a.userId}`,fromIndex:a.fromIndex});let s=await x(i);await O(s,i)}catch(i){console.error(`[SubscriptionClient] Failed to apply patch for userId ${a.userId}:`,i?.message||i)}}console.log(`[SubscriptionClient] Successfully loaded library for @${e}`)}catch(n){console.error(`[SubscriptionClient] Failed to load library for @${e}:`,n?.message||n)}}};var ie={};function qe(r,e="production"){let n=`${r}:${e}`;return ie[n]||(ie[n]=new z({chainId:r,environment:e})),ie[n]}import{del as kt,get as jt,set as Ut}from"idb-keyval";function Bt(r){return{rootUserId:r.rootUserId,knownNodes:Array.from(r.knownNodes.entries()),countSnapshot:Array.from(r.countSnapshot.entries()),patchIndex:Array.from(r.patchIndex.entries())}}function $t(r){return{rootUserId:r.rootUserId,knownNodes:new Map(r.knownNodes),countSnapshot:new Map(r.countSnapshot),patchIndex:new Map(r.patchIndex)}}function ir(r){return{rootUserId:r,knownNodes:new Map,countSnapshot:new Map,patchIndex:new Map}}var oe="web3-sdk:subscription-cursor:";function Je(r,e,n){return`${r}:${e}:${n}`}var se={async get(r){try{let e=await jt(`${oe}${r}`);return e?$t(e):void 0}catch(e){console.warn(`[cursorStore] Failed to read cursor for key ${r}:`,e);return}},async set(r,e){try{await Ut(`${oe}${r}`,Bt(e))}catch(n){console.warn(`[cursorStore] Failed to persist cursor for key ${r}:`,n)}},async clear(r){try{await kt(`${oe}${r}`)}catch{}}};var Ye="@the_library/web3-cache:";function Xe(){if(typeof window>"u"||typeof localStorage>"u")return!1;try{let r="__storage_test__";return localStorage.setItem(r,"test"),localStorage.removeItem(r),!0}catch{return!1}}function j(r){if(!Xe())return null;try{let e=localStorage.getItem(Ye+r);return e?JSON.parse(e):null}catch{return null}}function U(r,e){if(Xe())try{localStorage.setItem(Ye+r,JSON.stringify(e))}catch(n){console.warn("[session/storage] Failed to save to localStorage:",n)}}var G=new Map;async function Ze(r,e,n){let t=Je(n,e,r),a=G.get(t);if(a)return a;let i=(async()=>{let s=qe(e,n),o=await se.get(t),c=o?await s.syncSince(o):await s.sync(r);if(c.truncated)throw new Error("Subscription graph is truncated; cursor and active view remain unchanged");let p=!o||o.knownNodes.size!==c.cursor.knownNodes.size||[...o.knownNodes.keys()].some(u=>!c.cursor.knownNodes.has(u));await K(n,e,r,[...c.cursor.knownNodes.keys()],p);let y=0,h=new Set;if(c.patches.length>0){let u=A(e,n);await u.ready;for(let l of c.patches)try{let d=await u.bouncerStorage.userIdToUsername(l.userId);if(!d){h.add(l.userId);continue}await L(d,H(l,_),{streamId:`${n}:${e}:${l.userId}`,fromIndex:l.fromIndex});let b=await x(d);await O(b,d),y+=l.toIndex-l.fromIndex}catch(d){h.add(l.userId),console.warn(`[session/sync] failed to apply subscription patch for userId ${l.userId}`,d)}}let m=new Map(c.cursor.patchIndex);for(let u of h)m.set(u,o?.patchIndex.get(u)??0);await se.set(t,{...c.cursor,patchIndex:m}),ae.emitSubscriptionPatchesSynced({rootUserId:r,chainId:e,appliedCount:y,timestamp:Date.now(),failedUserIds:h.size>0?Array.from(h):void 0})})();G.set(t,i);try{await i}catch(s){G.delete(t),console.warn(`[session/sync] subscription sync failed for userId ${r}`,s)}finally{G.delete(t)}}async function Ar(r,e,n,t=k(),a=!1){let i=T.getState().known.find(p=>p.account.toLowerCase()===r.toLowerCase()&&p.chainId===e);if(!a&&i?.lastUpdated)return i.hasAccount&&i.userId&&Ze(i.userId,e,t),i;let s=A(e,t);await s.ready;let o=i?{...i}:{account:r,username:"",hasAccount:!1,userId:0,lastPatchIndex:0,lastRestorationIndex:0,chainId:e,wallet:n},c=await s.bouncerStorage.hasAccount(r);if(o.hasAccount=c,c){let[p,y,h,m]=await s.bouncerStorage.userInfos(r);o.username=p,o.country=y,o.language=h,o.userId=m;let{total:u,donations:l,unspent:d}=await s.projectManagerStorage.balanceOfAddress(r);o.projectBalance={contributions:u,allocated:l,remaining:d};try{o.level=await s.archivistStorage.userLevel(m)}catch{o.level=1}try{o.donationsPerProject=await s.projectManagerStorage.addressDonationsPerProject(r)}catch{o.donationsPerProject=[]}await Ze(m,e,t)}return o.lastUpdated=Date.now(),T.addKnown(o),o}async function Nr(r,e,n=k()){let t=T.getState().known.find(s=>s.account.toLowerCase()===r.toLowerCase()&&s.chainId===e);if(!t||!t.hasAccount)return!1;let a=A(e,n);if(await a.ready,!await a.bouncerStorage.hasAccount(r))return T.updateAccount(r,e,{hasAccount:!1}),!1;try{await Pe("mine")>0&&await Y.calculateLevel("mine");let s=await a.factory.nbWritesByUsername(t.username);if(s>t.lastRestorationIndex){let[o,c,p]=await a.factory.loadUsernameSince(t.username,t.lastRestorationIndex),y=0;if(o&&o.length>0){let h=await J("mine");await L("mine",{version:_,patches:o,textIndex:c.map(Number),textData:p},{streamId:`${n}:${e}:${t.userId}`,fromIndex:t.lastRestorationIndex});let m=await x("mine");await O(m,"mine"),xe(m.filter(u=>u.pk>h&&u.sourceStream&&!B(u))),y=o.length,await Y.calculateLevel("mine")}T.setLastRestorationIndex(r,e,s),ae.emitSaveRestored({wallet:t.wallet,chainId:e,account:r,username:t.username,newRestorationIndex:s,appliedCount:y,timestamp:Date.now()})}return!0}catch(s){return console.error(`[session/sync] restoreAccountSave failed for ${r} on ${e}`,s),!1}}async function Er(r,e){let{lastPatchIndex:n}=T.lastSyncCounters(r,e),t=await J("mine");if(t<=n)return!1;let a=(await ve("mine",n+1)).filter(i=>i.pk<=t&&!i.sourceStream);return a.length>0&&Re(a).patches.length>0}function Wt(r,e){if(r.length===0)return!1;let n=0;for(let t of r){let a=BigInt(t);for(;n<e.length&&BigInt(e[n])!==a;)n++;if(n===e.length)return!1;n++}return!0}async function Cr(r,e,n,t,a=k()){let i=T.getState().known.find(s=>s.account.toLowerCase()===r.toLowerCase()&&s.chainId===e);if(!i?.hasAccount||i.lastRestorationIndex!==n||t.length===0)return!1;try{let s=A(e,a);await s.ready;let o=await s.factory.nbWritesByUsername(i.username);if(o<=n)return!1;let[c]=await s.factory.loadUsernameSince(i.username,n);return c.length!==o-n||!Wt(c,t)?!1:(T.setLastRestorationIndex(r,e,o),!0)}catch(s){return console.warn(`[session/sync] acknowledgeOwnSave skipped for ${r} on ${e}`,s),!1}}async function vr(r,e=k(),n=!1){let t=`networkInfos_${r}${e==="staging"?"_staging":""}`;if(!n){let p=j(t);if(p)return p}let a=A(r,e);await a.ready;let[i,s,o]=await Promise.all([a.bouncerStorage.getAllLocationCounts(),a.projectManagerStorage.nbProjects(),a.bouncerStorage.nbAccounts()]),c={nbUsers:o,nbLocations:i.length,nbProjects:s,locationStats:i};return U(t,c),c}var ce=new Map;function Rr(r){ce.set(r.type,r)}function xr(r){return ce.get(r)}function _r(){return Array.from(ce.values())}var V="wallet_pk_",ue="@the_library/web3-session:",Qe=null;function Or(){return Qe}function Dr(r){Qe=r}function le(){if(typeof window>"u"||typeof localStorage>"u")return!1;try{let r="__storage_test__";return localStorage.setItem(r,"test"),localStorage.removeItem(r),!0}catch{return!1}}function et(r){if(!le())return null;try{let e=localStorage.getItem(ue+r);return e?JSON.parse(e):null}catch{return null}}function Ft(r,e){if(le())try{localStorage.setItem(ue+r,JSON.stringify(e))}catch(n){console.warn("Failed to save to localStorage:",n)}}function Kt(r,e){if(!e)throw new Error("Private key is required");let n=`${V}${r}`;Ft(n,e)}function C(r){let e=`${V}${r}`;return et(e)}function pe(r){let e=`${V}${r}`;return!!et(e)}function Mr(){if(!le())return!1;let r=`${ue}${V}`;for(let e=0;e<localStorage.length;e++)if(localStorage.key(e)?.startsWith(r))return!0;return!1}var kr=(r,e,n)=>Kt(r,e),jr=(r,e)=>C(r),Ur=r=>pe(r);import{getChain as Ht,DEFAULT_CHAIN_ID as zt}from"@the_library/network-config";import{privateKeyToAccount as me}from"viem/accounts";import{createWalletClient as Gt,http as Vt}from"viem";function ye(r){return r.startsWith("0x")?r:`0x${r}`}function tt(r){return me(ye(r)).address}function nt(r,e){let n=me(ye(e)),t=Ht(r);return Gt({account:n,chain:P(t),transport:Vt(t.rpc)})}var de=class{constructor(){this.type="private_key";this.activeChainId=0;this.chainChangedCallbacks=new Set}isAvailable(){return!0}async connect(e=zt){if(!pe(e))throw new Error(`No private key configured for chain ${e}`);this.activeChainId=e;let n=C(e);if(!n)throw new Error(`No private key configured for chain ${e}`);return{address:tt(n),chainId:e}}async getAccounts(){if(!this.activeChainId)return[];let e=C(this.activeChainId);return e?[tt(e)]:[]}async getChainId(){return this.activeChainId}async requestSwitchChain(e){if(!C(e))throw new Error(`No private key configured for chain ${e}`);this.activeChainId=e;for(let t of this.chainChangedCallbacks)t(e)}async sendTransaction(e,n){let t=C(n);if(!t)throw new Error(`No private key found for chain ${n}`);return await nt(n,t).sendTransaction(e)}async signMessage(e){if(!this.activeChainId)throw new Error("Wallet not connected");let n=C(this.activeChainId);if(!n)throw new Error("No private key found");return await me(ye(n)).signMessage({message:e})}async getWalletClient(e){let n=C(e);if(!n)throw new Error(`No private key configured for chain ${e}`);return nt(e,n)}onAccountChanged(e){return()=>{}}onChainChanged(e){return this.chainChangedCallbacks.add(e),()=>{this.chainChangedCallbacks.delete(e)}}disconnect(){this.activeChainId=0}};function zr(){return new de}var qt=(r,e,n)=>{let t=r.balance,a=r.availableLanguages.findIndex(s=>s===e);if(a!==-1)return{lang:r.availableLanguages[a],version:{...r.versions[a]},id:r.id,balance:t};let i=r.availableLanguages.findIndex(s=>s===" eng");if(i!==-1)return{lang:" eng",version:{...r.versions[i]},id:r.id,balance:t};if(r.availableLanguages.length===0)throw new Error(`No language available for project ${r.id}`);return{lang:r.availableLanguages[0],version:{...r.versions[0]},id:r.id,balance:t}},Jt=120*1e3,ge=class{projectKey(e,n,t){return`${e}_${n}_${t}_v2`}nbProjectsKey(e,n){return`${e}_${n}_nbProjects_v2`}nbProjects(e,n){let t=j(this.nbProjectsKey(e,n));return t?parseInt(t,10):0}setNbProjects(e,n,t){U(this.nbProjectsKey(e,n),t.toString())}getProject(e,n,t){return j(this.projectKey(e,n,t))}cacheProject(e,n,t){U(this.projectKey(e,n,t.id),{...t,cachedAt:Date.now()})}getCachedProjects(e,n){let t=this.nbProjects(e,n);if(t<=0)return[];let a=[];for(let i=1;i<=t;i++)a.push(this.getProject(e,n,i));return a}async loadProject(e,n,t,a=!1){let i=this.getProject(e,n,t);if(i!==null&&Date.now()-(i.cachedAt??0)<Jt&&!a)return i;try{let o=A(e);await o.ready;let c=qt(await o.projectManagerStorage.loadProject(t),n,e);return this.cacheProject(e,n,c),c}catch(o){if(i!==null&&!a)return i;throw o}}async loadProjects(e,n){let t;try{t=A(e)}catch(o){return console.warn(`[ProjectRegistry] No read client for chain ${e} \u2014 returning cached projects only.`,o),this.getCachedProjects(e,n)}await t.ready;let a=this.nbProjects(e,n),i=await t.projectManagerStorage.nbProjects();i!==a&&this.setNbProjects(e,n,i);let s=Array.from({length:i},(o,c)=>c+1);return Promise.all(s.map(o=>this.loadProject(e,n,o).catch(c=>(console.error(`[ProjectRegistry] Error loading project ${o}:`,c),null))))}},rt=new ge,Jr=(r,e)=>rt.loadProjects(r,e),Yr=(r,e,n,t=!1)=>rt.loadProject(r,e,n,t);import{createWalletClient as fe,custom as he}from"viem";import{getChain as be}from"@the_library/network-config";var Se=null;typeof window<"u"&&(window.addEventListener("eip6963:announceProvider",r=>{let e=r.detail;(e.info.rdns==="io.metamask"||e.info.rdns==="io.metamask.flask")&&(Se=e.provider)}),window.dispatchEvent(new Event("eip6963:requestProvider")));var Te=class{constructor(){this.type="metamask";this.accountChangedCallbacks=new Set;this.chainChangedCallbacks=new Set;this.isListening=!1}getProvider(){return Se||(typeof window<"u"?window.ethereum:null)}isAvailable(){return!!this.getProvider()}setupListeners(){if(this.isListening)return;let e=this.getProvider();e&&typeof e.on=="function"&&(e.on("accountsChanged",n=>{let t=n[0]||"";for(let a of this.accountChangedCallbacks)a(t)}),e.on("chainChanged",n=>{let t=parseInt(n,16);for(let a of this.chainChangedCallbacks)a(t)}),this.isListening=!0)}async connect(){let e=this.getProvider();if(!e)throw new Error("MetaMask provider not found");this.setupListeners();let n=await e.request({method:"eth_requestAccounts"}),t=await e.request({method:"eth_chainId"});return{address:n[0],chainId:parseInt(t,16)}}async getAccounts(){let e=this.getProvider();if(!e)return[];try{return await e.request({method:"eth_accounts"})||[]}catch{return[]}}async getChainId(){let e=this.getProvider();if(!e)return 0;try{let n=await e.request({method:"eth_chainId"});return parseInt(n,16)}catch{return 0}}async requestSwitchChain(e){let n=this.getProvider();if(!n)throw new Error("MetaMask provider not found");let t="0x"+e.toString(16);try{await n.request({method:"wallet_switchEthereumChain",params:[{chainId:t}]})}catch(a){if(a.code===4902){let i=be(e);if(!i)throw new Error(`No configuration found for chain ID: ${e}`);await n.request({method:"wallet_addEthereumChain",params:[{chainId:t,chainName:i.name,rpcUrls:[i.rpc],blockExplorerUrls:[i.explorer],nativeCurrency:{decimals:i.decimals||18,name:i.name,symbol:i.symbol}}]})}else throw a}}async sendTransaction(e,n){let t=this.getProvider();if(!t)throw new Error("MetaMask provider not found");let a=await this.getAccounts();if(a.length===0)throw new Error("No accounts connected");let i=P(be(n));return await fe({account:a[0],chain:i,transport:he(t)}).sendTransaction(e)}async signMessage(e){let n=this.getProvider();if(!n)throw new Error("MetaMask provider not found");let t=await this.getAccounts();if(t.length===0)throw new Error("No accounts connected");return await fe({account:t[0],transport:he(n)}).signMessage({account:t[0],message:e})}async getWalletClient(e){let n=this.getProvider();if(!n)throw new Error("MetaMask provider not found");let t=await this.getAccounts();if(t.length===0)throw new Error("No accounts connected");let a=P(be(e));return fe({account:t[0],chain:a,transport:he(n)})}onAccountChanged(e){return this.setupListeners(),this.accountChangedCallbacks.add(e),()=>{this.accountChangedCallbacks.delete(e)}}onChainChanged(e){return this.setupListeners(),this.chainChangedCallbacks.add(e),()=>{this.chainChangedCallbacks.delete(e)}}disconnect(){}};function ta(){return new Te}export{_e as a,w as b,Le as c,F as d,f as e,Z as f,Q as g,M as h,gn as i,wt as j,At as k,A as l,ee as m,Tn as n,wn as o,k as p,Ct as q,T as r,Nn as s,ne as t,re as u,vt as v,Pt as w,Rt as x,xt as y,ae as z,z as A,qe as B,Bt as C,$t as D,ir as E,Je as F,se as G,Ar as H,Nr as I,Er as J,Wt as K,Cr as L,vr as M,Rr as N,xr as O,_r as P,Or as Q,Dr as R,Kt as S,C as T,pe as U,Mr as V,kr as W,jr as X,Ur as Y,tt as Z,nt as _,de as $,zr as aa,qt as ba,Jt as ca,Jr as da,Yr as ea,Te as fa,ta as ga};
|
|
2
|
-
|
|
1
|
+
/*!
|
|
2
|
+
D-Open Code Sovereign Licence 1.1 · © 2026 Antoine LUCAS · SPDX-License-Identifier: LicenseRef-DOCSL-1.1
|
|
3
|
+
Non-commercial use of unmodified copies only. By using this file you accept the Licence, incl. USD 50M liquidated damages (s 16.4).
|
|
4
|
+
Full text: https://registry.worldbibliotech.com/licence and the LICENSE file · Contact: admin@pondenterprise.com
|
|
5
|
+
*/
|
|
6
|
+
import{a as P}from"./chunk-OKIGFADW.js";import{g as S}from"./chunk-DCTN7BWB.js";import{c as O}from"./chunk-HZZP2YTW.js";import{$a as $,Fa as Ce,Ka as J,La as ve,Lb as X,Ma as x,Oa as Pe,Ra as _,U as we,Z as Ae,_a as Y,aa as Ne,cb as L,db as Re,ea as Ee,h as Ie,jb as xe,l as B,n as q}from"./chunk-3ALQKSIN.js";var _e=[{inputs:[{internalType:"bytes32",name:"id",type:"bytes32"}],name:"getPriceUnsafe",outputs:[{components:[{internalType:"int64",name:"price",type:"int64"},{internalType:"uint64",name:"conf",type:"uint64"},{internalType:"int32",name:"expo",type:"int32"},{internalType:"uint256",name:"publishTime",type:"uint256"}],internalType:"struct PythStructs.Price",name:"price",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"updateData",type:"bytes[]"}],name:"getUpdateFee",outputs:[{internalType:"uint256",name:"feeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"updateData",type:"bytes[]"}],name:"updatePriceFeeds",outputs:[],stateMutability:"payable",type:"function"}];var w=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"EmptyAddress",type:"error"},{inputs:[],name:"EmptyHash",type:"error"},{inputs:[],name:"EmptyString",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"Forbidden",type:"error"},{inputs:[],name:"NotFound",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAdmin",type:"address"},{indexed:!0,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"key",type:"string"},{indexed:!1,internalType:"string",name:"arweaveTxId",type:"string"},{indexed:!1,internalType:"bytes32",name:"sha256Hash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"BlobRefAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"name",type:"string"},{indexed:!0,internalType:"address",name:"contractAddress",type:"address"},{indexed:!1,internalType:"string",name:"abiUrl",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"ContractAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"key",type:"string"},{indexed:!1,internalType:"string",name:"value",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"DataAdded",type:"event"},{inputs:[{internalType:"string",name:"key",type:"string"},{internalType:"string",name:"arweaveTxId",type:"string"},{internalType:"bytes32",name:"sha256Hash",type:"bytes32"}],name:"addBlobRef",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"name",type:"string"},{internalType:"address",name:"contractAddress",type:"address"},{internalType:"string",name:"abiUrl",type:"string"}],name:"addContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"},{internalType:"string",name:"value",type:"string"}],name:"addData",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"getAllBlobRefKeys",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAllContractNames",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAllDataKeys",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"},{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"getBlobRefHistory",outputs:[{components:[{internalType:"string",name:"arweaveTxId",type:"string"},{internalType:"bytes32",name:"sha256Hash",type:"bytes32"}],internalType:"struct AddressRegistry.BlobRef[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"name",type:"string"}],name:"getContractHistory",outputs:[{components:[{internalType:"address",name:"contractAddress",type:"address"},{internalType:"string",name:"abiUrl",type:"string"}],internalType:"struct AddressRegistry.ContractRecord[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"}],name:"getDataHistory",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"}],name:"getLatestBlobRef",outputs:[{internalType:"string",name:"",type:"string"},{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"name",type:"string"}],name:"getLatestContract",outputs:[{internalType:"address",name:"",type:"address"},{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"key",type:"string"}],name:"getLatestData",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}];var Le=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"EmptyAddress",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"Forbidden",type:"error"},{inputs:[],name:"ImportsFinalized",type:"error"},{inputs:[],name:"InvalidActionId",type:"error"},{inputs:[],name:"InvalidTargetMode",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"StorageFrozen",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint8",name:"actionId",type:"uint8"},{indexed:!1,internalType:"uint8",name:"objectType",type:"uint8"},{indexed:!1,internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{indexed:!1,internalType:"bool",name:"isRelation",type:"bool"},{indexed:!1,internalType:"uint8",name:"targetMode",type:"uint8"}],name:"ActionConfigSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"}],name:"AuthorizedAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"}],name:"AuthorizedRemoved",type:"event"},{anonymous:!1,inputs:[],name:"ImportsFinalized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bool",name:"frozen",type:"bool"}],name:"MigrationFrozen",type:"event"},{inputs:[],name:"VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"_isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"addAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"authorizedWriters",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"actorId",type:"uint32"}],name:"countByActor",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"targetKey",type:"bytes32"}],name:"countByTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"targetUserId",type:"uint32"},{internalType:"uint32",name:"since",type:"uint32"}],name:"countNewSubscriptionsSince",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"exportActionConfigs",outputs:[{internalType:"uint8[]",name:"ids",type:"uint8[]"},{components:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{internalType:"bool",name:"isRelation",type:"bool"},{internalType:"uint8",name:"targetMode",type:"uint8"}],internalType:"struct IRelationshipIndexerStorage.ActionConfig[]",name:"configs",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportActors",outputs:[{internalType:"uint256[]",name:"actorIds",type:"uint256[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportAuthors",outputs:[{internalType:"bytes32[]",name:"objectKeys",type:"bytes32[]"},{internalType:"uint32[]",name:"authors",type:"uint32[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportHintUsers",outputs:[{internalType:"uint256[]",name:"userIds",type:"uint256[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"userId",type:"uint32"},{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportHints",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.SubscriptionHint[]",name:"hints",type:"tuple[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"offset",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"}],name:"exportTargets",outputs:[{internalType:"bytes32[]",name:"targetKeys",type:"bytes32[]"},{internalType:"uint256",name:"total",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"finalizeImports",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"freezeForMigration",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint8",name:"actionId",type:"uint8"}],name:"getActionConfig",outputs:[{components:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{internalType:"bool",name:"isRelation",type:"bool"},{internalType:"uint8",name:"targetMode",type:"uint8"}],internalType:"struct IRelationshipIndexerStorage.ActionConfig",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint256",name:"start",type:"uint256"},{internalType:"uint256",name:"count",type:"uint256"}],name:"getByActor",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint256",name:"start",type:"uint256"},{internalType:"uint256",name:"count",type:"uint256"}],name:"getByObjectTarget",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint256",name:"start",type:"uint256"},{internalType:"uint256",name:"count",type:"uint256"}],name:"getByTagTarget",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"targetKey",type:"bytes32"},{internalType:"uint256",name:"start",type:"uint256"},{internalType:"uint256",name:"count",type:"uint256"}],name:"getByTarget",outputs:[{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"targetUserId",type:"uint32"},{internalType:"uint32",name:"since",type:"uint32"}],name:"getNewSubscriptionsSince",outputs:[{internalType:"uint32[]",name:"actorIds",type:"uint32[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8[]",name:"ids",type:"uint8[]"},{components:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{internalType:"bool",name:"isRelation",type:"bool"},{internalType:"uint8",name:"targetMode",type:"uint8"}],internalType:"struct IRelationshipIndexerStorage.ActionConfig[]",name:"configs",type:"tuple[]"}],name:"importActionConfigs",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint256",name:"startIndex",type:"uint256"},{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"rs",type:"tuple[]"}],name:"importActorRelationships",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32[]",name:"objectKeys",type:"bytes32[]"},{internalType:"uint32[]",name:"authors",type:"uint32[]"}],name:"importAuthors",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"userId",type:"uint32"},{internalType:"uint256",name:"startIndex",type:"uint256"},{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.SubscriptionHint[]",name:"hints",type:"tuple[]"}],name:"importHints",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"targetKey",type:"bytes32"},{internalType:"uint256",name:"startIndex",type:"uint256"},{components:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint8",name:"actionId",type:"uint8"},{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"},{internalType:"uint64",name:"tagId",type:"uint64"},{internalType:"uint32",name:"timestamp",type:"uint32"}],internalType:"struct IRelationshipIndexerStorage.Relationship[]",name:"rs",type:"tuple[]"}],name:"importTargetRelationships",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"importsFinalized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"migrationFrozen",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint64",name:"objectId",type:"uint64"}],name:"objectTargetKey",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint32",name:"actorId",type:"uint32"},{internalType:"uint256[]",name:"patches",type:"uint256[]"}],name:"recordActions",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"removeAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint8",name:"actionId",type:"uint8"},{components:[{internalType:"uint8",name:"objectType",type:"uint8"},{internalType:"uint8",name:"propertyOrRelationId",type:"uint8"},{internalType:"bool",name:"isRelation",type:"bool"},{internalType:"uint8",name:"targetMode",type:"uint8"}],internalType:"struct IRelationshipIndexerStorage.ActionConfig",name:"config",type:"tuple"}],name:"setActionConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint64",name:"tagId",type:"uint64"}],name:"tagTargetKey",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[],name:"unfreezeForMigration",outputs:[],stateMutability:"nonpayable",type:"function"}];import{createPublicClient as mt,http as yt}from"viem";import{DEFAULT_CHAIN_ID as gt,getChain as ft,getCanonicalRole as ht,getDeploymentEnvironment as bt,isChainDeployedForRole as St}from"@the_library/network-config";import{hexToString as at,stringToHex as it}from"viem";function W(r){let e=r.startsWith("0x")?r:"0x"+r;return at(e).replace(/\0/g,"")}function F(r){return it(r).padEnd(10,"0").slice(0,10)}import{BaseError as ot,ContractFunctionRevertedError as De,InsufficientFundsError as Me,NonceTooLowError as ke,TimeoutError as je,UserRejectedRequestError as Ue}from"viem";var st=[],f=class r extends Error{constructor(e,n,t){super(n),this.name="Web3Error",this.code=e,this.reason=t?.reason,this.data=t?.data,this.originalError=t?.originalError,Object.setPrototypeOf(this,r.prototype)}};function Z(r){if(r instanceof f)return r;let e=ut(r);for(let n of st)try{n(e)}catch(t){console.error("[web3/errors] registerOnErrorCb listener threw",t)}return e}var ct=r=>{let n=(r?.message||r?.reason||String(r)).toLowerCase();return n.includes("invalid compressedactions format")?new f("INVALID_COMPRESSED_ACTIONS","Invalid compressedActions format",{originalError:r}):n.includes("switch chain error")?new f("SWITCH_CHAIN_ERROR","Error Switching Chains",{data:r.code,reason:r.message,originalError:r}):n.includes("switching accounts while on an unsupported chainid")?new f("SWITCH_TO_UNSUPPORTED_CHAIN",n,{originalError:r}):null},Oe=r=>r instanceof Ue||r instanceof Me||r instanceof ke||r instanceof je||r instanceof De;function Be(r){if(r instanceof ot&&!Oe(r)){let e=r.walk(Oe);if(e)return Be(e)}return r instanceof Ue?new f("USER_REJECTED","User rejected the transaction",{reason:r.shortMessage,originalError:r}):r instanceof Me?new f("INSUFFICIENT_FUNDS","Insufficient funds for transaction",{reason:r.shortMessage,originalError:r}):r instanceof ke?new f("NONCE_TOO_LOW","Transaction nonce is too low",{reason:r.shortMessage,originalError:r}):r instanceof je?new f("TIMEOUT","Request timed out",{reason:r.shortMessage,originalError:r}):r instanceof De?new f("REVERT","Transaction reverted by contract",{reason:r.reason??r.data?.errorName??r.shortMessage,data:r.data,originalError:r}):null}function ut(r){let e=ct(r);if(e)return e;let n=Be(r);if(n)return n;let t=r?.message||r?.reason||String(r),a=t.toLowerCase();return a.includes("no account connected to wallet")?new f("NO_WALLET_CONNECTED","No account connected to wallet",{originalError:r}):a.includes("user rejected")||a.includes("user denied")||a.includes("user cancelled")||r?.code===4001||r?.code==="ACTION_REJECTED"?new f("USER_REJECTED","User rejected the transaction",{reason:r?.reason,originalError:r}):a.includes("insufficient funds")||a.includes("insufficient balance")||r?.code==="INSUFFICIENT_FUNDS"?new f("INSUFFICIENT_FUNDS","Insufficient funds for transaction",{reason:r?.reason,originalError:r}):a.includes("nonce too low")||a.includes("nonce has already been used")||r?.code==="NONCE_EXPIRED"?new f("NONCE_TOO_LOW","Transaction nonce is too low",{reason:r?.reason,originalError:r}):a.includes("revert")||a.includes("execution reverted")||r?.code==="CALL_EXCEPTION"||r?.code===3?new f("REVERT","Transaction reverted by contract",{reason:r?.reason||lt(r),data:r?.data,originalError:r}):a.includes("timeout")||r?.code==="TIMEOUT"?new f("TIMEOUT","Request timed out",{reason:r?.reason,originalError:r}):a.includes("network")||a.includes("connection")||r?.code==="NETWORK_ERROR"||r?.code==="ETIMEDOUT"?new f("NETWORK_ERROR","Network error occurred",{reason:r?.reason,originalError:r}):a.includes("invalid argument")||r?.code==="INVALID_ARGUMENT"?new f("INVALID_ARGUMENT","Invalid argument provided",{reason:r?.reason,originalError:r}):a.includes("unsupported")||r?.code==="UNSUPPORTED_OPERATION"?new f("UNSUPPORTED_OPERATION","Unsupported operation",{reason:r?.reason,originalError:r}):new f("UNKNOWN",t||"Unknown error occurred",{reason:r?.reason,data:r?.data,originalError:r})}function lt(r){if(r?.reason)return r.reason;if(r?.data?.message)return r.data.message;let n=(r?.message||"").match(/revert\s+(.+?)(?:\s|$|")/i);if(n)return n[1]}var pt="https://worldbibliotech.com",dt=/^https?:\/\/(?:worldbibliotech\.com|datapond\.earth)(?=$|[/?#]|https?:\/\/)/i,$e=/^[a-z][a-z0-9+.-]*:/i;function Q(r){let e;for(;e=r.match(dt);)r=r.slice(e[0].length);return!r||r.startsWith("/")||$e.test(r)?r:`/${r}`}function We(r){let e=Q(r);return $e.test(e)?e:pt+e}var Tt=3600,D=r=>[(r?.[0]||[]).map(e=>BigInt(e)),(r?.[1]||[]).map(e=>BigInt(e)),(r?.[2]||[]).map(String)],Fe=r=>({stripePaymentId:String(r.stripePaymentId??r[0]),amountUSD:BigInt(r.amountUSD??r[1]),username:String(r.username??r[2]),donor:String(r.donor??r[3]),country:String(r.country??r[4]),language:String(r.language??r[5]),timestamp:Number(r.timestamp??r[6]),chainId:Number(r.chainId??r[7])}),M=class{constructor(e,n="production"){this._contractAddresses={};this.chainId=e,this.environment=ht(n);let t=ft(e);if(this.config=t,this.deploymentEnvironment=bt(e,n),!St(e,n))throw new Error(`Chain EVM ${e} is not deployed for application environment ${n} (resolved deployment environment: ${this.deploymentEnvironment})`);this.chain=P(t),this.publicClient=mt({chain:this.chain,transport:yt(t.rpc)}),this.addressRegistry=this.createAddressRegistryReadAPI(),this.bouncerStorage=this.createBouncerStorageReadAPI(),this.scientistStorage=this.createScientistStorageReadAPI(),this.archivistStorage=this.createArchivistReadApi(),this.factory=this.createFactoryReadAPI(),this.accountManager=this.createAccountManagerReadAPI(),this.projectManagerStorage=this.createProjectManagerStorageReadAPI(),this.subscriptionManager=this.createSubscriptionManagerReadAPI(),this.libraryRegistryStorage=this.createLibraryRegistryStorageReadAPI(),this.publicLibraryStorage=this.createPublicLibraryStorageReadAPI(),this.dSafeHRStorage=this.createDSafeHRStorageReadAPI(),this.relationshipIndexerStorage=this.createRelationshipIndexerStorageReadAPI(),this._contractAddresses={...t.addresses||{}},this.ready=new Promise(async(i,s)=>{try{console.log(`[EvmClient] Initializing registry for chain ${this.chainId} (env: ${this.environment})...`);let o=await S.Initialize(this.chainId,this.addressRegistry,this.activeRegistryAddress,!0,this.environment);Object.assign(this._contractAddresses,o);let c=await S.loadAllKeys(this.chainId,this.environment);Object.assign(this._contractAddresses,c),this._manifestRegistryAddress=c.addressRegistry??o.addressRegistry,await S.waitForAbis(this.chainId,this.environment),console.log(`[EvmClient] Registry ready for ${this.chainId}. Addresses:`,this._contractAddresses),i()}catch(o){console.error(`[EvmClient] Failed to initialize registry for ${this.chainId}`,o),s(o)}})}setAccountOverride(e){this._accountOverride=e}async getUsdPrice(){let{price:e}=this.config;if(e.stable)return 1;let{pythOracle:n,usdPriceId:t}=e;if(!n||!t)throw new Error(`Pyth config missing for chain ${this.chainId}`);let a=await this.publicClient.readContract({address:n,abi:_e,functionName:"getPriceUnsafe",args:[t]}),i=Math.floor(Date.now()/1e3)-Number(a.publishTime??0);return a.publishTime!==void 0&&i>Tt&&console.warn(`[EvmClient] Pyth price on chain ${this.chainId} is ${Math.round(i/3600)}h old \u2014 contract payments will revert until a fresh price update is pushed`),Number(a.price)*Math.pow(10,Number(a.expo))}async getNativeBalance(e){return this.publicClient.getBalance({address:e})}get activeRegistryAddress(){return this._manifestRegistryAddress?this._manifestRegistryAddress:(this.deploymentEnvironment==="staging"&&this.config.addresses?.stagingAddressRegistry?this.config.addresses.stagingAddressRegistry:this.config.addresses?.addressRegistry)??""}addresses(){return this._contractAddresses}requireAbi(e){let n=S.getAbi(this.chainId,e,this.environment);if(!n)throw new Error(`[EvmClient] ABI for '${e}' on chain ${this.chainId} is not loaded. The registry ABI sync may have failed or not completed. Reads are blocked until it is ready.`);return n}async read(e){await this.ready;let n=this.addresses()[e.contractKey];if(!n){if(e.whenAddressMissing!==void 0)return e.whenAddressMissing;throw new Error(`[EvmClient] ${String(e.contractKey)} address missing for chain ${this.chainId}`)}try{let t=await this.publicClient.readContract({address:n,abi:this.requireAbi(e.contractName),functionName:e.functionName,args:e.args??[],...this._accountOverride?{account:this._accountOverride}:{}});return e.transform?e.transform(t):t}catch(t){throw Z(t)}}createAddressRegistryReadAPI(){return{getLatestContract:async e=>{let n=this.activeRegistryAddress;if(!n)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);let t=await this.publicClient.readContract({address:n,abi:w,functionName:"getLatestContract",args:[e]});return[t[0],t[1]]},getContractHistory:async e=>{let n=this.activeRegistryAddress;if(!n)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);return await this.publicClient.readContract({address:n,abi:w,functionName:"getContractHistory",args:[e]})},getAllContractNames:async()=>{let e=this.activeRegistryAddress;if(!e)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);return await this.publicClient.readContract({address:e,abi:w,functionName:"getAllContractNames",args:[]})},getLatestData:async e=>{let n=this.activeRegistryAddress;if(!n)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);let t=await this.publicClient.readContract({address:n,abi:w,functionName:"getLatestData",args:[e]});return String(t)},getAllDataKeys:async()=>{let e=this.activeRegistryAddress;if(!e)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);return await this.publicClient.readContract({address:e,abi:w,functionName:"getAllDataKeys",args:[]})},getLatestBlobRef:async e=>{let n=this.activeRegistryAddress;if(!n)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);let t=await this.publicClient.readContract({address:n,abi:w,functionName:"getLatestBlobRef",args:[e]});return[t[0],t[1]]},getBlobRefHistory:async(e,n,t)=>{let a=this.activeRegistryAddress;if(!a)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);return(await this.publicClient.readContract({address:a,abi:w,functionName:"getBlobRefHistory",args:[e,BigInt(n),BigInt(t)]})).map(s=>[s.arweaveTxId,s.sha256Hash])},admin:async()=>{let e=this.activeRegistryAddress;if(!e)throw new Error(`[EvmClient] addressRegistry address missing for chain ${this.chainId}`);let n=await this.publicClient.readContract({address:e,abi:w,functionName:"admin",args:[]});return String(n)},getLastUpdateInfo:async e=>{let n=this.activeRegistryAddress;if(!n)return null;let t={type:"event",name:"ContractAdded",inputs:[{type:"string",name:"name",indexed:!0},{type:"address",name:"contractAddress",indexed:!0},{type:"string",name:"abiUrl"},{type:"uint256",name:"version"}]},a=async o=>{let c=await this.publicClient.getBlock({blockNumber:o.blockNumber});return{timestamp:Number(c.timestamp),blockNumber:o.blockNumber,transactionHash:o.transactionHash}};try{let o=await this.publicClient.getLogs({address:n,event:t,args:{name:e},fromBlock:0n});return o.length===0?null:await a(o[o.length-1])}catch{}let i=9999n,s=50;try{let c=await this.publicClient.getBlockNumber();for(let p=0;p<s&&c>=0n;p++){let y=c>=i?c-i:0n,h=await this.publicClient.getLogs({address:n,event:t,args:{name:e},fromBlock:y,toBlock:c});if(h.length>0)return await a(h[h.length-1]);if(y===0n)break;c=y-1n}return null}catch(o){return console.error(`[EvmClient] Failed to get last update info for ${e}:`,o),null}}}}createArchivistReadApi(){let e="backupStorage",n="BackupStorage";return{userLevel:t=>this.read({contractKey:e,contractName:n,functionName:"userLevel",args:[t],transform:Number}),isAuthorized:t=>this.read({contractKey:e,contractName:n,functionName:"isAuthorized",args:[t],transform:Boolean}),nbWrites:t=>this.read({contractKey:e,contractName:n,functionName:"nbWrites",args:[t],transform:Number}),loadActions:t=>this.read({contractKey:e,contractName:n,functionName:"loadActions",args:[t],transform:D}),loadActionsSince:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"loadActionsSince",args:[t,a],transform:D})}}createProjectManagerStorageReadAPI(){return{nbProjects:async()=>{if(await this.ready,!this.addresses().factory)return console.error("[EvmClient] Factory address missing in config!"),0;try{return await this.read({contractKey:"factory",contractName:"Factory",functionName:"nbProjects",transform:Number})}catch(n){throw console.error("[EvmClient] nbProjects failed:",n),n}},balanceOfAddress:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getUserBalances",args:[e],transform:n=>({total:Number(n[0]),donations:Number(n[1]),unspent:Number(n[2])})}),loadProject:e=>this.read({contractKey:"factory",contractName:"Factory",functionName:"getProject",args:[e],transform:n=>({id:e,balance:n[1].reduce((t,a)=>t+Number(a),0),versions:n[2].map(t=>(t.uri=We(t.uri),t.publicationDate=new Date(Number(t.publicationDate)*1e3),t.maximumFunding=Number(t.maximumFunding),t.minimumFundingBeforeStartWork=Number(t.minimumFundingBeforeStartWork),t.tags=t.tags.map(Number),t.status=Number(t.status),t)),availableLanguages:n[3].map(t=>W(t))})}),addressDonationsPerProject:e=>this.read({contractKey:"factory",contractName:"Factory",functionName:"addressDonationsPerProject",args:[e],transform:n=>n.map(Number)}),getProjectSupportedLanguages:e=>this.read({contractKey:"factory",contractName:"Factory",functionName:"getProjectSupportedLanguages",args:[e],transform:n=>n.map(String)}),projectVotingBalances:e=>this.read({contractKey:"factory",contractName:"Factory",functionName:"getProjectAllocatedBudget",args:[e],transform:n=>n.map(Number)}),getWeeklyDonations:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getWeeklyDonations",args:[BigInt(e)],transform:n=>n.map(Fe)}),getDonationsRange:(e,n)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getDonationsRange",args:[BigInt(e),BigInt(n)],transform:t=>t.map(Fe)}),isAuthorized:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"isAuthorized",args:[e],transform:Boolean}),admin:()=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"admin",transform:String}),getNbLanguages:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getNbLanguages",args:[e],transform:Number}),getLanguageAtIndex:(e,n)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getLanguageAtIndex",args:[e,n],transform:t=>W(t)}),getNbVersions:(e,n)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getNbVersions",args:[e,F(n)],transform:Number}),getVersion:(e,n,t)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getVersion",args:[e,F(n),t],transform:a=>({uri:Q(a.uri),publicationDate:new Date(Number(a.publicationDate)*1e3),name:a.name,headline:a.headline,descriptionMarkdown:a.descriptionMarkdown,arweaveAddressLogo:a.arweaveAddressLogo,arweaveAddressBanner:a.arweaveAddressBanner,minimumFundingBeforeStartWork:Number(a.minimumFundingBeforeStartWork),maximumFunding:Number(a.maximumFunding),tags:a.tags.map(Number),status:Number(a.status),complexity:Number(a.complexity)})}),getVotingBalance:(e,n)=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getVotingBalance",args:[e,F(n)]}),getUserBalances:e=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getUserBalances",args:[e],transform:n=>[BigInt(n[0]),BigInt(n[1]),BigInt(n[2])]}),getVotePresets:()=>this.read({contractKey:"projectManagerStorage",contractName:"ProjectManagerStorage",functionName:"getVotePresets",transform:([e,n,t])=>e.map((a,i)=>({projectId:Number(a),lang:W(n[i]),bps:Number(t[i])}))})}}createBouncerStorageReadAPI(){let e="bouncerStorage",n="BouncerStorage";return{hasAccount:async t=>{await this.ready;let a=this.addresses().bouncerStorage;if(!a)return!1;try{let i=S.getAbi(this.chainId,n,this.environment);return i?!!await this.publicClient.readContract({address:a,abi:i,functionName:"hasAccount",args:[t]}):!1}catch(i){return console.error(`[EvmClient] hasAccount FAILED for ${t} (returning false):`,i),!1}},userInfos:t=>this.read({contractKey:e,contractName:n,functionName:"userInfos",args:[t],transform:a=>[String((a.username??a[0])||""),String((a.country??a[1])||""),String((a.language??a[2])||""),Number((a.newUserId??a[3])||0)]}),userData:t=>this.read({contractKey:e,contractName:n,functionName:"userData",args:[t],transform:a=>[Number(a.id??a[0]),String(a.addr??a[1]),String(a.username??a[2]),String(a.language??a[3]),String(a.country??a[4])]}),userIdOf:t=>this.read({contractKey:e,contractName:n,functionName:"userIdOf",args:[t],transform:Number}),userIdToUsername:t=>this.read({contractKey:e,contractName:n,functionName:"userIdToUsername",args:[BigInt(t)],transform:String}),userAddr:t=>this.read({contractKey:e,contractName:n,functionName:"userAddr",args:[BigInt(t)],transform:String}),getUsernameByAddress:t=>this.read({contractKey:e,contractName:n,functionName:"getUsernameByAddress",args:[t],transform:String}),getAccountCountByCountryLanguage:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"getAccountCountByCountryLanguage",args:[t,a],transform:Number}),nbAccounts:()=>this.read({contractKey:e,contractName:n,functionName:"nbAccounts",transform:Number}),getAllLocationCounts:()=>this.read({contractKey:e,contractName:n,functionName:"getAllLocationCounts",transform:t=>t.map(a=>({country:String(a.country??a[0]),language:String(a.language??a[1]),count:Number(a.count??a[2])}))}),getActiveLocationCount:()=>this.read({contractKey:e,contractName:n,functionName:"getActiveLocationCount",transform:Number}),identityStats:()=>this.read({contractKey:e,contractName:n,functionName:"identityStats",transform:t=>[Number(t[0]),Number(t[1])]}),isAuthorized:t=>this.read({contractKey:e,contractName:n,functionName:"isAuthorized",args:[t],transform:Boolean}),getLatestRegisteredUser:async()=>{try{let t=await this.bouncerStorage.nbAccounts();return t===0?null:await this.bouncerStorage.userAddr(t)}catch(t){return console.error("[EvmClient] getLatestRegisteredUser FAILED:",t),null}},getTokenName:()=>this.read({contractKey:e,contractName:n,functionName:"getTokenName",transform:String}),usernameToUserId:t=>this.read({contractKey:e,contractName:n,functionName:"usernameToUserId",args:[t],transform:Number}),userIdByEmailHash:t=>this.read({contractKey:e,contractName:n,functionName:"userIdByEmailHash",args:[t],transform:Number})}}createScientistStorageReadAPI(){let e="scientistStorage",n="ScientistStorage";return{getDeploymentDate:()=>this.read({contractKey:e,contractName:n,functionName:"getDeploymentDate",transform:t=>[Number(t[0]),Number(t[1])]}),getLastMonthId:()=>this.read({contractKey:e,contractName:n,functionName:"getLastMonthId",transform:Number}),getStatsRaw:(t,a,i)=>this.read({contractKey:e,contractName:n,functionName:"getStatsRaw",args:[BigInt(t),BigInt(a),BigInt(i)],transform:s=>[s[0].map(o=>BigInt(o)),s[1].map(o=>Number(o))]}),isAuthorized:t=>this.read({contractKey:e,contractName:n,functionName:"isAuthorized",args:[t],transform:Boolean})}}createFactoryReadAPI(){let e="factory",n="Factory";return{nbWritesByUsername:t=>this.read({contractKey:e,contractName:n,functionName:"nbWritesByUsername",args:[t],transform:Number}),loadUsername:t=>this.read({contractKey:e,contractName:n,functionName:"loadUsername",args:[t],transform:D}),loadUsernameSince:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"loadUsernameSince",args:[t,a],transform:D}),load:()=>this.read({contractKey:e,contractName:n,functionName:"load",transform:D}),isAuthorized:t=>this.read({contractKey:e,contractName:n,functionName:"isAuthorized",args:[t],transform:Boolean}),owner:()=>this.read({contractKey:e,contractName:n,functionName:"owner",transform:String}),oracleSigner:()=>this.read({contractKey:e,contractName:n,functionName:"oracleSigner",transform:String}),bouncerStorage:()=>this.read({contractKey:e,contractName:n,functionName:"bouncerStorage",transform:String}),scientistStorage:()=>this.read({contractKey:e,contractName:n,functionName:"scientistStorage",transform:String}),backupStorage:()=>this.read({contractKey:e,contractName:n,functionName:"backupStorage",transform:String}),projectManagerStorage:()=>this.read({contractKey:e,contractName:n,functionName:"projectManagerStorage",transform:String})}}createAccountManagerReadAPI(){let e="accountManager",n="AccountManager";return{address:async()=>{await this.ready;let t=this.addresses()[e];if(!t)throw new Error(`[EvmClient] accountManager address missing for chain ${this.chainId}`);return t},oracleSigner:()=>this.read({contractKey:e,contractName:n,functionName:"oracleSigner",transform:String}),usedDeletionConsents:t=>this.read({contractKey:e,contractName:n,functionName:"usedDeletionConsents",args:[t],transform:Boolean}),isPaymentIntentUsed:t=>this.read({contractKey:e,contractName:n,functionName:"isPaymentIntentUsed",args:[t],transform:Boolean})}}createSubscriptionManagerReadAPI(){let e="subscriptionManager",n="SubscriptionManager";return{getSubscriptions:t=>this.read({contractKey:e,contractName:n,functionName:"getSubscriptions",args:[t],transform:a=>[...a],whenAddressMissing:[]}),getSubscriptionCount:t=>this.read({contractKey:e,contractName:n,functionName:"getSubscriptionCount",args:[t],transform:BigInt,whenAddressMissing:0n}),isSubscribed:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"isSubscribed",args:[t,a],transform:Boolean,whenAddressMissing:!1}),scoreOf:t=>this.read({contractKey:e,contractName:n,functionName:"scoreOf",args:[t],transform:BigInt,whenAddressMissing:0n})}}createLibraryRegistryStorageReadAPI(){let e="libraryRegistryStorage",n="LibraryRegistryStorage";return{admin:()=>this.read({contractKey:e,contractName:n,functionName:"admin",transform:String}),getUnverifiedCollectionIds:()=>this.read({contractKey:e,contractName:n,functionName:"getUnverifiedCollectionIds",transform:t=>[...t]}),getVerifiedCollectionIds:()=>this.read({contractKey:e,contractName:n,functionName:"getVerifiedCollectionIds",transform:t=>[...t]}),getCollection:t=>this.read({contractKey:e,contractName:n,functionName:"getCollection",args:[t],transform:a=>({id:String(a.id),slug:String(a.slug),manifestUrl:String(a.manifestUrl),importerUsername:String(a.importerUsername),owner:String(a.owner),verified:!!a.verified,fileCount:Number(a.fileCount),libraryType:Number(a.libraryType),publicLibraryId:Number(a.publicLibraryId),country:String(a.country),language:String(a.language),isPublic:!!a.isPublic,createdAt:Number(a.createdAt),updatedAt:Number(a.updatedAt),initialBookCount:Number(a.initialBookCount),dSafeBookCount:Number(a.dSafeBookCount),importStatus:Number(a.importStatus),published:!!a.published,preferredFormat:String(a.preferredFormat)})})}}createPublicLibraryStorageReadAPI(){let e="publicLibraryStorage",n="PublicLibraryStorage";return{libraryExists:t=>this.read({contractKey:e,contractName:n,functionName:"libraryExists",args:[t],transform:Boolean}),getPublicLibrary:t=>this.read({contractKey:e,contractName:n,functionName:"getPublicLibrary",args:[t],transform:a=>({id:Number(a.id),name:String(a.name),physicalAddress:String(a.physicalAddress),country:String(a.country),language:String(a.language),ownership:Number(a.ownership),website:String(a.website),preferredFormat:String(a.preferredFormat),createdAt:Number(a.createdAt),updatedAt:Number(a.updatedAt)})}),nbLibraries:()=>this.read({contractKey:e,contractName:n,functionName:"nbLibraries",transform:Number}),formatExists:t=>this.read({contractKey:e,contractName:n,functionName:"formatExists",args:[t],transform:Boolean}),getAllFormats:()=>this.read({contractKey:e,contractName:n,functionName:"getAllFormats",transform:t=>[...t]})}}createDSafeHRStorageReadAPI(){let e="dSafeHRStorage",n="DSafeHRStorage";return{isStaffOf:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"isStaffOf",args:[t,a],transform:Boolean}),verifyMember:t=>this.read({contractKey:e,contractName:n,functionName:"verifyMember",args:[t],transform:Boolean}),getStaffLibraries:t=>this.read({contractKey:e,contractName:n,functionName:"getStaffLibraries",args:[t],transform:a=>a.map(Number)}),getCurrentRecordCounter:(t,a)=>this.read({contractKey:e,contractName:n,functionName:"getCurrentRecordCounter",args:[t,a],transform:Number}),getLibrarySequence:t=>this.read({contractKey:e,contractName:n,functionName:"getLibrarySequence",args:[t],transform:Number}),getPublishLock:t=>this.read({contractKey:e,contractName:n,functionName:"getPublishLock",args:[t],transform:a=>[String(a[0]),Number(a[1]),!!a[2]]})}}createRelationshipIndexerStorageReadAPI(){let e="relationshipIndexerStorage",n=i=>({actorId:Number(i.actorId??i[0]),actionId:Number(i.actionId??i[1]),objectType:Number(i.objectType??i[2]),objectId:BigInt(i.objectId??i[3]),tagId:BigInt(i.tagId??i[4]),timestamp:Number(i.timestamp??i[5])}),t=i=>(i||[]).map(n),a=async(i,s,o)=>{await this.ready;let c=this.addresses()[e];if(!c)throw new Error(`[EvmClient] relationshipIndexerStorage address missing for chain ${this.chainId}`);try{let p=await this.publicClient.readContract({address:c,abi:Le,functionName:i,args:s});return o(p)}catch(p){throw Z(p)}};return{getByObjectTarget:(i,s,o,c)=>a("getByObjectTarget",[i,s,BigInt(o),BigInt(c)],t),getByTagTarget:(i,s,o)=>a("getByTagTarget",[i,BigInt(s),BigInt(o)],t),getByActor:(i,s,o)=>a("getByActor",[i,BigInt(s),BigInt(o)],t),countByObjectTarget:async(i,s)=>{let o=await a("objectTargetKey",[i,s],c=>c);return a("countByTarget",[o],Number)},countByTagTarget:async i=>{let s=await a("tagTargetKey",[i],o=>o);return a("countByTarget",[s],Number)},countByActor:i=>a("countByActor",[i],Number),getNewSubscriptionsSince:(i,s)=>a("getNewSubscriptionsSince",[i,s],o=>(o||[]).map(Number)),countNewSubscriptionsSince:(i,s)=>a("countNewSubscriptionsSince",[i,s],Number)}}async getRegistryStatus(){return await this.ready,S.getLoadingStatus(this.chainId)}};function gn(r=gt,e="production"){return new M(r,e)}import{isChainDeployedForRole as It}from"@the_library/network-config";var wt={},At={},Nt={},Et={};function Ke(r,e){let n=e==="staging"?Et:Nt,t=e==="staging"?At:wt,a=n[r];if(!a){if(!It(r,e))throw new Error(`No EVM client for chain ${r} (${e})`);a=new M(r,e),n[r]=a,t[r]=a}return a}function A(r,e="production"){return Ke(r,e)}function ee(r,e="production"){return Ke(r,e)}async function Tn(r,e="production"){let n=ee(r,e);return await n.ready,await S.waitForAbis(r,e),n}var He="production",wn=r=>{He=r},k=()=>He;function Ct(){let r="@the_library/web3-session:",e="infos_web3_",n="active_session",t={active:null,known:[]},a=new Set,i=()=>a.forEach(u=>u()),s=(u,l)=>`${e}${l}_${u.toLowerCase()}`,o=u=>{if(typeof localStorage>"u")return;let l=s(u.account,u.chainId);localStorage.setItem(r+l,JSON.stringify(u))},c=(u,l)=>{if(typeof localStorage>"u")return;let d=s(u,l);localStorage.removeItem(r+d)},p=()=>{typeof localStorage>"u"||(t.active?localStorage.setItem(r+n,JSON.stringify({address:t.active.account,chainId:t.active.chainId})):localStorage.removeItem(r+n))},y=()=>{if(typeof localStorage>"u")return null;let u=localStorage.getItem(r+n);if(!u)return null;try{let l=JSON.parse(u);return t.known.find(d=>d.account.toLowerCase()===l.address.toLowerCase()&&d.chainId===l.chainId)||null}catch{return null}};function h(){if(typeof localStorage>"u")return;let u="infos_evm_";for(let l=0;l<localStorage.length;l++){let d=localStorage.key(l);if(!d)continue;let b=d.startsWith(r)?d.slice(r.length):null;if(b&&b.startsWith(u)){let I=r+e+b.slice(u.length);localStorage.setItem(I,localStorage.getItem(d)),localStorage.removeItem(d),l--}}}return{getState(){return t},setActive(u){t.active=u,u&&(t.known.some(d=>d.account.toLowerCase()===u.account.toLowerCase()&&d.chainId===u.chainId)||(t.known.push(u),o(u))),p(),i()},addKnown(u){let l=t.known.findIndex(d=>d.account.toLowerCase()===u.account.toLowerCase()&&d.chainId===u.chainId);l>=0?t.known[l]=u:t.known.push(u),o(u),t.active&&t.active.account.toLowerCase()===u.account.toLowerCase()&&t.active.chainId===u.chainId&&(t.active=u,p()),i()},updateAccount(u,l,d){let b=t.known.find(I=>I.account.toLowerCase()===u.toLowerCase()&&I.chainId===l);b&&(Object.assign(b,d),o(b),t.active&&t.active.account.toLowerCase()===u.toLowerCase()&&t.active.chainId===l&&(Object.assign(t.active,d),p()),i())},removeAccount(u,l){t.known=t.known.filter(d=>!(d.account.toLowerCase()===u.toLowerCase()&&d.chainId===l)),c(u,l),t.active&&t.active.account.toLowerCase()===u.toLowerCase()&&t.active.chainId===l&&(t.active=null,p()),i()},clearAll(){if(typeof localStorage<"u"){let u=[];for(let l=0;l<localStorage.length;l++){let d=localStorage.key(l);d&&d.startsWith(r)&&u.push(d)}for(let l of u)localStorage.removeItem(l)}t.active=null,t.known=[],i()},setLastSavedPatchIndex(u,l,d){this.updateAccount(u,l,{lastPatchIndex:d})},setLastRestorationIndex(u,l,d){this.updateAccount(u,l,{lastRestorationIndex:d})},lastSyncCounters(u,l){let d=t.known.find(b=>b.account.toLowerCase()===u.toLowerCase()&&b.chainId===l);return{lastPatchIndex:d?.lastPatchIndex??0,lastRestorationIndex:d?.lastRestorationIndex??0}},updateProjectVotes(u,l,d,b){let I=t.known.find(v=>v.account.toLowerCase()===u.toLowerCase()&&v.chainId===l);if(I){let v=d-1;if(v<0)return;let R=[...I.donationsPerProject||[]];for(;R.length<=v;)R.push(0);R[v]=(R[v]||0)+b,this.updateAccount(u,l,{donationsPerProject:R})}},persist(){for(let u of t.known)o(u);p()},load(){if(typeof localStorage>"u")return;h();let u=[];for(let l=0;l<localStorage.length;l++){let d=localStorage.key(l);if(d&&d.startsWith(r+e))try{let b=localStorage.getItem(d);if(b){let I=JSON.parse(b);u.push(I)}}catch(b){console.warn("Failed to parse loaded session account:",b)}}t.known=u,t.active=y(),i()},subscribe(u){return a.add(u),()=>a.delete(u)}}}var T=Ct(),Nn=()=>T.getState().known.filter(r=>r.hasAccount);var ne=class{constructor(){this.listeners=new Map}on(e,n){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(n),()=>this.off(e,n)}off(e,n){let t=this.listeners.get(e);t&&(t.delete(n),t.size===0&&this.listeners.delete(e))}emit(e,n){let t=this.listeners.get(e);t&&t.forEach(a=>{try{a(n)}catch(i){console.error(`Error in event listener for ${e}:`,i)}})}once(e,n){let t=a=>{n(a),this.off(e,t)};return this.on(e,t)}clear(e){e?this.listeners.delete(e):this.listeners.clear()}listenerCount(e){return this.listeners.get(e)?.size||0}},te=null;function re(){return te||(te=new ne),te}var vt=(c=>(c.WALLET_STATE_CHANGED="wallet:state:changed",c.WALLET_CHAIN_CHANGED="wallet:chain:changed",c.WALLET_ERROR="wallet:error",c.SESSION_UPDATED="session:updated",c.WALLET_DISCONNECTED="wallet:disconnected",c.SESSION_DELETED="session:deleted",c.SAVE_RESTORED="save:restored",c.SUBSCRIPTION_PATCHES_SYNCED="subscription:patches:synced",c))(vt||{}),Pt=(g=>(g.INITIALIZING="INITIALIZING",g.UPDATING_STATE_STARTED="UPDATING_STATE_STARTED",g.UPDATING_STATE_DONE="UPDATING_STATE_DONE",g.UPDATING_STATE_FAILED="UPDATING_STATE_FAILED",g.READY="READY",g.INTERNAL_ERROR="INTERNAL_ERROR",g.NOT_CONNECTED="NOT_CONNECTED",g.NOT_INSTALLED="NOT_INSTALLED",g.NOT_ALLOWED="NOT_ALLOWED",g.NOT_SUPPORTED="NOT_SUPPORTED",g.NOT_READY="NOT_READY",g.CONNECT_STARTED="CONNECT_STARTED",g.CONNECT_DONE="CONNECT_DONE",g.CONNECT_FAILED="CONNECT_FAILED",g.TRANSACTION_STARTED="TRANSACTION_STARTED",g.TRANSACTION_DONE="TRANSACTION_DONE",g.TRANSACTION_FAILED="TRANSACTION_FAILED",g.TIMEOUT="TIMEOUT",g.CHAIN_CHANGED_STARTED="CHAIN_CHANGED_STARTED",g.CHAIN_CHANGED_DONE="CHAIN_CHANGED_DONE",g.CHAIN_CHANGED_FAILED="CHAIN_CHANGED_FAILED",g.WALLET_INSTALLED="WALLET_INSTALLED",g))(Pt||{}),Rt=(m=>(m.NO_ACCOUNTS="NO_ACCOUNTS",m.USER_REJECTED="USER_REJECTED",m.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",m.LOGIN_INTO_WALLET="LOGIN_INTO_WALLET",m.REQUEST_ALREADY_PENDING="REQUEST_ALREADY_PENDING",m.UNKNOWN_ERROR="UNKNOWN_ERROR",m.CONFIG_MISSING="CONFIG_MISSING",m.NOT_SUPPORTED="NOT_SUPPORTED",m.NOT_CONNECTED="NOT_CONNECTED",m.NOT_INSTALLED="NOT_INSTALLED",m.NOT_ALLOWED="NOT_ALLOWED",m.NETWORK_NOT_SUPPORTED="NETWORK_NOT_SUPPORTED",m))(Rt||{}),xt=(s=>(s.NO_ACCOUNT_SWITCH="NO_ACCOUNT_SWITCH",s.NO_NETWORK_SWITCH="NO_NETWORK_SWITCH",s.NETWORK_NOT_SUPPORTED="NETWORK_NOT_SUPPORTED",s.NO_INTERNET="NO_INTERNET",s.NO_DISCONNECT="NO_DISCONNECT",s.NO_ACCOUNT_DISCONNECT="NO_ACCOUNT_DISCONNECT",s))(xt||{});var N=r=>e=>{re().emit(r,e)},E=r=>e=>re().on(r,e),ae={emitWalletStateEvent:N("wallet:state:changed"),onWalletStateEvent:E("wallet:state:changed"),emitSessionUpdated:N("session:updated"),onSessionUpdated:E("session:updated"),emitChainChanged:N("wallet:chain:changed"),onChainChanged:E("wallet:chain:changed"),emitDisconnected:N("wallet:disconnected"),onDisconnected:E("wallet:disconnected"),emitWalletSessionDeleted:N("session:deleted"),onWalletSessionDeleted:E("session:deleted"),emitWalletError:N("wallet:error"),onWalletError:E("wallet:error"),emitSaveRestored:N("save:restored"),onSaveRestored:E("save:restored"),emitSubscriptionPatchesSynced:N("subscription:patches:synced"),onSubscriptionPatchesSynced:E("subscription:patches:synced")};async function K(r,e,n,t,a){await Ce(r,e,n,t),!(!a||!$.threadInstance)&&await Promise.all([...Ee().values()].flatMap(i=>[...i.values()]).map(async i=>{let s=[],o=$.observePending(c=>{if(B(c)&&(c.objectType===i.schema.objectId&&c.objectId===i.id&&s.push(c),c.operation===q.EditRelation)){let p=Ie(c);p?.objectType===i.schema.objectId&&p.objectId===i.id&&s.push(p)}});try{let c=await $.threadInstance.sendRequest({cmd:"getRecord",payload:{objectType:i.schema.objectId,id:i.id,creatorUsername:i.creatorUsername}});if(c)i.replaceSnapshot(c);else{let p=new X(i.schema.objectId,X.createNewRequest(i.id));p.patch({operation:q.EditPropertyNumber,objectType:i.schema.objectId,objectId:i.id,propertyId:6,langId:0,value:1},!1,!1),i.replaceSnapshot(p.snapshot())}for(let p of s)i.patch(p,!1,!1);for(let p of we(i.schema))Ae.updateIndex(i.schema.objectId,p.propId,i);Ne.trigger(i)}finally{o()}}))}var _t="0xcA11bde05977b3631167028862bE2a173976CA11";function Lt(r){let e=S.getAddress(r.chainId,"subscriptionManager",r.environment),n=S.getAbi(r.chainId,"SubscriptionManager",r.environment);return!e||!n?null:{address:e,abi:n}}async function ze(r,e){let n=new Map;if(e.length===0)return n;let t=Lt(r);if(t)try{let a=await r.publicClient.multicall({multicallAddress:_t,allowFailure:!0,contracts:e.map(i=>({...t,functionName:"getSubscriptions",args:[i]}))});return e.forEach((i,s)=>{let o=a[s];if(o?.status!=="success")throw new Error(`Could not read subscriptions for ${i}`);n.set(i,(o.result??[]).map(Number))}),n}catch(a){console.warn("[subscription/contract] multicall getSubscriptions failed, falling back to sequential reads",a)}return await Promise.all(e.map(async a=>{n.set(a,await r.subscriptionManager.getSubscriptions(a))})),n}var Ot=50,Dt=1e3;async function Ge(r,e,n){let t=n?.maxNodes??Dt,a=n?.maxDepth,i=new Set([e]),s=new Map([[e,0]]),o=new Map,c=[e],p=!1;for(;c.length>0&&i.size<t;){let y=c.splice(0,Ot),h=await ze(r,y);for(let m of y){let u=h.get(m)??[];o.set(m,{userId:m,subscriptions:u});for(let l of u){if(i.has(l)||i.size>=t)continue;let d=(s.get(m)??0)+1;if(a!==void 0&&d>a){p=!0;continue}i.add(l),s.set(l,d),c.push(l)}}}return{rootUserId:e,nodes:o,truncated:c.length>0||p}}async function Mt(r,e,n){let[t,a,i]=await r.archivistStorage.loadActionsSince(e,n);return!t||t.length===0?null:{userId:e,fromIndex:n,toIndex:n+t.length,raw:{compressedActions:t,indexes:a,stringIndexes:i}}}async function Ve(r,e,n,t){let a=t?.concurrency??4,i=Array.from(e.nodes.keys()),s=[];for(let o=0;o<i.length;o+=a){let c=i.slice(o,o+a),p=await Promise.all(c.map(y=>Mt(r,y,n?.get(y)??0).catch(h=>(console.warn(`[subscription/patch-resolver] failed to fetch patches for userId ${y}`,h),null))));for(let y of p)y&&s.push(y)}return s}function H(r,e){let n=r.raw;return{version:e,patches:n.compressedActions,textIndex:n.indexes.map(Number),textData:n.stringIndexes}}var z=class{constructor(e){this.config=e;this.client=ee(e.chainId,e.environment??"production"),this.defaultMaxWalkNodes=e.maxWalkNodes,this.defaultMaxDepth=e.maxDepth}async walkGraph(e,n){return await this.client.ready,Ge(this.client,e,{maxNodes:n?.maxNodes??this.defaultMaxWalkNodes,maxDepth:n?.maxDepth??this.defaultMaxDepth})}async fetchPatches(e,n,t){return await this.client.ready,Ve(this.client,e,n,t)}async sync(e,n){let t=await this.walkGraph(e,n),a=await this.fetchPatches(t,void 0,n),i=new Map;for(let[o,c]of t.nodes)i.set(o,c.subscriptions.length);let s=new Map;for(let o of a)s.set(o.userId,Math.max(s.get(o.userId)??0,o.toIndex));for(let o of t.nodes.keys())s.has(o)||s.set(o,0);return{patches:a,cursor:{rootUserId:e,knownNodes:t.nodes,countSnapshot:i,patchIndex:s},truncated:t.truncated}}async syncSince(e,n){await this.client.ready;let t=await this.walkGraph(e.rootUserId,n);if(t.truncated)throw new Error("Subscription graph refresh truncated; increase traversal limits before retrying");let a=t.nodes,i=new Map([...a].map(([p,y])=>[p,y.subscriptions.length])),s=!1,o=await this.fetchPatches(t,e.patchIndex,n),c=new Map([...e.patchIndex].filter(([p])=>a.has(p)));for(let p of o)c.set(p.userId,Math.max(c.get(p.userId)??0,p.toIndex));for(let p of a.keys())c.has(p)||c.set(p,0);return{patches:o,cursor:{rootUserId:e.rootUserId,knownNodes:a,countSnapshot:i,patchIndex:c},truncated:s}}async getSubscriptions(e){return await this.client.ready,this.client.subscriptionManager.getSubscriptions(e)}async getScore(e){return await this.client.ready,this.client.subscriptionManager.scoreOf(e)}async loadLibraryByUsername(e){try{await this.client.ready,console.log(`[SubscriptionClient] Starting library load for @${e}...`),console.log(`[SubscriptionClient] Looking up userId for @${e}...`);let n=await this.client.bouncerStorage.usernameToUserId(e);if(!n){console.error(`[SubscriptionClient] Username @${e} not found on-chain`);return}console.log(`[SubscriptionClient] Resolved @${e} \u2192 userId ${n}`),console.log(`[SubscriptionClient] Syncing patches for userId ${n}...`);let t=await this.sync(n);if(t.truncated)throw new Error("Subscription graph truncated; refusing an incomplete view");if(await K(this.config.environment??"production",this.config.chainId,n,[...t.cursor.knownNodes.keys()],!0),console.log(`[SubscriptionClient] Fetched ${t.patches.length} patch(es), truncated: ${t.truncated}`),t.patches.length>0){console.log(`[SubscriptionClient] Applying patches for ${t.patches.length} subscription graph patch(es)...`);for(let a of t.patches)try{let i=await this.client.bouncerStorage.userIdToUsername(a.userId);if(!i){console.warn(`[SubscriptionClient] No username found for userId ${a.userId}, skipping patch`);continue}console.log(`[SubscriptionClient] Applying patch for @${i} (userId ${a.userId}, index ${a.fromIndex}\u2013${a.toIndex})...`),await L(i,H(a,_),{streamId:`${this.config.environment??"production"}:${this.config.chainId}:${a.userId}`,fromIndex:a.fromIndex});let s=await x(i);await O(s,i)}catch(i){console.error(`[SubscriptionClient] Failed to apply patch for userId ${a.userId}:`,i?.message||i)}}console.log(`[SubscriptionClient] Successfully loaded library for @${e}`)}catch(n){console.error(`[SubscriptionClient] Failed to load library for @${e}:`,n?.message||n)}}};var ie={};function qe(r,e="production"){let n=`${r}:${e}`;return ie[n]||(ie[n]=new z({chainId:r,environment:e})),ie[n]}import{del as kt,get as jt,set as Ut}from"idb-keyval";function Bt(r){return{rootUserId:r.rootUserId,knownNodes:Array.from(r.knownNodes.entries()),countSnapshot:Array.from(r.countSnapshot.entries()),patchIndex:Array.from(r.patchIndex.entries())}}function $t(r){return{rootUserId:r.rootUserId,knownNodes:new Map(r.knownNodes),countSnapshot:new Map(r.countSnapshot),patchIndex:new Map(r.patchIndex)}}function ir(r){return{rootUserId:r,knownNodes:new Map,countSnapshot:new Map,patchIndex:new Map}}var oe="web3-sdk:subscription-cursor:";function Je(r,e,n){return`${r}:${e}:${n}`}var se={async get(r){try{let e=await jt(`${oe}${r}`);return e?$t(e):void 0}catch(e){console.warn(`[cursorStore] Failed to read cursor for key ${r}:`,e);return}},async set(r,e){try{await Ut(`${oe}${r}`,Bt(e))}catch(n){console.warn(`[cursorStore] Failed to persist cursor for key ${r}:`,n)}},async clear(r){try{await kt(`${oe}${r}`)}catch{}}};var Ye="@the_library/web3-cache:";function Xe(){if(typeof window>"u"||typeof localStorage>"u")return!1;try{let r="__storage_test__";return localStorage.setItem(r,"test"),localStorage.removeItem(r),!0}catch{return!1}}function j(r){if(!Xe())return null;try{let e=localStorage.getItem(Ye+r);return e?JSON.parse(e):null}catch{return null}}function U(r,e){if(Xe())try{localStorage.setItem(Ye+r,JSON.stringify(e))}catch(n){console.warn("[session/storage] Failed to save to localStorage:",n)}}var G=new Map;async function Ze(r,e,n){let t=Je(n,e,r),a=G.get(t);if(a)return a;let i=(async()=>{let s=qe(e,n),o=await se.get(t),c=o?await s.syncSince(o):await s.sync(r);if(c.truncated)throw new Error("Subscription graph is truncated; cursor and active view remain unchanged");let p=!o||o.knownNodes.size!==c.cursor.knownNodes.size||[...o.knownNodes.keys()].some(u=>!c.cursor.knownNodes.has(u));await K(n,e,r,[...c.cursor.knownNodes.keys()],p);let y=0,h=new Set;if(c.patches.length>0){let u=A(e,n);await u.ready;for(let l of c.patches)try{let d=await u.bouncerStorage.userIdToUsername(l.userId);if(!d){h.add(l.userId);continue}await L(d,H(l,_),{streamId:`${n}:${e}:${l.userId}`,fromIndex:l.fromIndex});let b=await x(d);await O(b,d),y+=l.toIndex-l.fromIndex}catch(d){h.add(l.userId),console.warn(`[session/sync] failed to apply subscription patch for userId ${l.userId}`,d)}}let m=new Map(c.cursor.patchIndex);for(let u of h)m.set(u,o?.patchIndex.get(u)??0);await se.set(t,{...c.cursor,patchIndex:m}),ae.emitSubscriptionPatchesSynced({rootUserId:r,chainId:e,appliedCount:y,timestamp:Date.now(),failedUserIds:h.size>0?Array.from(h):void 0})})();G.set(t,i);try{await i}catch(s){G.delete(t),console.warn(`[session/sync] subscription sync failed for userId ${r}`,s)}finally{G.delete(t)}}async function Ar(r,e,n,t=k(),a=!1){let i=T.getState().known.find(p=>p.account.toLowerCase()===r.toLowerCase()&&p.chainId===e);if(!a&&i?.lastUpdated)return i.hasAccount&&i.userId&&Ze(i.userId,e,t),i;let s=A(e,t);await s.ready;let o=i?{...i}:{account:r,username:"",hasAccount:!1,userId:0,lastPatchIndex:0,lastRestorationIndex:0,chainId:e,wallet:n},c=await s.bouncerStorage.hasAccount(r);if(o.hasAccount=c,c){let[p,y,h,m]=await s.bouncerStorage.userInfos(r);o.username=p,o.country=y,o.language=h,o.userId=m;let{total:u,donations:l,unspent:d}=await s.projectManagerStorage.balanceOfAddress(r);o.projectBalance={contributions:u,allocated:l,remaining:d};try{o.level=await s.archivistStorage.userLevel(m)}catch{o.level=1}try{o.donationsPerProject=await s.projectManagerStorage.addressDonationsPerProject(r)}catch{o.donationsPerProject=[]}await Ze(m,e,t)}return o.lastUpdated=Date.now(),T.addKnown(o),o}async function Nr(r,e,n=k()){let t=T.getState().known.find(s=>s.account.toLowerCase()===r.toLowerCase()&&s.chainId===e);if(!t||!t.hasAccount)return!1;let a=A(e,n);if(await a.ready,!await a.bouncerStorage.hasAccount(r))return T.updateAccount(r,e,{hasAccount:!1}),!1;try{await Pe("mine")>0&&await Y.calculateLevel("mine");let s=await a.factory.nbWritesByUsername(t.username);if(s>t.lastRestorationIndex){let[o,c,p]=await a.factory.loadUsernameSince(t.username,t.lastRestorationIndex),y=0;if(o&&o.length>0){let h=await J("mine");await L("mine",{version:_,patches:o,textIndex:c.map(Number),textData:p},{streamId:`${n}:${e}:${t.userId}`,fromIndex:t.lastRestorationIndex});let m=await x("mine");await O(m,"mine"),xe(m.filter(u=>u.pk>h&&u.sourceStream&&!B(u))),y=o.length,await Y.calculateLevel("mine")}T.setLastRestorationIndex(r,e,s),ae.emitSaveRestored({wallet:t.wallet,chainId:e,account:r,username:t.username,newRestorationIndex:s,appliedCount:y,timestamp:Date.now()})}return!0}catch(s){return console.error(`[session/sync] restoreAccountSave failed for ${r} on ${e}`,s),!1}}async function Er(r,e){let{lastPatchIndex:n}=T.lastSyncCounters(r,e),t=await J("mine");if(t<=n)return!1;let a=(await ve("mine",n+1)).filter(i=>i.pk<=t&&!i.sourceStream);return a.length>0&&Re(a).patches.length>0}function Wt(r,e){if(r.length===0)return!1;let n=0;for(let t of r){let a=BigInt(t);for(;n<e.length&&BigInt(e[n])!==a;)n++;if(n===e.length)return!1;n++}return!0}async function Cr(r,e,n,t,a=k()){let i=T.getState().known.find(s=>s.account.toLowerCase()===r.toLowerCase()&&s.chainId===e);if(!i?.hasAccount||i.lastRestorationIndex!==n||t.length===0)return!1;try{let s=A(e,a);await s.ready;let o=await s.factory.nbWritesByUsername(i.username);if(o<=n)return!1;let[c]=await s.factory.loadUsernameSince(i.username,n);return c.length!==o-n||!Wt(c,t)?!1:(T.setLastRestorationIndex(r,e,o),!0)}catch(s){return console.warn(`[session/sync] acknowledgeOwnSave skipped for ${r} on ${e}`,s),!1}}async function vr(r,e=k(),n=!1){let t=`networkInfos_${r}${e==="staging"?"_staging":""}`;if(!n){let p=j(t);if(p)return p}let a=A(r,e);await a.ready;let[i,s,o]=await Promise.all([a.bouncerStorage.getAllLocationCounts(),a.projectManagerStorage.nbProjects(),a.bouncerStorage.nbAccounts()]),c={nbUsers:o,nbLocations:i.length,nbProjects:s,locationStats:i};return U(t,c),c}var ce=new Map;function Rr(r){ce.set(r.type,r)}function xr(r){return ce.get(r)}function _r(){return Array.from(ce.values())}var V="wallet_pk_",ue="@the_library/web3-session:",Qe=null;function Or(){return Qe}function Dr(r){Qe=r}function le(){if(typeof window>"u"||typeof localStorage>"u")return!1;try{let r="__storage_test__";return localStorage.setItem(r,"test"),localStorage.removeItem(r),!0}catch{return!1}}function et(r){if(!le())return null;try{let e=localStorage.getItem(ue+r);return e?JSON.parse(e):null}catch{return null}}function Ft(r,e){if(le())try{localStorage.setItem(ue+r,JSON.stringify(e))}catch(n){console.warn("Failed to save to localStorage:",n)}}function Kt(r,e){if(!e)throw new Error("Private key is required");let n=`${V}${r}`;Ft(n,e)}function C(r){let e=`${V}${r}`;return et(e)}function pe(r){let e=`${V}${r}`;return!!et(e)}function Mr(){if(!le())return!1;let r=`${ue}${V}`;for(let e=0;e<localStorage.length;e++)if(localStorage.key(e)?.startsWith(r))return!0;return!1}var kr=(r,e,n)=>Kt(r,e),jr=(r,e)=>C(r),Ur=r=>pe(r);import{getChain as Ht,DEFAULT_CHAIN_ID as zt}from"@the_library/network-config";import{privateKeyToAccount as me}from"viem/accounts";import{createWalletClient as Gt,http as Vt}from"viem";function ye(r){return r.startsWith("0x")?r:`0x${r}`}function tt(r){return me(ye(r)).address}function nt(r,e){let n=me(ye(e)),t=Ht(r);return Gt({account:n,chain:P(t),transport:Vt(t.rpc)})}var de=class{constructor(){this.type="private_key";this.activeChainId=0;this.chainChangedCallbacks=new Set}isAvailable(){return!0}async connect(e=zt){if(!pe(e))throw new Error(`No private key configured for chain ${e}`);this.activeChainId=e;let n=C(e);if(!n)throw new Error(`No private key configured for chain ${e}`);return{address:tt(n),chainId:e}}async getAccounts(){if(!this.activeChainId)return[];let e=C(this.activeChainId);return e?[tt(e)]:[]}async getChainId(){return this.activeChainId}async requestSwitchChain(e){if(!C(e))throw new Error(`No private key configured for chain ${e}`);this.activeChainId=e;for(let t of this.chainChangedCallbacks)t(e)}async sendTransaction(e,n){let t=C(n);if(!t)throw new Error(`No private key found for chain ${n}`);return await nt(n,t).sendTransaction(e)}async signMessage(e){if(!this.activeChainId)throw new Error("Wallet not connected");let n=C(this.activeChainId);if(!n)throw new Error("No private key found");return await me(ye(n)).signMessage({message:e})}async getWalletClient(e){let n=C(e);if(!n)throw new Error(`No private key configured for chain ${e}`);return nt(e,n)}onAccountChanged(e){return()=>{}}onChainChanged(e){return this.chainChangedCallbacks.add(e),()=>{this.chainChangedCallbacks.delete(e)}}disconnect(){this.activeChainId=0}};function zr(){return new de}var qt=(r,e,n)=>{let t=r.balance,a=r.availableLanguages.findIndex(s=>s===e);if(a!==-1)return{lang:r.availableLanguages[a],version:{...r.versions[a]},id:r.id,balance:t};let i=r.availableLanguages.findIndex(s=>s===" eng");if(i!==-1)return{lang:" eng",version:{...r.versions[i]},id:r.id,balance:t};if(r.availableLanguages.length===0)throw new Error(`No language available for project ${r.id}`);return{lang:r.availableLanguages[0],version:{...r.versions[0]},id:r.id,balance:t}},Jt=120*1e3,ge=class{projectKey(e,n,t){return`${e}_${n}_${t}_v2`}nbProjectsKey(e,n){return`${e}_${n}_nbProjects_v2`}nbProjects(e,n){let t=j(this.nbProjectsKey(e,n));return t?parseInt(t,10):0}setNbProjects(e,n,t){U(this.nbProjectsKey(e,n),t.toString())}getProject(e,n,t){return j(this.projectKey(e,n,t))}cacheProject(e,n,t){U(this.projectKey(e,n,t.id),{...t,cachedAt:Date.now()})}getCachedProjects(e,n){let t=this.nbProjects(e,n);if(t<=0)return[];let a=[];for(let i=1;i<=t;i++)a.push(this.getProject(e,n,i));return a}async loadProject(e,n,t,a=!1){let i=this.getProject(e,n,t);if(i!==null&&Date.now()-(i.cachedAt??0)<Jt&&!a)return i;try{let o=A(e);await o.ready;let c=qt(await o.projectManagerStorage.loadProject(t),n,e);return this.cacheProject(e,n,c),c}catch(o){if(i!==null&&!a)return i;throw o}}async loadProjects(e,n){let t;try{t=A(e)}catch(o){return console.warn(`[ProjectRegistry] No read client for chain ${e} \u2014 returning cached projects only.`,o),this.getCachedProjects(e,n)}await t.ready;let a=this.nbProjects(e,n),i=await t.projectManagerStorage.nbProjects();i!==a&&this.setNbProjects(e,n,i);let s=Array.from({length:i},(o,c)=>c+1);return Promise.all(s.map(o=>this.loadProject(e,n,o).catch(c=>(console.error(`[ProjectRegistry] Error loading project ${o}:`,c),null))))}},rt=new ge,Jr=(r,e)=>rt.loadProjects(r,e),Yr=(r,e,n,t=!1)=>rt.loadProject(r,e,n,t);import{createWalletClient as fe,custom as he}from"viem";import{getChain as be}from"@the_library/network-config";var Se=null;typeof window<"u"&&(window.addEventListener("eip6963:announceProvider",r=>{let e=r.detail;(e.info.rdns==="io.metamask"||e.info.rdns==="io.metamask.flask")&&(Se=e.provider)}),window.dispatchEvent(new Event("eip6963:requestProvider")));var Te=class{constructor(){this.type="metamask";this.accountChangedCallbacks=new Set;this.chainChangedCallbacks=new Set;this.isListening=!1}getProvider(){return Se||(typeof window<"u"?window.ethereum:null)}isAvailable(){return!!this.getProvider()}setupListeners(){if(this.isListening)return;let e=this.getProvider();e&&typeof e.on=="function"&&(e.on("accountsChanged",n=>{let t=n[0]||"";for(let a of this.accountChangedCallbacks)a(t)}),e.on("chainChanged",n=>{let t=parseInt(n,16);for(let a of this.chainChangedCallbacks)a(t)}),this.isListening=!0)}async connect(){let e=this.getProvider();if(!e)throw new Error("MetaMask provider not found");this.setupListeners();let n=await e.request({method:"eth_requestAccounts"}),t=await e.request({method:"eth_chainId"});return{address:n[0],chainId:parseInt(t,16)}}async getAccounts(){let e=this.getProvider();if(!e)return[];try{return await e.request({method:"eth_accounts"})||[]}catch{return[]}}async getChainId(){let e=this.getProvider();if(!e)return 0;try{let n=await e.request({method:"eth_chainId"});return parseInt(n,16)}catch{return 0}}async requestSwitchChain(e){let n=this.getProvider();if(!n)throw new Error("MetaMask provider not found");let t="0x"+e.toString(16);try{await n.request({method:"wallet_switchEthereumChain",params:[{chainId:t}]})}catch(a){if(a.code===4902){let i=be(e);if(!i)throw new Error(`No configuration found for chain ID: ${e}`);await n.request({method:"wallet_addEthereumChain",params:[{chainId:t,chainName:i.name,rpcUrls:[i.rpc],blockExplorerUrls:[i.explorer],nativeCurrency:{decimals:i.decimals||18,name:i.name,symbol:i.symbol}}]})}else throw a}}async sendTransaction(e,n){let t=this.getProvider();if(!t)throw new Error("MetaMask provider not found");let a=await this.getAccounts();if(a.length===0)throw new Error("No accounts connected");let i=P(be(n));return await fe({account:a[0],chain:i,transport:he(t)}).sendTransaction(e)}async signMessage(e){let n=this.getProvider();if(!n)throw new Error("MetaMask provider not found");let t=await this.getAccounts();if(t.length===0)throw new Error("No accounts connected");return await fe({account:t[0],transport:he(n)}).signMessage({account:t[0],message:e})}async getWalletClient(e){let n=this.getProvider();if(!n)throw new Error("MetaMask provider not found");let t=await this.getAccounts();if(t.length===0)throw new Error("No accounts connected");let a=P(be(e));return fe({account:t[0],chain:a,transport:he(n)})}onAccountChanged(e){return this.setupListeners(),this.accountChangedCallbacks.add(e),()=>{this.accountChangedCallbacks.delete(e)}}onChainChanged(e){return this.setupListeners(),this.chainChangedCallbacks.add(e),()=>{this.chainChangedCallbacks.delete(e)}}disconnect(){}};function ta(){return new Te}export{_e as a,w as b,Le as c,F as d,f as e,Z as f,Q as g,M as h,gn as i,wt as j,At as k,A as l,ee as m,Tn as n,wn as o,k as p,Ct as q,T as r,Nn as s,ne as t,re as u,vt as v,Pt as w,Rt as x,xt as y,ae as z,z as A,qe as B,Bt as C,$t as D,ir as E,Je as F,se as G,Ar as H,Nr as I,Er as J,Wt as K,Cr as L,vr as M,Rr as N,xr as O,_r as P,Or as Q,Dr as R,Kt as S,C as T,pe as U,Mr as V,kr as W,jr as X,Ur as Y,tt as Z,nt as _,de as $,zr as aa,qt as ba,Jt as ca,Jr as da,Yr as ea,Te as fa,ta as ga};
|
|
7
|
+
//# sourceMappingURL=chunk-34UDKDMR.js.map
|