@campnetwork/origin 1.3.0-alpha.8 → 1.3.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/dist/core.cjs CHANGED
@@ -34,16 +34,16 @@ return"function"==typeof this.signer.getChainId?yield this.signer.getChainId():4
34
34
  }))}}
35
35
  /**
36
36
  * Adapter for custom signer implementations
37
- */class u{constructor(e){this.type="custom",this.signer=e}getAddress(){return a(this,void 0,void 0,(function*(){if("function"==typeof this.signer.getAddress)return yield this.signer.getAddress();if(this.signer.address)return this.signer.address;throw new Error("Custom signer must implement getAddress() or have address property")}))}signMessage(e){return a(this,void 0,void 0,(function*(){if("function"!=typeof this.signer.signMessage)throw new Error("Custom signer must implement signMessage()");return yield this.signer.signMessage(e)}))}signTypedData(e,t,n){return a(this,void 0,void 0,(function*(){if("function"!=typeof this.signer.signTypedData)throw new Error("Custom signer must implement signTypedData()");return yield this.signer.signTypedData(e,t,n)}))}getChainId(){return a(this,void 0,void 0,(function*(){if("function"==typeof this.signer.getChainId){const e=yield this.signer.getChainId();return"bigint"==typeof e?Number(e):e}return void 0!==this.signer.chainId?"bigint"==typeof this.signer.chainId?Number(this.signer.chainId):this.signer.chainId:484;
37
+ */class p{constructor(e){this.type="custom",this.signer=e}getAddress(){return a(this,void 0,void 0,(function*(){if("function"==typeof this.signer.getAddress)return yield this.signer.getAddress();if(this.signer.address)return this.signer.address;throw new Error("Custom signer must implement getAddress() or have address property")}))}signMessage(e){return a(this,void 0,void 0,(function*(){if("function"!=typeof this.signer.signMessage)throw new Error("Custom signer must implement signMessage()");return yield this.signer.signMessage(e)}))}signTypedData(e,t,n){return a(this,void 0,void 0,(function*(){if("function"!=typeof this.signer.signTypedData)throw new Error("Custom signer must implement signTypedData()");return yield this.signer.signTypedData(e,t,n)}))}getChainId(){return a(this,void 0,void 0,(function*(){if("function"==typeof this.signer.getChainId){const e=yield this.signer.getChainId();return"bigint"==typeof e?Number(e):e}return void 0!==this.signer.chainId?"bigint"==typeof this.signer.chainId?Number(this.signer.chainId):this.signer.chainId:484;
38
38
  // Default to mainnet
39
39
  }))}}
40
40
  /**
41
41
  * Factory function to create appropriate adapter based on signer type
42
- */function p(e){
42
+ */function u(e){
43
43
  // Check for viem WalletClient
44
44
  return e.transport&&e.chain&&"function"==typeof e.signMessage?new o(e):
45
45
  // Check for ethers signer (v5 or v6)
46
- e._isSigner||e.provider&&"function"==typeof e.signMessage?new d(e):new u(e)}
46
+ e._isSigner||e.provider&&"function"==typeof e.signMessage?new d(e):new p(e)}
47
47
  /**
48
48
  * Browser localStorage adapter
49
49
  */class l{getItem(e){return a(this,void 0,void 0,(function*(){return"undefined"==typeof localStorage?null:localStorage.getItem(e)}))}setItem(e,t){return a(this,void 0,void 0,(function*(){"undefined"!=typeof localStorage&&localStorage.setItem(e,t)}))}removeItem(e){return a(this,void 0,void 0,(function*(){"undefined"!=typeof localStorage&&localStorage.removeItem(e)}))}}
@@ -56,23 +56,19 @@ e._isSigner||e.provider&&"function"==typeof e.signMessage?new d(e):new u(e)}
56
56
  * @param chain The chain to use
57
57
  * @param rpcUrl Optional RPC URL (defaults to chain's default RPC)
58
58
  * @returns WalletClient
59
- */const c={id:123420001114,name:"Basecamp",nativeCurrency:{decimals:18,name:"Camp",symbol:"CAMP"},rpcUrls:{default:{http:["https://rpc-campnetwork.xyz","https://rpc.basecamp.t.raas.gelato.cloud"]}},blockExplorers:{default:{name:"Explorer",url:"https://basecamp.cloud.blockscout.com/"}}},m={id:484,name:"Camp Network",nativeCurrency:{decimals:18,name:"Camp",symbol:"CAMP"},rpcUrls:{default:{http:["https://rpc.camp.raas.gelato.cloud/"]}},blockExplorers:{default:{name:"Explorer",url:"https://camp.cloud.blockscout.com/"}}};class h extends Error{constructor(e,t){super(e),this.name="APIError",this.statusCode=t||500,Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:this.statusCode||500}}}class T extends Error{constructor(e){super(e),this.name="ValidationError",Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:400}}}class f extends Error{constructor(e){super(e),this.name="AuthenticationError",Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:401}}}class v extends Error{constructor(e){super(e),this.name="WalletError",Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:400}}}class A extends Error{constructor(e,t){super(e),this.name="ContractError",this.contractName=null==t?void 0:t.contractName,this.methodName=null==t?void 0:t.methodName,Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:400,contractName:this.contractName,methodName:this.methodName}}}function w(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch(t){return String(e)}}
59
+ */const c={id:123420001114,name:"Basecamp",nativeCurrency:{decimals:18,name:"Camp",symbol:"CAMP"},rpcUrls:{default:{http:["https://rpc-campnetwork.xyz","https://rpc.basecamp.t.raas.gelato.cloud"]}},blockExplorers:{default:{name:"Explorer",url:"https://basecamp.cloud.blockscout.com/"}}},m={id:484,name:"Camp Network",nativeCurrency:{decimals:18,name:"Camp",symbol:"CAMP"},rpcUrls:{default:{http:["https://rpc.camp.raas.gelato.cloud/"]}},blockExplorers:{default:{name:"Explorer",url:"https://camp.cloud.blockscout.com/"}}};class h extends Error{constructor(e,t){super(e),this.name="APIError",this.statusCode=t||500,Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:this.statusCode||500}}}class T extends Error{constructor(e){super(e),this.name="ValidationError",Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:400}}}class f extends Error{constructor(e){super(e),this.name="AuthenticationError",Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:401}}}class v extends Error{constructor(e){super(e),this.name="WalletError",Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:400}}}class w extends Error{constructor(e,t){super(e),this.name="ContractError",this.contractName=null==t?void 0:t.contractName,this.methodName=null==t?void 0:t.methodName,Error.captureStackTrace(this,this.constructor)}toJSON(){return{error:this.name,message:this.message,statusCode:400,contractName:this.contractName,methodName:this.methodName}}}function A(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch(t){return String(e)}}
60
60
  // @ts-ignore
61
- let I=null,g=null,b=null;const C=t=>{var n;const i=b||c;return g&&(null===(n=g.chain)||void 0===n?void 0:n.id)===i.id||(g=e.createPublicClient({chain:i,transport:e.http()})),g};var E=[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"UPGRADE_INTERFACE_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"appRegistry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract AppRegistry"}],stateMutability:"view"},{type:"function",name:"approve",inputs:[{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"balanceOf",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"dataStatus",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint8",internalType:"enum IIpNFT.DataStatus"}],stateMutability:"view"},{type:"function",name:"disputeModule",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"erc6551Account",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC6551Account"}],stateMutability:"view"},{type:"function",name:"erc6551Registry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC6551Registry"}],stateMutability:"view"},{type:"function",name:"finalizeDelete",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getAccount",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"account",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getApproved",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getTerms",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",internalType:"struct IIpNFT.LicenseTerms",components:[{name:"price",type:"uint128",internalType:"uint128"},{name:"duration",type:"uint32",internalType:"uint32"},{name:"royaltyBps",type:"uint16",internalType:"uint16"},{name:"paymentToken",type:"address",internalType:"address"},{name:"licenseType",type:"uint8",internalType:"enum IIpNFT.LicenseType"}]}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[{name:"name_",type:"string",internalType:"string"},{name:"symbol_",type:"string",internalType:"string"},{name:"maxTermDuration_",type:"uint256",internalType:"uint256"},{name:"signer_",type:"address",internalType:"address"},{name:"wCAMP_",type:"address",internalType:"address"},{name:"minTermDuration_",type:"uint256",internalType:"uint256"},{name:"minPrice_",type:"uint256",internalType:"uint256"},{name:"maxRoyaltyBps_",type:"uint256",internalType:"uint256"},{name:"registry_",type:"address",internalType:"contract IERC6551Registry"},{name:"implementation_",type:"address",internalType:"contract IERC6551Account"},{name:"appRegistry_",type:"address",internalType:"contract AppRegistry"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isApprovedForAll",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"operator",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"markDisputed",inputs:[{name:"_tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"marketPlace",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IMarketplace"}],stateMutability:"view"},{type:"function",name:"maxRoyaltyBps",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxTermDuration",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"minPrice",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"minTermDuration",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"mintWithSignature",inputs:[{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"creatorContentHash",type:"bytes32",internalType:"bytes32"},{name:"uri",type:"string",internalType:"string"},{name:"licenseTerms",type:"tuple",internalType:"struct IIpNFT.LicenseTerms",components:[{name:"price",type:"uint128",internalType:"uint128"},{name:"duration",type:"uint32",internalType:"uint32"},{name:"royaltyBps",type:"uint16",internalType:"uint16"},{name:"paymentToken",type:"address",internalType:"address"},{name:"licenseType",type:"uint8",internalType:"enum IIpNFT.LicenseType"}]},{name:"deadline",type:"uint256",internalType:"uint256"},{name:"parents",type:"uint256[]",internalType:"uint256[]"},{name:"isIP",type:"bool",internalType:"bool"},{name:"appId",type:"string",internalType:"string"},{name:"signature",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"paused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"proxiableUUID",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setAppRegistry",inputs:[{name:"_appRegistry",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setApprovalForAll",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"approved",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setDisputeModule",inputs:[{name:"_disputeModule",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMarketPlace",inputs:[{name:"_marketPlace",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setSigner",inputs:[{name:"_signer",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"signer",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"tokenInfo",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",internalType:"struct IIpNFT.TokenInfo",components:[{name:"tokenURI",type:"string",internalType:"string"},{name:"isIP",type:"bool",internalType:"bool"},{name:"contentHash",type:"bytes32",internalType:"bytes32"},{name:"terms",type:"tuple",internalType:"struct IIpNFT.LicenseTerms",components:[{name:"price",type:"uint128",internalType:"uint128"},{name:"duration",type:"uint32",internalType:"uint32"},{name:"royaltyBps",type:"uint16",internalType:"uint16"},{name:"paymentToken",type:"address",internalType:"address"},{name:"licenseType",type:"uint8",internalType:"enum IIpNFT.LicenseType"}]},{name:"status",type:"uint8",internalType:"enum IIpNFT.DataStatus"},{name:"appId",type:"string",internalType:"string"}]}],stateMutability:"view"},{type:"function",name:"tokenURI",inputs:[{name:"_tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"transferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateTerms",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"newTerms",type:"tuple",internalType:"struct IIpNFT.LicenseTerms",components:[{name:"price",type:"uint128",internalType:"uint128"},{name:"duration",type:"uint32",internalType:"uint32"},{name:"royaltyBps",type:"uint16",internalType:"uint16"},{name:"paymentToken",type:"address",internalType:"address"},{name:"licenseType",type:"uint8",internalType:"enum IIpNFT.LicenseType"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgradeToAndCall",inputs:[{name:"newImplementation",type:"address",internalType:"address"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"function",name:"wCAMP",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"event",name:"AccessPurchased",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"buyer",type:"address",indexed:!0,internalType:"address"},{name:"periods",type:"uint32",indexed:!1,internalType:"uint32"},{name:"newExpiry",type:"uint256",indexed:!1,internalType:"uint256"},{name:"amountPaid",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"AgentRegistered",inputs:[{name:"agentId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"ipNftId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"agentAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"AppRegistryUpdated",inputs:[{name:"appRegistry",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Approval",inputs:[{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"approved",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"ApprovalForAll",inputs:[{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"operator",type:"address",indexed:!0,internalType:"address"},{name:"approved",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"ChildIpTagged",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"childIp",type:"uint256",indexed:!0,internalType:"uint256"},{name:"parentIp",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"DataDeleted",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"DataMinted",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"},{name:"contentHash",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"parents",type:"uint256[]",indexed:!1,internalType:"uint256[]"}],anonymous:!1},{type:"event",name:"DisputeAssertion",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"counterEvidenceHash",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"DisputeCancelled",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"DisputeJudged",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"judgement",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"DisputeModuleUpdated",inputs:[{name:"disputeModule",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"DisputeRaised",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"initiator",type:"address",indexed:!0,internalType:"address"},{name:"targetId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"disputeTag",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MarketPlaceUpdated",inputs:[{name:"marketPlace",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ParentIpsSet",inputs:[{name:"childIpId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"parentIds",type:"uint256[]",indexed:!1,internalType:"uint256[]"},{name:"totalRoyaltyBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"account",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"ProtocolFeeUpdated",inputs:[{name:"newFeeBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"RoyaltyPaid",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"royaltyAmount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"creator",type:"address",indexed:!1,internalType:"address"},{name:"protocolAmount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SignerUpdated",inputs:[{name:"signer",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"StatusUpdated",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"status",type:"uint8",indexed:!1,internalType:"enum IIpNFT.DataStatus"}],anonymous:!1},{type:"event",name:"TermsUpdated",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"newPrice",type:"uint128",indexed:!1,internalType:"uint128"},{name:"newDuration",type:"uint32",indexed:!1,internalType:"uint32"},{name:"newRoyaltyBps",type:"uint16",indexed:!1,internalType:"uint16"},{name:"paymentToken",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"Transfer",inputs:[{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"TreasuryUpdated",inputs:[{name:"newTreasury",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Unpaused",inputs:[{name:"account",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Voted",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"voter",type:"address",indexed:!0,internalType:"address"},{name:"support",type:"bool",indexed:!1,internalType:"bool"},{name:"weight",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"error",name:"AddressEmptyCode",inputs:[{name:"target",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967InvalidImplementation",inputs:[{name:"implementation",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967NonPayable",inputs:[]},{type:"error",name:"ERC721IncorrectOwner",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InsufficientApproval",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC721InvalidApprover",inputs:[{name:"approver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOperator",inputs:[{name:"operator",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidReceiver",inputs:[{name:"receiver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidSender",inputs:[{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"ERC721NonexistentToken",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"EnforcedPause",inputs:[]},{type:"error",name:"ExpectedPause",inputs:[]},{type:"error",name:"FailedCall",inputs:[]},{type:"error",name:"InvalidDeadline",inputs:[]},{type:"error",name:"InvalidDuration",inputs:[]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPaymentToken",inputs:[]},{type:"error",name:"InvalidPrice",inputs:[]},{type:"error",name:"InvalidRoyalty",inputs:[]},{type:"error",name:"InvalidSignature",inputs:[]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotTokenOwner",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"TokenAlreadyExists",inputs:[]},{type:"error",name:"UUPSUnauthorizedCallContext",inputs:[]},{type:"error",name:"UUPSUnsupportedProxiableUUID",inputs:[{name:"slot",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"Unauthorized",inputs:[]}],S=[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"MAX_PARENTS",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"UPGRADE_INTERFACE_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"buyAccess",inputs:[{name:"buyer",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"expectedPrice",type:"uint256",internalType:"uint256"},{name:"expectedDuration",type:"uint32",internalType:"uint32"},{name:"expectedPaymentToken",type:"address",internalType:"address"},{name:"expectedProtocolFeeBps",type:"uint16",internalType:"uint16"},{name:"expectedAppFeeBps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"payable"},{type:"function",name:"hasParentIp",inputs:[{name:"ipId",type:"uint256",internalType:"uint256"},{name:"parent",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[{name:"dataNFT_",type:"address",internalType:"address"},{name:"protocolFeeBps_",type:"uint16",internalType:"uint16"},{name:"treasury_",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"ipToken",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IIpNFT"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parentRoyaltyPercent",inputs:[{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"paused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"protocolFeeBps",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"proxiableUUID",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"royaltyStack",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"setParentIpsAndRoyaltyPercents",inputs:[{name:"childIpId",type:"uint256",internalType:"uint256"},{name:"parents",type:"uint256[]",internalType:"uint256[]"},{name:"creator",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"subscriptionExpiry",inputs:[{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"treasury",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateProtocolFee",inputs:[{name:"newFeeBps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateTreasury",inputs:[{name:"newTreasury",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgradeToAndCall",inputs:[{name:"newImplementation",type:"address",internalType:"address"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"event",name:"AccessPurchased",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"buyer",type:"address",indexed:!0,internalType:"address"},{name:"periods",type:"uint32",indexed:!1,internalType:"uint32"},{name:"newExpiry",type:"uint256",indexed:!1,internalType:"uint256"},{name:"amountPaid",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"AgentRegistered",inputs:[{name:"agentId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"ipNftId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"agentAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"AppRegistryUpdated",inputs:[{name:"appRegistry",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ChildIpTagged",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"childIp",type:"uint256",indexed:!0,internalType:"uint256"},{name:"parentIp",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"DataDeleted",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"DataMinted",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"},{name:"contentHash",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"parents",type:"uint256[]",indexed:!1,internalType:"uint256[]"}],anonymous:!1},{type:"event",name:"DisputeAssertion",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"counterEvidenceHash",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"DisputeCancelled",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"DisputeJudged",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"judgement",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"DisputeModuleUpdated",inputs:[{name:"disputeModule",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"DisputeRaised",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"initiator",type:"address",indexed:!0,internalType:"address"},{name:"targetId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"disputeTag",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MarketPlaceUpdated",inputs:[{name:"marketPlace",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ParentIpsSet",inputs:[{name:"childIpId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"parentIds",type:"uint256[]",indexed:!1,internalType:"uint256[]"},{name:"totalRoyaltyBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"account",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"ProtocolFeeUpdated",inputs:[{name:"newFeeBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"RoyaltyPaid",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"royaltyAmount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"creator",type:"address",indexed:!1,internalType:"address"},{name:"protocolAmount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SignerUpdated",inputs:[{name:"signer",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"StatusUpdated",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"status",type:"uint8",indexed:!1,internalType:"enum IIpNFT.DataStatus"}],anonymous:!1},{type:"event",name:"TermsUpdated",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"newPrice",type:"uint128",indexed:!1,internalType:"uint128"},{name:"newDuration",type:"uint32",indexed:!1,internalType:"uint32"},{name:"newRoyaltyBps",type:"uint16",indexed:!1,internalType:"uint16"},{name:"paymentToken",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"TreasuryUpdated",inputs:[{name:"newTreasury",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Unpaused",inputs:[{name:"account",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Voted",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"voter",type:"address",indexed:!0,internalType:"address"},{name:"support",type:"bool",indexed:!1,internalType:"bool"},{name:"weight",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"error",name:"AddressEmptyCode",inputs:[{name:"target",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967InvalidImplementation",inputs:[{name:"implementation",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967NonPayable",inputs:[]},{type:"error",name:"EnforcedPause",inputs:[]},{type:"error",name:"ExpectedPause",inputs:[]},{type:"error",name:"FailedCall",inputs:[]},{type:"error",name:"FeesExceedMaximum",inputs:[]},{type:"error",name:"FeesMismatch",inputs:[]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidLicenseType",inputs:[]},{type:"error",name:"InvalidParentIp",inputs:[]},{type:"error",name:"InvalidPayment",inputs:[]},{type:"error",name:"InvalidPrice",inputs:[]},{type:"error",name:"InvalidRoyalty",inputs:[]},{type:"error",name:"MaxParentsExceeded",inputs:[]},{type:"error",name:"MaxRoyaltyExceeded",inputs:[]},{type:"error",name:"NoSubscriptionFound",inputs:[]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"ParentAlreadyExists",inputs:[]},{type:"error",name:"ParentIpAlreadyDeleted",inputs:[]},{type:"error",name:"ParentIpAlreadyDisputed",inputs:[]},{type:"error",name:"SubscriptionNotAllowed",inputs:[]},{type:"error",name:"TermsMismatch",inputs:[]},{type:"error",name:"UUPSUnauthorizedCallContext",inputs:[]},{type:"error",name:"UUPSUnsupportedProxiableUUID",inputs:[{name:"slot",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"Unauthorized",inputs:[]},{type:"error",name:"ZeroAddress",inputs:[]}],D=[{type:"receive",stateMutability:"payable"},{type:"function",name:"execute",inputs:[{name:"to",type:"address",internalType:"address"},{name:"value",type:"uint256",internalType:"uint256"},{name:"data",type:"bytes",internalType:"bytes"},{name:"operation",type:"uint8",internalType:"uint8"}],outputs:[{name:"result",type:"bytes",internalType:"bytes"}],stateMutability:"payable"},{type:"function",name:"isValidSignature",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"},{name:"signature",type:"bytes",internalType:"bytes"}],outputs:[{name:"magicValue",type:"bytes4",internalType:"bytes4"}],stateMutability:"view"},{type:"function",name:"isValidSigner",inputs:[{name:"signer",type:"address",internalType:"address"},{name:"",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bytes4",internalType:"bytes4"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"state",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"}],P=[{inputs:[{internalType:"address",name:"_marketplace",type:"address"},{internalType:"address",name:"_ipNFT",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"EmptyPurchaseList",type:"error"},{inputs:[],name:"InvalidTotalPayment",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"string",name:"reason",type:"string"}],name:"PurchaseFailed",type:"error"},{inputs:[],name:"RefundFailed",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint256",name:"count",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalPaid",type:"uint256"}],name:"BulkPurchaseExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint256",name:"successCount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"failureCount",type:"uint256"},{indexed:!1,internalType:"uint256[]",name:"failedTokenIds",type:"uint256[]"}],name:"BulkPurchasePartial",type:"event"},{inputs:[{internalType:"address",name:"buyer",type:"address"},{components:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"expectedPrice",type:"uint256"},{internalType:"uint32",name:"expectedDuration",type:"uint32"},{internalType:"address",name:"expectedPaymentToken",type:"address"}],internalType:"struct IBatchPurchase.BuyParams[]",name:"purchases",type:"tuple[]"}],name:"bulkBuyAccess",outputs:[{internalType:"uint256",name:"totalPaid",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"buyer",type:"address"},{components:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"expectedPrice",type:"uint256"},{internalType:"uint32",name:"expectedDuration",type:"uint32"},{internalType:"address",name:"expectedPaymentToken",type:"address"}],internalType:"struct IBatchPurchase.BuyParams[]",name:"purchases",type:"tuple[]"}],name:"bulkBuyAccessTolerant",outputs:[{components:[{internalType:"uint256",name:"successCount",type:"uint256"},{internalType:"uint256",name:"failureCount",type:"uint256"},{internalType:"uint256",name:"totalSpent",type:"uint256"},{internalType:"uint256",name:"refundAmount",type:"uint256"},{internalType:"uint256[]",name:"failedTokenIds",type:"uint256[]"}],internalType:"struct IBatchPurchase.TolerantResult",name:"result",type:"tuple"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"}],name:"buildPurchaseParams",outputs:[{components:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"expectedPrice",type:"uint256"},{internalType:"uint32",name:"expectedDuration",type:"uint32"},{internalType:"address",name:"expectedPaymentToken",type:"address"}],internalType:"struct IBatchPurchase.BuyParams[]",name:"purchases",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"}],name:"checkActiveStatus",outputs:[{internalType:"bool[]",name:"activeFlags",type:"bool[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"ipNFT",outputs:[{internalType:"contract IIpNFT",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketplace",outputs:[{internalType:"contract IMarketplace",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"}],name:"previewBulkCost",outputs:[{components:[{internalType:"uint256",name:"totalNativeCost",type:"uint256"},{internalType:"uint256",name:"totalERC20Cost",type:"uint256"},{internalType:"uint256",name:"validCount",type:"uint256"},{internalType:"uint256[]",name:"invalidTokenIds",type:"uint256[]"}],internalType:"struct IBatchPurchase.BulkCostPreview",name:"preview",type:"tuple"}],stateMutability:"view",type:"function"}],R=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"address",name:"target",type:"address"}],name:"AddressEmptyCode",type:"error"},{inputs:[],name:"AlreadyVoted",type:"error"},{inputs:[],name:"CoolDownPeriodActive",type:"error"},{inputs:[],name:"CoolDownPeriodOver",type:"error"},{inputs:[{internalType:"address",name:"implementation",type:"address"}],name:"ERC1967InvalidImplementation",type:"error"},{inputs:[],name:"ERC1967NonPayable",type:"error"},{inputs:[],name:"EvidenceAlreadyUsed",type:"error"},{inputs:[],name:"FailedCall",type:"error"},{inputs:[],name:"InvalidBondFeeBps",type:"error"},{inputs:[],name:"InvalidChildIpId",type:"error"},{inputs:[],name:"InvalidDisputeStatus",type:"error"},{inputs:[],name:"InvalidDisputeTag",type:"error"},{inputs:[],name:"InvalidEvidenceHash",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidTargetIp",type:"error"},{inputs:[],name:"NoVotingPower",type:"error"},{inputs:[],name:"NotAParentIp",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"NotInitiator",type:"error"},{inputs:[],name:"NotTokenOwner",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"ParentNotDisputed",type:"error"},{inputs:[],name:"SelfAssertionNotAllowed",type:"error"},{inputs:[],name:"StakedAfterDispute",type:"error"},{inputs:[],name:"TagNotAllowed",type:"error"},{inputs:[],name:"UUPSUnauthorizedCallContext",type:"error"},{inputs:[{internalType:"bytes32",name:"slot",type:"bytes32"}],name:"UUPSUnsupportedProxiableUUID",type:"error"},{inputs:[],name:"VotingPeriodActive",type:"error"},{inputs:[],name:"VotingPeriodOver",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint32",name:"periods",type:"uint32"},{indexed:!1,internalType:"uint256",name:"newExpiry",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amountPaid",type:"uint256"}],name:"AccessPurchased",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"agentId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"ipNftId",type:"uint256"},{indexed:!1,internalType:"address",name:"agentAddress",type:"address"}],name:"AgentRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"appRegistry",type:"address"}],name:"AppRegistryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"uint256",name:"childIp",type:"uint256"},{indexed:!1,internalType:"uint256",name:"parentIp",type:"uint256"}],name:"ChildIpTagged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"}],name:"DataDeleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"bytes32",name:"contentHash",type:"bytes32"},{indexed:!1,internalType:"uint256[]",name:"parents",type:"uint256[]"}],name:"DataMinted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"counterEvidenceHash",type:"bytes32"}],name:"DisputeAssertion",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"}],name:"DisputeCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!1,internalType:"bool",name:"judgement",type:"bool"}],name:"DisputeJudged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"disputeModule",type:"address"}],name:"DisputeModuleUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"initiator",type:"address"},{indexed:!0,internalType:"uint256",name:"targetId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"disputeTag",type:"bytes32"}],name:"DisputeRaised",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"marketPlace",type:"address"}],name:"MarketPlaceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"childIpId",type:"uint256"},{indexed:!1,internalType:"uint256[]",name:"parentIds",type:"uint256[]"},{indexed:!1,internalType:"uint16",name:"totalRoyaltyBps",type:"uint16"}],name:"ParentIpsSet",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint16",name:"newFeeBps",type:"uint16"}],name:"ProtocolFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"royaltyAmount",type:"uint256"},{indexed:!1,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"uint256",name:"protocolAmount",type:"uint256"}],name:"RoyaltyPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"signer",type:"address"}],name:"SignerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"enum IIpNFT.DataStatus",name:"status",type:"uint8"}],name:"StatusUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint128",name:"newPrice",type:"uint128"},{indexed:!1,internalType:"uint32",name:"newDuration",type:"uint32"},{indexed:!1,internalType:"uint16",name:"newRoyaltyBps",type:"uint16"},{indexed:!1,internalType:"address",name:"paymentToken",type:"address"}],name:"TermsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newTreasury",type:"address"}],name:"TreasuryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"voter",type:"address"},{indexed:!1,internalType:"bool",name:"support",type:"bool"},{indexed:!1,internalType:"uint256",name:"weight",type:"uint256"}],name:"Voted",type:"event"},{inputs:[],name:"UPGRADE_INTERFACE_VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"cancelDispute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"bytes32",name:"_counterEvidenceHash",type:"bytes32"}],name:"disputeAssertion",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"disputeBond",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeCoolDownPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeCounter",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeJudgementPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeQuorum",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeToken",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"disputes",outputs:[{internalType:"address",name:"initiator",type:"address"},{internalType:"uint256",name:"targetId",type:"uint256"},{internalType:"bytes32",name:"disputeTag",type:"bytes32"},{internalType:"bytes32",name:"disputeEvidenceHash",type:"bytes32"},{internalType:"bytes32",name:"counterEvidenceHash",type:"bytes32"},{internalType:"uint256",name:"disputeTimestamp",type:"uint256"},{internalType:"uint256",name:"assertionTimestamp",type:"uint256"},{internalType:"uint256",name:"yesVotes",type:"uint256"},{internalType:"uint256",name:"noVotes",type:"uint256"},{internalType:"enum DisputeModule.DisputeStatus",name:"status",type:"uint8"},{internalType:"uint256",name:"bondAmount",type:"uint256"},{internalType:"uint256",name:"protocolFeeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"hasVoted",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IIpNFT",name:"_ipToken",type:"address"},{internalType:"contract IMarketplace",name:"_marketplace",type:"address"},{internalType:"contract IERC20",name:"_disputeToken",type:"address"},{internalType:"uint256",name:"_disputeBond",type:"uint256"},{internalType:"uint256",name:"_disputeCoolDownPeriod",type:"uint256"},{internalType:"uint256",name:"_disputeJudgementPeriod",type:"uint256"},{internalType:"uint16",name:"_bondFeeBPS",type:"uint16"},{internalType:"uint256",name:"_stakingThreshold",type:"uint256"},{internalType:"contract ICampStakingVault",name:"_stakingVault",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"ipToken",outputs:[{internalType:"contract IIpNFT",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"isUsedEvidenceHash",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketplace",outputs:[{internalType:"contract IMarketplace",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolDisputeFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_targetIpId",type:"uint256"},{internalType:"bytes32",name:"_disputeEvidenceHash",type:"bytes32"},{internalType:"bytes32",name:"_disputeTag",type:"bytes32"}],name:"raiseDispute",outputs:[{internalType:"uint256",name:"id",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"resolveDispute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_disputeQuorum",type:"uint256"}],name:"setDisputeQuorum",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stakingThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"stakingVault",outputs:[{internalType:"contract ICampStakingVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_childIpId",type:"uint256"},{internalType:"uint256",name:"_infringerDisputeId",type:"uint256"}],name:"tagChildIp",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"bool",name:"support",type:"bool"}],name:"voteOnDispute",outputs:[],stateMutability:"nonpayable",type:"function"}],_=[{type:"constructor",inputs:[{name:"ipNFT_",type:"address",internalType:"contract IIpNFT"},{name:"exchangeRate_",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"exchangeRate",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"fractionalize",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getTokenForNFT",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ipNFT",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IIpNFT"}],stateMutability:"view"},{type:"function",name:"nftToToken",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"contract FractionalToken"}],stateMutability:"view"},{type:"function",name:"onERC721Received",inputs:[{name:"",type:"address",internalType:"address"},{name:"",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bytes4",internalType:"bytes4"}],stateMutability:"pure"},{type:"function",name:"redeem",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Fractionalized",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"depositor",type:"address",indexed:!0,internalType:"address"},{name:"token",type:"address",indexed:!1,internalType:"address"},{name:"supply",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"Redeemed",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"redeemer",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"AlreadyFractionalized",inputs:[]},{type:"error",name:"InsufficientFractionalTokens",inputs:[]},{type:"error",name:"InvalidExchangeRate",inputs:[]},{type:"error",name:"NotFractionalized",inputs:[]},{type:"error",name:"NotTokenOwner",inputs:[]},{type:"error",name:"ZeroAddress",inputs:[]}],x=[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"UPGRADE_INTERFACE_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"appExists",inputs:[{name:"",type:"string",internalType:"string"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"apps",inputs:[{name:"",type:"string",internalType:"string"}],outputs:[{name:"treasury",type:"address",internalType:"address"},{name:"revenueShareBps",type:"uint16",internalType:"uint16"},{name:"isActive",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"deactivateApp",inputs:[{name:"appId",type:"string",internalType:"string"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getAppInfo",inputs:[{name:"appId",type:"string",internalType:"string"}],outputs:[{name:"",type:"tuple",internalType:"struct AppRegistry.AppInfo",components:[{name:"treasury",type:"address",internalType:"address"},{name:"revenueShareBps",type:"uint16",internalType:"uint16"},{name:"isActive",type:"bool",internalType:"bool"}]}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"proxiableUUID",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"reactivateApp",inputs:[{name:"appId",type:"string",internalType:"string"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"registerApp",inputs:[{name:"appId",type:"string",internalType:"string"},{name:"treasury",type:"address",internalType:"address"},{name:"revenueShareBps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateApp",inputs:[{name:"appId",type:"string",internalType:"string"},{name:"treasury",type:"address",internalType:"address"},{name:"revenueShareBps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgradeToAndCall",inputs:[{name:"newImplementation",type:"address",internalType:"address"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"event",name:"AppDeactivated",inputs:[{name:"appId",type:"string",indexed:!0,internalType:"string"}],anonymous:!1},{type:"event",name:"AppReactivated",inputs:[{name:"appId",type:"string",indexed:!0,internalType:"string"}],anonymous:!1},{type:"event",name:"AppRegistered",inputs:[{name:"appId",type:"string",indexed:!0,internalType:"string"},{name:"treasury",type:"address",indexed:!1,internalType:"address"},{name:"revenueShareBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"AppUpdated",inputs:[{name:"appId",type:"string",indexed:!0,internalType:"string"},{name:"treasury",type:"address",indexed:!1,internalType:"address"},{name:"revenueShareBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"AddressEmptyCode",inputs:[{name:"target",type:"address",internalType:"address"}]},{type:"error",name:"AppAlreadyActive",inputs:[]},{type:"error",name:"AppAlreadyExists",inputs:[]},{type:"error",name:"AppAlreadyInactive",inputs:[]},{type:"error",name:"AppNotFound",inputs:[]},{type:"error",name:"ERC1967InvalidImplementation",inputs:[{name:"implementation",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967NonPayable",inputs:[]},{type:"error",name:"FailedCall",inputs:[]},{type:"error",name:"InvalidAppId",inputs:[]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidRoyalty",inputs:[]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"UUPSUnauthorizedCallContext",inputs:[]},{type:"error",name:"UUPSUnsupportedProxiableUUID",inputs:[{name:"slot",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ZeroAddress",inputs:[]}],N="Connect with Camp Network",k=2628e3,M=86400,B=1e15,F=1,O=1e4;const U={DEVELOPMENT:{NAME:"DEVELOPMENT",AUTH_HUB_BASE_API:"https://origin-backend-iota.vercel.app",ORIGIN_DASHBOARD:"https://origin.campnetwork.xyz",DATANFT_CONTRACT_ADDRESS:"0x4d9aF5800701A4A686Df6b096A27B81486de36eB",MARKETPLACE_CONTRACT_ADDRESS:"0x68B202caA162C418d3A2DF92F29fA1CAF90C58c1",BATCH_PURCHASE_CONTRACT_ADDRESS:"0xaF0cF04DBfeeAcEdC77Dc68A91381AFB967B8518",DISPUTE_CONTRACT_ADDRESS:"0x45719337b1450b0D105cA671972be4263E6A9380",APP_REGISTRY_CONTRACT_ADDRESS:"0x2096eb980Dd590DDF690Cb698572b80552B6F9Bb",
62
- // TODO: Add actual contract addresse when deployed
63
- FRACTIONALIZER_CONTRACT_ADDRESS:"",USDC_CONTRACT_ADDRESS:"0x8a2B28364102Bea189D99A475C494330Ef2bDD0B",CHAIN:c,IPNFT_ABI:E,MARKETPLACE_ABI:S,TBA_ABI:D,BATCH_PURCHASE_ABI:P,DISPUTE_ABI:R,FRACTIONALIZER_ABI:_,APP_REGISTRY_ABI:x},PRODUCTION:{NAME:"PRODUCTION",AUTH_HUB_BASE_API:"https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev",ORIGIN_DASHBOARD:"https://origin.campnetwork.xyz",DATANFT_CONTRACT_ADDRESS:"0x39EeE1C3989f0dD543Dee60f8582F7F81F522C38",MARKETPLACE_CONTRACT_ADDRESS:"0xc69BAa987757d054455fC0f2d9797684E9FB8b9C",BATCH_PURCHASE_CONTRACT_ADDRESS:"0x31885cD2A445322067dF890bACf6CeFE9b233BCC",
64
- // TODO: Add actual contract addresses when deployed
65
- DISPUTE_CONTRACT_ADDRESS:"",FRACTIONALIZER_CONTRACT_ADDRESS:"",APP_REGISTRY_CONTRACT_ADDRESS:"",USDC_CONTRACT_ADDRESS:"",CHAIN:m,IPNFT_ABI:E,MARKETPLACE_ABI:S,TBA_ABI:D,BATCH_PURCHASE_ABI:P,DISPUTE_ABI:R,FRACTIONALIZER_ABI:_,APP_REGISTRY_ABI:x}};let $=[];const H=()=>$,j=e=>{function t(t){$.some((e=>e.info.uuid===t.detail.info.uuid))||($=[...$,t.detail],e($))}if("undefined"!=typeof window)return window.addEventListener("eip6963:announceProvider",t),window.dispatchEvent(new Event("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",t)},L=(e,t,n)=>{const s=[];let r=[],o=!1,d=0;const u=e.length;return new Promise(((p,l)=>{function y(){n(d/u*100)}function c(e,t,n){return a(this,arguments,void 0,(function*(e,t,n,a=0){var s;try{const a=null===(s=(yield i.put(t,e,{headers:{"Content-Type":e.type||"application/octet-stream"},timeout:3e5})).headers.etag)||void 0===s?void 0:s.replace(/"/g,"");if(!a)throw new Error(`Missing ETag for part ${n}`);return{ETag:a,PartNumber:n}}catch(i){if(a<3){const i=1e3*Math.pow(2,a);// Exponential backoff
61
+ let I=null,g=null,b=null;const C=t=>{var n;const i=b||c;return g&&(null===(n=g.chain)||void 0===n?void 0:n.id)===i.id||(g=e.createPublicClient({chain:i,transport:e.http()})),g};var E=[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"UPGRADE_INTERFACE_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"appRegistry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract AppRegistry"}],stateMutability:"view"},{type:"function",name:"approve",inputs:[{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"balanceOf",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"dataStatus",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint8",internalType:"enum IIpNFT.DataStatus"}],stateMutability:"view"},{type:"function",name:"disputeModule",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"erc6551Account",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC6551Account"}],stateMutability:"view"},{type:"function",name:"erc6551Registry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC6551Registry"}],stateMutability:"view"},{type:"function",name:"finalizeDelete",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getAccount",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"account",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getApproved",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getTerms",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",internalType:"struct IIpNFT.LicenseTerms",components:[{name:"price",type:"uint128",internalType:"uint128"},{name:"duration",type:"uint32",internalType:"uint32"},{name:"royaltyBps",type:"uint16",internalType:"uint16"},{name:"paymentToken",type:"address",internalType:"address"},{name:"licenseType",type:"uint8",internalType:"enum IIpNFT.LicenseType"}]}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[{name:"name_",type:"string",internalType:"string"},{name:"symbol_",type:"string",internalType:"string"},{name:"maxTermDuration_",type:"uint256",internalType:"uint256"},{name:"signer_",type:"address",internalType:"address"},{name:"wCAMP_",type:"address",internalType:"address"},{name:"minTermDuration_",type:"uint256",internalType:"uint256"},{name:"minPrice_",type:"uint256",internalType:"uint256"},{name:"maxRoyaltyBps_",type:"uint256",internalType:"uint256"},{name:"registry_",type:"address",internalType:"contract IERC6551Registry"},{name:"implementation_",type:"address",internalType:"contract IERC6551Account"},{name:"appRegistry_",type:"address",internalType:"contract AppRegistry"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isApprovedForAll",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"operator",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"markDisputed",inputs:[{name:"_tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"marketPlace",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IMarketplace"}],stateMutability:"view"},{type:"function",name:"maxRoyaltyBps",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxTermDuration",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"minPrice",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"minTermDuration",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"mintWithSignature",inputs:[{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"creatorContentHash",type:"bytes32",internalType:"bytes32"},{name:"uri",type:"string",internalType:"string"},{name:"licenseTerms",type:"tuple",internalType:"struct IIpNFT.LicenseTerms",components:[{name:"price",type:"uint128",internalType:"uint128"},{name:"duration",type:"uint32",internalType:"uint32"},{name:"royaltyBps",type:"uint16",internalType:"uint16"},{name:"paymentToken",type:"address",internalType:"address"},{name:"licenseType",type:"uint8",internalType:"enum IIpNFT.LicenseType"}]},{name:"deadline",type:"uint256",internalType:"uint256"},{name:"parents",type:"uint256[]",internalType:"uint256[]"},{name:"isIP",type:"bool",internalType:"bool"},{name:"appId",type:"string",internalType:"string"},{name:"signature",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"paused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"proxiableUUID",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setAppRegistry",inputs:[{name:"_appRegistry",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setApprovalForAll",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"approved",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setDisputeModule",inputs:[{name:"_disputeModule",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMarketPlace",inputs:[{name:"_marketPlace",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setSigner",inputs:[{name:"_signer",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"signer",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"tokenInfo",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",internalType:"struct IIpNFT.TokenInfo",components:[{name:"tokenURI",type:"string",internalType:"string"},{name:"isIP",type:"bool",internalType:"bool"},{name:"contentHash",type:"bytes32",internalType:"bytes32"},{name:"terms",type:"tuple",internalType:"struct IIpNFT.LicenseTerms",components:[{name:"price",type:"uint128",internalType:"uint128"},{name:"duration",type:"uint32",internalType:"uint32"},{name:"royaltyBps",type:"uint16",internalType:"uint16"},{name:"paymentToken",type:"address",internalType:"address"},{name:"licenseType",type:"uint8",internalType:"enum IIpNFT.LicenseType"}]},{name:"status",type:"uint8",internalType:"enum IIpNFT.DataStatus"},{name:"appId",type:"string",internalType:"string"}]}],stateMutability:"view"},{type:"function",name:"tokenURI",inputs:[{name:"_tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"transferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateTerms",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"newTerms",type:"tuple",internalType:"struct IIpNFT.LicenseTerms",components:[{name:"price",type:"uint128",internalType:"uint128"},{name:"duration",type:"uint32",internalType:"uint32"},{name:"royaltyBps",type:"uint16",internalType:"uint16"},{name:"paymentToken",type:"address",internalType:"address"},{name:"licenseType",type:"uint8",internalType:"enum IIpNFT.LicenseType"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgradeToAndCall",inputs:[{name:"newImplementation",type:"address",internalType:"address"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"function",name:"wCAMP",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"event",name:"AccessPurchased",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"buyer",type:"address",indexed:!0,internalType:"address"},{name:"periods",type:"uint32",indexed:!1,internalType:"uint32"},{name:"newExpiry",type:"uint256",indexed:!1,internalType:"uint256"},{name:"amountPaid",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"AgentRegistered",inputs:[{name:"agentId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"ipNftId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"agentAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"AppRegistryUpdated",inputs:[{name:"appRegistry",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Approval",inputs:[{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"approved",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"ApprovalForAll",inputs:[{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"operator",type:"address",indexed:!0,internalType:"address"},{name:"approved",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"ChildIpTagged",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"childIp",type:"uint256",indexed:!0,internalType:"uint256"},{name:"parentIp",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"DataDeleted",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"DataMinted",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"},{name:"contentHash",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"parents",type:"uint256[]",indexed:!1,internalType:"uint256[]"}],anonymous:!1},{type:"event",name:"DisputeAssertion",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"counterEvidenceHash",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"DisputeCancelled",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"DisputeJudged",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"judgement",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"DisputeModuleUpdated",inputs:[{name:"disputeModule",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"DisputeRaised",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"initiator",type:"address",indexed:!0,internalType:"address"},{name:"targetId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"disputeTag",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MarketPlaceUpdated",inputs:[{name:"marketPlace",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ParentIpsSet",inputs:[{name:"childIpId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"parentIds",type:"uint256[]",indexed:!1,internalType:"uint256[]"},{name:"totalRoyaltyBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"account",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"ProtocolFeeUpdated",inputs:[{name:"newFeeBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"RoyaltyPaid",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"royaltyAmount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"creator",type:"address",indexed:!1,internalType:"address"},{name:"protocolAmount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SignerUpdated",inputs:[{name:"signer",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"StatusUpdated",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"status",type:"uint8",indexed:!1,internalType:"enum IIpNFT.DataStatus"}],anonymous:!1},{type:"event",name:"TermsUpdated",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"newPrice",type:"uint128",indexed:!1,internalType:"uint128"},{name:"newDuration",type:"uint32",indexed:!1,internalType:"uint32"},{name:"newRoyaltyBps",type:"uint16",indexed:!1,internalType:"uint16"},{name:"paymentToken",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"Transfer",inputs:[{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"TreasuryUpdated",inputs:[{name:"newTreasury",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Unpaused",inputs:[{name:"account",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Voted",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"voter",type:"address",indexed:!0,internalType:"address"},{name:"support",type:"bool",indexed:!1,internalType:"bool"},{name:"weight",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"error",name:"AddressEmptyCode",inputs:[{name:"target",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967InvalidImplementation",inputs:[{name:"implementation",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967NonPayable",inputs:[]},{type:"error",name:"ERC721IncorrectOwner",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InsufficientApproval",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC721InvalidApprover",inputs:[{name:"approver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOperator",inputs:[{name:"operator",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidReceiver",inputs:[{name:"receiver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidSender",inputs:[{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"ERC721NonexistentToken",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"EnforcedPause",inputs:[]},{type:"error",name:"ExpectedPause",inputs:[]},{type:"error",name:"FailedCall",inputs:[]},{type:"error",name:"InvalidDeadline",inputs:[]},{type:"error",name:"InvalidDuration",inputs:[]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPaymentToken",inputs:[]},{type:"error",name:"InvalidPrice",inputs:[]},{type:"error",name:"InvalidRoyalty",inputs:[]},{type:"error",name:"InvalidSignature",inputs:[]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotTokenOwner",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"TokenAlreadyExists",inputs:[]},{type:"error",name:"UUPSUnauthorizedCallContext",inputs:[]},{type:"error",name:"UUPSUnsupportedProxiableUUID",inputs:[{name:"slot",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"Unauthorized",inputs:[]}],S=[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"MAX_PARENTS",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"UPGRADE_INTERFACE_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"buyAccess",inputs:[{name:"buyer",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"expectedPrice",type:"uint256",internalType:"uint256"},{name:"expectedDuration",type:"uint32",internalType:"uint32"},{name:"expectedPaymentToken",type:"address",internalType:"address"},{name:"expectedProtocolFeeBps",type:"uint16",internalType:"uint16"},{name:"expectedAppFeeBps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"payable"},{type:"function",name:"hasParentIp",inputs:[{name:"ipId",type:"uint256",internalType:"uint256"},{name:"parent",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[{name:"dataNFT_",type:"address",internalType:"address"},{name:"protocolFeeBps_",type:"uint16",internalType:"uint16"},{name:"treasury_",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"ipToken",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IIpNFT"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parentRoyaltyPercent",inputs:[{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"paused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"protocolFeeBps",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"proxiableUUID",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"royaltyStack",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"setParentIpsAndRoyaltyPercents",inputs:[{name:"childIpId",type:"uint256",internalType:"uint256"},{name:"parents",type:"uint256[]",internalType:"uint256[]"},{name:"creator",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"subscriptionExpiry",inputs:[{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"treasury",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateProtocolFee",inputs:[{name:"newFeeBps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateTreasury",inputs:[{name:"newTreasury",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgradeToAndCall",inputs:[{name:"newImplementation",type:"address",internalType:"address"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"event",name:"AccessPurchased",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"buyer",type:"address",indexed:!0,internalType:"address"},{name:"periods",type:"uint32",indexed:!1,internalType:"uint32"},{name:"newExpiry",type:"uint256",indexed:!1,internalType:"uint256"},{name:"amountPaid",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"AgentRegistered",inputs:[{name:"agentId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"ipNftId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"agentAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"AppRegistryUpdated",inputs:[{name:"appRegistry",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ChildIpTagged",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"childIp",type:"uint256",indexed:!0,internalType:"uint256"},{name:"parentIp",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"DataDeleted",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"DataMinted",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"creator",type:"address",indexed:!0,internalType:"address"},{name:"contentHash",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"parents",type:"uint256[]",indexed:!1,internalType:"uint256[]"}],anonymous:!1},{type:"event",name:"DisputeAssertion",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"counterEvidenceHash",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"DisputeCancelled",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"DisputeJudged",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"judgement",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"DisputeModuleUpdated",inputs:[{name:"disputeModule",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"DisputeRaised",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"initiator",type:"address",indexed:!0,internalType:"address"},{name:"targetId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"disputeTag",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MarketPlaceUpdated",inputs:[{name:"marketPlace",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ParentIpsSet",inputs:[{name:"childIpId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"parentIds",type:"uint256[]",indexed:!1,internalType:"uint256[]"},{name:"totalRoyaltyBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"account",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"ProtocolFeeUpdated",inputs:[{name:"newFeeBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"RoyaltyPaid",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"royaltyAmount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"creator",type:"address",indexed:!1,internalType:"address"},{name:"protocolAmount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SignerUpdated",inputs:[{name:"signer",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"StatusUpdated",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"status",type:"uint8",indexed:!1,internalType:"enum IIpNFT.DataStatus"}],anonymous:!1},{type:"event",name:"TermsUpdated",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"newPrice",type:"uint128",indexed:!1,internalType:"uint128"},{name:"newDuration",type:"uint32",indexed:!1,internalType:"uint32"},{name:"newRoyaltyBps",type:"uint16",indexed:!1,internalType:"uint16"},{name:"paymentToken",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"TreasuryUpdated",inputs:[{name:"newTreasury",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Unpaused",inputs:[{name:"account",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Voted",inputs:[{name:"id",type:"uint256",indexed:!0,internalType:"uint256"},{name:"voter",type:"address",indexed:!0,internalType:"address"},{name:"support",type:"bool",indexed:!1,internalType:"bool"},{name:"weight",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"error",name:"AddressEmptyCode",inputs:[{name:"target",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967InvalidImplementation",inputs:[{name:"implementation",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967NonPayable",inputs:[]},{type:"error",name:"EnforcedPause",inputs:[]},{type:"error",name:"ExpectedPause",inputs:[]},{type:"error",name:"FailedCall",inputs:[]},{type:"error",name:"FeesExceedMaximum",inputs:[]},{type:"error",name:"FeesMismatch",inputs:[]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidLicenseType",inputs:[]},{type:"error",name:"InvalidParentIp",inputs:[]},{type:"error",name:"InvalidPayment",inputs:[]},{type:"error",name:"InvalidPrice",inputs:[]},{type:"error",name:"InvalidRoyalty",inputs:[]},{type:"error",name:"MaxParentsExceeded",inputs:[]},{type:"error",name:"MaxRoyaltyExceeded",inputs:[]},{type:"error",name:"NoSubscriptionFound",inputs:[]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"ParentAlreadyExists",inputs:[]},{type:"error",name:"ParentIpAlreadyDeleted",inputs:[]},{type:"error",name:"ParentIpAlreadyDisputed",inputs:[]},{type:"error",name:"SubscriptionNotAllowed",inputs:[]},{type:"error",name:"TermsMismatch",inputs:[]},{type:"error",name:"UUPSUnauthorizedCallContext",inputs:[]},{type:"error",name:"UUPSUnsupportedProxiableUUID",inputs:[{name:"slot",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"Unauthorized",inputs:[]},{type:"error",name:"ZeroAddress",inputs:[]}],x=[{type:"receive",stateMutability:"payable"},{type:"function",name:"execute",inputs:[{name:"to",type:"address",internalType:"address"},{name:"value",type:"uint256",internalType:"uint256"},{name:"data",type:"bytes",internalType:"bytes"},{name:"operation",type:"uint8",internalType:"uint8"}],outputs:[{name:"result",type:"bytes",internalType:"bytes"}],stateMutability:"payable"},{type:"function",name:"isValidSignature",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"},{name:"signature",type:"bytes",internalType:"bytes"}],outputs:[{name:"magicValue",type:"bytes4",internalType:"bytes4"}],stateMutability:"view"},{type:"function",name:"isValidSigner",inputs:[{name:"signer",type:"address",internalType:"address"},{name:"",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bytes4",internalType:"bytes4"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"state",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"}],P=[{inputs:[{internalType:"address",name:"_marketplace",type:"address"},{internalType:"address",name:"_ipNFT",type:"address"},{internalType:"address",name:"_appRegistry",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"EmptyMintList",type:"error"},{inputs:[],name:"EmptyPurchaseList",type:"error"},{inputs:[],name:"InsufficientAllowance",type:"error"},{inputs:[],name:"InvalidTotalPayment",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"string",name:"reason",type:"string"}],name:"MintFailed",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"string",name:"reason",type:"string"}],name:"PurchaseFailed",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[],name:"RefundFailed",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"minter",type:"address"},{indexed:!1,internalType:"uint256",name:"count",type:"uint256"}],name:"BulkMintExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"minter",type:"address"},{indexed:!1,internalType:"uint256",name:"successCount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"failureCount",type:"uint256"},{indexed:!1,internalType:"uint256[]",name:"failedTokenIds",type:"uint256[]"}],name:"BulkMintPartial",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint256",name:"count",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalPaid",type:"uint256"}],name:"BulkPurchaseExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint256",name:"successCount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"failureCount",type:"uint256"},{indexed:!1,internalType:"uint256[]",name:"failedTokenIds",type:"uint256[]"}],name:"BulkPurchasePartial",type:"event"},{inputs:[],name:"appRegistry",outputs:[{internalType:"contract IAppRegistry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"}],name:"buildPurchaseParams",outputs:[{components:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"expectedPrice",type:"uint256"},{internalType:"uint32",name:"expectedDuration",type:"uint32"},{internalType:"address",name:"expectedPaymentToken",type:"address"},{internalType:"uint16",name:"expectedProtocolFeeBps",type:"uint16"},{internalType:"uint16",name:"expectedAppFeeBps",type:"uint16"}],internalType:"struct IBatchOperations.BuyParams[]",name:"purchases",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"buyer",type:"address"},{components:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"expectedPrice",type:"uint256"},{internalType:"uint32",name:"expectedDuration",type:"uint32"},{internalType:"address",name:"expectedPaymentToken",type:"address"},{internalType:"uint16",name:"expectedProtocolFeeBps",type:"uint16"},{internalType:"uint16",name:"expectedAppFeeBps",type:"uint16"}],internalType:"struct IBatchOperations.BuyParams[]",name:"purchases",type:"tuple[]"}],name:"bulkBuyAccess",outputs:[{internalType:"uint256",name:"totalPaid",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"buyer",type:"address"},{components:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"expectedPrice",type:"uint256"},{internalType:"uint32",name:"expectedDuration",type:"uint32"},{internalType:"address",name:"expectedPaymentToken",type:"address"},{internalType:"uint16",name:"expectedProtocolFeeBps",type:"uint16"},{internalType:"uint16",name:"expectedAppFeeBps",type:"uint16"}],internalType:"struct IBatchOperations.BuyParams[]",name:"purchases",type:"tuple[]"}],name:"bulkBuyAccessTolerant",outputs:[{components:[{internalType:"uint256",name:"successCount",type:"uint256"},{internalType:"uint256",name:"failureCount",type:"uint256"},{internalType:"uint256",name:"totalSpent",type:"uint256"},{internalType:"uint256",name:"refundAmount",type:"uint256"},{internalType:"uint256[]",name:"failedTokenIds",type:"uint256[]"}],internalType:"struct IBatchOperations.TolerantResult",name:"result",type:"tuple"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes32",name:"creatorContentHash",type:"bytes32"},{internalType:"string",name:"uri",type:"string"},{components:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"},{internalType:"uint8",name:"licenseType",type:"uint8"}],internalType:"struct IBatchOperations.LicenseTermsParam",name:"licenseTerms",type:"tuple"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint256[]",name:"parents",type:"uint256[]"},{internalType:"bool",name:"isIP",type:"bool"},{internalType:"string",name:"appId",type:"string"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct IBatchOperations.MintParams[]",name:"mints",type:"tuple[]"}],name:"bulkMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes32",name:"creatorContentHash",type:"bytes32"},{internalType:"string",name:"uri",type:"string"},{components:[{internalType:"uint128",name:"price",type:"uint128"},{internalType:"uint32",name:"duration",type:"uint32"},{internalType:"uint16",name:"royaltyBps",type:"uint16"},{internalType:"address",name:"paymentToken",type:"address"},{internalType:"uint8",name:"licenseType",type:"uint8"}],internalType:"struct IBatchOperations.LicenseTermsParam",name:"licenseTerms",type:"tuple"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint256[]",name:"parents",type:"uint256[]"},{internalType:"bool",name:"isIP",type:"bool"},{internalType:"string",name:"appId",type:"string"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct IBatchOperations.MintParams[]",name:"mints",type:"tuple[]"}],name:"bulkMintTolerant",outputs:[{components:[{internalType:"uint256",name:"successCount",type:"uint256"},{internalType:"uint256",name:"failureCount",type:"uint256"},{internalType:"uint256[]",name:"failedTokenIds",type:"uint256[]"}],internalType:"struct IBatchOperations.TolerantMintResult",name:"result",type:"tuple"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"}],name:"checkActiveStatus",outputs:[{internalType:"bool[]",name:"activeFlags",type:"bool[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"ipNFT",outputs:[{internalType:"contract IIpNFT",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketplace",outputs:[{internalType:"contract IMarketplace",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"}],name:"previewBulkCost",outputs:[{components:[{internalType:"uint256",name:"totalNativeCost",type:"uint256"},{internalType:"uint256",name:"totalERC20Cost",type:"uint256"},{internalType:"uint256",name:"validCount",type:"uint256"},{internalType:"uint256[]",name:"invalidTokenIds",type:"uint256[]"}],internalType:"struct IBatchOperations.BulkCostPreview",name:"preview",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"buyer",type:"address"},{components:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"expectedPrice",type:"uint256"},{internalType:"uint32",name:"expectedDuration",type:"uint32"},{internalType:"address",name:"expectedPaymentToken",type:"address"},{internalType:"uint16",name:"expectedProtocolFeeBps",type:"uint16"},{internalType:"uint16",name:"expectedAppFeeBps",type:"uint16"}],internalType:"struct IBatchOperations.BuyParams",name:"params",type:"tuple"}],name:"tryERC20Purchase",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],D=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"address",name:"target",type:"address"}],name:"AddressEmptyCode",type:"error"},{inputs:[],name:"AlreadyVoted",type:"error"},{inputs:[],name:"CoolDownPeriodActive",type:"error"},{inputs:[],name:"CoolDownPeriodOver",type:"error"},{inputs:[{internalType:"address",name:"implementation",type:"address"}],name:"ERC1967InvalidImplementation",type:"error"},{inputs:[],name:"ERC1967NonPayable",type:"error"},{inputs:[],name:"EvidenceAlreadyUsed",type:"error"},{inputs:[],name:"FailedCall",type:"error"},{inputs:[],name:"InvalidBondFeeBps",type:"error"},{inputs:[],name:"InvalidChildIpId",type:"error"},{inputs:[],name:"InvalidDisputeStatus",type:"error"},{inputs:[],name:"InvalidDisputeTag",type:"error"},{inputs:[],name:"InvalidEvidenceHash",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidTargetIp",type:"error"},{inputs:[],name:"NoVotingPower",type:"error"},{inputs:[],name:"NotAParentIp",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"NotInitiator",type:"error"},{inputs:[],name:"NotTokenOwner",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"ParentNotDisputed",type:"error"},{inputs:[],name:"SelfAssertionNotAllowed",type:"error"},{inputs:[],name:"StakedAfterDispute",type:"error"},{inputs:[],name:"TagNotAllowed",type:"error"},{inputs:[],name:"UUPSUnauthorizedCallContext",type:"error"},{inputs:[{internalType:"bytes32",name:"slot",type:"bytes32"}],name:"UUPSUnsupportedProxiableUUID",type:"error"},{inputs:[],name:"VotingPeriodActive",type:"error"},{inputs:[],name:"VotingPeriodOver",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint32",name:"periods",type:"uint32"},{indexed:!1,internalType:"uint256",name:"newExpiry",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amountPaid",type:"uint256"}],name:"AccessPurchased",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"agentId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"ipNftId",type:"uint256"},{indexed:!1,internalType:"address",name:"agentAddress",type:"address"}],name:"AgentRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"appRegistry",type:"address"}],name:"AppRegistryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"uint256",name:"childIp",type:"uint256"},{indexed:!1,internalType:"uint256",name:"parentIp",type:"uint256"}],name:"ChildIpTagged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"}],name:"DataDeleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"bytes32",name:"contentHash",type:"bytes32"},{indexed:!1,internalType:"uint256[]",name:"parents",type:"uint256[]"}],name:"DataMinted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"counterEvidenceHash",type:"bytes32"}],name:"DisputeAssertion",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"}],name:"DisputeCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!1,internalType:"bool",name:"judgement",type:"bool"}],name:"DisputeJudged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"disputeModule",type:"address"}],name:"DisputeModuleUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"initiator",type:"address"},{indexed:!0,internalType:"uint256",name:"targetId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"disputeTag",type:"bytes32"}],name:"DisputeRaised",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"marketPlace",type:"address"}],name:"MarketPlaceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"childIpId",type:"uint256"},{indexed:!1,internalType:"uint256[]",name:"parentIds",type:"uint256[]"},{indexed:!1,internalType:"uint16",name:"totalRoyaltyBps",type:"uint16"}],name:"ParentIpsSet",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint16",name:"newFeeBps",type:"uint16"}],name:"ProtocolFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"royaltyAmount",type:"uint256"},{indexed:!1,internalType:"address",name:"creator",type:"address"},{indexed:!1,internalType:"uint256",name:"protocolAmount",type:"uint256"}],name:"RoyaltyPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"signer",type:"address"}],name:"SignerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"enum IIpNFT.DataStatus",name:"status",type:"uint8"}],name:"StatusUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint128",name:"newPrice",type:"uint128"},{indexed:!1,internalType:"uint32",name:"newDuration",type:"uint32"},{indexed:!1,internalType:"uint16",name:"newRoyaltyBps",type:"uint16"},{indexed:!1,internalType:"address",name:"paymentToken",type:"address"}],name:"TermsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newTreasury",type:"address"}],name:"TreasuryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"voter",type:"address"},{indexed:!1,internalType:"bool",name:"support",type:"bool"},{indexed:!1,internalType:"uint256",name:"weight",type:"uint256"}],name:"Voted",type:"event"},{inputs:[],name:"UPGRADE_INTERFACE_VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"cancelDispute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"bytes32",name:"_counterEvidenceHash",type:"bytes32"}],name:"disputeAssertion",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"disputeBond",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeCoolDownPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeCounter",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeJudgementPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeQuorum",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeToken",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"disputes",outputs:[{internalType:"address",name:"initiator",type:"address"},{internalType:"uint256",name:"targetId",type:"uint256"},{internalType:"bytes32",name:"disputeTag",type:"bytes32"},{internalType:"bytes32",name:"disputeEvidenceHash",type:"bytes32"},{internalType:"bytes32",name:"counterEvidenceHash",type:"bytes32"},{internalType:"uint256",name:"disputeTimestamp",type:"uint256"},{internalType:"uint256",name:"assertionTimestamp",type:"uint256"},{internalType:"uint256",name:"yesVotes",type:"uint256"},{internalType:"uint256",name:"noVotes",type:"uint256"},{internalType:"enum DisputeModule.DisputeStatus",name:"status",type:"uint8"},{internalType:"uint256",name:"bondAmount",type:"uint256"},{internalType:"uint256",name:"protocolFeeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"hasVoted",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IIpNFT",name:"_ipToken",type:"address"},{internalType:"contract IMarketplace",name:"_marketplace",type:"address"},{internalType:"contract IERC20",name:"_disputeToken",type:"address"},{internalType:"uint256",name:"_disputeBond",type:"uint256"},{internalType:"uint256",name:"_disputeCoolDownPeriod",type:"uint256"},{internalType:"uint256",name:"_disputeJudgementPeriod",type:"uint256"},{internalType:"uint16",name:"_bondFeeBPS",type:"uint16"},{internalType:"uint256",name:"_stakingThreshold",type:"uint256"},{internalType:"contract ICampStakingVault",name:"_stakingVault",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"ipToken",outputs:[{internalType:"contract IIpNFT",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"isUsedEvidenceHash",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketplace",outputs:[{internalType:"contract IMarketplace",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolDisputeFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_targetIpId",type:"uint256"},{internalType:"bytes32",name:"_disputeEvidenceHash",type:"bytes32"},{internalType:"bytes32",name:"_disputeTag",type:"bytes32"}],name:"raiseDispute",outputs:[{internalType:"uint256",name:"id",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"}],name:"resolveDispute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_disputeQuorum",type:"uint256"}],name:"setDisputeQuorum",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stakingThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"stakingVault",outputs:[{internalType:"contract ICampStakingVault",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_childIpId",type:"uint256"},{internalType:"uint256",name:"_infringerDisputeId",type:"uint256"}],name:"tagChildIp",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"bool",name:"support",type:"bool"}],name:"voteOnDispute",outputs:[],stateMutability:"nonpayable",type:"function"}],R=[{type:"constructor",inputs:[{name:"ipNFT_",type:"address",internalType:"contract IIpNFT"},{name:"exchangeRate_",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"exchangeRate",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"fractionalize",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getTokenForNFT",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ipNFT",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IIpNFT"}],stateMutability:"view"},{type:"function",name:"nftToToken",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"contract FractionalToken"}],stateMutability:"view"},{type:"function",name:"onERC721Received",inputs:[{name:"",type:"address",internalType:"address"},{name:"",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bytes4",internalType:"bytes4"}],stateMutability:"pure"},{type:"function",name:"redeem",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Fractionalized",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"depositor",type:"address",indexed:!0,internalType:"address"},{name:"token",type:"address",indexed:!1,internalType:"address"},{name:"supply",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"Redeemed",inputs:[{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"redeemer",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"AlreadyFractionalized",inputs:[]},{type:"error",name:"InsufficientFractionalTokens",inputs:[]},{type:"error",name:"InvalidExchangeRate",inputs:[]},{type:"error",name:"NotFractionalized",inputs:[]},{type:"error",name:"NotTokenOwner",inputs:[]},{type:"error",name:"ZeroAddress",inputs:[]}],N=[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"UPGRADE_INTERFACE_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"appExists",inputs:[{name:"",type:"string",internalType:"string"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"apps",inputs:[{name:"",type:"string",internalType:"string"}],outputs:[{name:"treasury",type:"address",internalType:"address"},{name:"revenueShareBps",type:"uint16",internalType:"uint16"},{name:"isActive",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"deactivateApp",inputs:[{name:"appId",type:"string",internalType:"string"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getAppInfo",inputs:[{name:"appId",type:"string",internalType:"string"}],outputs:[{name:"",type:"tuple",internalType:"struct AppRegistry.AppInfo",components:[{name:"treasury",type:"address",internalType:"address"},{name:"revenueShareBps",type:"uint16",internalType:"uint16"},{name:"isActive",type:"bool",internalType:"bool"}]}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"proxiableUUID",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"reactivateApp",inputs:[{name:"appId",type:"string",internalType:"string"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"registerApp",inputs:[{name:"appId",type:"string",internalType:"string"},{name:"treasury",type:"address",internalType:"address"},{name:"revenueShareBps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateApp",inputs:[{name:"appId",type:"string",internalType:"string"},{name:"treasury",type:"address",internalType:"address"},{name:"revenueShareBps",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgradeToAndCall",inputs:[{name:"newImplementation",type:"address",internalType:"address"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"payable"},{type:"event",name:"AppDeactivated",inputs:[{name:"appId",type:"string",indexed:!0,internalType:"string"}],anonymous:!1},{type:"event",name:"AppReactivated",inputs:[{name:"appId",type:"string",indexed:!0,internalType:"string"}],anonymous:!1},{type:"event",name:"AppRegistered",inputs:[{name:"appId",type:"string",indexed:!0,internalType:"string"},{name:"treasury",type:"address",indexed:!1,internalType:"address"},{name:"revenueShareBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"AppUpdated",inputs:[{name:"appId",type:"string",indexed:!0,internalType:"string"},{name:"treasury",type:"address",indexed:!1,internalType:"address"},{name:"revenueShareBps",type:"uint16",indexed:!1,internalType:"uint16"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"AddressEmptyCode",inputs:[{name:"target",type:"address",internalType:"address"}]},{type:"error",name:"AppAlreadyActive",inputs:[]},{type:"error",name:"AppAlreadyExists",inputs:[]},{type:"error",name:"AppAlreadyInactive",inputs:[]},{type:"error",name:"AppNotFound",inputs:[]},{type:"error",name:"ERC1967InvalidImplementation",inputs:[{name:"implementation",type:"address",internalType:"address"}]},{type:"error",name:"ERC1967NonPayable",inputs:[]},{type:"error",name:"FailedCall",inputs:[]},{type:"error",name:"InvalidAppId",inputs:[]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidRoyalty",inputs:[]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"UUPSUnauthorizedCallContext",inputs:[]},{type:"error",name:"UUPSUnsupportedProxiableUUID",inputs:[{name:"slot",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ZeroAddress",inputs:[]}],_="Connect with Camp Network",k=2628e3,M=86400,O=1e15,B=1,F=1e4;const U={DEVELOPMENT:{NAME:"DEVELOPMENT",AUTH_HUB_BASE_API:"https://origin-backend-iota.vercel.app",ORIGIN_DASHBOARD:"https://origin.campnetwork.xyz",DATANFT_CONTRACT_ADDRESS:"0x4d9aF5800701A4A686Df6b096A27B81486de36eB",MARKETPLACE_CONTRACT_ADDRESS:"0x68B202caA162C418d3A2DF92F29fA1CAF90C58c1",BATCH_OPERATIONS_CONTRACT_ADDRESS:"0xe1247F1663925B99Db62e60480B53e37f2bb8738",DISPUTE_CONTRACT_ADDRESS:"0x45719337b1450b0D105cA671972be4263E6A9380",APP_REGISTRY_CONTRACT_ADDRESS:"0x2096eb980Dd590DDF690Cb698572b80552B6F9Bb",FRACTIONALIZER_CONTRACT_ADDRESS:"",USDC_CONTRACT_ADDRESS:"0x8a2B28364102Bea189D99A475C494330Ef2bDD0B",CHAIN:c,IPNFT_ABI:E,MARKETPLACE_ABI:S,TBA_ABI:x,BATCH_OPERATIONS_ABI:P,DISPUTE_ABI:D,FRACTIONALIZER_ABI:R,APP_REGISTRY_ABI:N},PRODUCTION:{NAME:"PRODUCTION",AUTH_HUB_BASE_API:"https://origin-backend-mainnet.vercel.app",ORIGIN_DASHBOARD:"https://origin.campnetwork.xyz",DATANFT_CONTRACT_ADDRESS:"0x39EeE1C3989f0dD543Dee60f8582F7F81F522C38",MARKETPLACE_CONTRACT_ADDRESS:"0xc69BAa987757d054455fC0f2d9797684E9FB8b9C",BATCH_OPERATIONS_CONTRACT_ADDRESS:"0x31885cD2A445322067dF890bACf6CeFE9b233BCC",DISPUTE_CONTRACT_ADDRESS:"0x947A3C4A45f7039e77643026A090025D5412EDa2",FRACTIONALIZER_CONTRACT_ADDRESS:"",APP_REGISTRY_CONTRACT_ADDRESS:"0xd09F15aA280F9109aCd403cA920e67D40Cb6C3FA",USDC_CONTRACT_ADDRESS:"",CHAIN:m,IPNFT_ABI:E,MARKETPLACE_ABI:S,TBA_ABI:x,BATCH_OPERATIONS_ABI:P,DISPUTE_ABI:D,FRACTIONALIZER_ABI:R,APP_REGISTRY_ABI:N}};let $=[];const H=()=>$,j=e=>{function t(t){$.some((e=>e.info.uuid===t.detail.info.uuid))||($=[...$,t.detail],e($))}if("undefined"!=typeof window)return window.addEventListener("eip6963:announceProvider",t),window.dispatchEvent(new Event("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",t)},L=(e,t,n)=>{const s=[];let r=[],o=!1,d=0;const p=e.length;return new Promise(((u,l)=>{function y(){n(d/p*100)}function c(e,t,n){return a(this,arguments,void 0,(function*(e,t,n,a=0){var s;try{const a=null===(s=(yield i.put(t,e,{headers:{"Content-Type":e.type||"application/octet-stream"},timeout:3e5})).headers.etag)||void 0===s?void 0:s.replace(/"/g,"");if(!a)throw new Error(`Missing ETag for part ${n}`);return{ETag:a,PartNumber:n}}catch(i){if(a<3){const i=1e3*Math.pow(2,a);// Exponential backoff
66
62
  return yield new Promise((e=>setTimeout(e,i))),c(e,t,n,a+1)}throw new Error(`Part ${n} failed after 3 retries: ${i.message}`)}}))}
67
63
  // Expose abort method
68
64
  L.abort=()=>{o=!0,i.isCancel("Upload aborted")},y(),// Initial 0%
69
- function(){return a(this,void 0,void 0,(function*(){const n=[];for(let i=0;i<u&&!o;i++){const o=(()=>a(this,void 0,void 0,(function*(){try{if(r.includes(i))return;const n=yield c(e[i],t[i],i+1);s.push(n),d++,y()}catch(e){if(console.error(`Part ${i+1} failed:`,e),r.push(i),r.length>.1*u)
65
+ function(){return a(this,void 0,void 0,(function*(){const n=[];for(let i=0;i<p&&!o;i++){const o=(()=>a(this,void 0,void 0,(function*(){try{if(r.includes(i))return;const n=yield c(e[i],t[i],i+1);s.push(n),d++,y()}catch(e){if(console.error(`Part ${i+1} failed:`,e),r.push(i),r.length>.1*p)
70
66
  // Fail fast if >10% fail
71
67
  throw e}})))();n.push(o),
72
68
  // Limit concurrency
73
69
  n.length>=4&&(yield Promise.race(n),
74
70
  // Remove settled promises to continue
75
- n.splice(0,n.length,...(yield Promise.allSettled(n)).map(((e,t)=>n[t])).filter(Boolean)))}yield Promise.allSettled(n),o?l(new Error("Upload aborted by user")):r.length>0?l(new Error(`Failed to upload ${r.length}/${u} parts: ${r.join(", ")}`)):(s.sort(((e,t)=>e.PartNumber-t.PartNumber)),p(s))}))}().catch(l)}))};
71
+ n.splice(0,n.length,...(yield Promise.allSettled(n)).map(((e,t)=>n[t])).filter(Boolean)))}yield Promise.allSettled(n),o?l(new Error("Upload aborted by user")):r.length>0?l(new Error(`Failed to upload ${r.length}/${p} parts: ${r.join(", ")}`)):(s.sort(((e,t)=>e.PartNumber-t.PartNumber)),u(s))}))}().catch(l)}))};
76
72
  /**
77
73
  * Uploads chunks to respective presigned URLs with progress tracking.
78
74
  * Falls back to a simple fetch request if XMLHttpRequest is not available.
@@ -95,9 +91,9 @@ n.splice(0,n.length,...(yield Promise.allSettled(n)).map(((e,t)=>n[t])).filter(B
95
91
  * @param appId Optional app ID for the minting operation.
96
92
  * @returns A promise that resolves when the minting is complete.
97
93
  */
98
- function z(e,t,n,i,s,r,o,d,u,p){return a(this,void 0,void 0,(function*(){var a;
94
+ function z(e,t,n,i,s,r,o,d,p,u){return a(this,void 0,void 0,(function*(){var a;
99
95
  // use provided appId, else use instance appId, else default to empty string
100
- const l=null!==(a=null!=p?p:this.appId)&&void 0!==a?a:"";return yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"mintWithSignature",[e,t,s,r,o,d,n,i,l,u],{waitForReceipt:!0})}))}
96
+ const l=null!==(a=null!=u?u:this.appId)&&void 0!==a?a:"";return yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"mintWithSignature",[e,t,s,r,o,d,n,i,l,p],{waitForReceipt:!0})}))}
101
97
  /**
102
98
  * Registers a Data NFT with the Origin service in order to obtain a signature for minting.
103
99
  * @param source The source of the Data NFT (e.g., "spotify", "twitter", "tiktok", or "file").
@@ -107,7 +103,7 @@ const l=null!==(a=null!=p?p:this.appId)&&void 0!==a?a:"";return yield this.callC
107
103
  * @param fileKey The file key(s) if the source is "file".
108
104
  * @param parents The IDs of the parent NFTs, if applicable.
109
105
  * @return A promise that resolves with the registration data.
110
- */function V(e,t,n,i,s,r,o,d){return a(this,void 0,void 0,(function*(){var a;const u=null!==(a=null!=d?d:this.appId)&&void 0!==a?a:"",p={source:e,deadline:Number(t),licenseTerms:{price:n.price.toString(),duration:n.duration,royaltyBps:n.royaltyBps,paymentToken:n.paymentToken,licenseType:n.licenseType},appId:u,isIp:s,metadata:i,parentId:o?o.map((e=>e.toString())):[]};void 0!==r&&(p.fileKey=r);const l=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/register`,{method:"POST",headers:{Authorization:`Bearer ${this.getJwt()}`,"Content-Type":"application/json"},body:JSON.stringify(p)}),y=yield l.json();if(y.isError)throw new Error(`Failed to get signature: ${y.message}`);if(!l.ok)throw new Error(`Failed to get signature: ${l.statusText}`);return y.data}))}
106
+ */function V(e,t,n,i,s,r,o,d){return a(this,void 0,void 0,(function*(){var a;const p=null!==(a=null!=d?d:this.appId)&&void 0!==a?a:"",u={source:e,deadline:Number(t),licenseTerms:{price:n.price.toString(),duration:n.duration,royaltyBps:n.royaltyBps,paymentToken:n.paymentToken,licenseType:n.licenseType},appId:p,isIp:s,metadata:i,parentId:o?o.map((e=>e.toString())):[]};void 0!==r&&(u.fileKey=r);const l=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/register`,{method:"POST",headers:{Authorization:`Bearer ${this.getJwt()}`,"Content-Type":"application/json"},body:JSON.stringify(u)}),y=yield l.json();if(y.isError)throw new Error(`Failed to get signature: ${y.message}`);if(!l.ok)throw new Error(`Failed to get signature: ${l.statusText}`);return y.data}))}
111
107
  /**
112
108
  * Updates the license terms of a specified IPNFT.
113
109
  * @param tokenId The ID of the IPNFT to update.
@@ -124,22 +120,22 @@ const l=null!==(a=null!=p?p:this.appId)&&void 0!==a?a:"";return yield this.callC
124
120
  * @param tokenOwner The address of the token owner for whom to get or create the royalty vault.
125
121
  * @param simulateOnly If true, simulates the transaction without executing it.
126
122
  * @returns The address of the royalty vault associated with the specified token owner.
127
- */function G(e){return a(this,arguments,void 0,(function*(e,t=!1){const n=yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"getOrCreateRoyaltyVault",[e],{waitForReceipt:!0,simulate:t});return t?n:n.simulatedResult}))}
123
+ */function W(e){return a(this,arguments,void 0,(function*(e,t=!1){const n=yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"getOrCreateRoyaltyVault",[e],{waitForReceipt:!0,simulate:t});return t?n:n.simulatedResult}))}
128
124
  /**
129
125
  * Returns the license terms associated with a specific token ID.
130
126
  * @param tokenId The token ID to query.
131
127
  * @returns The license terms of the token ID.
132
- */function W(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"getTerms",[e])}
128
+ */function G(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"getTerms",[e])}
133
129
  /**
134
130
  * Returns the owner of the specified IPNFT.
135
131
  * @param tokenId The ID of the IPNFT to query.
136
132
  * @returns The address of the owner of the IPNFT.
137
- */function Y(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"ownerOf",[e])}
133
+ */function Z(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"ownerOf",[e])}
138
134
  /**
139
135
  * Returns the number of IPNFTs owned by the given address.
140
136
  * @param owner The address to query.
141
137
  * @returns The number of IPNFTs owned by the address.
142
- */function Z(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"balanceOf",[e])}
138
+ */function Y(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"balanceOf",[e])}
143
139
  /**
144
140
  * Returns the metadata URI associated with a specific token ID.
145
141
  * @param tokenId The token ID to query.
@@ -149,13 +145,13 @@ const l=null!==(a=null!=p?p:this.appId)&&void 0!==a?a:"";return yield this.callC
149
145
  * Returns the data status of the given token ID.
150
146
  * @param tokenId The token ID to query.
151
147
  * @returns The data status of the token ID.
152
- */function X(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"dataStatus",[e])}
148
+ */function Q(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"dataStatus",[e])}
153
149
  /**
154
150
  * Checks if an operator is approved to manage all assets of a given owner.
155
151
  * @param owner The address of the asset owner.
156
152
  * @param operator The address of the operator to check.
157
153
  * @return A promise that resolves to a boolean indicating if the operator is approved for all assets of the owner.
158
- */function Q(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"isApprovedForAll",[e,t])}function ee(e,t,n){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"transferFrom",[e,t,n])}function te(e,t,n,i){const a=i?[e,t,n,i]:[e,t,n];return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"safeTransferFrom",a)}function ne(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"approve",[e,t])}function ie(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"setApprovalForAll",[e,t])}
154
+ */function X(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"isApprovedForAll",[e,t])}function ee(e,t,n){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"transferFrom",[e,t,n])}function te(e,t,n,i){const a=i?[e,t,n,i]:[e,t,n];return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"safeTransferFrom",a)}function ne(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"approve",[e,t])}function ie(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"setApprovalForAll",[e,t])}
159
155
  /**
160
156
  * Buys access to a data NFT for a specified duration.
161
157
  * @param buyer The address of the buyer.
@@ -174,98 +170,6 @@ const l=null!==(a=null!=p?p:this.appId)&&void 0!==a?a:"";return yield this.callC
174
170
  * @param tokenId - The ID of the token.
175
171
  * @returns A promise that resolves to a boolean indicating if the user has access.
176
172
  */function se(e,t){return a(this,void 0,void 0,(function*(){try{const n=yield this.subscriptionExpiry(t,e);return n>BigInt(Math.floor(Date.now()/1e3))}catch(e){return!1}}))}function re(e,t){return this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"subscriptionExpiry",[e,t])}
177
- /**
178
- * Fetches the protocol fee from the marketplace contract.
179
- */function oe(e){return a(this,void 0,void 0,(function*(){try{const t=yield e.callContractMethod(e.environment.MARKETPLACE_CONTRACT_ADDRESS,e.environment.MARKETPLACE_ABI,"protocolFeeBps",[]);return Number(t)}catch(e){return console.warn("Failed to fetch protocol fee, defaulting to 0:",e),0}}))}
180
- /**
181
- * Fetches the app fee for a specific token from the AppRegistry.
182
- */function de(e,t){return a(this,void 0,void 0,(function*(){try{const n=yield e.callContractMethod(e.environment.DATANFT_CONTRACT_ADDRESS,e.environment.IPNFT_ABI,"tokenInfo",[t]),i=null==n?void 0:n.appId;if(!i||""===i)return 0;if(!e.environment.APP_REGISTRY_CONTRACT_ADDRESS||!e.environment.APP_REGISTRY_ABI)return 0;const a=yield e.callContractMethod(e.environment.APP_REGISTRY_CONTRACT_ADDRESS,e.environment.APP_REGISTRY_ABI,"getAppInfo",[i]);return(null==a?void 0:a.isActive)?Number(a.revenueShareBps):0}catch(e){return console.warn("Failed to fetch app fee, defaulting to 0:",e),0}}))}
183
- /**
184
- * EXPERIMENTAL METHOD
185
- * Settles a payment intent response by purchasing access if needed.
186
- * This method checks if the user already has access to the item, and if not,
187
- * it calls buyAccess with the parameters from the payment intent response.
188
- * Supports viem WalletClient, ethers Signer, and custom signer implementations.
189
- *
190
- * @param paymentIntentResponse - The response from getDataWithIntent containing payment details.
191
- * @param signer - Optional signer object used to interact with the blockchain. If not provided, uses the connected wallet client.
192
- * @returns A promise that resolves with the transaction hash and receipt, or null if access already exists.
193
- * @throws {Error} If the response doesn't contain marketplace action or if the method is not buyAccess.
194
- */function ue(t,n){return a(this,void 0,void 0,(function*(){if(!t.marketplaceAction)throw new T("Invalid X402 response: no marketplace action found. The response may be malformed or the server returned an error.");const{marketplaceAction:i}=t;if("buyAccess"!==i.method)throw new T(`Unsupported marketplace action method "${i.method}". Only "buyAccess" is currently supported.`);const a=BigInt(i.tokenId),s=i.payer;if(yield this.hasAccess(s,a))return console.log("User already has access to this item"),null;const r=BigInt(i.amount),o=BigInt(i.duration),d=i.asset,u="0x0000000000000000000000000000000000000000"===d,l=u?r:BigInt(0),[y,c]=yield Promise.all([oe(this),de(this,a)]);if(n){const t=p(n),i=this.environment.MARKETPLACE_CONTRACT_ADDRESS,u=this.environment.MARKETPLACE_ABI,m=e.encodeFunctionData({abi:u,functionName:"buyAccess",args:[s,a,r,o,d,y,c]});if("viem"===t.type){const e=t.signer,n=yield e.sendTransaction({to:i,data:m,value:l,account:yield t.getAddress()});return{txHash:n,receipt:yield e.waitForTransactionReceipt({hash:n})}}if("ethers"===t.type){const e=t.signer,n=yield e.sendTransaction({to:i,data:m,value:l.toString()}),a=yield n.wait();return{txHash:n.hash,receipt:a}}{const e=t.signer;if("function"!=typeof e.sendTransaction)throw new T("Custom signer must implement sendTransaction() method to settle payment intents");const n=yield e.sendTransaction({to:i,data:m,value:l.toString()});if(n.wait&&"function"==typeof n.wait){const e=yield n.wait();return{txHash:n.hash,receipt:e}}return{txHash:n.hash||n}}}if(!this.viemClient)throw new v("Cannot settle payment intent: no signer or wallet connected. Please connect a wallet or provide a signer.");return yield this.buyAccess(s,a,r,o,d,y,c,u?l:void 0)}))}
195
- /**
196
- * Resolves a wallet address from an optional address parameter or connected wallet.
197
- * Checks viemClient.account first, then falls back to eth_requestAccounts.
198
- *
199
- * @param viemClient The viem WalletClient instance.
200
- * @param address Optional address to use directly.
201
- * @returns The resolved wallet address.
202
- * @throws Error if no address provided and no wallet connected or no accounts found.
203
- */function pe(e,t){return a(this,void 0,void 0,(function*(){if(t)return t;if(!e)throw new Error("No address provided and no wallet connected. Please provide an address or connect a wallet.");if(e.account)return e.account.address;const n=yield e.request({method:"eth_requestAccounts",params:[]});if(!n||0===n.length)throw new Error("No accounts found in connected wallet.");return n[0]}))}
204
- /**
205
- * Enum representing the type of license for an IP NFT.
206
- * - DURATION_BASED: License expires after a set duration (subscription model).
207
- * - SINGLE_PAYMENT: One-time payment for perpetual access.
208
- * - X402: HTTP 402-based micropayment license (no on-chain payments).
209
- */var le,ye,ce;exports.LicenseType=void 0,(le=exports.LicenseType||(exports.LicenseType={}))[le.DURATION_BASED=0]="DURATION_BASED",le[le.SINGLE_PAYMENT=1]="SINGLE_PAYMENT",le[le.X402=2]="X402",
210
- /**
211
- * Enum representing the status of data in the system.
212
- * - ACTIVE: The data is currently active and available.
213
- * - DELETED: The data has been deleted and is no longer available.
214
- * - DISPUTED: The data has been disputed and marked as potentially infringing.
215
- */
216
- exports.DataStatus=void 0,(ye=exports.DataStatus||(exports.DataStatus={}))[ye.ACTIVE=0]="ACTIVE",ye[ye.DELETED=1]="DELETED",ye[ye.DISPUTED=2]="DISPUTED",
217
- /**
218
- * Enum representing the status of a dispute.
219
- * - Uninitialized: Dispute does not exist.
220
- * - Raised: Dispute has been raised but not yet asserted by IP owner.
221
- * - Asserted: IP owner has responded to the dispute.
222
- * - Resolved: Dispute has been resolved (either valid or invalid).
223
- * - Cancelled: Dispute was cancelled by the initiator.
224
- */
225
- exports.DisputeStatus=void 0,(ce=exports.DisputeStatus||(exports.DisputeStatus={}))[ce.Uninitialized=0]="Uninitialized",ce[ce.Raised=1]="Raised",ce[ce.Asserted=2]="Asserted",ce[ce.Resolved=3]="Resolved",ce[ce.Cancelled=4]="Cancelled";
226
- /**
227
- * Creates license terms for a digital asset.
228
- * @param price The price of the asset in wei.
229
- * @param duration The duration of the license in seconds (use 0 for SINGLE_PAYMENT and X402).
230
- * @param royaltyBps The royalty percentage in basis points (0-10000).
231
- * @param paymentToken The address of the payment token (ERC20 / address(0) for native currency).
232
- * @param licenseType The type of license (defaults to DURATION_BASED).
233
- * @returns The created license terms.
234
- */
235
- const me={X402Intent:[{name:"payer",type:"address"},{name:"asset",type:"address"},{name:"amount",type:"uint256"},{name:"httpMethod",type:"string"},{name:"payTo",type:"address"},{name:"tokenId",type:"uint256"},{name:"duration",type:"uint32"},{name:"expiresAt",type:"uint256"},{name:"nonce",type:"bytes32"}]},he=(e,t,n)=>a(void 0,void 0,void 0,(function*(){return yield fetch(`${e.environment.AUTH_HUB_BASE_API}/origin/data/${t}`,{method:"GET",headers:Object.assign({"Content-Type":"application/json"},n)})}))
236
- /**
237
- * EXPERIMENTAL METHOD
238
- * Fetch data with X402 payment handling.
239
- * @param {bigint} tokenId The token ID to fetch data for.
240
- * @param {any} [signer] Optional signer object for signing the X402 intent.
241
- * @returns {Promise<any>} A promise that resolves with the fetched data.
242
- * @throws {Error} Throws an error if the data cannot be fetched or if no signer/wallet client is provided.
243
- */;
244
- /**
245
- * Defines the EIP-712 typed data structure for X402 Intent signatures.
246
- */function Te(t,n,i){return a(this,void 0,void 0,(function*(){var a;const s=this.viemClient;if(!n&&!s)throw new v(`Cannot fetch data for token ${t}: no signer or wallet client provided. Please connect a wallet or provide a signer.`);const r=yield he(this,t,{});if(402!==r.status){if(!r.ok){const e=yield r.text().catch((()=>r.statusText));throw new h(`Failed to fetch data for token ${t} (HTTP ${r.status}): ${e}`,r.status)}return r.json()}const o=s||p(n),d=s?yield Ae.call(this):yield o.getAddress(),u=yield r.json();if(u.error)throw new h(`Failed to process X402 intent for token ${t}: ${u.error}`);const l=u.accepts[0],y=yield fe.call(this,l,e.checksumAddress(d),o),c=btoa(JSON.stringify(y)),m=yield he(this,t,{"X-PAYMENT":c});if(402===m.status){
247
- // subscription required
248
- if(i){const e=yield m.json();if(yield i(e.marketplaceAction)){const i=yield this.settlePaymentIntent(e,n||s);if(i&&!i.txHash)throw new h(`Failed to settle X402 payment for token ${t}: no transaction hash returned`);
249
- // retry fetching data after settlement
250
- return yield this.getDataWithIntent(t,n,void 0)}
251
- // user declined to proceed with payment
252
- return{error:"User declined to proceed with payment",data:null}}return m.json()}if(!m.ok){const e=yield m.text().catch((()=>m.statusText));throw new h(`Failed to fetch data for token ${t} after X402 payment (HTTP ${m.status}): ${e}`,m.status)}const T=yield m.json();return{error:null,data:null!==(a=T.data)&&void 0!==a?a:T}}))}
253
- /**
254
- * Build the X402 payment payload.
255
- * @private
256
- */function fe(t,n,i){return a(this,void 0,void 0,(function*(){const a="native"===t.asset?e.zeroAddress:t.asset,s=BigInt(t.maxAmountRequired||0),r=t.extra.duration,o=ve.call(this),d=me,u=crypto.randomUUID(),l=e.keccak256(e.toBytes(u)),y={payer:n,asset:a,amount:s.toString(),httpMethod:"GET",payTo:e.checksumAddress(this.environment.MARKETPLACE_CONTRACT_ADDRESS),tokenId:t.extra.tokenId,duration:r,expiresAt:Math.floor(Date.now()/1e3)+t.maxTimeoutSeconds,nonce:l},c=p(i),m=yield c.signTypedData(o,d,y);return{x402Version:1,scheme:"exact",network:t.network,payload:Object.assign(Object.assign({},y),{sigType:"eip712",signature:m,license:{tokenId:t.extra.tokenId,duration:r}})}}))}
257
- /**
258
- * Create the X402 Intent domain for EIP-712 signing.
259
- * @private
260
- */function ve(){return{name:"Origin X402 Intent",version:"1",chainId:this.environment.CHAIN.id,verifyingContract:this.environment.MARKETPLACE_CONTRACT_ADDRESS}}
261
- /**
262
- * Get the current account address.
263
- * @private
264
- */function Ae(){return a(this,void 0,void 0,(function*(){const e=this.viemClient;if(!e)throw new v("No wallet connected. Please connect a wallet to perform this action.");
265
- // If account is already set on the client, return it directly
266
- if(e.account)return e.account.address;
267
- // Otherwise request accounts (browser wallet flow)
268
- const t=yield e.request({method:"eth_requestAccounts",params:[]});if(!t||0===t.length)throw new v("No accounts found in connected wallet. Please unlock your wallet or add an account.");return t[0]}))}
269
173
  /**
270
174
  * Raises a dispute against an IP NFT.
271
175
  * Automatically handles token approval for ERC20 bonds or native token value.
@@ -284,20 +188,20 @@ const t=yield e.request({method:"eth_requestAccounts",params:[]});if(!t||0===t.l
284
188
  * "0x0100000000000000000000000000000000000000000000000000000000000000" // dispute tag (bytes32)
285
189
  * );
286
190
  * ```
287
- */function we(t,n,i){return a(this,void 0,void 0,(function*(){const a=C(),s=this.environment.DISPUTE_CONTRACT_ADDRESS,r=this.environment.DISPUTE_ABI,[o,d,u]=yield Promise.all([a.readContract({address:s,abi:r,functionName:"disputeBond"}),a.readContract({address:s,abi:r,functionName:"protocolDisputeFee"}),a.readContract({address:s,abi:r,functionName:"disputeToken"})]),p=u===e.zeroAddress,l=o+d;
191
+ */function oe(t,n,i){return a(this,void 0,void 0,(function*(){const a=C(),s=this.environment.DISPUTE_CONTRACT_ADDRESS,r=this.environment.DISPUTE_ABI,[o,d,p]=yield Promise.all([a.readContract({address:s,abi:r,functionName:"disputeBond"}),a.readContract({address:s,abi:r,functionName:"protocolDisputeFee"}),a.readContract({address:s,abi:r,functionName:"disputeToken"})]),u=p===e.zeroAddress,l=o+d;
288
192
  // Call the raiseDispute contract method
289
193
  // Pass the total (bond + protocol fee) as msg.value if using native token
290
- return p||(yield this.approveERC20IfNeeded(u,s,l)),this.callContractMethod(s,r,"raiseDispute",[t,n,i],{waitForReceipt:!0,value:p?l:void 0})}))}
194
+ return u||(yield this.approveERC20IfNeeded(p,s,l)),this.callContractMethod(s,r,"raiseDispute",[t,n,i],{waitForReceipt:!0,value:u?l:void 0})}))}
291
195
  // base-x encoding / decoding
292
196
  // Copyright (c) 2018 base-x contributors
293
197
  // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
294
198
  // Distributed under the MIT software license, see the accompanying
295
199
  // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
296
- var Ie=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");const t=new Uint8Array(256);for(let e=0;e<t.length;e++)t[e]=255;for(let n=0;n<e.length;n++){const i=e.charAt(n),a=i.charCodeAt(0);if(255!==t[a])throw new TypeError(i+" is ambiguous");t[a]=n}const n=e.length,i=e.charAt(0),a=Math.log(n)/Math.log(256),s=Math.log(256)/Math.log(n);function r(e){if("string"!=typeof e)throw new TypeError("Expected String");if(0===e.length)return new Uint8Array;let s=0,r=0,o=0;
200
+ var de=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");const t=new Uint8Array(256);for(let e=0;e<t.length;e++)t[e]=255;for(let n=0;n<e.length;n++){const i=e.charAt(n),a=i.charCodeAt(0);if(255!==t[a])throw new TypeError(i+" is ambiguous");t[a]=n}const n=e.length,i=e.charAt(0),a=Math.log(n)/Math.log(256),s=Math.log(256)/Math.log(n);function r(e){if("string"!=typeof e)throw new TypeError("Expected String");if(0===e.length)return new Uint8Array;let s=0,r=0,o=0;
297
201
  // Skip and count leading '1's.
298
202
  for(;e[s]===i;)r++,s++;
299
203
  // Allocate enough space in big-endian base256 representation.
300
- const d=(e.length-s)*a+1>>>0,u=new Uint8Array(d);// log(58) / log(256), rounded up.
204
+ const d=(e.length-s)*a+1>>>0,p=new Uint8Array(d);// log(58) / log(256), rounded up.
301
205
  // Process the characters.
302
206
  for(;s<e.length;){
303
207
  // Find code of next character
@@ -307,33 +211,42 @@ if(i>255)return;
307
211
  // Decode character
308
212
  let a=t[i];
309
213
  // Invalid character
310
- if(255===a)return;let r=0;for(let e=d-1;(0!==a||r<o)&&-1!==e;e--,r++)a+=n*u[e]>>>0,u[e]=a%256>>>0,a=a/256>>>0;if(0!==a)throw new Error("Non-zero carry");o=r,s++}
214
+ if(255===a)return;let r=0;for(let e=d-1;(0!==a||r<o)&&-1!==e;e--,r++)a+=n*p[e]>>>0,p[e]=a%256>>>0,a=a/256>>>0;if(0!==a)throw new Error("Non-zero carry");o=r,s++}
311
215
  // Skip leading zeroes in b256.
312
- let p=d-o;for(;p!==d&&0===u[p];)p++;const l=new Uint8Array(r+(d-p));let y=r;for(;p!==d;)l[y++]=u[p++];return l}return{encode:// log(256) / log(BASE), rounded up
216
+ let u=d-o;for(;u!==d&&0===p[u];)u++;const l=new Uint8Array(r+(d-u));let y=r;for(;u!==d;)l[y++]=p[u++];return l}return{encode:// log(256) / log(BASE), rounded up
313
217
  function(t){if(
314
218
  // eslint-disable-next-line no-empty
315
219
  t instanceof Uint8Array||(ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t))),!(t instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(0===t.length)return"";
316
220
  // Skip & count leading zeroes.
317
221
  let a=0,r=0,o=0;const d=t.length;for(;o!==d&&0===t[o];)o++,a++;
318
222
  // Allocate enough space in big-endian base58 representation.
319
- const u=(d-o)*s+1>>>0,p=new Uint8Array(u);
223
+ const p=(d-o)*s+1>>>0,u=new Uint8Array(p);
320
224
  // Process the bytes.
321
225
  for(;o!==d;){let e=t[o],i=0;
322
226
  // Apply "b58 = b58 * 256 + ch".
323
- for(let t=u-1;(0!==e||i<r)&&-1!==t;t--,i++)e+=256*p[t]>>>0,p[t]=e%n>>>0,e=e/n>>>0;if(0!==e)throw new Error("Non-zero carry");r=i,o++}
227
+ for(let t=p-1;(0!==e||i<r)&&-1!==t;t--,i++)e+=256*u[t]>>>0,u[t]=e%n>>>0,e=e/n>>>0;if(0!==e)throw new Error("Non-zero carry");r=i,o++}
324
228
  // Skip leading zeroes in base58 result.
325
- let l=u-r;for(;l!==u&&0===p[l];)l++;
229
+ let l=p-r;for(;l!==p&&0===u[l];)l++;
326
230
  // Translate the result into a string.
327
- let y=i.repeat(a);for(;l<u;++l)y+=e.charAt(p[l]);return y},decodeUnsafe:r,decode:function(e){const t=r(e);if(t)return t;throw new Error("Non-base"+n+" character")}}}("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");
231
+ let y=i.repeat(a);for(;l<p;++l)y+=e.charAt(u[l]);return y},decodeUnsafe:r,decode:function(e){const t=r(e);if(t)return t;throw new Error("Non-base"+n+" character")}}}("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");
232
+ // RFC 4648 base32 alphabet (lowercase)
233
+ const pe="abcdefghijklmnopqrstuvwxyz234567";
328
234
  /**
329
- * Encode CIDv0 to bytes32 by stripping the 0x1220 multihash prefix.
330
- * Only works with CIDv0 (SHA-256 hash, starts with "Qm").
235
+ * Encode a CID to bytes32 by extracting the 32-byte SHA-256 digest.
236
+ * Supports both CIDv0 (starts with "Qm") and CIDv1 (starts with "bafy").
331
237
  */
332
- function ge(e){const t=Ie.decode(e);if(18!==t[0]||32!==t[1]||34!==t.length)throw new Error("Only CIDv0 with SHA-256 is supported");
333
- // Return only the 32-byte digest (skip 0x1220 prefix)
334
- return`0x${Buffer.from(t.slice(2)).toString("hex")}`}
335
- /**
336
- * Decode bytes32 back to CIDv0 by prepending 0x1220 multihash prefix.
238
+ function ue(e){let t;if(e.startsWith("Qm")){
239
+ // CIDv0: base58-encoded multihash (0x1220 + 32-byte digest)
240
+ const n=de.decode(e);if(18!==n[0]||32!==n[1]||34!==n.length)throw new Error("Invalid CIDv0: expected SHA-256 multihash");t=n.slice(2)}else{if(!e.startsWith("b"))throw new Error("Unsupported CID format: must start with 'Qm' or 'b'");{
241
+ // CIDv1: multibase 'b' prefix + base32-encoded (version + codec + multihash)
242
+ const n=function(e){const t={};for(let e=0;e<32;e++)t[pe[e]]=e;let n=0,i=0;const a=[];for(const s of e.toLowerCase()){if(!(s in t))throw new Error(`Invalid base32 character: ${s}`);i=i<<5|t[s],n+=5,n>=8&&(n-=8,a.push(i>>n&255))}return new Uint8Array(a)}(e.slice(1));
243
+ // CIDv1 structure: version (1 byte) + codec (varint) + multihash
244
+ // For raw codec with sha2-256: 0x01 + 0x55 + 0x12 + 0x20 + 32-byte digest
245
+ // For dag-pb with sha2-256: 0x01 + 0x70 + 0x12 + 0x20 + 32-byte digest
246
+ if(1!==n[0]||36!==n.length)throw new Error("Invalid CIDv1: expected version 1 with 36 bytes");const i=n[1];if(85!==i&&112!==i)throw new Error(`Invalid CIDv1: unsupported codec 0x${i.toString(16)}`);if(18!==n[2]||32!==n[3])throw new Error("Invalid CIDv1: expected SHA-256 hash");t=n.slice(4)}}return`0x${Buffer.from(t).toString("hex")}`}
247
+ /**
248
+ * Decode bytes32 back to CIDv1 format (base32, raw codec).
249
+ * Returns a CID starting with "bafkrei" that works with Pinata gateways for raw data uploads.
337
250
  */
338
251
  /**
339
252
  * Raises a dispute with automatic evidence upload to IPFS.
@@ -364,7 +277,7 @@ return`0x${Buffer.from(t.slice(2)).toString("hex")}`}
364
277
  * // https://ipfs.io/ipfs/{result.evidenceCid}
365
278
  * ```
366
279
  */
367
- function be(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.uploadJSONToIPFS(t),a=ge(i);return{transactionResult:yield this.raiseDispute(e,a,n),evidenceCid:i,evidenceHash:a}}))}
280
+ function le(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.uploadJSONToIPFS(t),a=ue(i);return{transactionResult:yield this.raiseDispute(e,a,n),evidenceCid:i,evidenceHash:a}}))}
368
281
  /**
369
282
  * Asserts a dispute as the IP owner with counter-evidence.
370
283
  * Must be called by the owner of the disputed IP within the cooldown period.
@@ -377,7 +290,7 @@ function be(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.u
377
290
  * ```typescript
378
291
  * await origin.disputeAssertion(1n, "0x1234..."); // counter-evidence hash
379
292
  * ```
380
- */function Ce(e,t){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"disputeAssertion",[e,t],{waitForReceipt:!0})}))}
293
+ */function ye(e,t){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"disputeAssertion",[e,t],{waitForReceipt:!0})}))}
381
294
  /**
382
295
  * Asserts a dispute with automatic counter-evidence upload to IPFS.
383
296
  * Uploads counter-evidence JSON to IPFS, encodes the CID to bytes32 for on-chain storage,
@@ -406,7 +319,7 @@ function be(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.u
406
319
  * // Fetch counter-evidence via IPFS gateway
407
320
  * // https://ipfs.io/ipfs/{result.counterEvidenceCid}
408
321
  * ```
409
- */function Ee(e,t){return a(this,void 0,void 0,(function*(){const n=yield this.uploadJSONToIPFS(t),i=ge(n);return{transactionResult:yield this.disputeAssertion(e,i),counterEvidenceCid:n,counterEvidenceHash:i}}))}
322
+ */function ce(e,t){return a(this,void 0,void 0,(function*(){const n=yield this.uploadJSONToIPFS(t),i=ue(n);return{transactionResult:yield this.disputeAssertion(e,i),counterEvidenceCid:n,counterEvidenceHash:i}}))}
410
323
  /**
411
324
  * Votes on a dispute as a CAMP token staker.
412
325
  * Only users who staked before the dispute was raised can vote.
@@ -424,7 +337,7 @@ function be(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.u
424
337
  * // Vote against the dispute
425
338
  * await origin.voteOnDispute(1n, false);
426
339
  * ```
427
- */function Se(e,t){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"voteOnDispute",[e,t],{waitForReceipt:!0})}))}
340
+ */function me(e,t){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"voteOnDispute",[e,t],{waitForReceipt:!0})}))}
428
341
  /**
429
342
  * Resolves a dispute after the voting period has ended.
430
343
  * Can be called by anyone - resolution is deterministic based on votes and quorum.
@@ -438,7 +351,7 @@ function be(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.u
438
351
  * ```typescript
439
352
  * await origin.resolveDispute(1n);
440
353
  * ```
441
- */function De(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"resolveDispute",[e],{waitForReceipt:!0})}))}
354
+ */function he(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"resolveDispute",[e],{waitForReceipt:!0})}))}
442
355
  /**
443
356
  * Cancels a dispute that is still in the raised state.
444
357
  * Can only be called by the dispute initiator during the cooldown period.
@@ -451,7 +364,7 @@ function be(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.u
451
364
  * ```typescript
452
365
  * await origin.cancelDispute(1n);
453
366
  * ```
454
- */function Pe(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"cancelDispute",[e],{waitForReceipt:!0})}))}
367
+ */function Te(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"cancelDispute",[e],{waitForReceipt:!0})}))}
455
368
  /**
456
369
  * Tags a child IP as disputed if its parent has been successfully disputed.
457
370
  * This propagates the dispute status to derivative IPs.
@@ -465,7 +378,7 @@ function be(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.u
465
378
  * // After parent IP (tokenId 1) has been disputed, tag child IP (tokenId 2)
466
379
  * await origin.tagChildIp(2n, 1n); // childIpId, disputeId of parent
467
380
  * ```
468
- */function Re(e,t){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"tagChildIp",[e,t],{waitForReceipt:!0})}))}
381
+ */function fe(e,t){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"tagChildIp",[e,t],{waitForReceipt:!0})}))}
469
382
  /**
470
383
  * Gets the details of a dispute by its ID.
471
384
  *
@@ -479,11 +392,51 @@ function be(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.u
479
392
  * console.log(`Yes votes: ${dispute.yesVotes}`);
480
393
  * console.log(`No votes: ${dispute.noVotes}`);
481
394
  * ```
482
- */function _e(e){return a(this,void 0,void 0,(function*(){const t=yield this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"disputes",[e]),[n,i,a,s,r,o,d,u,p,l,y,c]=t;
395
+ */function ve(e){return a(this,void 0,void 0,(function*(){const t=yield this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"disputes",[e]),[n,i,a,s,r,o,d,p,u,l,y,c]=t;
483
396
  // Contract returns a tuple, map it to the Dispute interface
484
- return{initiator:n,targetId:i,disputeTag:a,disputeEvidenceHash:s,counterEvidenceHash:r,disputeTimestamp:o,assertionTimestamp:d,yesVotes:u,noVotes:p,status:l,bondAmount:y,protocolFeeAmount:c}}))}
397
+ return{initiator:n,targetId:i,disputeTag:a,disputeEvidenceHash:s,counterEvidenceHash:r,disputeTimestamp:o,assertionTimestamp:d,yesVotes:p,noVotes:u,status:l,bondAmount:y,protocolFeeAmount:c}}))}
398
+ /**
399
+ * Resolves a wallet address from an optional address parameter or connected wallet.
400
+ * Checks viemClient.account first, then falls back to eth_requestAccounts.
401
+ *
402
+ * @param viemClient The viem WalletClient instance.
403
+ * @param address Optional address to use directly.
404
+ * @returns The resolved wallet address.
405
+ * @throws Error if no address provided and no wallet connected or no accounts found.
406
+ */function we(e,t){return a(this,void 0,void 0,(function*(){if(t)return t;if(!e)throw new Error("No address provided and no wallet connected. Please provide an address or connect a wallet.");if(e.account)return e.account.address;const n=yield e.request({method:"eth_requestAccounts",params:[]});if(!n||0===n.length)throw new Error("No accounts found in connected wallet.");return n[0]}))}
407
+ /**
408
+ * Enum representing the type of license for an IP NFT.
409
+ * - DURATION_BASED: License expires after a set duration (subscription model).
410
+ * - SINGLE_PAYMENT: One-time payment for perpetual access.
411
+ * - X402: HTTP 402-based micropayment license (no on-chain payments).
412
+ */var Ae,Ie,ge;exports.LicenseType=void 0,(Ae=exports.LicenseType||(exports.LicenseType={}))[Ae.DURATION_BASED=0]="DURATION_BASED",Ae[Ae.SINGLE_PAYMENT=1]="SINGLE_PAYMENT",Ae[Ae.X402=2]="X402",
413
+ /**
414
+ * Enum representing the status of data in the system.
415
+ * - ACTIVE: The data is currently active and available.
416
+ * - DELETED: The data has been deleted and is no longer available.
417
+ * - DISPUTED: The data has been disputed and marked as potentially infringing.
418
+ */
419
+ exports.DataStatus=void 0,(Ie=exports.DataStatus||(exports.DataStatus={}))[Ie.ACTIVE=0]="ACTIVE",Ie[Ie.DELETED=1]="DELETED",Ie[Ie.DISPUTED=2]="DISPUTED",
420
+ /**
421
+ * Enum representing the status of a dispute.
422
+ * - Uninitialized: Dispute does not exist.
423
+ * - Raised: Dispute has been raised but not yet asserted by IP owner.
424
+ * - Asserted: IP owner has responded to the dispute.
425
+ * - Resolved: Dispute has been resolved (either valid or invalid).
426
+ * - Cancelled: Dispute was cancelled by the initiator.
427
+ */
428
+ exports.DisputeStatus=void 0,(ge=exports.DisputeStatus||(exports.DisputeStatus={}))[ge.Uninitialized=0]="Uninitialized",ge[ge.Raised=1]="Raised",ge[ge.Asserted=2]="Asserted",ge[ge.Resolved=3]="Resolved",ge[ge.Cancelled=4]="Cancelled";
429
+ /**
430
+ * Creates license terms for a digital asset.
431
+ * @param price The price of the asset in wei.
432
+ * @param duration The duration of the license in seconds (use 0 for SINGLE_PAYMENT and X402).
433
+ * @param royaltyBps The royalty percentage in basis points (0-10000).
434
+ * @param paymentToken The address of the payment token (ERC20 / address(0) for native currency).
435
+ * @param licenseType The type of license (defaults to DURATION_BASED).
436
+ * @returns The created license terms.
437
+ */
438
+ const be=[{inputs:[{name:"account",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"address"}],name:"userStakeTimestamp",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"}];
485
439
  // minimal ABI for staking vault
486
- const xe=[{inputs:[{name:"account",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"address"}],name:"userStakeTimestamp",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"}];
487
440
  /**
488
441
  * Checks if a user meets the requirements to vote on a dispute.
489
442
  * Returns detailed information about eligibility and reason if ineligible.
@@ -503,15 +456,16 @@ const xe=[{inputs:[{name:"account",type:"address"}],name:"balanceOf",outputs:[{n
503
456
  * console.log(`Cannot vote: ${eligibility.reason}`);
504
457
  * }
505
458
  * ```
506
- */function Ne(e,t){return a(this,void 0,void 0,(function*(){const n=yield pe(this.viemClient,t),i=C(),a=this.environment.DISPUTE_CONTRACT_ADDRESS,s=this.environment.DISPUTE_ABI,[r,o,d,u,p,l]=yield Promise.all([this.getDispute(e),i.readContract({address:a,abi:s,functionName:"stakingVault",args:[]}),i.readContract({address:a,abi:s,functionName:"stakingThreshold",args:[]}),i.readContract({address:a,abi:s,functionName:"disputeCoolDownPeriod",args:[]}),i.readContract({address:a,abi:s,functionName:"disputeJudgementPeriod",args:[]}),i.readContract({address:a,abi:s,functionName:"hasVoted",args:[e,n]})]),y=r.status,c=r.disputeTimestamp,m=r.assertionTimestamp,[h,T]=yield Promise.all([i.readContract({address:o,abi:xe,functionName:"userStakeTimestamp",args:[n]}),i.readContract({address:o,abi:xe,functionName:"balanceOf",args:[n]})]),f=BigInt(Math.floor(Date.now()/1e3));let v,A=!1;y===exports.DisputeStatus.Asserted?(
459
+ */
460
+ function Ce(e,t){return a(this,void 0,void 0,(function*(){const n=yield we(this.viemClient,t),i=C(),a=this.environment.DISPUTE_CONTRACT_ADDRESS,s=this.environment.DISPUTE_ABI,[r,o,d,p,u,l]=yield Promise.all([this.getDispute(e),i.readContract({address:a,abi:s,functionName:"stakingVault",args:[]}),i.readContract({address:a,abi:s,functionName:"stakingThreshold",args:[]}),i.readContract({address:a,abi:s,functionName:"disputeCoolDownPeriod",args:[]}),i.readContract({address:a,abi:s,functionName:"disputeJudgementPeriod",args:[]}),i.readContract({address:a,abi:s,functionName:"hasVoted",args:[e,n]})]),y=r.status,c=r.disputeTimestamp,m=r.assertionTimestamp,[h,T]=yield Promise.all([i.readContract({address:o,abi:be,functionName:"userStakeTimestamp",args:[n]}),i.readContract({address:o,abi:be,functionName:"balanceOf",args:[n]})]),f=BigInt(Math.floor(Date.now()/1e3));let v,w=!1;y===exports.DisputeStatus.Asserted?(
507
461
  // for asserted disputes, voting period is relative to assertion timestamp
508
- v=m+p,A=f<=v):y===exports.DisputeStatus.Raised&&(
462
+ v=m+u,w=f<=v):y===exports.DisputeStatus.Raised&&(
509
463
  // for raised disputes, voting period extends from cooldown through judgement
510
- v=c+u+p,A=f<=v);
464
+ v=c+p+u,w=f<=v);
511
465
  // build base result
512
- const w={canVote:!1,votingWeight:T,stakingThreshold:d,hasAlreadyVoted:l,userStakeTimestamp:h,disputeTimestamp:c,disputeStatus:y,isVotingPeriodActive:A};
466
+ const A={canVote:!1,votingWeight:T,stakingThreshold:d,hasAlreadyVoted:l,userStakeTimestamp:h,disputeTimestamp:c,disputeStatus:y,isVotingPeriodActive:w};
513
467
  // check all requirements
514
- return y!==exports.DisputeStatus.Raised&&y!==exports.DisputeStatus.Asserted?Object.assign(Object.assign({},w),{reason:`Dispute is not in a voteable status (current: ${exports.DisputeStatus[y]})`}):A?l?Object.assign(Object.assign({},w),{reason:"You have already voted on this dispute"}):h===BigInt(0)?Object.assign(Object.assign({},w),{reason:"You have never staked CAMP tokens"}):h>=c?Object.assign(Object.assign({},w),{reason:"You staked after this dispute was raised (vote recycling prevention)"}):T<d?Object.assign(Object.assign({},w),{reason:`Insufficient stake: you have ${T} but need at least ${d}`}):Object.assign(Object.assign({},w),{canVote:!0}):Object.assign(Object.assign({},w),{reason:"Voting period has ended"})}))}
468
+ return y!==exports.DisputeStatus.Raised&&y!==exports.DisputeStatus.Asserted?Object.assign(Object.assign({},A),{reason:`Dispute is not in a voteable status (current: ${exports.DisputeStatus[y]})`}):w?l?Object.assign(Object.assign({},A),{reason:"You have already voted on this dispute"}):h===BigInt(0)?Object.assign(Object.assign({},A),{reason:"You have never staked CAMP tokens"}):h>=c?Object.assign(Object.assign({},A),{reason:"You staked after this dispute was raised (vote recycling prevention)"}):T<d?Object.assign(Object.assign({},A),{reason:`Insufficient stake: you have ${T} but need at least ${d}`}):Object.assign(Object.assign({},A),{canVote:!0}):Object.assign(Object.assign({},A),{reason:"Voting period has ended"})}))}
515
469
  /**
516
470
  * Gets detailed progress and voting statistics for a dispute.
517
471
  * Includes vote counts, percentages, quorum progress, and timeline.
@@ -533,17 +487,17 @@ return y!==exports.DisputeStatus.Raised&&y!==exports.DisputeStatus.Asserted?Obje
533
487
  * console.log(`Can resolve in ${progress.timeline.timeUntilResolution} seconds`);
534
488
  * }
535
489
  * ```
536
- */function ke(e){return a(this,void 0,void 0,(function*(){var t,n,i,a,s,r,o,d,u;const p=C(),l=this.environment.DISPUTE_CONTRACT_ADDRESS,y=this.environment.DISPUTE_ABI,[c,m,h,T]=yield Promise.all([p.readContract({address:l,abi:y,functionName:"disputes",args:[e]}),p.readContract({address:l,abi:y,functionName:"disputeQuorum",args:[]}),p.readContract({address:l,abi:y,functionName:"disputeCoolDownPeriod",args:[]}),p.readContract({address:l,abi:y,functionName:"disputeJudgementPeriod",args:[]})]),f=Number(null!==(t=c.status)&&void 0!==t?t:c[9]),v=BigInt(null!==(i=null!==(n=c.disputeTimestamp)&&void 0!==n?n:c[5])&&void 0!==i?i:0),A=BigInt(null!==(s=null!==(a=c.assertionTimestamp)&&void 0!==a?a:c[6])&&void 0!==s?s:0),w=BigInt(null!==(o=null!==(r=c.yesVotes)&&void 0!==r?r:c[7])&&void 0!==o?o:0),I=BigInt(null!==(u=null!==(d=c.noVotes)&&void 0!==d?d:c[8])&&void 0!==u?u:0),g=w+I;let b=0,E=0;g>BigInt(0)&&(b=Number(w*BigInt(1e4)/g)/100,E=Number(I*BigInt(1e4)/g)/100);
490
+ */function Ee(e){return a(this,void 0,void 0,(function*(){var t,n,i,a,s,r,o,d,p;const u=C(),l=this.environment.DISPUTE_CONTRACT_ADDRESS,y=this.environment.DISPUTE_ABI,[c,m,h,T]=yield Promise.all([u.readContract({address:l,abi:y,functionName:"disputes",args:[e]}),u.readContract({address:l,abi:y,functionName:"disputeQuorum",args:[]}),u.readContract({address:l,abi:y,functionName:"disputeCoolDownPeriod",args:[]}),u.readContract({address:l,abi:y,functionName:"disputeJudgementPeriod",args:[]})]),f=Number(null!==(t=c.status)&&void 0!==t?t:c[9]),v=BigInt(null!==(i=null!==(n=c.disputeTimestamp)&&void 0!==n?n:c[5])&&void 0!==i?i:0),w=BigInt(null!==(s=null!==(a=c.assertionTimestamp)&&void 0!==a?a:c[6])&&void 0!==s?s:0),A=BigInt(null!==(o=null!==(r=c.yesVotes)&&void 0!==r?r:c[7])&&void 0!==o?o:0),I=BigInt(null!==(p=null!==(d=c.noVotes)&&void 0!==d?d:c[8])&&void 0!==p?p:0),g=A+I;let b=0,E=0;g>BigInt(0)&&(b=Number(A*BigInt(1e4)/g)/100,E=Number(I*BigInt(1e4)/g)/100);
537
491
  // calculate quorum progress
538
- let S=0;m>BigInt(0)&&(S=Number(g*BigInt(1e4)/m)/100);const D=g>=m;
492
+ let S=0;m>BigInt(0)&&(S=Number(g*BigInt(1e4)/m)/100);const x=g>=m;
539
493
  // determine projected outcome
540
- let P;P=D?w>I?"dispute_succeeds":"dispute_fails":"no_quorum";
494
+ let P;P=x?A>I?"dispute_succeeds":"dispute_fails":"no_quorum";
541
495
  // calculate timeline
542
- const R=BigInt(Math.floor(Date.now()/1e3)),_=new Date(1e3*Number(v)),x=new Date(1e3*Number(v+h));let N,k;f===exports.DisputeStatus.Asserted?(
496
+ const D=BigInt(Math.floor(Date.now()/1e3)),R=new Date(1e3*Number(v)),N=new Date(1e3*Number(v+h));let _,k;f===exports.DisputeStatus.Asserted?(
543
497
  // for asserted disputes, voting ends relative to assertion
544
- N=new Date(1e3*Number(A+T)),k=A+T):(
498
+ _=new Date(1e3*Number(w+T)),k=w+T):(
545
499
  // for raised disputes, voting ends after cooldown + judgement
546
- N=new Date(1e3*Number(v+h+T)),k=v+h+T);const M=(f===exports.DisputeStatus.Raised||f===exports.DisputeStatus.Asserted)&&R>k,B=M?0:Number(k-R);return{disputeId:e,status:f,yesVotes:w,noVotes:I,totalVotes:g,yesPercentage:b,noPercentage:E,quorum:m,quorumPercentage:S,quorumMet:D,projectedOutcome:P,timeline:{raisedAt:_,cooldownEndsAt:x,votingEndsAt:N,canResolveNow:M,timeUntilResolution:B}}}))}
500
+ _=new Date(1e3*Number(v+h+T)),k=v+h+T);const M=(f===exports.DisputeStatus.Raised||f===exports.DisputeStatus.Asserted)&&D>k,O=M?0:Number(k-D);return{disputeId:e,status:f,yesVotes:A,noVotes:I,totalVotes:g,yesPercentage:b,noPercentage:E,quorum:m,quorumPercentage:S,quorumMet:x,projectedOutcome:P,timeline:{raisedAt:R,cooldownEndsAt:N,votingEndsAt:_,canResolveNow:M,timeUntilResolution:O}}}))}
547
501
  /**
548
502
  * Gets the requirements for raising a dispute, including balance check.
549
503
  *
@@ -557,9 +511,9 @@ N=new Date(1e3*Number(v+h+T)),k=v+h+T);const M=(f===exports.DisputeStatus.Raised
557
511
  * console.log(`Need ${requirements.totalRequired} but only have ${requirements.userBalance}`);
558
512
  * }
559
513
  * ```
560
- */function Me(t){return a(this,void 0,void 0,(function*(){const n=C(),i=this.environment.DISPUTE_CONTRACT_ADDRESS,a=this.environment.DISPUTE_ABI,[s,r,o]=yield Promise.all([n.readContract({address:i,abi:a,functionName:"disputeBond"}),n.readContract({address:i,abi:a,functionName:"protocolDisputeFee"}),n.readContract({address:i,abi:a,functionName:"disputeToken"})]),d=o===e.zeroAddress,u=s+r;
514
+ */function Se(t){return a(this,void 0,void 0,(function*(){const n=C(),i=this.environment.DISPUTE_CONTRACT_ADDRESS,a=this.environment.DISPUTE_ABI,[s,r,o]=yield Promise.all([n.readContract({address:i,abi:a,functionName:"disputeBond"}),n.readContract({address:i,abi:a,functionName:"protocolDisputeFee"}),n.readContract({address:i,abi:a,functionName:"disputeToken"})]),d=o===e.zeroAddress,p=s+r;
561
515
  // Get user's balance
562
- let p;return p=d?yield n.getBalance({address:t}):yield n.readContract({address:o,abi:e.erc20Abi,functionName:"balanceOf",args:[t]}),{bondAmount:s,protocolFee:r,totalRequired:u,tokenAddress:o,isNativeToken:d,userBalance:p,hasSufficientBalance:p>=u}}))}
516
+ let u;return u=d?yield n.getBalance({address:t}):yield n.readContract({address:o,abi:e.erc20Abi,functionName:"balanceOf",args:[t]}),{bondAmount:s,protocolFee:r,totalRequired:p,tokenAddress:o,isNativeToken:d,userBalance:u,hasSufficientBalance:u>=p}}))}
563
517
  /**
564
518
  * Fractionalizes an IP NFT into fungible ERC20 tokens.
565
519
  * The NFT is transferred to the fractionalizer contract and a new ERC20 token is created.
@@ -576,7 +530,7 @@ let p;return p=d?yield n.getBalance({address:t}):yield n.readContract({address:o
576
530
  * // Then fractionalize
577
531
  * const result = await origin.fractionalize(1n);
578
532
  * ```
579
- */function Be(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"fractionalize",[e],{waitForReceipt:!0})}))}
533
+ */function xe(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"fractionalize",[e],{waitForReceipt:!0})}))}
580
534
  /**
581
535
  * Redeems an IP NFT by burning all of its fractional tokens.
582
536
  * The caller must hold the entire supply of the NFT's fractional token.
@@ -590,7 +544,7 @@ let p;return p=d?yield n.getBalance({address:t}):yield n.readContract({address:o
590
544
  * // Requires holding 100% of the fractional token supply
591
545
  * await origin.redeem(1n);
592
546
  * ```
593
- */function Fe(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"redeem",[e],{waitForReceipt:!0})}))}
547
+ */function Pe(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"redeem",[e],{waitForReceipt:!0})}))}
594
548
  /**
595
549
  * Gets the fractional ERC20 token address for a specific IP NFT.
596
550
  * Returns zero address if the NFT has not been fractionalized.
@@ -607,7 +561,7 @@ let p;return p=d?yield n.getBalance({address:t}):yield n.readContract({address:o
607
561
  * console.log("NFT has not been fractionalized");
608
562
  * }
609
563
  * ```
610
- */function Oe(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"getTokenForNFT",[e])}))}
564
+ */function De(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"getTokenForNFT",[e])}))}
611
565
  /**
612
566
  * Fractionalizes an IP NFT with automatic approval.
613
567
  * This method first approves the fractionalizer contract to transfer your NFT,
@@ -621,7 +575,7 @@ let p;return p=d?yield n.getBalance({address:t}):yield n.readContract({address:o
621
575
  * // Single call handles approval and fractionalization
622
576
  * const result = await origin.fractionalizeWithApproval(1n);
623
577
  * ```
624
- */function Ue(e){return a(this,void 0,void 0,(function*(){return yield this.approve(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,e),this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"fractionalize",[e],{waitForReceipt:!0})}))}
578
+ */function Re(e){return a(this,void 0,void 0,(function*(){return yield this.approve(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,e),this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"fractionalize",[e],{waitForReceipt:!0})}))}
625
579
  /**
626
580
  * Redeems fractional tokens for the underlying NFT, but only if the caller owns 100% of the supply.
627
581
  * This method checks the caller's balance before attempting to redeem, providing a clear error
@@ -640,17 +594,17 @@ let p;return p=d?yield n.getBalance({address:t}):yield n.readContract({address:o
640
594
  * console.log("You don't own all fractional tokens yet");
641
595
  * }
642
596
  * ```
643
- */function $e(e){return a(this,void 0,void 0,(function*(){
597
+ */function Ne(e){return a(this,void 0,void 0,(function*(){
644
598
  // get the ERC20 token address for this NFT
645
599
  const t=yield this.getTokenForNFT(e);if(!t||"0x0000000000000000000000000000000000000000"===t)throw new Error("This NFT has not been fractionalized");
646
600
  // get current wallet address
647
- const n=yield pe(this.viemClient),i=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"}],a=C(),[s,r]=yield Promise.all([a.readContract({address:t,abi:i,functionName:"balanceOf",args:[n]}),a.readContract({address:t,abi:i,functionName:"totalSupply",args:[]})]);
601
+ const n=yield we(this.viemClient),i=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"}],a=C(),[s,r]=yield Promise.all([a.readContract({address:t,abi:i,functionName:"balanceOf",args:[n]}),a.readContract({address:t,abi:i,functionName:"totalSupply",args:[]})]);
648
602
  // check caller's balance and total supply
649
603
  if(s<r){const e=s*BigInt(1e4)/r;throw new Error(`Cannot redeem: you own ${e/BigInt(100)}.${e%BigInt(100)}% of the fractional tokens (${s}/${r}). You need 100% to redeem.`)}
650
604
  // proceed with redemption
651
605
  return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"redeem",[e],{waitForReceipt:!0})}))}
652
606
  // minimal ERC20 ABI
653
- const He=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],stateMutability:"view",type:"function"}];
607
+ const _e=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],stateMutability:"view",type:"function"}];
654
608
  /**
655
609
  * Gets a user's ownership percentage of a fractionalized NFT.
656
610
  * Returns detailed information about the user's fractional token holdings.
@@ -675,13 +629,13 @@ const He=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{nam
675
629
  * }
676
630
  * }
677
631
  * ```
678
- */function je(t,n){return a(this,void 0,void 0,(function*(){const i=yield pe(this.viemClient,n),a=yield this.getTokenForNFT(t);
632
+ */function ke(t,n){return a(this,void 0,void 0,(function*(){const i=yield we(this.viemClient,n),a=yield this.getTokenForNFT(t);
679
633
  // get the ERC20 token address for this NFT
680
634
  // check if fractionalized
681
- if(!a||a===e.zeroAddress)return{tokenId:t,erc20Address:e.zeroAddress,isFractionalized:!1,balance:BigInt(0),totalSupply:BigInt(0),ownershipPercentage:0,canRedeem:!1,decimals:18};const s=C(),[r,o,d]=yield Promise.all([s.readContract({address:a,abi:He,functionName:"balanceOf",args:[i]}),s.readContract({address:a,abi:He,functionName:"totalSupply",args:[]}),s.readContract({address:a,abi:He,functionName:"decimals",args:[]})]);
635
+ if(!a||a===e.zeroAddress)return{tokenId:t,erc20Address:e.zeroAddress,isFractionalized:!1,balance:BigInt(0),totalSupply:BigInt(0),ownershipPercentage:0,canRedeem:!1,decimals:18};const s=C(),[r,o,d]=yield Promise.all([s.readContract({address:a,abi:_e,functionName:"balanceOf",args:[i]}),s.readContract({address:a,abi:_e,functionName:"totalSupply",args:[]}),s.readContract({address:a,abi:_e,functionName:"decimals",args:[]})]);
682
636
  // fetch ERC20 data
683
637
  // calculate ownership percentage
684
- let u=0;o>BigInt(0)&&(u=Number(r*BigInt(1e4)/o)/100);const p=r>=o&&o>BigInt(0);return{tokenId:t,erc20Address:a,isFractionalized:!0,balance:r,totalSupply:o,ownershipPercentage:u,canRedeem:p,decimals:d}}))}
638
+ let p=0;o>BigInt(0)&&(p=Number(r*BigInt(1e4)/o)/100);const u=r>=o&&o>BigInt(0);return{tokenId:t,erc20Address:a,isFractionalized:!0,balance:r,totalSupply:o,ownershipPercentage:p,canRedeem:u,decimals:d}}))}
685
639
  /**
686
640
  * Checks if a user can fractionalize an NFT and why not if they can't.
687
641
  * Returns detailed information about eligibility requirements.
@@ -705,7 +659,7 @@ let u=0;o>BigInt(0)&&(u=Number(r*BigInt(1e4)/o)/100);const p=r>=o&&o>BigInt(0);r
705
659
  * console.log(`Cannot fractionalize: ${eligibility.reason}`);
706
660
  * }
707
661
  * ```
708
- */function Le(t,n){return a(this,void 0,void 0,(function*(){const i=yield pe(this.viemClient,n),a=C(),s=this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,[r,o,d,u,p]=yield Promise.all([this.ownerOf(t),this.dataStatus(t),this.getTokenForNFT(t),a.readContract({address:this.environment.DATANFT_CONTRACT_ADDRESS,abi:this.environment.IPNFT_ABI,functionName:"getApproved",args:[t]}),a.readContract({address:this.environment.DATANFT_CONTRACT_ADDRESS,abi:this.environment.IPNFT_ABI,functionName:"isApprovedForAll",args:[i,s]})]),l=r.toLowerCase()===i.toLowerCase(),y=d&&d!==e.zeroAddress,c=p||u.toLowerCase()===s.toLowerCase(),m={canFractionalize:!1,isOwner:l,currentOwner:r,isAlreadyFractionalized:!!y,existingErc20Address:y?d:void 0,dataStatus:o,isApproved:c,needsApproval:!c};
662
+ */function Me(t,n){return a(this,void 0,void 0,(function*(){const i=yield we(this.viemClient,n),a=C(),s=this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,[r,o,d,p,u]=yield Promise.all([this.ownerOf(t),this.dataStatus(t),this.getTokenForNFT(t),a.readContract({address:this.environment.DATANFT_CONTRACT_ADDRESS,abi:this.environment.IPNFT_ABI,functionName:"getApproved",args:[t]}),a.readContract({address:this.environment.DATANFT_CONTRACT_ADDRESS,abi:this.environment.IPNFT_ABI,functionName:"isApprovedForAll",args:[i,s]})]),l=r.toLowerCase()===i.toLowerCase(),y=d&&d!==e.zeroAddress,c=u||p.toLowerCase()===s.toLowerCase(),m={canFractionalize:!1,isOwner:l,currentOwner:r,isAlreadyFractionalized:!!y,existingErc20Address:y?d:void 0,dataStatus:o,isApproved:c,needsApproval:!c};
709
663
  // check requirements
710
664
  return l?y?Object.assign(Object.assign({},m),{reason:`This NFT is already fractionalized. ERC20: ${d}`}):o===exports.DataStatus.DELETED?Object.assign(Object.assign({},m),{reason:"This NFT has been deleted and cannot be fractionalized"}):o===exports.DataStatus.DISPUTED?Object.assign(Object.assign({},m),{reason:"This NFT is disputed and cannot be fractionalized"}):Object.assign(Object.assign({},m),{canFractionalize:!0}):Object.assign(Object.assign({},m),{reason:`You don't own this NFT. Current owner: ${r}`})}))}
711
665
  /**
@@ -721,13 +675,13 @@ return l?y?Object.assign(Object.assign({},m),{reason:`This NFT is already fracti
721
675
  * console.log(`Revenue Share: ${appInfo.revenueShareBps / 100}%`);
722
676
  * console.log(`Active: ${appInfo.isActive}`);
723
677
  * ```
724
- */function ze(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.APP_REGISTRY_CONTRACT_ADDRESS,this.environment.APP_REGISTRY_ABI,"getAppInfo",[e])}))}
678
+ */function Oe(e){return a(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.APP_REGISTRY_CONTRACT_ADDRESS,this.environment.APP_REGISTRY_ABI,"getAppInfo",[e])}))}
725
679
  /**
726
680
  * Approves a spender to spend a specified amount of tokens on behalf of the owner.
727
681
  * If the current allowance is less than the specified amount, it will perform the approval.
728
682
  * Waits for the approval transaction to be confirmed before returning.
729
683
  * @param {ApproveParams} params - The parameters for the approval.
730
- */function Ve(t){return a(this,arguments,void 0,(function*({walletClient:t,publicClient:n,tokenAddress:i,owner:a,spender:s,amount:r,chain:o}){if((yield n.readContract({address:i,abi:e.erc20Abi,functionName:"allowance",args:[a,s]}))<r){const d=yield t.writeContract({address:i,account:a,abi:e.erc20Abi,functionName:"approve",args:[s,r],chain:o});
684
+ */function Be(t){return a(this,arguments,void 0,(function*({walletClient:t,publicClient:n,tokenAddress:i,owner:a,spender:s,amount:r,chain:o}){if((yield n.readContract({address:i,abi:e.erc20Abi,functionName:"allowance",args:[a,s]}))<r){const d=yield t.writeContract({address:i,account:a,abi:e.erc20Abi,functionName:"approve",args:[s,r],chain:o});
731
685
  // Wait for the approval transaction to be confirmed with extra confirmations
732
686
  yield n.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e=>setTimeout(e,1e3)))}}))}
733
687
  /**
@@ -748,7 +702,7 @@ yield n.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
748
702
  * const totalValue = 3000000000000000n;
749
703
  * await origin.bulkBuyAccess(buyerAddress, purchases, totalValue);
750
704
  * ```
751
- */function qe(e,t,n){return this.callContractMethod(this.environment.BATCH_PURCHASE_CONTRACT_ADDRESS,this.environment.BATCH_PURCHASE_ABI,"bulkBuyAccess",[e,t],{waitForReceipt:!0,value:n})}
705
+ */function Fe(e,t,n){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkBuyAccess",[e,t],{waitForReceipt:!0,value:n})}
752
706
  /**
753
707
  * Executes a fault-tolerant bulk purchase of multiple IP-NFT licenses.
754
708
  * Individual purchases can fail without reverting the entire transaction.
@@ -765,7 +719,7 @@ yield n.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
765
719
  * console.log(`Purchased ${result.successCount} of ${purchases.length} IPs`);
766
720
  * console.log(`Failed tokens: ${result.failedTokenIds}`);
767
721
  * ```
768
- */function Je(e,t,n){return this.callContractMethod(this.environment.BATCH_PURCHASE_CONTRACT_ADDRESS,this.environment.BATCH_PURCHASE_ABI,"bulkBuyAccessTolerant",[e,t],{waitForReceipt:!0,value:n})}
722
+ */function Ue(e,t,n){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkBuyAccessTolerant",[e,t],{waitForReceipt:!0,value:n})}
769
723
  /**
770
724
  * Previews the total cost of purchasing multiple IP-NFT licenses.
771
725
  * This is a view function that doesn't require a transaction.
@@ -779,7 +733,7 @@ yield n.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
779
733
  * console.log(`Total cost: ${preview.totalNativeCost} wei`);
780
734
  * console.log(`Valid tokens: ${preview.validCount}`);
781
735
  * ```
782
- */function Ge(e){return this.callContractMethod(this.environment.BATCH_PURCHASE_CONTRACT_ADDRESS,this.environment.BATCH_PURCHASE_ABI,"previewBulkCost",[e])}
736
+ */function $e(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"previewBulkCost",[e])}
783
737
  /**
784
738
  * Builds purchase parameters for multiple tokens by fetching their current license terms.
785
739
  * This is a view function that doesn't require a transaction.
@@ -792,7 +746,7 @@ yield n.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
792
746
  * const params = await origin.buildPurchaseParams([1n, 2n, 3n]);
793
747
  * await origin.bulkBuyAccess(buyer, params, totalValue);
794
748
  * ```
795
- */function We(e){return this.callContractMethod(this.environment.BATCH_PURCHASE_CONTRACT_ADDRESS,this.environment.BATCH_PURCHASE_ABI,"buildPurchaseParams",[e])}
749
+ */function He(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"buildPurchaseParams",[e])}
796
750
  /**
797
751
  * Checks the active status of multiple tokens.
798
752
  *
@@ -804,7 +758,7 @@ yield n.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
804
758
  * const activeFlags = await origin.checkActiveStatus([1n, 2n, 3n]);
805
759
  * const activeTokens = tokenIds.filter((_, i) => activeFlags[i]);
806
760
  * ```
807
- */function Ye(e){return this.callContractMethod(this.environment.BATCH_PURCHASE_CONTRACT_ADDRESS,this.environment.BATCH_PURCHASE_ABI,"checkActiveStatus",[e])}
761
+ */function je(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"checkActiveStatus",[e])}
808
762
  /**
809
763
  * Smart bulk purchase that automatically fetches terms and handles the entire purchase flow.
810
764
  * This is the recommended method for most use cases.
@@ -821,7 +775,7 @@ yield n.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
821
775
  * // Tolerant purchase - continue even if some fail
822
776
  * const result = await origin.bulkBuyAccessSmart([1n, 2n, 3n], { tolerant: true });
823
777
  * ```
824
- */function Ze(t,n){return a(this,void 0,void 0,(function*(){if(!t||0===t.length)throw new T("No token IDs provided for bulk purchase. Please provide at least one token ID.");
778
+ */function Le(t,n){return a(this,void 0,void 0,(function*(){if(!t||0===t.length)throw new T("No token IDs provided for bulk purchase. Please provide at least one token ID.");
825
779
  // Get the buyer's wallet address
826
780
  const i=this.viemClient;if(!i)throw new v("Cannot perform bulk purchase: wallet not connected. Please connect a wallet first.");let a;if(i.account)a=i.account.address;else{const e=yield i.request({method:"eth_requestAccounts",params:[]});if(!e||0===e.length)throw new v("No accounts found in connected wallet. Please unlock your wallet or add an account.");a=e[0]}
827
781
  // Build purchase params from on-chain data
@@ -831,38 +785,80 @@ let r=BigInt(0);const o=[];for(const t of s)if(t.expectedPaymentToken===e.zeroAd
831
785
  // Group ERC20 purchases by token
832
786
  const e=o.find((e=>e.token===t.expectedPaymentToken));e?e.amount+=t.expectedPrice:o.push({token:t.expectedPaymentToken,amount:t.expectedPrice})}
833
787
  // Approve ERC20 tokens if needed
834
- const d=C();for(const e of o)yield Ve({walletClient:i,publicClient:d,tokenAddress:e.token,owner:a,spender:this.environment.BATCH_PURCHASE_CONTRACT_ADDRESS,amount:e.amount,chain:this.environment.CHAIN});
788
+ const d=C();for(const e of o)yield Be({walletClient:i,publicClient:d,tokenAddress:e.token,owner:a,spender:this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,amount:e.amount,chain:this.environment.CHAIN});
835
789
  // Execute the purchase
836
- return(null==n?void 0:n.tolerant)?this.bulkBuyAccessTolerant(a,s,r):this.bulkBuyAccess(a,s,r)}))}var Ke,Xe,Qe,et,tt,nt,it,at,st,rt,ot,dt,ut,pt,lt,yt,ct,mt,ht,Tt,ft,vt;
790
+ return(null==n?void 0:n.tolerant)?this.bulkBuyAccessTolerant(a,s,r):this.bulkBuyAccess(a,s,r)}))}
791
+ /**
792
+ * Executes an atomic bulk mint of multiple IP-NFTs.
793
+ * All mints succeed or all fail together.
794
+ *
795
+ * @param mints Array of mint parameters for each token.
796
+ * @returns A promise that resolves with the transaction result.
797
+ *
798
+ * @example
799
+ * ```typescript
800
+ * const mints = [
801
+ * {
802
+ * to: "0x...",
803
+ * tokenId: 1n,
804
+ * creatorContentHash: "0x...",
805
+ * uri: "ipfs://...",
806
+ * licenseTerms: { price: 1000n, duration: 86400, royaltyBps: 500, paymentToken: zeroAddress, licenseType: 0 },
807
+ * deadline: BigInt(Date.now() + 600000),
808
+ * parents: [],
809
+ * isIP: true,
810
+ * appId: "myApp",
811
+ * signature: "0x...",
812
+ * },
813
+ * ];
814
+ * await origin.bulkMint(mints);
815
+ * ```
816
+ */function ze(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkMint",[e],{waitForReceipt:!0})}
817
+ /**
818
+ * Executes a fault-tolerant bulk mint of multiple IP-NFTs.
819
+ * Individual mints can fail without reverting the entire transaction.
820
+ *
821
+ * @param mints Array of mint parameters for each token.
822
+ * @returns A promise that resolves with the tolerant mint result including success/failure counts.
823
+ *
824
+ * @example
825
+ * ```typescript
826
+ * const result = await origin.bulkMintTolerant(mints);
827
+ * console.log(`Minted ${result.successCount} of ${mints.length} tokens`);
828
+ * console.log(`Failed tokens: ${result.failedTokenIds}`);
829
+ * ```
830
+ */function Ve(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkMintTolerant",[e],{waitForReceipt:!0})}var qe,Je,We,Ge,Ze,Ye,Ke,Qe,Xe,et,tt,nt,it,at,st,rt,ot,dt,pt,ut,lt,yt;
837
831
  /**
838
832
  * The Origin class
839
833
  * Handles interactions with Origin protocol.
840
- */class At{constructor(e,t,n,i,a){Ke.add(this),t?this.jwt=t:console.warn("JWT not provided. Some features may be unavailable."),this.viemClient=n,this.environment="string"==typeof e?U[e]:e||U.DEVELOPMENT,this.environment.AUTH_HUB_BASE_API+="PRODUCTION"===e?"/auth-mainnet":"",this.baseParentId=i,this.appId=a,
834
+ */class ct{constructor(e,t,n,i,a){qe.add(this),t?this.jwt=t:console.warn("JWT not provided. Some features may be unavailable."),this.viemClient=n,this.environment="string"==typeof e?U[e]:e||U.DEVELOPMENT,this.baseParentId=i,this.appId=a,
841
835
  // DataNFT methods
842
- this.mintWithSignature=z.bind(this),this.registerIpNFT=V.bind(this),this.updateTerms=q.bind(this),this.finalizeDelete=J.bind(this),this.getOrCreateRoyaltyVault=G.bind(this),this.getTerms=W.bind(this),this.ownerOf=Y.bind(this),this.balanceOf=Z.bind(this),this.tokenURI=K.bind(this),this.dataStatus=X.bind(this),this.isApprovedForAll=Q.bind(this),this.transferFrom=ee.bind(this),this.safeTransferFrom=te.bind(this),this.approve=ne.bind(this),this.setApprovalForAll=ie.bind(this),
836
+ this.mintWithSignature=z.bind(this),this.registerIpNFT=V.bind(this),this.updateTerms=q.bind(this),this.finalizeDelete=J.bind(this),this.getOrCreateRoyaltyVault=W.bind(this),this.getTerms=G.bind(this),this.ownerOf=Z.bind(this),this.balanceOf=Y.bind(this),this.tokenURI=K.bind(this),this.dataStatus=Q.bind(this),this.isApprovedForAll=X.bind(this),this.transferFrom=ee.bind(this),this.safeTransferFrom=te.bind(this),this.approve=ne.bind(this),this.setApprovalForAll=ie.bind(this),
843
837
  // Marketplace methods
844
- this.buyAccess=ae.bind(this),this.hasAccess=se.bind(this),this.subscriptionExpiry=re.bind(this),this.settlePaymentIntent=ue.bind(this),this.getDataWithIntent=Te.bind(this),
838
+ this.buyAccess=ae.bind(this),this.hasAccess=se.bind(this),this.subscriptionExpiry=re.bind(this),
845
839
  // Bulk purchase methods
846
- this.bulkBuyAccess=qe.bind(this),this.bulkBuyAccessTolerant=Je.bind(this),this.bulkBuyAccessSmart=Ze.bind(this),this.previewBulkCost=Ge.bind(this),this.buildPurchaseParams=We.bind(this),this.checkActiveStatus=Ye.bind(this),
840
+ this.bulkBuyAccess=Fe.bind(this),this.bulkBuyAccessTolerant=Ue.bind(this),this.bulkBuyAccessSmart=Le.bind(this),this.previewBulkCost=$e.bind(this),this.buildPurchaseParams=He.bind(this),this.checkActiveStatus=je.bind(this),
841
+ // Bulk mint methods
842
+ this.bulkMint=ze.bind(this),this.bulkMintTolerant=Ve.bind(this),
847
843
  // Dispute module methods
848
- this.raiseDispute=we.bind(this),this.raiseDisputeSmart=be.bind(this),this.disputeAssertion=Ce.bind(this),this.disputeAssertionSmart=Ee.bind(this),this.voteOnDispute=Se.bind(this),this.resolveDispute=De.bind(this),this.cancelDispute=Pe.bind(this),this.tagChildIp=Re.bind(this),this.getDispute=_e.bind(this),this.canVoteOnDispute=Ne.bind(this),this.getDisputeProgress=ke.bind(this),this.getDisputeRequirements=Me.bind(this),
844
+ this.raiseDispute=oe.bind(this),this.raiseDisputeSmart=le.bind(this),this.disputeAssertion=ye.bind(this),this.disputeAssertionSmart=ce.bind(this),this.voteOnDispute=me.bind(this),this.resolveDispute=he.bind(this),this.cancelDispute=Te.bind(this),this.tagChildIp=fe.bind(this),this.getDispute=ve.bind(this),this.canVoteOnDispute=Ce.bind(this),this.getDisputeProgress=Ee.bind(this),this.getDisputeRequirements=Se.bind(this),
849
845
  // Fractionalizer module methods
850
- this.fractionalize=Be.bind(this),this.redeem=Fe.bind(this),this.getTokenForNFT=Oe.bind(this),this.fractionalizeWithApproval=Ue.bind(this),this.redeemIfComplete=$e.bind(this),this.getFractionOwnership=je.bind(this),this.canFractionalize=Le.bind(this),
846
+ this.fractionalize=xe.bind(this),this.redeem=Pe.bind(this),this.getTokenForNFT=De.bind(this),this.fractionalizeWithApproval=Re.bind(this),this.redeemIfComplete=Ne.bind(this),this.getFractionOwnership=ke.bind(this),this.canFractionalize=Me.bind(this),
851
847
  // AppRegistry module methods
852
- this.getAppInfo=ze.bind(this)}getJwt(){return this.jwt}setViemClient(e){this.viemClient=e}
848
+ this.getAppInfo=Oe.bind(this)}getJwt(){return this.jwt}setViemClient(e){this.viemClient=e}
853
849
  /**
854
850
  * Approves an ERC20 token for spending by a spender address if the current allowance is insufficient.
855
851
  * Waits for the approval transaction to be confirmed before returning.
856
852
  * @param tokenAddress The address of the ERC20 token.
857
853
  * @param spender The address that will be approved to spend the tokens.
858
854
  * @param amount The amount of tokens to approve.
859
- */approveERC20IfNeeded(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield s(this,Ke,"m",ot).call(this);yield Ve({walletClient:this.viemClient,publicClient:C(),tokenAddress:e,owner:i,spender:t,amount:n,chain:this.environment.CHAIN})}))}
855
+ */approveERC20IfNeeded(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield s(this,qe,"m",tt).call(this);yield Be({walletClient:this.viemClient,publicClient:C(),tokenAddress:e,owner:i,spender:t,amount:n,chain:this.environment.CHAIN})}))}
860
856
  /**
861
857
  * Uploads a JSON object to IPFS and returns the resulting CID.
862
858
  * @param data The JSON object to upload.
863
859
  * @returns The CID of the uploaded JSON.
864
860
  * @throws {APIError} If the upload fails.
865
- */uploadJSONToIPFS(e){return a(this,void 0,void 0,(function*(){const t=JSON.stringify(e),n=new File([t],"evidence.json",{type:"application/json"}),i=yield s(this,Ke,"m",et).call(this,n);if(!i)throw new h("Failed to upload evidence to IPFS");return i}))}
861
+ */uploadJSONToIPFS(e){return a(this,void 0,void 0,(function*(){const t=JSON.stringify(e),n=new File([t],"evidence.json",{type:"application/json"}),i=yield s(this,qe,"m",Ge).call(this,n);if(!i)throw new h("Failed to upload evidence to IPFS");return i}))}
866
862
  /**
867
863
  * Mints a file-based IpNFT.
868
864
  * @param file The file to mint.
@@ -871,20 +867,56 @@ this.getAppInfo=ze.bind(this)}getJwt(){return this.jwt}setViemClient(e){this.vie
871
867
  * @param parents Optional parent token IDs for lineage tracking.
872
868
  * @param options Optional parameters including progress callback, preview image, and use asset as preview flag.
873
869
  * @returns The token ID of the minted IpNFT as a string, or null if minting failed.
874
- */mintFile(e,t,n,i,r){return a(this,void 0,void 0,(function*(){let a,o=null;try{o=yield s(this,Ke,"m",at).call(this)}catch(t){throw new v(`Cannot mint file "${e.name}": wallet not connected. Please connect a wallet first.`)}try{if(a=yield s(this,Ke,"m",tt).call(this,e,r),!a||!a.key)throw new h(`Failed to upload file "${e.name}": no upload info returned from server`)}catch(t){if(t instanceof h||t instanceof v)throw t;throw new h(`Failed to upload file "${e.name}": ${w(t)}`)}e.type&&(t.mimetype=e.type);let d=null;(null==r?void 0:r.previewImage)&&(null==r?void 0:r.previewImage.type.startsWith("image/"))?d=yield s(this,Ke,"m",et).call(this,r.previewImage):(null==r?void 0:r.useAssetAsPreview)&&e.type.startsWith("image/")&&(d=yield s(this,Ke,"m",et).call(this,e)),d&&(t.image=`ipfs://${d}`);const u=BigInt(Date.now()+6e5);// 10 minutes from now
875
- let p;this.baseParentId&&(i||(i=[]),i.unshift(this.baseParentId));try{p=yield this.registerIpNFT("file",u,n,t,!0,// isIp
870
+ */mintFile(e,t,n,i,r){return a(this,void 0,void 0,(function*(){let a,o=null;try{o=yield s(this,qe,"m",Qe).call(this)}catch(t){throw new v(`Cannot mint file "${e.name}": wallet not connected. Please connect a wallet first.`)}try{if(a=yield s(this,qe,"m",Ze).call(this,e,r),!a||!a.key)throw new h(`Failed to upload file "${e.name}": no upload info returned from server`)}catch(t){if(t instanceof h||t instanceof v)throw t;throw new h(`Failed to upload file "${e.name}": ${A(t)}`)}e.type&&(t.mimetype=e.type);let d=null;(null==r?void 0:r.previewImage)&&(null==r?void 0:r.previewImage.type.startsWith("image/"))?d=yield s(this,qe,"m",Ge).call(this,r.previewImage):(null==r?void 0:r.useAssetAsPreview)&&e.type.startsWith("image/")&&(d=yield s(this,qe,"m",Ge).call(this,e)),d&&(t.image=`ipfs://${d}`);const p=BigInt(Date.now()+6e5);// 10 minutes from now
871
+ let u;this.baseParentId&&(i||(i=[]),i.unshift(this.baseParentId));try{u=yield this.registerIpNFT("file",p,n,t,!0,// isIp
876
872
  a.key,// fileKey
877
- i,this.appId)}catch(e){throw yield s(this,Ke,"m",Qe).call(this,a.key,a.uploadId,[]),new Error(`Failed to register IpNFT: ${e instanceof Error?e.message:String(e)}`)}const{tokenId:l,signerAddress:y,creatorContentHash:c,signature:m,uri:T}=p;if(!(l&&y&&c&&void 0!==m&&T))throw new Error("Failed to register IpNFT: Missing required fields in registration response.");try{const e=yield this.mintWithSignature(o,l,i||[],!0,c,T,n,u,m,this.appId);if(-1===["0x1","success"].indexOf(e.receipt.status))throw yield s(this,Ke,"m",Qe).call(this,a.key,a.uploadId,[]),new Error(`Minting failed with status: ${e.receipt.status}`)}catch(e){throw yield s(this,Ke,"m",Qe).call(this,a.key,a.uploadId,[]),new Error(`Minting transaction failed: ${e instanceof Error?e.message:String(e)}`)}return l.toString()}))}
873
+ i,this.appId)}catch(e){throw yield s(this,qe,"m",We).call(this,a.key,a.uploadId,[]),new Error(`Failed to register IpNFT: ${e instanceof Error?e.message:String(e)}`)}const{tokenId:l,signerAddress:y,creatorContentHash:c,signature:m,uri:T}=u;if(!(l&&y&&c&&void 0!==m&&T))throw new Error("Failed to register IpNFT: Missing required fields in registration response.");try{const e=yield this.mintWithSignature(o,l,i||[],!0,c,T,n,p,m,this.appId);if(-1===["0x1","success"].indexOf(e.receipt.status))throw yield s(this,qe,"m",We).call(this,a.key,a.uploadId,[]),new Error(`Minting failed with status: ${e.receipt.status}`)}catch(e){throw yield s(this,qe,"m",We).call(this,a.key,a.uploadId,[]),new Error(`Minting transaction failed: ${e instanceof Error?e.message:String(e)}`)}return l.toString()}))}
874
+ /**
875
+ * Mints multiple file-based IpNFTs in a single transaction using the BatchOperations contract.
876
+ * Each file is uploaded and registered individually, then all mints are batched into one on-chain call.
877
+ *
878
+ * @param entries Array of file entries to mint, each containing a file, metadata, license terms, and optional parents/preview.
879
+ * @param options Optional configuration including tolerant mode and progress callback.
880
+ * @returns A promise that resolves with an array of token ID strings for each entry, and the transaction result.
881
+ *
882
+ * @example
883
+ * ```typescript
884
+ * const result = await origin.bulkMintFile([
885
+ * { file: file1, metadata: { name: "Asset 1" }, license: myLicense },
886
+ * { file: file2, metadata: { name: "Asset 2" }, license: myLicense },
887
+ * ]);
888
+ * console.log(`Minted token IDs: ${result.tokenIds}`);
889
+ *
890
+ * // Tolerant mode - continue even if some mints fail
891
+ * const result = await origin.bulkMintFile(entries, { tolerant: true });
892
+ * ```
893
+ */bulkMintFile(e,t){return a(this,void 0,void 0,(function*(){var n,i;if(!e||0===e.length)throw new T("No file entries provided for bulk mint. Please provide at least one entry.");let a=null;try{a=yield s(this,qe,"m",Qe).call(this)}catch(e){throw new v("Cannot bulk mint files: wallet not connected. Please connect a wallet first.")}const r=[],o=[],d=[];for(let p=0;p<e.length;p++){const u=e[p],{file:l,metadata:y,license:c}=u;let m,{parents:T}=u;
894
+ // Upload file
895
+ try{if(m=yield s(this,qe,"m",Ze).call(this,l,{progressCallback:n=>{var i;null===(i=null==t?void 0:t.progressCallback)||void 0===i||i.call(t,{fileIndex:p,fileCount:e.length,stage:"uploading",percent:n})}}),!m||!m.key)throw new h(`Failed to upload file "${l.name}": no upload info returned from server`)}catch(e){if(e instanceof h||e instanceof v)throw e;throw new h(`Failed to upload file "${l.name}": ${A(e)}`)}d.push(m),
896
+ // Set mimetype
897
+ l.type&&(y.mimetype=l.type);
898
+ // Handle preview image
899
+ let f=null;u.previewImage&&u.previewImage.type.startsWith("image/")?f=yield s(this,qe,"m",Ge).call(this,u.previewImage):u.useAssetAsPreview&&l.type.startsWith("image/")&&(f=yield s(this,qe,"m",Ge).call(this,l)),f&&(y.image=`ipfs://${f}`);const w=BigInt(Date.now()+6e5);// 10 minutes from now
900
+ // Prepare parents
901
+ let I;this.baseParentId&&(T||(T=[]),T=[this.baseParentId,...T]),
902
+ // Register IpNFT to get signature
903
+ null===(n=null==t?void 0:t.progressCallback)||void 0===n||n.call(t,{fileIndex:p,fileCount:e.length,stage:"registering",percent:100});try{I=yield this.registerIpNFT("file",w,c,y,!0,// isIp
904
+ m.key,// fileKey
905
+ T,this.appId)}catch(e){throw yield s(this,qe,"m",We).call(this,m.key,m.uploadId,[]),new Error(`Failed to register IpNFT for file "${l.name}": ${e instanceof Error?e.message:String(e)}`)}const{tokenId:g,creatorContentHash:b,signature:C,uri:E}=I;if(!g||!b||void 0===C||!E)throw yield s(this,qe,"m",We).call(this,m.key,m.uploadId,[]),new Error(`Failed to register IpNFT for file "${l.name}": Missing required fields in registration response.`);o.push(g.toString()),r.push({to:a,tokenId:BigInt(g),creatorContentHash:b,uri:E,licenseTerms:c,deadline:w,parents:T||[],isIP:!0,appId:null!==(i=this.appId)&&void 0!==i?i:"",signature:C})}
906
+ // Execute bulk mint
907
+ try{let e;return e=(null==t?void 0:t.tolerant)?yield this.bulkMintTolerant(r):yield this.bulkMint(r),{tokenIds:o,result:e}}catch(e){
908
+ // Mark all uploads as failed
909
+ for(const e of d)try{yield s(this,qe,"m",We).call(this,e.key,e.uploadId,[])}catch(e){}throw new Error(`Bulk mint transaction failed: ${e instanceof Error?e.message:String(e)}`)}}))}
878
910
  /**
879
911
  * Mints a social IpNFT.
880
912
  * @param source The social media source (spotify, twitter, tiktok).
881
913
  * @param metadata The metadata associated with the social media content.
882
914
  * @param license The license terms for the IpNFT.
883
915
  * @return The token ID of the minted IpNFT as a string, or null if minting failed.
884
- */mintSocial(e,t,n){return a(this,void 0,void 0,(function*(){let i=null;try{i=yield s(this,Ke,"m",at).call(this)}catch(t){throw new v(`Cannot mint ${e} social IP: wallet not connected. Please connect a wallet first.`)}t.mimetype=`social/${e}`;const a=BigInt(Math.floor(Date.now()/1e3)+600);// 10 minutes from now
916
+ */mintSocial(e,t,n){return a(this,void 0,void 0,(function*(){let i=null;try{i=yield s(this,qe,"m",Qe).call(this)}catch(t){throw new v(`Cannot mint ${e} social IP: wallet not connected. Please connect a wallet first.`)}t.mimetype=`social/${e}`;const a=BigInt(Math.floor(Date.now()/1e3)+600);// 10 minutes from now
885
917
  let r,o=this.baseParentId?[this.baseParentId]:[];try{r=yield this.registerIpNFT(e,a,n,t,!0,// isIp
886
918
  void 0,// fileKey
887
- o,this.appId)}catch(e){throw new Error(`Failed to register Social IpNFT: ${e instanceof Error?e.message:String(e)}`)}const{tokenId:d,signerAddress:u,creatorContentHash:p,signature:l,uri:y}=r;if(!(d&&u&&p&&void 0!==l&&y))throw new Error("Failed to register Social IpNFT: Missing required fields in registration response.");try{const e=yield this.mintWithSignature(i,d,o,!0,p,y,n,a,l,this.appId);if(-1===["0x1","success"].indexOf(e.receipt.status))throw new Error(`Minting Social IpNFT failed with status: ${e.receipt.status}`)}catch(e){throw new Error(`Minting transaction failed: ${e instanceof Error?e.message:String(e)}`)}return d.toString()}))}
919
+ o,this.appId)}catch(e){throw new Error(`Failed to register Social IpNFT: ${e instanceof Error?e.message:String(e)}`)}const{tokenId:d,signerAddress:p,creatorContentHash:u,signature:l,uri:y}=r;if(!(d&&p&&u&&void 0!==l&&y))throw new Error("Failed to register Social IpNFT: Missing required fields in registration response.");try{const e=yield this.mintWithSignature(i,d,o,!0,u,y,n,a,l,this.appId);if(-1===["0x1","success"].indexOf(e.receipt.status))throw new Error(`Minting Social IpNFT failed with status: ${e.receipt.status}`)}catch(e){throw new Error(`Minting transaction failed: ${e instanceof Error?e.message:String(e)}`)}return d.toString()}))}
888
920
  /**
889
921
  * Call a contract method.
890
922
  * @param {string} contractAddress The contract address.
@@ -894,9 +926,9 @@ o,this.appId)}catch(e){throw new Error(`Failed to register Social IpNFT: ${e ins
894
926
  * @param {CallOptions} [options] The call options.
895
927
  * @returns {Promise<any>} A promise that resolves with the result of the contract call or transaction hash.
896
928
  * @throws {Error} - Throws an error if the wallet client is not connected and the method is not a view function.
897
- */callContractMethod(t,n,i,r){return a(this,arguments,void 0,(function*(t,n,i,a,r={}){var o;let d=null;try{d=yield s(this,Ke,"m",at).call(this)}catch(e){throw new v(`Cannot call "${i}" on contract ${t}: wallet not connected`)}const u=e.getAbiItem({abi:n,name:i});if(u&&"stateMutability"in u&&("view"===u.stateMutability||"pure"===u.stateMutability)){const e=C();return(yield e.readContract({address:t,abi:n,functionName:i,args:a}))||null}yield s(this,Ke,"m",it).call(this,this.environment.CHAIN);const p=C(),{result:l,request:y}=yield p.simulateContract({account:d,address:t,abi:n,functionName:i,args:a,value:r.value});
929
+ */callContractMethod(t,n,i,r){return a(this,arguments,void 0,(function*(t,n,i,a,r={}){var o;let d=null;try{d=yield s(this,qe,"m",Qe).call(this)}catch(e){throw new v(`Cannot call "${i}" on contract ${t}: wallet not connected`)}const p=e.getAbiItem({abi:n,name:i});if(p&&"stateMutability"in p&&("view"===p.stateMutability||"pure"===p.stateMutability)){const e=C();return(yield e.readContract({address:t,abi:n,functionName:i,args:a}))||null}yield s(this,qe,"m",Ke).call(this,this.environment.CHAIN);const u=C(),{result:l,request:y}=yield u.simulateContract({account:d,address:t,abi:n,functionName:i,args:a,value:r.value});
898
930
  // simulate
899
- if(r.simulate)return l;try{const e=yield null===(o=this.viemClient)||void 0===o?void 0:o.writeContract(y);if("string"!=typeof e)throw new A(`Transaction for "${i}" failed to send: no transaction hash returned`,{contractName:t,methodName:i});if(!r.waitForReceipt)return{txHash:e,simulatedResult:l};return{txHash:e,receipt:yield s(this,Ke,"m",nt).call(this,e),simulatedResult:l}}catch(e){if(e instanceof A||e instanceof v)throw e;throw new A(`Transaction for "${i}" failed: ${w(e)}`,{contractName:t,methodName:i})}}))}
931
+ if(r.simulate)return l;try{const e=yield null===(o=this.viemClient)||void 0===o?void 0:o.writeContract(y);if("string"!=typeof e)throw new w(`Transaction for "${i}" failed to send: no transaction hash returned`,{contractName:t,methodName:i});if(!r.waitForReceipt)return{txHash:e,simulatedResult:l};return{txHash:e,receipt:yield s(this,qe,"m",Ye).call(this,e),simulatedResult:l}}catch(e){if(e instanceof w||e instanceof v)throw e;throw new w(`Transaction for "${i}" failed: ${A(e)}`,{contractName:t,methodName:i})}}))}
900
932
  /**
901
933
  * Gets comprehensive token information in a single call.
902
934
  * Combines owner, status, terms, URI, and access information.
@@ -918,9 +950,9 @@ let i;if(t)i=t;else if(null===(n=this.viemClient)||void 0===n?void 0:n.account)i
918
950
  // Fetch all information in parallel
919
951
  const[a,s,r,o,d]=yield Promise.all([this.ownerOf(e),this.tokenURI(e),this.dataStatus(e),this.getTerms(e),this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"tokenInfo",[e]).catch((()=>({appId:""})))]);
920
952
  // Get access info if we have a valid address
921
- let u=!1,p=null;if("0x0000000000000000000000000000000000000000"!==i)try{[u,p]=yield Promise.all([this.hasAccess(i,e),this.subscriptionExpiry(e,i)])}catch(e){
953
+ let p=!1,u=null;if("0x0000000000000000000000000000000000000000"!==i)try{[p,u]=yield Promise.all([this.hasAccess(i,e),this.subscriptionExpiry(e,i)])}catch(e){
922
954
  // Access check failed, defaults are fine
923
- }return{tokenId:e,owner:a,uri:s,status:r,terms:o,hasAccess:u,accessExpiry:p,appId:(null==d?void 0:d.appId)||""}}))}
955
+ }return{tokenId:e,owner:a,uri:s,status:r,terms:o,hasAccess:p,accessExpiry:u,appId:(null==d?void 0:d.appId)||""}}))}
924
956
  /**
925
957
  * Buy access to an asset by first checking its price via getTerms, then calling buyAccess.
926
958
  * Automatically fetches protocol and app fees from the contracts.
@@ -938,13 +970,13 @@ let u=!1,p=null;if("0x0000000000000000000000000000000000000000"!==i)try{[u,p]=yi
938
970
  * console.log("Access purchased:", result.txHash);
939
971
  * }
940
972
  * ```
941
- */buyAccessSmart(t){return a(this,void 0,void 0,(function*(){let n=null;try{n=yield s(this,Ke,"m",at).call(this)}catch(e){throw new v(`Cannot buy access to token ${t}: wallet not connected. Please connect a wallet first.`)}
973
+ */buyAccessSmart(t){return a(this,void 0,void 0,(function*(){let n=null;try{n=yield s(this,qe,"m",Qe).call(this)}catch(e){throw new v(`Cannot buy access to token ${t}: wallet not connected. Please connect a wallet first.`)}
942
974
  // Check if user already has access
943
975
  if(yield this.hasAccess(n,t))return console.log("User already has access to this asset"),null;const i=yield this.getTerms(t);if(!i)throw new h(`Failed to fetch license terms for token ${t}: no terms returned`);const{price:a,paymentToken:r,duration:o}=i;if(void 0===a||void 0===r||void 0===o)throw new h(`Invalid license terms for token ${t}: missing price, paymentToken, or duration`);
944
976
  // Fetch protocol fee from marketplace
945
- const d=yield s(this,Ke,"m",st).call(this),u=yield s(this,Ke,"m",rt).call(this,t),p=a;
977
+ const d=yield s(this,qe,"m",Xe).call(this),p=yield s(this,qe,"m",et).call(this,t),u=a;
946
978
  // Fetch app fee from token's appId
947
- return r===e.zeroAddress?this.buyAccess(n,t,p,o,r,d,u,p):(yield Ve({walletClient:this.viemClient,publicClient:C(),tokenAddress:r,owner:n,spender:this.environment.MARKETPLACE_CONTRACT_ADDRESS,amount:p,chain:this.environment.CHAIN}),this.buyAccess(n,t,p,o,r,d,u))}))}
979
+ return r===e.zeroAddress?this.buyAccess(n,t,u,o,r,d,p,u):(yield Be({walletClient:this.viemClient,publicClient:C(),tokenAddress:r,owner:n,spender:this.environment.MARKETPLACE_CONTRACT_ADDRESS,amount:u,chain:this.environment.CHAIN}),this.buyAccess(n,t,u,o,r,d,p))}))}
948
980
  /**
949
981
  * Fetch the underlying data associated with a specific token ID.
950
982
  * @param {bigint} tokenId - The token ID to fetch data for.
@@ -994,25 +1026,25 @@ const t=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{name
994
1026
  * // Claim ERC20 token royalties to a specific address
995
1027
  * await origin.claimRoyalties(1n, "0xRecipient...", "0xToken...");
996
1028
  * ```
997
- */claimRoyalties(t,n,i){return a(this,void 0,void 0,(function*(){const a=yield s(this,Ke,"m",ot).call(this,n),r=yield this.getTokenBoundAccount(t),o=(yield this.getRoyalties(t,i)).balance;if(o===BigInt(0))throw new Error("No royalties available to claim");let d,u,p;
1029
+ */claimRoyalties(t,n,i){return a(this,void 0,void 0,(function*(){const a=yield s(this,qe,"m",tt).call(this,n),r=yield this.getTokenBoundAccount(t),o=(yield this.getRoyalties(t,i)).balance;if(o===BigInt(0))throw new Error("No royalties available to claim");let d,p,u;
998
1030
  // Call execute on the TBA
999
1031
  return i&&i!==e.zeroAddress?(
1000
1032
  // ERC20 token transfer
1001
- d=i,u=BigInt(0),
1033
+ d=i,p=BigInt(0),
1002
1034
  // Encode ERC20 transfer call: transfer(address to, uint256 amount)
1003
- p=e.encodeFunctionData({abi:[{inputs:[{name:"to",type:"address"},{name:"amount",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],functionName:"transfer",args:[a,o]})):(
1035
+ u=e.encodeFunctionData({abi:[{inputs:[{name:"to",type:"address"},{name:"amount",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],functionName:"transfer",args:[a,o]})):(
1004
1036
  // Native token transfer
1005
- d=a,u=o,p="0x"),this.callContractMethod(r,this.environment.TBA_ABI,"execute",[d,u,p,0],// operation: 0 = CALL
1006
- {waitForReceipt:!0,value:BigInt(0)})}))}}Ke=new WeakSet,Xe=function(e,t){return a(this,void 0,void 0,(function*(){try{const n=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/upload-url`,{method:"POST",body:JSON.stringify({name:e.name,type:e.type,partCount:t}),headers:{Authorization:`Bearer ${this.jwt}`,"Content-Type":"application/json"}});if(!n.ok)throw new Error(`HTTP ${n.status}: ${n.statusText}`);const i=yield n.json();if(i.isError)throw new Error(i.message||"Failed to generate upload URL");return i.data}catch(e){throw console.error("Failed to generate upload URL:",e),e}}))},Qe=function(e,t,n){return a(this,void 0,void 0,(function*(){try{const i=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/update-status`,{method:"PATCH",body:JSON.stringify({fileKey:e,uploadId:t,parts:n}),headers:{Authorization:`Bearer ${this.jwt}`,"Content-Type":"application/json"}});if(!i.ok){const e=yield i.text().catch((()=>"Unknown error"));throw new Error(`HTTP ${i.status}: ${e}`)}return!0}catch(e){throw console.error("Failed to update origin status:",e),e}}))},et=function(e){return a(this,void 0,void 0,(function*(){var t;if(!e)return null;try{const n=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/upload-url-ipfs`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.jwt}`},body:JSON.stringify({fileName:e.name,fileType:e.type})});if(!n.ok){const e=yield n.text().catch((()=>"Unknown error"));throw new Error(`Failed to get presigned URL (HTTP ${n.status}): ${e}`)}const i=yield n.json(),{isError:a,data:s,message:r}=i;if(a||!s)throw new Error(`Failed to get presigned URL: ${r||"No URL returned from server"}`);const o=new FormData;o.append("file",e);const d=yield fetch(s,{method:"POST",body:o});if(!d.ok){const e=yield d.text().catch((()=>d.statusText));throw new Error(`Failed to upload preview image to IPFS (HTTP ${d.status}): ${e}`)}const u=yield d.json();if(!u||!u.data)throw new Error("Invalid response from IPFS upload: Missing data field");return null===(t=u.data)||void 0===t?void 0:t.cid}catch(e){const t=e instanceof Error?e.message:String(e);throw console.error("Error uploading preview image to IPFS:",t),new Error(`Failed to upload preview image to IPFS: ${t}`)}}))},tt=function(e,t){return a(this,void 0,void 0,(function*(){let n,i;try{i=((e,t)=>{const n=[];let i=0;for(;i<e.size;)n.push(e.slice(i,i+t)),i+=t;return n})(e,10485760),n=yield s(this,Ke,"m",Xe).call(this,e,i.length)}catch(e){throw console.error("Failed to generate upload URL:",e),new Error(`Failed to generate upload URL: ${e instanceof Error?e.message:String(e)}`)}if(!n)throw new Error("Failed to generate upload URL: No upload info returned");let a;try{a=yield L(i,n.urls,(null==t?void 0:t.progressCallback)||(()=>{}))}catch(e){try{yield s(this,Ke,"m",Qe).call(this,n.key,n.uploadId,a||[])}catch(e){console.error("Failed to update status to failed:",e)}const t=e instanceof Error?e.message:String(e);throw new Error(`Failed to upload file: ${t}`)}try{yield s(this,Ke,"m",Qe).call(this,n.key,n.uploadId,a)}catch(e){console.error("Failed to update status to success:",e)}return n}))},nt=function(e){return a(this,arguments,void 0,(function*(e,t={}){var n,i,a;const s=C();let r=e;const o=null!==(n=t.confirmations)&&void 0!==n?n:1,d=null!==(i=t.timeoutMs)&&void 0!==i?i:18e4,u=null!==(a=t.pollingIntervalMs)&&void 0!==a?a:1500;try{return yield s.waitForTransactionReceipt({hash:r,confirmations:o,timeout:d,pollingInterval:u,onReplaced:e=>{r=e.transaction.hash}})}catch(e){
1037
+ d=a,p=o,u="0x"),this.callContractMethod(r,this.environment.TBA_ABI,"execute",[d,p,u,0],// operation: 0 = CALL
1038
+ {waitForReceipt:!0,value:BigInt(0)})}))}}qe=new WeakSet,Je=function(e,t){return a(this,void 0,void 0,(function*(){try{const n=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/upload-url`,{method:"POST",body:JSON.stringify({name:e.name,type:e.type,partCount:t}),headers:{Authorization:`Bearer ${this.jwt}`,"Content-Type":"application/json"}});if(!n.ok)throw new Error(`HTTP ${n.status}: ${n.statusText}`);const i=yield n.json();if(i.isError)throw new Error(i.message||"Failed to generate upload URL");return i.data}catch(e){throw console.error("Failed to generate upload URL:",e),e}}))},We=function(e,t,n){return a(this,void 0,void 0,(function*(){try{const i=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/update-status`,{method:"PATCH",body:JSON.stringify({fileKey:e,uploadId:t,parts:n}),headers:{Authorization:`Bearer ${this.jwt}`,"Content-Type":"application/json"}});if(!i.ok){const e=yield i.text().catch((()=>"Unknown error"));throw new Error(`HTTP ${i.status}: ${e}`)}return!0}catch(e){throw console.error("Failed to update origin status:",e),e}}))},Ge=function(e){return a(this,void 0,void 0,(function*(){var t;if(!e)return null;try{const n=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/upload-url-ipfs`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.jwt}`},body:JSON.stringify({fileName:e.name,fileType:e.type})});if(!n.ok){const e=yield n.text().catch((()=>"Unknown error"));throw new Error(`Failed to get presigned URL (HTTP ${n.status}): ${e}`)}const i=yield n.json(),{isError:a,data:s,message:r}=i;if(a||!s)throw new Error(`Failed to get presigned URL: ${r||"No URL returned from server"}`);const o=new FormData;o.append("file",e);const d=yield fetch(s,{method:"POST",body:o});if(!d.ok){const e=yield d.text().catch((()=>d.statusText));throw new Error(`Failed to upload preview image to IPFS (HTTP ${d.status}): ${e}`)}const p=yield d.json();if(!p||!p.data)throw new Error("Invalid response from IPFS upload: Missing data field");return null===(t=p.data)||void 0===t?void 0:t.cid}catch(e){const t=e instanceof Error?e.message:String(e);throw console.error("Error uploading preview image to IPFS:",t),new Error(`Failed to upload preview image to IPFS: ${t}`)}}))},Ze=function(e,t){return a(this,void 0,void 0,(function*(){let n,i;try{i=((e,t)=>{const n=[];let i=0;for(;i<e.size;)n.push(e.slice(i,i+t)),i+=t;return n})(e,10485760),n=yield s(this,qe,"m",Je).call(this,e,i.length)}catch(e){throw console.error("Failed to generate upload URL:",e),new Error(`Failed to generate upload URL: ${e instanceof Error?e.message:String(e)}`)}if(!n)throw new Error("Failed to generate upload URL: No upload info returned");let a;try{a=yield L(i,n.urls,(null==t?void 0:t.progressCallback)||(()=>{}))}catch(e){try{yield s(this,qe,"m",We).call(this,n.key,n.uploadId,a||[])}catch(e){console.error("Failed to update status to failed:",e)}const t=e instanceof Error?e.message:String(e);throw new Error(`Failed to upload file: ${t}`)}try{yield s(this,qe,"m",We).call(this,n.key,n.uploadId,a)}catch(e){console.error("Failed to update status to success:",e)}return n}))},Ye=function(e){return a(this,arguments,void 0,(function*(e,t={}){var n,i,a;const s=C();let r=e;const o=null!==(n=t.confirmations)&&void 0!==n?n:1,d=null!==(i=t.timeoutMs)&&void 0!==i?i:18e4,p=null!==(a=t.pollingIntervalMs)&&void 0!==a?a:1500;try{return yield s.waitForTransactionReceipt({hash:r,confirmations:o,timeout:d,pollingInterval:p,onReplaced:e=>{r=e.transaction.hash}})}catch(e){
1007
1039
  // fallback
1008
- const t=Date.now();for(;Date.now()-t<d;){try{const e=yield s.getTransactionReceipt({hash:r});if(e&&e.blockNumber)return e}catch(e){}yield new Promise((e=>setTimeout(e,u)))}throw e}}))},it=function(e){return a(this,void 0,void 0,(function*(){if(!this.viemClient)throw new v(`Cannot switch to chain "${e.name}": wallet not connected. Please connect a wallet first.`);let t=yield this.viemClient.request({method:"eth_chainId",params:[]});if("string"==typeof t&&(t=parseInt(t,16)),t!==e.id){(e=>{b=e,g=null})// reset public client to be recreated with new chain
1040
+ const t=Date.now();for(;Date.now()-t<d;){try{const e=yield s.getTransactionReceipt({hash:r});if(e&&e.blockNumber)return e}catch(e){}yield new Promise((e=>setTimeout(e,p)))}throw e}}))},Ke=function(e){return a(this,void 0,void 0,(function*(){if(!this.viemClient)throw new v(`Cannot switch to chain "${e.name}": wallet not connected. Please connect a wallet first.`);let t=yield this.viemClient.request({method:"eth_chainId",params:[]});if("string"==typeof t&&(t=parseInt(t,16)),t!==e.id){(e=>{b=e,g=null})// reset public client to be recreated with new chain
1009
1041
  (e);try{yield this.viemClient.request({method:"wallet_switchEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16)}]})}catch(t){
1010
1042
  // Unrecognized chain
1011
- if(4902!==t.code)throw t;yield this.viemClient.request({method:"wallet_addEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16),chainName:e.name,rpcUrls:e.rpcUrls.default.http,nativeCurrency:e.nativeCurrency}]}),yield this.viemClient.request({method:"wallet_switchEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16)}]})}}}))},at=function(){return a(this,void 0,void 0,(function*(){if(!this.viemClient)throw new v("No wallet connected. Please connect a wallet to perform this action.");
1043
+ if(4902!==t.code)throw t;yield this.viemClient.request({method:"wallet_addEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16),chainName:e.name,rpcUrls:e.rpcUrls.default.http,nativeCurrency:e.nativeCurrency}]}),yield this.viemClient.request({method:"wallet_switchEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16)}]})}}}))},Qe=function(){return a(this,void 0,void 0,(function*(){if(!this.viemClient)throw new v("No wallet connected. Please connect a wallet to perform this action.");
1012
1044
  // If account is already set on the client, return it directly
1013
1045
  if(this.viemClient.account)return this.viemClient.account.address;
1014
1046
  // Otherwise request accounts (browser wallet flow)
1015
- const e=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});if(!e||0===e.length)throw new v("No accounts found in connected wallet. Please unlock your wallet or add an account.");return e[0]}))},st=function(){return a(this,void 0,void 0,(function*(){try{const e=yield this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"protocolFeeBps",[]);return Number(e)}catch(e){return console.warn("Failed to fetch protocol fee, defaulting to 0:",e),0}}))},rt=function(e){return a(this,void 0,void 0,(function*(){try{
1047
+ const e=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});if(!e||0===e.length)throw new v("No accounts found in connected wallet. Please unlock your wallet or add an account.");return e[0]}))},Xe=function(){return a(this,void 0,void 0,(function*(){try{const e=yield this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"protocolFeeBps",[]);return Number(e)}catch(e){return console.warn("Failed to fetch protocol fee, defaulting to 0:",e),0}}))},et=function(e){return a(this,void 0,void 0,(function*(){try{
1016
1048
  // First, get the token info to find its appId
1017
1049
  const t=yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"tokenInfo",[e]),n=null==t?void 0:t.appId;if(!n||""===n)return 0;
1018
1050
  // Check if app registry is configured
@@ -1020,11 +1052,11 @@ if(!this.environment.APP_REGISTRY_CONTRACT_ADDRESS||!this.environment.APP_REGIST
1020
1052
  // Fetch app info from registry
1021
1053
  const i=yield this.callContractMethod(this.environment.APP_REGISTRY_CONTRACT_ADDRESS,this.environment.APP_REGISTRY_ABI,"getAppInfo",[n]);
1022
1054
  // Only return fee if app is active
1023
- return(null==i?void 0:i.isActive)?Number(i.revenueShareBps):0}catch(e){return console.warn("Failed to fetch app fee, defaulting to 0:",e),0}}))},ot=function(e){return a(this,void 0,void 0,(function*(){if(e)return e;if(!this.viemClient)throw new v("No wallet address provided and no wallet connected. Please provide an address or connect a wallet.");
1055
+ return(null==i?void 0:i.isActive)?Number(i.revenueShareBps):0}catch(e){return console.warn("Failed to fetch app fee, defaulting to 0:",e),0}}))},tt=function(e){return a(this,void 0,void 0,(function*(){if(e)return e;if(!this.viemClient)throw new v("No wallet address provided and no wallet connected. Please provide an address or connect a wallet.");
1024
1056
  // If account is already set on the client, return it directly
1025
1057
  if(this.viemClient.account)return this.viemClient.account.address;
1026
1058
  // Otherwise request accounts (browser wallet flow)
1027
- const t=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});if(!t||0===t.length)throw new v("No accounts found in connected wallet. Please unlock your wallet or add an account.");return t[0]}))};ut=new WeakMap,pt=new WeakMap,lt=new WeakMap,yt=new WeakMap,dt=new WeakSet,ct=function(e,t){s(this,ut,"f")[e]&&s(this,ut,"f")[e].forEach((e=>e(t)))},mt=function(e){return a(this,void 0,void 0,(function*(){const t=yield s(this,yt,"f").getItem("camp-sdk:wallet-address"),n=yield s(this,yt,"f").getItem("camp-sdk:user-id"),i=yield s(this,yt,"f").getItem("camp-sdk:jwt"),a=yield s(this,yt,"f").getItem("camp-sdk:environment");t&&n&&i&&(a===this.environment.NAME||!a)?(this.walletAddress=t,this.userId=n,this.jwt=i,this.origin=new At(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),this.isAuthenticated=!0,e?this.setProvider({provider:e.provider,info:e.info||{name:"Unknown"},address:t}):s(this,pt,"f")||(console.warn("No matching provider was given for the stored wallet address. Trying to recover provider."),yield this.recoverProvider())):this.isAuthenticated=!1}))},ht=function(){return a(this,void 0,void 0,(function*(){try{const[t]=yield this.viem.requestAddresses();return this.walletAddress=e.checksumAddress(t),this.walletAddress}catch(e){throw new v(`Failed to connect wallet: ${w(e)}`)}}))},Tt=function(){return a(this,void 0,void 0,(function*(){try{const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/nonce`,{method:"POST",headers:{"Content-Type":"application/json","x-client-id":this.clientId},body:JSON.stringify({walletAddress:this.walletAddress})}),t=yield e.json();if(200!==e.status)throw new h(t.message||`Failed to fetch nonce (HTTP ${e.status})`,e.status);return t.data}catch(e){if(e instanceof h)throw e;throw new h(`Failed to fetch nonce: ${w(e)}`)}}))},ft=function(e,t){return a(this,void 0,void 0,(function*(){try{const n=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/verify`,{method:"POST",headers:{"Content-Type":"application/json","x-client-id":this.clientId},body:JSON.stringify({message:e,signature:t,walletAddress:this.walletAddress})}),i=yield n.json(),a=i.data.split(".")[1],s=JSON.parse(atob(a));return{success:!i.isError,userId:s.id,token:i.data}}catch(e){throw new h(`Failed to verify signature: ${w(e)}`)}}))},vt=function(e,t,i){return n.createSiweMessage({domain:t||(s(this,pt,"f")?"localhost":window.location.host),address:this.walletAddress,statement:N,uri:i||(s(this,pt,"f")?"http://localhost":window.location.origin),version:"1",chainId:this.environment.CHAIN.id,nonce:e})},exports.Auth=
1059
+ const t=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});if(!t||0===t.length)throw new v("No accounts found in connected wallet. Please unlock your wallet or add an account.");return t[0]}))};it=new WeakMap,at=new WeakMap,st=new WeakMap,rt=new WeakMap,nt=new WeakSet,ot=function(e,t){s(this,it,"f")[e]&&s(this,it,"f")[e].forEach((e=>e(t)))},dt=function(e){return a(this,void 0,void 0,(function*(){const t=yield s(this,rt,"f").getItem("camp-sdk:wallet-address"),n=yield s(this,rt,"f").getItem("camp-sdk:user-id"),i=yield s(this,rt,"f").getItem("camp-sdk:jwt"),a=yield s(this,rt,"f").getItem("camp-sdk:environment");t&&n&&i&&(a===this.environment.NAME||!a)?(this.walletAddress=t,this.userId=n,this.jwt=i,this.origin=new ct(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),this.isAuthenticated=!0,e?this.setProvider({provider:e.provider,info:e.info||{name:"Unknown"},address:t}):s(this,at,"f")||(console.warn("No matching provider was given for the stored wallet address. Trying to recover provider."),yield this.recoverProvider())):this.isAuthenticated=!1}))},pt=function(){return a(this,void 0,void 0,(function*(){try{const[t]=yield this.viem.requestAddresses();return this.walletAddress=e.checksumAddress(t),this.walletAddress}catch(e){throw new v(`Failed to connect wallet: ${A(e)}`)}}))},ut=function(){return a(this,void 0,void 0,(function*(){try{const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/nonce`,{method:"POST",headers:{"Content-Type":"application/json","x-client-id":this.clientId},body:JSON.stringify({walletAddress:this.walletAddress})}),t=yield e.json();if(200!==e.status)throw new h(t.message||`Failed to fetch nonce (HTTP ${e.status})`,e.status);return t.data}catch(e){if(e instanceof h)throw e;throw new h(`Failed to fetch nonce: ${A(e)}`)}}))},lt=function(e,t){return a(this,void 0,void 0,(function*(){try{const n=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/verify`,{method:"POST",headers:{"Content-Type":"application/json","x-client-id":this.clientId},body:JSON.stringify({message:e,signature:t,walletAddress:this.walletAddress})}),i=yield n.json(),a=i.data.split(".")[1],s=JSON.parse(atob(a));return{success:!i.isError,userId:s.id,token:i.data}}catch(e){throw new h(`Failed to verify signature: ${A(e)}`)}}))},yt=function(e,t,i){return n.createSiweMessage({domain:t||(s(this,at,"f")?"localhost":window.location.host),address:this.walletAddress,statement:_,uri:i||(s(this,at,"f")?"http://localhost":window.location.origin),version:"1",chainId:this.environment.CHAIN.id,nonce:e})},exports.Auth=
1028
1060
  /**
1029
1061
  * The Auth class.
1030
1062
  * @class
@@ -1040,9 +1072,9 @@ class{
1040
1072
  * @param {StorageAdapter} [options.storage] Custom storage adapter. Defaults to localStorage in browser, memory storage in Node.js.
1041
1073
  * @throws {APIError} - Throws an error if the clientId is not provided.
1042
1074
  */
1043
- constructor({clientId:e,appId:t,redirectUri:n,environment:i="DEVELOPMENT",baseParentId:a,storage:o}){if(dt.add(this),ut.set(this,void 0),pt.set(this,void 0),lt.set(this,void 0),yt.set(this,void 0),!e)throw new T("clientId is required");if(!t)throw new T("appId is required");if(-1===["PRODUCTION","DEVELOPMENT"].indexOf(i))throw new T(`Invalid environment "${i}". Must be "DEVELOPMENT" or "PRODUCTION"`);r(this,pt,"undefined"==typeof window,"f"),r(this,yt,o||(s(this,pt,"f")?new y:new l),"f"),this.viem=null,this.environment=U[i],this.environment.AUTH_HUB_BASE_API+="PRODUCTION"===i?"/auth-mainnet":"",this.baseParentId=a,this.redirectUri=(e=>{const t=["twitter","spotify"];return"object"==typeof e?t.reduce(((t,n)=>(t[n]=e[n]||("undefined"!=typeof window?window.location.href:""),t)),{}):"string"==typeof e?t.reduce(((t,n)=>(t[n]=e,t)),{}):e?{}:t.reduce(((e,t)=>(e[t]="undefined"!=typeof window?window.location.href:"",e)),{})})(n),this.clientId=e,this.appId=t,this.isAuthenticated=!1,this.jwt=null,this.origin=null,this.walletAddress=null,this.userId=null,r(this,ut,{},"f"),
1075
+ constructor({clientId:e,appId:t,redirectUri:n,environment:i="DEVELOPMENT",baseParentId:a,storage:o}){if(nt.add(this),it.set(this,void 0),at.set(this,void 0),st.set(this,void 0),rt.set(this,void 0),!e)throw new T("clientId is required");if(!t)throw new T("appId is required");if(-1===["PRODUCTION","DEVELOPMENT"].indexOf(i))throw new T(`Invalid environment "${i}". Must be "DEVELOPMENT" or "PRODUCTION"`);r(this,at,"undefined"==typeof window,"f"),r(this,rt,o||(s(this,at,"f")?new y:new l),"f"),this.viem=null,this.environment=U[i],this.baseParentId=a,this.redirectUri=(e=>{const t=["twitter","spotify"];return"object"==typeof e?t.reduce(((t,n)=>(t[n]=e[n]||("undefined"!=typeof window?window.location.href:""),t)),{}):"string"==typeof e?t.reduce(((t,n)=>(t[n]=e,t)),{}):e?{}:t.reduce(((e,t)=>(e[t]="undefined"!=typeof window?window.location.href:"",e)),{})})(n),this.clientId=e,this.appId=t,this.isAuthenticated=!1,this.jwt=null,this.origin=null,this.walletAddress=null,this.userId=null,r(this,it,{},"f"),
1044
1076
  // only subscribe to providers in browser environment
1045
- s(this,pt,"f")||j((e=>{s(this,dt,"m",ct).call(this,"providers",e)})),s(this,dt,"m",mt).call(this)}
1077
+ s(this,at,"f")||j((e=>{s(this,nt,"m",ot).call(this,"providers",e)})),s(this,nt,"m",dt).call(this)}
1046
1078
  /**
1047
1079
  * Subscribe to an event. Possible events are "state", "provider", "providers", and "viem".
1048
1080
  * @param {("state"|"provider"|"providers"|"viem")} event The event.
@@ -1052,18 +1084,18 @@ s(this,pt,"f")||j((e=>{s(this,dt,"m",ct).call(this,"providers",e)})),s(this,dt,"
1052
1084
  * auth.on("state", (state) => {
1053
1085
  * console.log(state);
1054
1086
  * });
1055
- */on(e,t){s(this,ut,"f")[e]||(s(this,ut,"f")[e]=[]),s(this,ut,"f")[e].push(t),"providers"===e&&t(H())}
1087
+ */on(e,t){s(this,it,"f")[e]||(s(this,it,"f")[e]=[]),s(this,it,"f")[e].push(t),"providers"===e&&t(H())}
1056
1088
  /**
1057
1089
  * Unsubscribe from an event. Possible events are "state", "provider", "providers", and "viem".
1058
1090
  * @param {("state"|"provider"|"providers"|"viem")} event The event.
1059
1091
  * @param {function} callback The callback function.
1060
1092
  * @returns {void}
1061
- */off(e,t){s(this,ut,"f")[e]&&(s(this,ut,"f")[e]=s(this,ut,"f")[e].filter((e=>e!==t)))}
1093
+ */off(e,t){s(this,it,"f")[e]&&(s(this,it,"f")[e]=s(this,it,"f")[e].filter((e=>e!==t)))}
1062
1094
  /**
1063
1095
  * Set the loading state.
1064
1096
  * @param {boolean} loading The loading state.
1065
1097
  * @returns {void}
1066
- */setLoading(e){s(this,dt,"m",ct).call(this,"state",e?"loading":this.isAuthenticated?"authenticated":"unauthenticated")}
1098
+ */setLoading(e){s(this,nt,"m",ot).call(this,"state",e?"loading":this.isAuthenticated?"authenticated":"unauthenticated")}
1067
1099
  /**
1068
1100
  * Set the provider. This is useful for setting the provider when the user selects a provider from the UI or when dApp wishes to use a specific provider.
1069
1101
  * @param {object} options The options object. Includes the provider and the provider info.
@@ -1071,7 +1103,7 @@ s(this,pt,"f")||j((e=>{s(this,dt,"m",ct).call(this,"providers",e)})),s(this,dt,"
1071
1103
  * @throws {APIError} - Throws an error if the provider is not provided.
1072
1104
  */setProvider({provider:n,info:i,address:a}){if(!n)throw new h("provider is required");this.viem=((n,i="window.ethereum",a,s)=>{var r,o;if(!n&&!I)return console.warn("Provider is required to create a client."),null;const d=a||c;if(!I||I.transport.name!==i&&n||s!==(null===(r=I.account)||void 0===r?void 0:r.address)&&n||(null==b?void 0:b.id)!==d.id){const a={chain:d,transport:e.custom(n,{name:i})};s&&(a.account=t.toAccount(s)),I=e.createWalletClient(a),b=d,g&&(null===(o=g.chain)||void 0===o?void 0:o.id)!==d.id&&(g=null)}return I})(n,i.name,this.environment.CHAIN,a),this.origin&&this.origin.setViemClient(this.viem),
1073
1105
  // TODO: only use one of these
1074
- s(this,dt,"m",ct).call(this,"viem",this.viem),s(this,dt,"m",ct).call(this,"provider",{provider:n,info:i}),s(this,yt,"f").setItem("camp-sdk:provider",JSON.stringify(i))}
1106
+ s(this,nt,"m",ot).call(this,"viem",this.viem),s(this,nt,"m",ot).call(this,"provider",{provider:n,info:i}),s(this,rt,"f").setItem("camp-sdk:provider",JSON.stringify(i))}
1075
1107
  /**
1076
1108
  * Set the wallet address. This is useful for edge cases where the provider can't return the wallet address. Don't use this unless you know what you're doing.
1077
1109
  * @param {string} walletAddress The wallet address.
@@ -1080,7 +1112,7 @@ s(this,dt,"m",ct).call(this,"viem",this.viem),s(this,dt,"m",ct).call(this,"provi
1080
1112
  /**
1081
1113
  * Recover the provider from local storage.
1082
1114
  * @returns {Promise<void>}
1083
- */recoverProvider(){return a(this,void 0,void 0,(function*(){var e,t,n,i,a,r,o,d,u,p,l,y,c;if(!this.walletAddress)return void console.warn("No wallet address found in local storage. Please connect your wallet again.");const m=yield s(this,yt,"f").getItem("camp-sdk:provider");if(!m)return;const h=JSON.parse(m);let T;const f=null!==(e=H())&&void 0!==e?e:[];
1115
+ */recoverProvider(){return a(this,void 0,void 0,(function*(){var e,t,n,i,a,r,o,d,p,u,l,y,c;if(!this.walletAddress)return void console.warn("No wallet address found in local storage. Please connect your wallet again.");const m=yield s(this,rt,"f").getItem("camp-sdk:provider");if(!m)return;const h=JSON.parse(m);let T;const f=null!==(e=H())&&void 0!==e?e:[];
1084
1116
  // first pass: try to find provider by UUID/name and check if it has the right address
1085
1117
  // without prompting (using eth_accounts)
1086
1118
  for(const e of f)try{if(h.uuid&&(null===(t=e.info)||void 0===t?void 0:t.uuid)===h.uuid||h.name&&(null===(n=e.info)||void 0===n?void 0:n.name)===h.name){
@@ -1090,19 +1122,19 @@ const t=yield e.provider.request({method:"eth_accounts"});if(t.length>0&&(null==
1090
1122
  // but still avoid prompting
1091
1123
  if(!T)for(const e of f)try{
1092
1124
  // skip providers we already checked in the first pass
1093
- if(h.uuid&&(null===(r=e.info)||void 0===r?void 0:r.uuid)===h.uuid||h.name&&(null===(o=e.info)||void 0===o?void 0:o.name)===h.name)continue;const t=yield e.provider.request({method:"eth_accounts"});if(t.length>0&&(null===(d=t[0])||void 0===d?void 0:d.toLowerCase())===(null===(u=this.walletAddress)||void 0===u?void 0:u.toLowerCase())){T=e;break}}catch(e){console.warn("Failed to fetch accounts from provider:",e)}
1125
+ if(h.uuid&&(null===(r=e.info)||void 0===r?void 0:r.uuid)===h.uuid||h.name&&(null===(o=e.info)||void 0===o?void 0:o.name)===h.name)continue;const t=yield e.provider.request({method:"eth_accounts"});if(t.length>0&&(null===(d=t[0])||void 0===d?void 0:d.toLowerCase())===(null===(p=this.walletAddress)||void 0===p?void 0:p.toLowerCase())){T=e;break}}catch(e){console.warn("Failed to fetch accounts from provider:",e)}
1094
1126
  // third pass: if still no provider found and we have UUID/name info,
1095
1127
  // try prompting the user (only for the stored provider)
1096
- if(!T&&(h.uuid||h.name))for(const e of f)try{if(h.uuid&&(null===(p=e.info)||void 0===p?void 0:p.uuid)===h.uuid||h.name&&(null===(l=e.info)||void 0===l?void 0:l.name)===h.name){const t=yield e.provider.request({method:"eth_requestAccounts"});if(t.length>0&&(null===(y=t[0])||void 0===y?void 0:y.toLowerCase())===(null===(c=this.walletAddress)||void 0===c?void 0:c.toLowerCase())){T=e;break}}}catch(e){console.warn("Failed to reconnect to stored provider:",e)}T?this.setProvider({provider:T.provider,info:T.info||{name:"Unknown"},address:this.walletAddress}):console.warn("No matching provider found for the stored wallet address. Please connect your wallet again.")}))}
1128
+ if(!T&&(h.uuid||h.name))for(const e of f)try{if(h.uuid&&(null===(u=e.info)||void 0===u?void 0:u.uuid)===h.uuid||h.name&&(null===(l=e.info)||void 0===l?void 0:l.name)===h.name){const t=yield e.provider.request({method:"eth_requestAccounts"});if(t.length>0&&(null===(y=t[0])||void 0===y?void 0:y.toLowerCase())===(null===(c=this.walletAddress)||void 0===c?void 0:c.toLowerCase())){T=e;break}}}catch(e){console.warn("Failed to reconnect to stored provider:",e)}T?this.setProvider({provider:T.provider,info:T.info||{name:"Unknown"},address:this.walletAddress}):console.warn("No matching provider found for the stored wallet address. Please connect your wallet again.")}))}
1097
1129
  /**
1098
1130
  * Disconnect the user.
1099
1131
  * @returns {Promise<void>}
1100
- */disconnect(){return a(this,void 0,void 0,(function*(){this.isAuthenticated&&(s(this,dt,"m",ct).call(this,"state","unauthenticated"),this.isAuthenticated=!1,this.walletAddress=null,this.userId=null,this.jwt=null,this.origin=null,r(this,lt,void 0,"f"),yield s(this,yt,"f").removeItem("camp-sdk:wallet-address"),yield s(this,yt,"f").removeItem("camp-sdk:user-id"),yield s(this,yt,"f").removeItem("camp-sdk:jwt"),yield s(this,yt,"f").removeItem("camp-sdk:environment"))}))}
1132
+ */disconnect(){return a(this,void 0,void 0,(function*(){this.isAuthenticated&&(s(this,nt,"m",ot).call(this,"state","unauthenticated"),this.isAuthenticated=!1,this.walletAddress=null,this.userId=null,this.jwt=null,this.origin=null,r(this,st,void 0,"f"),yield s(this,rt,"f").removeItem("camp-sdk:wallet-address"),yield s(this,rt,"f").removeItem("camp-sdk:user-id"),yield s(this,rt,"f").removeItem("camp-sdk:jwt"),yield s(this,rt,"f").removeItem("camp-sdk:environment"))}))}
1101
1133
  /**
1102
1134
  * Connect the user's wallet and sign the message.
1103
1135
  * @returns {Promise<{ success: boolean; message: string; walletAddress: string }>} A promise that resolves with the authentication result.
1104
1136
  * @throws {APIError} - Throws an error if the user cannot be authenticated.
1105
- */connect(){return a(this,void 0,void 0,(function*(){s(this,dt,"m",ct).call(this,"state","loading");try{this.walletAddress||(yield s(this,dt,"m",ht).call(this)),this.walletAddress=e.checksumAddress(this.walletAddress);const t=yield s(this,dt,"m",Tt).call(this),n=s(this,dt,"m",vt).call(this,t),i=yield this.viem.signMessage({account:this.walletAddress,message:n}),a=yield s(this,dt,"m",ft).call(this,n,i);if(a.success)return this.isAuthenticated=!0,this.userId=a.userId,this.jwt=a.token,this.origin=new At(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),yield s(this,yt,"f").setItem("camp-sdk:jwt",this.jwt),yield s(this,yt,"f").setItem("camp-sdk:wallet-address",this.walletAddress),yield s(this,yt,"f").setItem("camp-sdk:user-id",this.userId),yield s(this,yt,"f").setItem("camp-sdk:environment",this.environment.NAME),s(this,dt,"m",ct).call(this,"state","authenticated"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,s(this,dt,"m",ct).call(this,"state","unauthenticated"),new h("Failed to authenticate: signature verification failed")}catch(e){if(this.isAuthenticated=!1,s(this,dt,"m",ct).call(this,"state","unauthenticated"),e instanceof h||e instanceof v)throw e;throw new h(`Failed to authenticate: ${w(e)}`)}}))}
1137
+ */connect(){return a(this,void 0,void 0,(function*(){s(this,nt,"m",ot).call(this,"state","loading");try{this.walletAddress||(yield s(this,nt,"m",pt).call(this)),this.walletAddress=e.checksumAddress(this.walletAddress);const t=yield s(this,nt,"m",ut).call(this),n=s(this,nt,"m",yt).call(this,t),i=yield this.viem.signMessage({account:this.walletAddress,message:n}),a=yield s(this,nt,"m",lt).call(this,n,i);if(a.success)return this.isAuthenticated=!0,this.userId=a.userId,this.jwt=a.token,this.origin=new ct(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),yield s(this,rt,"f").setItem("camp-sdk:jwt",this.jwt),yield s(this,rt,"f").setItem("camp-sdk:wallet-address",this.walletAddress),yield s(this,rt,"f").setItem("camp-sdk:user-id",this.userId),yield s(this,rt,"f").setItem("camp-sdk:environment",this.environment.NAME),s(this,nt,"m",ot).call(this,"state","authenticated"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,s(this,nt,"m",ot).call(this,"state","unauthenticated"),new h("Failed to authenticate: signature verification failed")}catch(e){if(this.isAuthenticated=!1,s(this,nt,"m",ot).call(this,"state","unauthenticated"),e instanceof h||e instanceof v)throw e;throw new h(`Failed to authenticate: ${A(e)}`)}}))}
1106
1138
  /**
1107
1139
  * Connect with a custom signer (for Node.js or custom wallet implementations).
1108
1140
  * This method bypasses browser wallet interactions and uses the provided signer directly.
@@ -1121,9 +1153,9 @@ if(!T&&(h.uuid||h.name))for(const e of f)try{if(h.uuid&&(null===(p=e.info)||void
1121
1153
  * const account = privateKeyToAccount('0x...');
1122
1154
  * const client = createWalletClient({ account, chain: mainnet, transport: http() });
1123
1155
  * await auth.connectWithSigner(client);
1124
- */connectWithSigner(t,n){return a(this,void 0,void 0,(function*(){s(this,dt,"m",ct).call(this,"state","loading");try{r(this,lt,p(t),"f"),this.walletAddress=e.checksumAddress(yield s(this,lt,"f").getAddress()),
1156
+ */connectWithSigner(t,n){return a(this,void 0,void 0,(function*(){s(this,nt,"m",ot).call(this,"state","loading");try{r(this,st,u(t),"f"),this.walletAddress=e.checksumAddress(yield s(this,st,"f").getAddress()),
1125
1157
  // store the signer as viem client if it's a viem client, otherwise keep adapter
1126
- "viem"===s(this,lt,"f").type&&(this.viem=t);const i=yield s(this,dt,"m",Tt).call(this),a=s(this,dt,"m",vt).call(this,i,null==n?void 0:n.domain,null==n?void 0:n.uri),o=yield s(this,lt,"f").signMessage(a),d=yield s(this,dt,"m",ft).call(this,a,o);if(d.success)return this.isAuthenticated=!0,this.userId=d.userId,this.jwt=d.token,this.origin=new At(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),yield s(this,yt,"f").setItem("camp-sdk:jwt",this.jwt),yield s(this,yt,"f").setItem("camp-sdk:wallet-address",this.walletAddress),yield s(this,yt,"f").setItem("camp-sdk:user-id",this.userId),yield s(this,yt,"f").setItem("camp-sdk:environment",this.environment.NAME),s(this,dt,"m",ct).call(this,"state","authenticated"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,s(this,dt,"m",ct).call(this,"state","unauthenticated"),new h("Failed to authenticate: signature verification failed")}catch(e){if(this.isAuthenticated=!1,r(this,lt,void 0,"f"),s(this,dt,"m",ct).call(this,"state","unauthenticated"),e instanceof h||e instanceof v)throw e;throw new h(`Failed to authenticate: ${w(e)}`)}}))}
1158
+ "viem"===s(this,st,"f").type&&(this.viem=t);const i=yield s(this,nt,"m",ut).call(this),a=s(this,nt,"m",yt).call(this,i,null==n?void 0:n.domain,null==n?void 0:n.uri),o=yield s(this,st,"f").signMessage(a),d=yield s(this,nt,"m",lt).call(this,a,o);if(d.success)return this.isAuthenticated=!0,this.userId=d.userId,this.jwt=d.token,this.origin=new ct(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),yield s(this,rt,"f").setItem("camp-sdk:jwt",this.jwt),yield s(this,rt,"f").setItem("camp-sdk:wallet-address",this.walletAddress),yield s(this,rt,"f").setItem("camp-sdk:user-id",this.userId),yield s(this,rt,"f").setItem("camp-sdk:environment",this.environment.NAME),s(this,nt,"m",ot).call(this,"state","authenticated"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,s(this,nt,"m",ot).call(this,"state","unauthenticated"),new h("Failed to authenticate: signature verification failed")}catch(e){if(this.isAuthenticated=!1,r(this,st,void 0,"f"),s(this,nt,"m",ot).call(this,"state","unauthenticated"),e instanceof h||e instanceof v)throw e;throw new h(`Failed to authenticate: ${A(e)}`)}}))}
1127
1159
  /**
1128
1160
  * Get the user's linked social accounts.
1129
1161
  * @returns {Promise<Record<string, boolean>>} A promise that resolves with the user's linked social accounts.
@@ -1137,17 +1169,17 @@ if(!T&&(h.uuid||h.name))for(const e of f)try{if(h.uuid&&(null===(p=e.info)||void
1137
1169
  * Link the user's Twitter account.
1138
1170
  * @returns {Promise<void>}
1139
1171
  * @throws {Error} - Throws an error if the user is not authenticated or in Node.js environment.
1140
- */linkTwitter(){return a(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new f("User must be authenticated to link Twitter account");if(s(this,pt,"f"))throw new h("Cannot link Twitter: OAuth flow requires a browser environment");window.location.href=`${this.environment.AUTH_HUB_BASE_API}/twitter/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.twitter}`}))}
1172
+ */linkTwitter(){return a(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new f("User must be authenticated to link Twitter account");if(s(this,at,"f"))throw new h("Cannot link Twitter: OAuth flow requires a browser environment");window.location.href=`${this.environment.AUTH_HUB_BASE_API}/twitter/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.twitter}`}))}
1141
1173
  /**
1142
1174
  * Link the user's Discord account.
1143
1175
  * @returns {Promise<void>}
1144
1176
  * @throws {Error} - Throws an error if the user is not authenticated or in Node.js environment.
1145
- */linkDiscord(){return a(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new f("User must be authenticated to link Discord account");if(s(this,pt,"f"))throw new h("Cannot link Discord: OAuth flow requires a browser environment");window.location.href=`${this.environment.AUTH_HUB_BASE_API}/discord/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.discord}`}))}
1177
+ */linkDiscord(){return a(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new f("User must be authenticated to link Discord account");if(s(this,at,"f"))throw new h("Cannot link Discord: OAuth flow requires a browser environment");window.location.href=`${this.environment.AUTH_HUB_BASE_API}/discord/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.discord}`}))}
1146
1178
  /**
1147
1179
  * Link the user's Spotify account.
1148
1180
  * @returns {Promise<void>}
1149
1181
  * @throws {Error} - Throws an error if the user is not authenticated or in Node.js environment.
1150
- */linkSpotify(){return a(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new f("User must be authenticated to link Spotify account");if(s(this,pt,"f"))throw new h("Cannot link Spotify: OAuth flow requires a browser environment");window.location.href=`${this.environment.AUTH_HUB_BASE_API}/spotify/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.spotify}`}))}
1182
+ */linkSpotify(){return a(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new f("User must be authenticated to link Spotify account");if(s(this,at,"f"))throw new h("Cannot link Spotify: OAuth flow requires a browser environment");window.location.href=`${this.environment.AUTH_HUB_BASE_API}/spotify/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri.spotify}`}))}
1151
1183
  /**
1152
1184
  * Link the user's TikTok account.
1153
1185
  * @param {string} handle The user's TikTok handle.
@@ -1197,4 +1229,12 @@ if(!T&&(h.uuid||h.name))for(const e of f)try{if(h.uuid&&(null===(p=e.info)||void
1197
1229
  * @returns {Promise<any>} A promise that resolves with the unlink result.
1198
1230
  * @throws {Error} - Throws an error if the user is not authenticated.
1199
1231
  * @throws {APIError} - Throws an error if the request fails.
1200
- */unlinkTelegram(){return a(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new f("User must be authenticated to unlink Telegram account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/telegram/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({userId:this.userId})}).then((e=>e.json()));if(e.isError)throw new h(e.message||"Failed to unlink Telegram account");return e.data}))}},exports.BrowserStorage=l,exports.CustomSignerAdapter=u,exports.EthersSignerAdapter=d,exports.MemoryStorage=y,exports.Origin=At,exports.ViemSignerAdapter=o,exports.campMainnet=m,exports.campTestnet=c,exports.createLicenseTerms=(e,t,n,i,a=exports.LicenseType.DURATION_BASED)=>{if(n<F||n>O)throw new Error(`Royalty basis points must be between ${F} and ${O}`);if(a===exports.LicenseType.DURATION_BASED){if(t<M||t>k)throw new Error(`Duration must be between ${M} and ${k} seconds for DURATION_BASED licenses`)}else if((a===exports.LicenseType.SINGLE_PAYMENT||a===exports.LicenseType.X402)&&t>0)throw new Error(`Duration must be 0 for ${exports.LicenseType[a]} licenses`);if(e<B)throw new Error(`Price must be at least ${B} wei`);return{price:e,duration:t,royaltyBps:n,paymentToken:i,licenseType:a}},exports.createNodeWalletClient=function(t,n,i){return e.createWalletClient({account:t,chain:n,transport:e.http(i)})},exports.createSignerAdapter=p,exports.decodeCidFromBytes32=function(e){const t=Buffer.from(e.slice(2),"hex"),n=Buffer.concat([Buffer.from([18,32]),t]);return Ie.encode(n)},exports.encodeCidToBytes32=ge;
1232
+ */unlinkTelegram(){return a(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new f("User must be authenticated to unlink Telegram account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/telegram/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({userId:this.userId})}).then((e=>e.json()));if(e.isError)throw new h(e.message||"Failed to unlink Telegram account");return e.data}))}},exports.BrowserStorage=l,exports.CustomSignerAdapter=p,exports.EthersSignerAdapter=d,exports.MemoryStorage=y,exports.Origin=ct,exports.ViemSignerAdapter=o,exports.campMainnet=m,exports.campTestnet=c,exports.createLicenseTerms=(e,t,n,i,a=exports.LicenseType.DURATION_BASED)=>{if(n<B||n>F)throw new Error(`Royalty basis points must be between ${B} and ${F}`);if(a===exports.LicenseType.DURATION_BASED){if(t<M||t>k)throw new Error(`Duration must be between ${M} and ${k} seconds for DURATION_BASED licenses`)}else if((a===exports.LicenseType.SINGLE_PAYMENT||a===exports.LicenseType.X402)&&t>0)throw new Error(`Duration must be 0 for ${exports.LicenseType[a]} licenses`);if(e<O)throw new Error(`Price must be at least ${O} wei`);return{price:e,duration:t,royaltyBps:n,paymentToken:i,licenseType:a}},exports.createNodeWalletClient=function(t,n,i){return e.createWalletClient({account:t,chain:n,transport:e.http(i)})},exports.createSignerAdapter=u,exports.decodeCidFromBytes32=function(e){const t=Buffer.from(e.slice(2),"hex");if(32!==t.length)throw new Error("Invalid bytes32: expected 32-byte digest");
1233
+ // Build CIDv1: version (0x01) + raw codec (0x55) + sha2-256 (0x12) + length (0x20) + digest
1234
+ const n=new Uint8Array(36);
1235
+ // Encode with base32 and add 'b' multibase prefix
1236
+ return n[0]=1,// CIDv1
1237
+ n[1]=85,// raw codec (used by Pinata for raw data uploads like JSON)
1238
+ n[2]=18,// sha2-256 hash function
1239
+ n[3]=32,// 32 byte length
1240
+ n.set(t,4),"b"+function(e){let t="",n=0,i=0;for(const a of e)for(i=i<<8|a,n+=8;n>=5;)n-=5,t+=pe[i>>n&31];return n>0&&(t+=pe[i<<5-n&31]),t}(n)},exports.encodeCidToBytes32=ue;