@campnetwork/origin 1.3.2 → 1.4.0-alpha.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.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import{createWalletClient as e,http as t,custom as n,createPublicClient as i,zeroAddress as a,erc20Abi as s,getAbiItem as r,formatEther as o,formatUnits as d,encodeFunctionData as p,checksumAddress as u}from"viem";import{toAccount as l}from"viem/accounts";import{createSiweMessage as y}from"viem/siwe";import c from"axios";
1
+ import{createWalletClient as e,http as t,custom as n,createPublicClient as i,zeroAddress as a,erc20Abi as s,getAbiItem as r,formatEther as o,formatUnits as p,encodeFunctionData as d,checksumAddress as u}from"viem";import{toAccount as l}from"viem/accounts";import{createSiweMessage as y}from"viem/siwe";import c from"axios";
2
2
  /******************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -13,7 +13,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
15
  ***************************************************************************** */
16
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */function m(e,t,n,i){return new(n||(n=Promise))((function(a,s){function r(e){try{d(i.next(e))}catch(e){s(e)}}function o(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(r,o)}d((i=i.apply(e,t||[])).next())}))}function h(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)}function T(e,t,n,i,a){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?a.call(e,n):a?a.value=n:t.set(e,n),n}"function"==typeof SuppressedError&&SuppressedError;
16
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */function m(e,t,n,i){return new(n||(n=Promise))((function(a,s){function r(e){try{p(i.next(e))}catch(e){s(e)}}function o(e){try{p(i.throw(e))}catch(e){s(e)}}function p(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(r,o)}p((i=i.apply(e,t||[])).next())}))}function h(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)}function T(e,t,n,i,a){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?a.call(e,n):a?a.value=n:t.set(e,n),n}"function"==typeof SuppressedError&&SuppressedError;
17
17
  /**
18
18
  * Adapter for viem WalletClient
19
19
  */
@@ -48,26 +48,28 @@ e._isSigner||e.provider&&"function"==typeof e.signMessage?new v(e):new w(e)}
48
48
  */class I{getItem(e){return m(this,void 0,void 0,(function*(){return"undefined"==typeof localStorage?null:localStorage.getItem(e)}))}setItem(e,t){return m(this,void 0,void 0,(function*(){"undefined"!=typeof localStorage&&localStorage.setItem(e,t)}))}removeItem(e){return m(this,void 0,void 0,(function*(){"undefined"!=typeof localStorage&&localStorage.removeItem(e)}))}}
49
49
  /**
50
50
  * In-memory storage adapter for Node.js
51
- */class g{constructor(){this.storage=new Map}getItem(e){return m(this,void 0,void 0,(function*(){return this.storage.get(e)||null}))}setItem(e,t){return m(this,void 0,void 0,(function*(){this.storage.set(e,t)}))}removeItem(e){return m(this,void 0,void 0,(function*(){this.storage.delete(e)}))}clear(){this.storage.clear()}}
51
+ */class b{constructor(){this.storage=new Map}getItem(e){return m(this,void 0,void 0,(function*(){return this.storage.get(e)||null}))}setItem(e,t){return m(this,void 0,void 0,(function*(){this.storage.set(e,t)}))}removeItem(e){return m(this,void 0,void 0,(function*(){this.storage.delete(e)}))}clear(){this.storage.clear()}}
52
52
  /**
53
53
  * Create a wallet client for Node.js environment
54
54
  * @param account The viem account
55
55
  * @param chain The chain to use
56
56
  * @param rpcUrl Optional RPC URL (defaults to chain's default RPC)
57
57
  * @returns WalletClient
58
- */function b(n,i,a){return e({account:n,chain:i,transport:t(a)})}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/"}}},E={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 S 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 P 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 R 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 N 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 D 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 _(e){if(e instanceof Error)return e.message;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch(t){return String(e)}}
58
+ */function g(n,i,a){return e({account:n,chain:i,transport:t(a)})}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/"}}},E={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 P 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 S 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 R 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 _ 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 x 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 D(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
59
  // @ts-ignore
60
- let k=null,x=null,M=null;const O=e=>{var n;const a=M||C;return x&&(null===(n=x.chain)||void 0===n?void 0:n.id)===a.id||(x=i({chain:a,transport:t()})),x};var B=[{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:[]}],F=[{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:[]}],U=[{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"}],$=[{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"}],H=[{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"}],j=[{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:[]}],L=[{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:[]}],z="Connect with Camp Network",V=2628e3,q=86400,J=1e15,W=1,G=1e4;const Z={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:B,MARKETPLACE_ABI:F,TBA_ABI:U,BATCH_OPERATIONS_ABI:$,DISPUTE_ABI:H,FRACTIONALIZER_ABI:j,APP_REGISTRY_ABI:L},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:"0x6B89810768b708465f31b6a8B8d753cc986489F1",DISPUTE_CONTRACT_ADDRESS:"0x947A3C4A45f7039e77643026A090025D5412EDa2",FRACTIONALIZER_CONTRACT_ADDRESS:"",APP_REGISTRY_CONTRACT_ADDRESS:"0xd09F15aA280F9109aCd403cA920e67D40Cb6C3FA",USDC_CONTRACT_ADDRESS:"",CHAIN:E,IPNFT_ABI:B,MARKETPLACE_ABI:F,TBA_ABI:U,BATCH_OPERATIONS_ABI:$,DISPUTE_ABI:H,FRACTIONALIZER_ABI:j,APP_REGISTRY_ABI:L}};let Y=[];const K=()=>Y,Q=e=>{function t(t){Y.some((e=>e.info.uuid===t.detail.info.uuid))||(Y=[...Y,t.detail],e(Y))}if("undefined"!=typeof window)return window.addEventListener("eip6963:announceProvider",t),window.dispatchEvent(new Event("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",t)},X=(e,t,n)=>{const i=[];let a=[],s=!1,r=0;const o=e.length;return new Promise(((d,p)=>{function u(){n(r/o*100)}function l(e,t,n){return m(this,arguments,void 0,(function*(e,t,n,i=0){var a;try{const i=null===(a=(yield c.put(t,e,{headers:{"Content-Type":e.type||"application/octet-stream"},timeout:3e5})).headers.etag)||void 0===a?void 0:a.replace(/"/g,"");if(!i)throw new Error(`Missing ETag for part ${n}`);return{ETag:i,PartNumber:n}}catch(a){if(i<3){const a=1e3*Math.pow(2,i);// Exponential backoff
60
+ let k=null,N=null,M=null;const O=e=>{var n;const a=M||C;return N&&(null===(n=N.chain)||void 0===n?void 0:n.id)===a.id||(N=i({chain:a,transport:t()})),N};var B=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"address",name:"target",type:"address"}],name:"AddressEmptyCode",type:"error"},{inputs:[{internalType:"address",name:"implementation",type:"address"}],name:"ERC1967InvalidImplementation",type:"error"},{inputs:[],name:"ERC1967NonPayable",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"owner",type:"address"}],name:"ERC721IncorrectOwner",type:"error"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ERC721InsufficientApproval",type:"error"},{inputs:[{internalType:"address",name:"approver",type:"address"}],name:"ERC721InvalidApprover",type:"error"},{inputs:[{internalType:"address",name:"operator",type:"address"}],name:"ERC721InvalidOperator",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"ERC721InvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"ERC721InvalidReceiver",type:"error"},{inputs:[{internalType:"address",name:"sender",type:"address"}],name:"ERC721InvalidSender",type:"error"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ERC721NonexistentToken",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[],name:"FailedCall",type:"error"},{inputs:[],name:"InvalidDeadline",type:"error"},{inputs:[],name:"InvalidDuration",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidPaymentToken",type:"error"},{inputs:[],name:"InvalidPrice",type:"error"},{inputs:[],name:"InvalidRoyalty",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"NotInitializing",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:"TokenAlreadyExists",type:"error"},{inputs:[],name:"UUPSUnauthorizedCallContext",type:"error"},{inputs:[{internalType:"bytes32",name:"slot",type:"bytes32"}],name:"UUPSUnsupportedProxiableUUID",type:"error"},{inputs:[],name:"Unauthorized",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:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"approved",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"operator",type:"address"},{indexed:!1,internalType:"bool",name:"approved",type:"bool"}],name:"ApprovalForAll",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:"address",name:"account",type:"address"}],name:"Paused",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:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"vault",type:"address"}],name:"RoyaltyVaultDeployed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"royaltyVaultFactory",type:"address"}],name:"RoyaltyVaultFactoryUpdated",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:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newTreasury",type:"address"}],name:"TreasuryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",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:[],name:"appRegistry",outputs:[{internalType:"contract AppRegistry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"dataStatus",outputs:[{internalType:"enum IIpNFT.DataStatus",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"disputeModule",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"erc6551Account",outputs:[{internalType:"contract IERC6551Account",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"erc6551Registry",outputs:[{internalType:"contract IERC6551Registry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"finalizeDelete",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getAccount",outputs:[{internalType:"address",name:"account",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getApproved",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getRoyaltyVault",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getTerms",outputs:[{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:"enum IIpNFT.LicenseType",name:"licenseType",type:"uint8"}],internalType:"struct IIpNFT.LicenseTerms",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"},{internalType:"uint256",name:"maxTermDuration_",type:"uint256"},{internalType:"address",name:"signer_",type:"address"},{internalType:"address",name:"wCAMP_",type:"address"},{internalType:"uint256",name:"minTermDuration_",type:"uint256"},{internalType:"uint256",name:"minPrice_",type:"uint256"},{internalType:"uint256",name:"maxRoyaltyBps_",type:"uint256"},{internalType:"contract IERC6551Registry",name:"registry_",type:"address"},{internalType:"contract IERC6551Account",name:"implementation_",type:"address"},{internalType:"contract AppRegistry",name:"appRegistry_",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"operator",type:"address"}],name:"isApprovedForAll",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"markDisputed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"marketPlace",outputs:[{internalType:"contract IMarketplace",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxRoyaltyBps",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxTermDuration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"minPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"minTermDuration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{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:"enum IIpNFT.LicenseType",name:"licenseType",type:"uint8"}],internalType:"struct IIpNFT.LicenseTerms",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"}],name:"mintWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"ownerOf",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"royaltyVaultFactory",outputs:[{internalType:"contract IpRoyaltyVaultFactory",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_appRegistry",type:"address"}],name:"setAppRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"operator",type:"address"},{internalType:"bool",name:"approved",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_disputeModule",type:"address"}],name:"setDisputeModule",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_marketPlace",type:"address"}],name:"setMarketPlace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_royaltyVaultFactory",type:"address"}],name:"setRoyaltyVaultFactory",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"}],name:"setSigner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"signer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"tokenInfo",outputs:[{components:[{internalType:"string",name:"tokenURI",type:"string"},{internalType:"bool",name:"isIP",type:"bool"},{internalType:"bytes32",name:"contentHash",type:"bytes32"},{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:"enum IIpNFT.LicenseType",name:"licenseType",type:"uint8"}],internalType:"struct IIpNFT.LicenseTerms",name:"terms",type:"tuple"},{internalType:"enum IIpNFT.DataStatus",name:"status",type:"uint8"},{internalType:"string",name:"appId",type:"string"}],internalType:"struct IIpNFT.TokenInfo",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_tokenId",type:"uint256"}],name:"tokenURI",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{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:"enum IIpNFT.LicenseType",name:"licenseType",type:"uint8"}],internalType:"struct IIpNFT.LicenseTerms",name:"newTerms",type:"tuple"}],name:"updateTerms",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:[],name:"wCAMP",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],F=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"address",name:"target",type:"address"}],name:"AddressEmptyCode",type:"error"},{inputs:[{internalType:"address",name:"implementation",type:"address"}],name:"ERC1967InvalidImplementation",type:"error"},{inputs:[],name:"ERC1967NonPayable",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[],name:"FailedCall",type:"error"},{inputs:[],name:"FeesExceedMaximum",type:"error"},{inputs:[],name:"FeesMismatch",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidLicenseType",type:"error"},{inputs:[],name:"InvalidParentIp",type:"error"},{inputs:[],name:"InvalidPayment",type:"error"},{inputs:[],name:"InvalidPrice",type:"error"},{inputs:[],name:"InvalidRoyalty",type:"error"},{inputs:[],name:"MaxParentsExceeded",type:"error"},{inputs:[],name:"MaxRoyaltyExceeded",type:"error"},{inputs:[],name:"NoSubscriptionFound",type:"error"},{inputs:[],name:"NotInitializing",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:"ParentAlreadyExists",type:"error"},{inputs:[],name:"ParentIpAlreadyDeleted",type:"error"},{inputs:[],name:"ParentIpAlreadyDisputed",type:"error"},{inputs:[],name:"SubscriptionNotAllowed",type:"error"},{inputs:[],name:"TermsMismatch",type:"error"},{inputs:[],name:"UUPSUnauthorizedCallContext",type:"error"},{inputs:[{internalType:"bytes32",name:"slot",type:"bytes32"}],name:"UUPSUnsupportedProxiableUUID",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"VaultNotFound",type:"error"},{inputs:[],name:"ZeroAddress",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:"address",name:"account",type:"address"}],name:"Paused",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:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"vault",type:"address"}],name:"RoyaltyVaultDeployed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"royaltyVaultFactory",type:"address"}],name:"RoyaltyVaultFactoryUpdated",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:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",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:"MAX_PARENTS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"UPGRADE_INTERFACE_VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"buyer",type:"address"},{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"}],name:"buyAccess",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"revenueToken",type:"address"}],name:"claimRevenue",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address[]",name:"revenueTokens",type:"address[]"}],name:"claimRevenueBatch",outputs:[{internalType:"uint256[]",name:"",type:"uint256[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"holder",type:"address"},{internalType:"address",name:"revenueToken",type:"address"}],name:"claimableRevenue",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getRoyaltyVault",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getVaultRevenueTokens",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"ipId",type:"uint256"},{internalType:"uint256",name:"parent",type:"uint256"}],name:"hasParentIp",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"dataNFT_",type:"address"},{internalType:"uint16",name:"protocolFeeBps_",type:"uint16"},{internalType:"address",name:"treasury_",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"ipToken",outputs:[{internalType:"contract IIpNFT",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"}],name:"parentRoyaltyPercent",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolFeeBps",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"royaltyStack",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"childIpId",type:"uint256"},{internalType:"uint256[]",name:"parents",type:"uint256[]"},{internalType:"address",name:"creator",type:"address"}],name:"setParentIpsAndRoyaltyPercents",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"subscriptionExpiry",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"treasury",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"newFeeBps",type:"uint16"}],name:"updateProtocolFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newTreasury",type:"address"}],name:"updateTreasury",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"}],U=[{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"}],$=[{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"}],H=[{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:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"vault",type:"address"}],name:"RoyaltyVaultDeployed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"royaltyVaultFactory",type:"address"}],name:"RoyaltyVaultFactoryUpdated",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"}],V=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"address",name:"target",type:"address"}],name:"AddressEmptyCode",type:"error"},{inputs:[],name:"AppAlreadyActive",type:"error"},{inputs:[],name:"AppAlreadyExists",type:"error"},{inputs:[],name:"AppAlreadyInactive",type:"error"},{inputs:[],name:"AppNotFound",type:"error"},{inputs:[{internalType:"address",name:"implementation",type:"address"}],name:"ERC1967InvalidImplementation",type:"error"},{inputs:[],name:"ERC1967NonPayable",type:"error"},{inputs:[],name:"FailedCall",type:"error"},{inputs:[],name:"InvalidAppId",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidRoyalty",type:"error"},{inputs:[],name:"NotInitializing",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:"UUPSUnauthorizedCallContext",type:"error"},{inputs:[{internalType:"bytes32",name:"slot",type:"bytes32"}],name:"UUPSUnsupportedProxiableUUID",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"appId",type:"string"}],name:"AppDeactivated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"appId",type:"string"}],name:"AppReactivated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"appId",type:"string"},{indexed:!1,internalType:"address",name:"treasury",type:"address"},{indexed:!1,internalType:"uint16",name:"revenueShareBps",type:"uint16"}],name:"AppRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"appId",type:"string"},{indexed:!1,internalType:"address",name:"treasury",type:"address"},{indexed:!1,internalType:"uint16",name:"revenueShareBps",type:"uint16"}],name:"AppUpdated",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:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[],name:"UPGRADE_INTERFACE_VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"appExists",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"apps",outputs:[{internalType:"address",name:"treasury",type:"address"},{internalType:"uint16",name:"revenueShareBps",type:"uint16"},{internalType:"bool",name:"isActive",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"appId",type:"string"}],name:"deactivateApp",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"appId",type:"string"}],name:"getAppInfo",outputs:[{components:[{internalType:"address",name:"treasury",type:"address"},{internalType:"uint16",name:"revenueShareBps",type:"uint16"},{internalType:"bool",name:"isActive",type:"bool"}],internalType:"struct AppRegistry.AppInfo",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"appId",type:"string"}],name:"reactivateApp",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"appId",type:"string"},{internalType:"address",name:"treasury",type:"address"},{internalType:"uint16",name:"revenueShareBps",type:"uint16"}],name:"registerApp",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"appId",type:"string"},{internalType:"address",name:"treasury",type:"address"},{internalType:"uint16",name:"revenueShareBps",type:"uint16"}],name:"updateApp",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"}],j=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"address",name:"target",type:"address"}],name:"AddressEmptyCode",type:"error"},{inputs:[{internalType:"address",name:"implementation",type:"address"}],name:"ERC1967InvalidImplementation",type:"error"},{inputs:[],name:"ERC1967NonPayable",type:"error"},{inputs:[],name:"FailedCall",type:"error"},{inputs:[],name:"FailedDeployment",type:"error"},{inputs:[{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"needed",type:"uint256"}],name:"InsufficientBalance",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",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:"UUPSUnauthorizedCallContext",type:"error"},{inputs:[{internalType:"bytes32",name:"slot",type:"bytes32"}],name:"UUPSUnsupportedProxiableUUID",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"VaultAlreadyExists",type:"error"},{inputs:[],name:"VaultNotFound",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldImplementation",type:"address"},{indexed:!0,internalType:"address",name:"newImplementation",type:"address"}],name:"ImplementationUpdated",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:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",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:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"vault",type:"address"},{indexed:!0,internalType:"address",name:"initialOwner",type:"address"}],name:"VaultDeployed",type:"event"},{inputs:[],name:"UPGRADE_INTERFACE_VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"initialOwner",type:"address"}],name:"deployVault",outputs:[{internalType:"address",name:"vault",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"deployVaultForExistingNFT",outputs:[{internalType:"address",name:"vault",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getVault",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"ipNft_",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"ipNft",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"isVault",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"predictVaultAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"setImplementation",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:"",type:"uint256"}],name:"vaults",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],L="Connect with Camp Network",z=2628e3,q=86400,J=1e15,Y=1,G=1e4;const W={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",IP_ROYALTY_VAULT_FACTORY_CONTRACT_ADDRESS:"0x16e01D1CB5de9460f8ed9D1883f5aFD377798f38",CHAIN:C,IPNFT_ABI:B,MARKETPLACE_ABI:F,TBA_ABI:U,BATCH_OPERATIONS_ABI:$,DISPUTE_ABI:H,APP_REGISTRY_ABI:V,IP_ROYALTY_VAULT_FACTORY_ABI:j},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:"0x6B89810768b708465f31b6a8B8d753cc986489F1",DISPUTE_CONTRACT_ADDRESS:"0x947A3C4A45f7039e77643026A090025D5412EDa2",
61
+ // TODO: update with real factory address once deployed
62
+ IP_ROYALTY_VAULT_FACTORY_CONTRACT_ADDRESS:"",APP_REGISTRY_CONTRACT_ADDRESS:"0xd09F15aA280F9109aCd403cA920e67D40Cb6C3FA",CHAIN:E,IPNFT_ABI:B,MARKETPLACE_ABI:F,TBA_ABI:U,BATCH_OPERATIONS_ABI:$,DISPUTE_ABI:H,APP_REGISTRY_ABI:V,IP_ROYALTY_VAULT_FACTORY_ABI:j}};let K=[];const Q=()=>K,X=e=>{function t(t){K.some((e=>e.info.uuid===t.detail.info.uuid))||(K=[...K,t.detail],e(K))}if("undefined"!=typeof window)return window.addEventListener("eip6963:announceProvider",t),window.dispatchEvent(new Event("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",t)},Z=(e,t,n)=>{const i=[];let a=[],s=!1,r=0;const o=e.length;return new Promise(((p,d)=>{function u(){n(r/o*100)}function l(e,t,n){return m(this,arguments,void 0,(function*(e,t,n,i=0){var a;try{const i=null===(a=(yield c.put(t,e,{headers:{"Content-Type":e.type||"application/octet-stream"},timeout:3e5})).headers.etag)||void 0===a?void 0:a.replace(/"/g,"");if(!i)throw new Error(`Missing ETag for part ${n}`);return{ETag:i,PartNumber:n}}catch(a){if(i<3){const a=1e3*Math.pow(2,i);// Exponential backoff
61
63
  return yield new Promise((e=>setTimeout(e,a))),l(e,t,n,i+1)}throw new Error(`Part ${n} failed after 3 retries: ${a.message}`)}}))}
62
64
  // Expose abort method
63
- X.abort=()=>{s=!0,c.isCancel("Upload aborted")},u(),// Initial 0%
64
- function(){return m(this,void 0,void 0,(function*(){const n=[];for(let d=0;d<o&&!s;d++){const s=(()=>m(this,void 0,void 0,(function*(){try{if(a.includes(d))return;const n=yield l(e[d],t[d],d+1);i.push(n),r++,u()}catch(e){if(console.error(`Part ${d+1} failed:`,e),a.push(d),a.length>.1*o)
65
+ Z.abort=()=>{s=!0,c.isCancel("Upload aborted")},u(),// Initial 0%
66
+ function(){return m(this,void 0,void 0,(function*(){const n=[];for(let p=0;p<o&&!s;p++){const s=(()=>m(this,void 0,void 0,(function*(){try{if(a.includes(p))return;const n=yield l(e[p],t[p],p+1);i.push(n),r++,u()}catch(e){if(console.error(`Part ${p+1} failed:`,e),a.push(p),a.length>.1*o)
65
67
  // Fail fast if >10% fail
66
68
  throw e}})))();n.push(s),
67
69
  // Limit concurrency
68
70
  n.length>=4&&(yield Promise.race(n),
69
71
  // Remove settled promises to continue
70
- n.splice(0,n.length,...(yield Promise.allSettled(n)).map(((e,t)=>n[t])).filter(Boolean)))}yield Promise.allSettled(n),s?p(new Error("Upload aborted by user")):a.length>0?p(new Error(`Failed to upload ${a.length}/${o} parts: ${a.join(", ")}`)):(i.sort(((e,t)=>e.PartNumber-t.PartNumber)),d(i))}))}().catch(p)}))};
72
+ n.splice(0,n.length,...(yield Promise.allSettled(n)).map(((e,t)=>n[t])).filter(Boolean)))}yield Promise.allSettled(n),s?d(new Error("Upload aborted by user")):a.length>0?d(new Error(`Failed to upload ${a.length}/${o} parts: ${a.join(", ")}`)):(i.sort(((e,t)=>e.PartNumber-t.PartNumber)),p(i))}))}().catch(d)}))};
71
73
  /**
72
74
  * Uploads chunks to respective presigned URLs with progress tracking.
73
75
  * Falls back to a simple fetch request if XMLHttpRequest is not available.
@@ -90,9 +92,9 @@ n.splice(0,n.length,...(yield Promise.allSettled(n)).map(((e,t)=>n[t])).filter(B
90
92
  * @param appId Optional app ID for the minting operation.
91
93
  * @returns A promise that resolves when the minting is complete.
92
94
  */
93
- function ee(e,t,n,i,a,s,r,o,d,p){return m(this,void 0,void 0,(function*(){var u;
95
+ function ee(e,t,n,i,a,s,r,o,p,d){return m(this,void 0,void 0,(function*(){var u;
94
96
  // use provided appId, else use instance appId, else default to empty string
95
- const l=null!==(u=null!=p?p:this.appId)&&void 0!==u?u:"";return yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"mintWithSignature",[e,t,a,s,r,o,n,i,l,d],{waitForReceipt:!0})}))}
97
+ const l=null!==(u=null!=d?d:this.appId)&&void 0!==u?u:"";return yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"mintWithSignature",[e,t,a,s,r,o,n,i,l,p],{waitForReceipt:!0})}))}
96
98
  /**
97
99
  * Registers a Data NFT with the Origin service in order to obtain a signature for minting.
98
100
  * @param source The source of the Data NFT (e.g., "spotify", "twitter", "tiktok", or "file").
@@ -102,7 +104,7 @@ const l=null!==(u=null!=p?p:this.appId)&&void 0!==u?u:"";return yield this.callC
102
104
  * @param fileKey The file key(s) if the source is "file".
103
105
  * @param parents The IDs of the parent NFTs, if applicable.
104
106
  * @return A promise that resolves with the registration data.
105
- */function te(e,t,n,i,a,s,r,o){return m(this,void 0,void 0,(function*(){var d;const p=null!==(d=null!=o?o:this.appId)&&void 0!==d?d:"",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:a,metadata:i,parentId:r?r.map((e=>e.toString())):[]};void 0!==s&&(u.fileKey=s);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}))}
107
+ */function te(e,t,n,i,a,s,r,o){return m(this,void 0,void 0,(function*(){var p;const d=null!==(p=null!=o?o:this.appId)&&void 0!==p?p:"",u={source:e,deadline:Number(t),licenseTerms:{price:n.price.toString(),duration:n.duration,royaltyBps:n.royaltyBps,paymentToken:n.paymentToken,licenseType:n.licenseType},appId:d,isIp:a,metadata:i,parentId:r?r.map((e=>e.toString())):[]};void 0!==s&&(u.fileKey=s);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}))}
106
108
  /**
107
109
  * Updates the license terms of a specified IPNFT.
108
110
  * @param tokenId The ID of the IPNFT to update.
@@ -114,32 +116,26 @@ const l=null!==(u=null!=p?p:this.appId)&&void 0!==u?u:"";return yield this.callC
114
116
  * @param tokenId The token ID to set as deleted.
115
117
  * @returns A promise that resolves when the transaction is complete.
116
118
  */function ie(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"finalizeDelete",[e])}
117
- /**
118
- * Calls the getOrCreateRoyaltyVault method on the IPNFT contract.
119
- * @param tokenOwner The address of the token owner for whom to get or create the royalty vault.
120
- * @param simulateOnly If true, simulates the transaction without executing it.
121
- * @returns The address of the royalty vault associated with the specified token owner.
122
- */function ae(e){return m(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
119
  /**
124
120
  * Returns the license terms associated with a specific token ID.
125
121
  * @param tokenId The token ID to query.
126
122
  * @returns The license terms of the token ID.
127
- */function se(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"getTerms",[e])}
123
+ */function ae(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"getTerms",[e])}
128
124
  /**
129
125
  * Returns the owner of the specified IPNFT.
130
126
  * @param tokenId The ID of the IPNFT to query.
131
127
  * @returns The address of the owner of the IPNFT.
132
- */function re(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"ownerOf",[e])}
128
+ */function se(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"ownerOf",[e])}
133
129
  /**
134
130
  * Returns the number of IPNFTs owned by the given address.
135
131
  * @param owner The address to query.
136
132
  * @returns The number of IPNFTs owned by the address.
137
- */function oe(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"balanceOf",[e])}
133
+ */function re(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"balanceOf",[e])}
138
134
  /**
139
135
  * Returns the metadata URI associated with a specific token ID.
140
136
  * @param tokenId The token ID to query.
141
137
  * @returns The metadata URI of the token ID.
142
- */function de(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"tokenURI",[e])}
138
+ */function oe(e){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"tokenURI",[e])}
143
139
  /**
144
140
  * Returns the data status of the given token ID.
145
141
  * @param tokenId The token ID to query.
@@ -150,7 +146,7 @@ const l=null!==(u=null!=p?p:this.appId)&&void 0!==u?u:"";return yield this.callC
150
146
  * @param owner The address of the asset owner.
151
147
  * @param operator The address of the operator to check.
152
148
  * @return A promise that resolves to a boolean indicating if the operator is approved for all assets of the owner.
153
- */function ue(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"isApprovedForAll",[e,t])}function le(e,t,n){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"transferFrom",[e,t,n])}function ye(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 ce(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"approve",[e,t])}function me(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"setApprovalForAll",[e,t])}
149
+ */function de(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"isApprovedForAll",[e,t])}function ue(e,t,n){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"transferFrom",[e,t,n])}function le(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 ye(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"approve",[e,t])}function ce(e,t){return this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"setApprovalForAll",[e,t])}
154
150
  /**
155
151
  * Buys access to a data NFT for a specified duration.
156
152
  * @param buyer The address of the buyer.
@@ -162,13 +158,13 @@ const l=null!==(u=null!=p?p:this.appId)&&void 0!==u?u:"";return yield this.callC
162
158
  * @param expectedAppFeeBps The expected app fee in basis points (0-10000). Defaults to 0.
163
159
  * @param value The amount of native token to send (only required if paying with native token).
164
160
  * @returns A promise that resolves when the transaction is confirmed.
165
- */function he(e,t,n,i,a,s=0,r=0,o){return this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"buyAccess",[e,t,n,i,a,s,r],{waitForReceipt:!0,value:o})}
161
+ */function me(e,t,n,i,a,s=0,r=0,o){return this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"buyAccess",[e,t,n,i,a,s,r],{waitForReceipt:!0,value:o})}
166
162
  /**
167
163
  * Checks if a user has access to a specific token based on subscription expiry.
168
164
  * @param user - The address of the user.
169
165
  * @param tokenId - The ID of the token.
170
166
  * @returns A promise that resolves to a boolean indicating if the user has access.
171
- */function Te(e,t){return m(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 fe(e,t){return this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"subscriptionExpiry",[e,t])}
167
+ */function he(e,t){return m(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 Te(e,t){return this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"subscriptionExpiry",[e,t])}
172
168
  /**
173
169
  * Raises a dispute against an IP NFT.
174
170
  * Automatically handles token approval for ERC20 bonds or native token value.
@@ -187,20 +183,20 @@ const l=null!==(u=null!=p?p:this.appId)&&void 0!==u?u:"";return yield this.callC
187
183
  * "0x0100000000000000000000000000000000000000000000000000000000000000" // dispute tag (bytes32)
188
184
  * );
189
185
  * ```
190
- */function ve(e,t,n){return m(this,void 0,void 0,(function*(){const i=O(),s=this.environment.DISPUTE_CONTRACT_ADDRESS,r=this.environment.DISPUTE_ABI,[o,d,p]=yield Promise.all([i.readContract({address:s,abi:r,functionName:"disputeBond"}),i.readContract({address:s,abi:r,functionName:"protocolDisputeFee"}),i.readContract({address:s,abi:r,functionName:"disputeToken"})]),u=p===a,l=o+d;
186
+ */function fe(e,t,n){return m(this,void 0,void 0,(function*(){const i=O(),s=this.environment.DISPUTE_CONTRACT_ADDRESS,r=this.environment.DISPUTE_ABI,[o,p,d]=yield Promise.all([i.readContract({address:s,abi:r,functionName:"disputeBond"}),i.readContract({address:s,abi:r,functionName:"protocolDisputeFee"}),i.readContract({address:s,abi:r,functionName:"disputeToken"})]),u=d===a,l=o+p;
191
187
  // Call the raiseDispute contract method
192
188
  // Pass the total (bond + protocol fee) as msg.value if using native token
193
- return u||(yield this.approveERC20IfNeeded(p,s,l)),this.callContractMethod(s,r,"raiseDispute",[e,t,n],{waitForReceipt:!0,value:u?l:void 0})}))}
189
+ return u||(yield this.approveERC20IfNeeded(d,s,l)),this.callContractMethod(s,r,"raiseDispute",[e,t,n],{waitForReceipt:!0,value:u?l:void 0})}))}
194
190
  // base-x encoding / decoding
195
191
  // Copyright (c) 2018 base-x contributors
196
192
  // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
197
193
  // Distributed under the MIT software license, see the accompanying
198
194
  // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
199
- var we=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;
195
+ var ve=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
196
  // Skip and count leading '1's.
201
197
  for(;e[s]===i;)r++,s++;
202
198
  // Allocate enough space in big-endian base256 representation.
203
- const d=(e.length-s)*a+1>>>0,p=new Uint8Array(d);// log(58) / log(256), rounded up.
199
+ const p=(e.length-s)*a+1>>>0,d=new Uint8Array(p);// log(58) / log(256), rounded up.
204
200
  // Process the characters.
205
201
  for(;s<e.length;){
206
202
  // Find code of next character
@@ -210,35 +206,35 @@ if(i>255)return;
210
206
  // Decode character
211
207
  let a=t[i];
212
208
  // Invalid character
213
- 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++}
209
+ if(255===a)return;let r=0;for(let e=p-1;(0!==a||r<o)&&-1!==e;e--,r++)a+=n*d[e]>>>0,d[e]=a%256>>>0,a=a/256>>>0;if(0!==a)throw new Error("Non-zero carry");o=r,s++}
214
210
  // Skip leading zeroes in b256.
215
- 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
211
+ let u=p-o;for(;u!==p&&0===d[u];)u++;const l=new Uint8Array(r+(p-u));let y=r;for(;u!==p;)l[y++]=d[u++];return l}return{encode:// log(256) / log(BASE), rounded up
216
212
  function(t){if(
217
213
  // eslint-disable-next-line no-empty
218
214
  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"";
219
215
  // Skip & count leading zeroes.
220
- let a=0,r=0,o=0;const d=t.length;for(;o!==d&&0===t[o];)o++,a++;
216
+ let a=0,r=0,o=0;const p=t.length;for(;o!==p&&0===t[o];)o++,a++;
221
217
  // Allocate enough space in big-endian base58 representation.
222
- const p=(d-o)*s+1>>>0,u=new Uint8Array(p);
218
+ const d=(p-o)*s+1>>>0,u=new Uint8Array(d);
223
219
  // Process the bytes.
224
- for(;o!==d;){let e=t[o],i=0;
220
+ for(;o!==p;){let e=t[o],i=0;
225
221
  // Apply "b58 = b58 * 256 + ch".
226
- 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++}
222
+ for(let t=d-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++}
227
223
  // Skip leading zeroes in base58 result.
228
- let l=p-r;for(;l!==p&&0===u[l];)l++;
224
+ let l=d-r;for(;l!==d&&0===u[l];)l++;
229
225
  // Translate the result into a string.
230
- 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");
226
+ let y=i.repeat(a);for(;l<d;++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");
231
227
  // RFC 4648 base32 alphabet (lowercase)
232
- const Ae="abcdefghijklmnopqrstuvwxyz234567";
228
+ const we="abcdefghijklmnopqrstuvwxyz234567";
233
229
  /**
234
230
  * Encode a CID to bytes32 by extracting the 32-byte SHA-256 digest.
235
231
  * Supports both CIDv0 (starts with "Qm") and CIDv1 (starts with "bafy").
236
232
  */
237
- function Ie(e){let t;if(e.startsWith("Qm")){
233
+ function Ae(e){let t;if(e.startsWith("Qm")){
238
234
  // CIDv0: base58-encoded multihash (0x1220 + 32-byte digest)
239
- const n=we.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'");{
235
+ const n=ve.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'");{
240
236
  // CIDv1: multibase 'b' prefix + base32-encoded (version + codec + multihash)
241
- const n=function(e){const t={};for(let e=0;e<32;e++)t[Ae[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));
237
+ const n=function(e){const t={};for(let e=0;e<32;e++)t[we[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));
242
238
  // CIDv1 structure: version (1 byte) + codec (varint) + multihash
243
239
  // For raw codec with sha2-256: 0x01 + 0x55 + 0x12 + 0x20 + 32-byte digest
244
240
  // For dag-pb with sha2-256: 0x01 + 0x70 + 0x12 + 0x20 + 32-byte digest
@@ -246,7 +242,7 @@ if(1!==n[0]||36!==n.length)throw new Error("Invalid CIDv1: expected version 1 wi
246
242
  /**
247
243
  * Decode bytes32 back to CIDv1 format (base32, raw codec).
248
244
  * Returns a CID starting with "bafkrei" that works with Pinata gateways for raw data uploads.
249
- */function ge(e){const t=Buffer.from(e.slice(2),"hex");if(32!==t.length)throw new Error("Invalid bytes32: expected 32-byte digest");
245
+ */function Ie(e){const t=Buffer.from(e.slice(2),"hex");if(32!==t.length)throw new Error("Invalid bytes32: expected 32-byte digest");
250
246
  // Build CIDv1: version (0x01) + raw codec (0x55) + sha2-256 (0x12) + length (0x20) + digest
251
247
  const n=new Uint8Array(36);
252
248
  // Encode with base32 and add 'b' multibase prefix
@@ -254,7 +250,7 @@ return n[0]=1,// CIDv1
254
250
  n[1]=85,// raw codec (used by Pinata for raw data uploads like JSON)
255
251
  n[2]=18,// sha2-256 hash function
256
252
  n[3]=32,// 32 byte length
257
- 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+=Ae[i>>n&31];return n>0&&(t+=Ae[i<<5-n&31]),t}(n)}
253
+ 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+=we[i>>n&31];return n>0&&(t+=we[i<<5-n&31]),t}(n)}
258
254
  /**
259
255
  * Raises a dispute with automatic evidence upload to IPFS.
260
256
  * Uploads evidence JSON to IPFS, encodes the CID to bytes32 for on-chain storage,
@@ -283,7 +279,7 @@ 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
283
279
  * // Fetch evidence via IPFS gateway
284
280
  * // https://ipfs.io/ipfs/{result.evidenceCid}
285
281
  * ```
286
- */function be(e,t,n){return m(this,void 0,void 0,(function*(){const i=yield this.uploadJSONToIPFS(t),a=Ie(i);return{transactionResult:yield this.raiseDispute(e,a,n),evidenceCid:i,evidenceHash:a}}))}
282
+ */function be(e,t,n){return m(this,void 0,void 0,(function*(){const i=yield this.uploadJSONToIPFS(t),a=Ae(i);return{transactionResult:yield this.raiseDispute(e,a,n),evidenceCid:i,evidenceHash:a}}))}
287
283
  /**
288
284
  * Asserts a dispute as the IP owner with counter-evidence.
289
285
  * Must be called by the owner of the disputed IP within the cooldown period.
@@ -296,7 +292,7 @@ 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
296
292
  * ```typescript
297
293
  * await origin.disputeAssertion(1n, "0x1234..."); // counter-evidence hash
298
294
  * ```
299
- */function Ce(e,t){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"disputeAssertion",[e,t],{waitForReceipt:!0})}))}
295
+ */function ge(e,t){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"disputeAssertion",[e,t],{waitForReceipt:!0})}))}
300
296
  /**
301
297
  * Asserts a dispute with automatic counter-evidence upload to IPFS.
302
298
  * Uploads counter-evidence JSON to IPFS, encodes the CID to bytes32 for on-chain storage,
@@ -325,7 +321,7 @@ 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
325
321
  * // Fetch counter-evidence via IPFS gateway
326
322
  * // https://ipfs.io/ipfs/{result.counterEvidenceCid}
327
323
  * ```
328
- */function Ee(e,t){return m(this,void 0,void 0,(function*(){const n=yield this.uploadJSONToIPFS(t),i=Ie(n);return{transactionResult:yield this.disputeAssertion(e,i),counterEvidenceCid:n,counterEvidenceHash:i}}))}
324
+ */function Ce(e,t){return m(this,void 0,void 0,(function*(){const n=yield this.uploadJSONToIPFS(t),i=Ae(n);return{transactionResult:yield this.disputeAssertion(e,i),counterEvidenceCid:n,counterEvidenceHash:i}}))}
329
325
  /**
330
326
  * Votes on a dispute as a CAMP token staker.
331
327
  * Only users who staked before the dispute was raised can vote.
@@ -343,7 +339,7 @@ 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
343
339
  * // Vote against the dispute
344
340
  * await origin.voteOnDispute(1n, false);
345
341
  * ```
346
- */function Se(e,t){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"voteOnDispute",[e,t],{waitForReceipt:!0})}))}
342
+ */function Ee(e,t){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"voteOnDispute",[e,t],{waitForReceipt:!0})}))}
347
343
  /**
348
344
  * Resolves a dispute after the voting period has ended.
349
345
  * Can be called by anyone - resolution is deterministic based on votes and quorum.
@@ -370,7 +366,7 @@ 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
370
366
  * ```typescript
371
367
  * await origin.cancelDispute(1n);
372
368
  * ```
373
- */function Re(e){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"cancelDispute",[e],{waitForReceipt:!0})}))}
369
+ */function Se(e){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"cancelDispute",[e],{waitForReceipt:!0})}))}
374
370
  /**
375
371
  * Tags a child IP as disputed if its parent has been successfully disputed.
376
372
  * This propagates the dispute status to derivative IPs.
@@ -384,7 +380,7 @@ 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
384
380
  * // After parent IP (tokenId 1) has been disputed, tag child IP (tokenId 2)
385
381
  * await origin.tagChildIp(2n, 1n); // childIpId, disputeId of parent
386
382
  * ```
387
- */function Ne(e,t){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"tagChildIp",[e,t],{waitForReceipt:!0})}))}
383
+ */function Re(e,t){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.DISPUTE_CONTRACT_ADDRESS,this.environment.DISPUTE_ABI,"tagChildIp",[e,t],{waitForReceipt:!0})}))}
388
384
  /**
389
385
  * Gets the details of a dispute by its ID.
390
386
  *
@@ -398,9 +394,9 @@ 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
398
394
  * console.log(`Yes votes: ${dispute.yesVotes}`);
399
395
  * console.log(`No votes: ${dispute.noVotes}`);
400
396
  * ```
401
- */function De(e){return m(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;
397
+ */function _e(e){return m(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,p,d,u,l,y,c]=t;
402
398
  // Contract returns a tuple, map it to the Dispute interface
403
- 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}}))}
399
+ return{initiator:n,targetId:i,disputeTag:a,disputeEvidenceHash:s,counterEvidenceHash:r,disputeTimestamp:o,assertionTimestamp:p,yesVotes:d,noVotes:u,status:l,bondAmount:y,protocolFeeAmount:c}}))}
404
400
  /**
405
401
  * Resolves a wallet address from an optional address parameter or connected wallet.
406
402
  * Checks viemClient.account first, then falls back to eth_requestAccounts.
@@ -409,13 +405,13 @@ return{initiator:n,targetId:i,disputeTag:a,disputeEvidenceHash:s,counterEvidence
409
405
  * @param address Optional address to use directly.
410
406
  * @returns The resolved wallet address.
411
407
  * @throws Error if no address provided and no wallet connected or no accounts found.
412
- */function _e(e,t){return m(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]}))}
408
+ */function xe(e,t){return m(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]}))}
413
409
  /**
414
410
  * Enum representing the type of license for an IP NFT.
415
411
  * - DURATION_BASED: License expires after a set duration (subscription model).
416
412
  * - SINGLE_PAYMENT: One-time payment for perpetual access.
417
413
  * - X402: HTTP 402-based micropayment license (no on-chain payments).
418
- */var ke,xe,Me;!function(e){e[e.DURATION_BASED=0]="DURATION_BASED",e[e.SINGLE_PAYMENT=1]="SINGLE_PAYMENT",e[e.X402=2]="X402"}(ke||(ke={})),function(e){e[e.ACTIVE=0]="ACTIVE",e[e.DELETED=1]="DELETED",e[e.DISPUTED=2]="DISPUTED"}(xe||(xe={})),function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Raised=1]="Raised",e[e.Asserted=2]="Asserted",e[e.Resolved=3]="Resolved",e[e.Cancelled=4]="Cancelled"}(Me||(Me={}));
414
+ */var De,ke,Ne;!function(e){e[e.DURATION_BASED=0]="DURATION_BASED",e[e.SINGLE_PAYMENT=1]="SINGLE_PAYMENT",e[e.X402=2]="X402"}(De||(De={})),function(e){e[e.ACTIVE=0]="ACTIVE",e[e.DELETED=1]="DELETED",e[e.DISPUTED=2]="DISPUTED"}(ke||(ke={})),function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Raised=1]="Raised",e[e.Asserted=2]="Asserted",e[e.Resolved=3]="Resolved",e[e.Cancelled=4]="Cancelled"}(Ne||(Ne={}));
419
415
  /**
420
416
  * Creates license terms for a digital asset.
421
417
  * @param price The price of the asset in wei.
@@ -425,7 +421,7 @@ return{initiator:n,targetId:i,disputeTag:a,disputeEvidenceHash:s,counterEvidence
425
421
  * @param licenseType The type of license (defaults to DURATION_BASED).
426
422
  * @returns The created license terms.
427
423
  */
428
- const Oe=(e,t,n,i,a=ke.DURATION_BASED)=>{if(n<W||n>G)throw new Error(`Royalty basis points must be between ${W} and ${G}`);if(a===ke.DURATION_BASED){if(t<q||t>V)throw new Error(`Duration must be between ${q} and ${V} seconds for DURATION_BASED licenses`)}else if((a===ke.SINGLE_PAYMENT||a===ke.X402)&&t>0)throw new Error(`Duration must be 0 for ${ke[a]} licenses`);if(e<J)throw new Error(`Price must be at least ${J} wei`);return{price:e,duration:t,royaltyBps:n,paymentToken:i,licenseType:a}},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"}];
424
+ const Me=(e,t,n,i,a=De.DURATION_BASED)=>{if(n<Y||n>G)throw new Error(`Royalty basis points must be between ${Y} and ${G}`);if(a===De.DURATION_BASED){if(t<q||t>z)throw new Error(`Duration must be between ${q} and ${z} seconds for DURATION_BASED licenses`)}else if((a===De.SINGLE_PAYMENT||a===De.X402)&&t>0)throw new Error(`Duration must be 0 for ${De[a]} licenses`);if(e<J)throw new Error(`Price must be at least ${J} wei`);return{price:e,duration:t,royaltyBps:n,paymentToken:i,licenseType:a}},Oe=[{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"}];
429
425
  // minimal ABI for staking vault
430
426
  /**
431
427
  * Checks if a user meets the requirements to vote on a dispute.
@@ -447,15 +443,15 @@ const Oe=(e,t,n,i,a=ke.DURATION_BASED)=>{if(n<W||n>G)throw new Error(`Royalty ba
447
443
  * }
448
444
  * ```
449
445
  */
450
- function Fe(e,t){return m(this,void 0,void 0,(function*(){const n=yield _e(this.viemClient,t),i=O(),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===Me.Asserted?(
446
+ function Be(e,t){return m(this,void 0,void 0,(function*(){const n=yield xe(this.viemClient,t),i=O(),a=this.environment.DISPUTE_CONTRACT_ADDRESS,s=this.environment.DISPUTE_ABI,[r,o,p,d,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:Oe,functionName:"userStakeTimestamp",args:[n]}),i.readContract({address:o,abi:Oe,functionName:"balanceOf",args:[n]})]),f=BigInt(Math.floor(Date.now()/1e3));let v,w=!1;y===Ne.Asserted?(
451
447
  // for asserted disputes, voting period is relative to assertion timestamp
452
- v=m+u,w=f<=v):y===Me.Raised&&(
448
+ v=m+u,w=f<=v):y===Ne.Raised&&(
453
449
  // for raised disputes, voting period extends from cooldown through judgement
454
- v=c+p+u,w=f<=v);
450
+ v=c+d+u,w=f<=v);
455
451
  // build base result
456
- const A={canVote:!1,votingWeight:T,stakingThreshold:d,hasAlreadyVoted:l,userStakeTimestamp:h,disputeTimestamp:c,disputeStatus:y,isVotingPeriodActive:w};
452
+ const A={canVote:!1,votingWeight:T,stakingThreshold:p,hasAlreadyVoted:l,userStakeTimestamp:h,disputeTimestamp:c,disputeStatus:y,isVotingPeriodActive:w};
457
453
  // check all requirements
458
- return y!==Me.Raised&&y!==Me.Asserted?Object.assign(Object.assign({},A),{reason:`Dispute is not in a voteable status (current: ${Me[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"})}))}
454
+ return y!==Ne.Raised&&y!==Ne.Asserted?Object.assign(Object.assign({},A),{reason:`Dispute is not in a voteable status (current: ${Ne[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<p?Object.assign(Object.assign({},A),{reason:`Insufficient stake: you have ${T} but need at least ${p}`}):Object.assign(Object.assign({},A),{canVote:!0}):Object.assign(Object.assign({},A),{reason:"Voting period has ended"})}))}
459
455
  /**
460
456
  * Gets detailed progress and voting statistics for a dispute.
461
457
  * Includes vote counts, percentages, quorum progress, and timeline.
@@ -477,17 +473,17 @@ return y!==Me.Raised&&y!==Me.Asserted?Object.assign(Object.assign({},A),{reason:
477
473
  * console.log(`Can resolve in ${progress.timeline.timeUntilResolution} seconds`);
478
474
  * }
479
475
  * ```
480
- */function Ue(e){return m(this,void 0,void 0,(function*(){var t,n,i,a,s,r,o,d,p;const u=O(),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,C=0;g>BigInt(0)&&(b=Number(A*BigInt(1e4)/g)/100,C=Number(I*BigInt(1e4)/g)/100);
476
+ */function Fe(e){return m(this,void 0,void 0,(function*(){var t,n,i,a,s,r,o,p,d;const u=O(),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!==(d=null!==(p=c.noVotes)&&void 0!==p?p:c[8])&&void 0!==d?d:0),b=A+I;let g=0,C=0;b>BigInt(0)&&(g=Number(A*BigInt(1e4)/b)/100,C=Number(I*BigInt(1e4)/b)/100);
481
477
  // calculate quorum progress
482
- let E=0;m>BigInt(0)&&(E=Number(g*BigInt(1e4)/m)/100);const S=g>=m;
478
+ let E=0;m>BigInt(0)&&(E=Number(b*BigInt(1e4)/m)/100);const P=b>=m;
483
479
  // determine projected outcome
484
- let P;P=S?A>I?"dispute_succeeds":"dispute_fails":"no_quorum";
480
+ let S;S=P?A>I?"dispute_succeeds":"dispute_fails":"no_quorum";
485
481
  // calculate timeline
486
- const R=BigInt(Math.floor(Date.now()/1e3)),N=new Date(1e3*Number(v)),D=new Date(1e3*Number(v+h));let _,k;f===Me.Asserted?(
482
+ const R=BigInt(Math.floor(Date.now()/1e3)),_=new Date(1e3*Number(v)),x=new Date(1e3*Number(v+h));let D,k;f===Ne.Asserted?(
487
483
  // for asserted disputes, voting ends relative to assertion
488
- _=new Date(1e3*Number(w+T)),k=w+T):(
484
+ D=new Date(1e3*Number(w+T)),k=w+T):(
489
485
  // for raised disputes, voting ends after cooldown + judgement
490
- _=new Date(1e3*Number(v+h+T)),k=v+h+T);const x=(f===Me.Raised||f===Me.Asserted)&&R>k,M=x?0:Number(k-R);return{disputeId:e,status:f,yesVotes:A,noVotes:I,totalVotes:g,yesPercentage:b,noPercentage:C,quorum:m,quorumPercentage:E,quorumMet:S,projectedOutcome:P,timeline:{raisedAt:N,cooldownEndsAt:D,votingEndsAt:_,canResolveNow:x,timeUntilResolution:M}}}))}
486
+ D=new Date(1e3*Number(v+h+T)),k=v+h+T);const N=(f===Ne.Raised||f===Ne.Asserted)&&R>k,M=N?0:Number(k-R);return{disputeId:e,status:f,yesVotes:A,noVotes:I,totalVotes:b,yesPercentage:g,noPercentage:C,quorum:m,quorumPercentage:E,quorumMet:P,projectedOutcome:S,timeline:{raisedAt:_,cooldownEndsAt:x,votingEndsAt:D,canResolveNow:N,timeUntilResolution:M}}}))}
491
487
  /**
492
488
  * Gets the requirements for raising a dispute, including balance check.
493
489
  *
@@ -501,157 +497,66 @@ _=new Date(1e3*Number(v+h+T)),k=v+h+T);const x=(f===Me.Raised||f===Me.Asserted)&
501
497
  * console.log(`Need ${requirements.totalRequired} but only have ${requirements.userBalance}`);
502
498
  * }
503
499
  * ```
504
- */function $e(e){return m(this,void 0,void 0,(function*(){const t=O(),n=this.environment.DISPUTE_CONTRACT_ADDRESS,i=this.environment.DISPUTE_ABI,[r,o,d]=yield Promise.all([t.readContract({address:n,abi:i,functionName:"disputeBond"}),t.readContract({address:n,abi:i,functionName:"protocolDisputeFee"}),t.readContract({address:n,abi:i,functionName:"disputeToken"})]),p=d===a,u=r+o;
500
+ */function Ue(e){return m(this,void 0,void 0,(function*(){const t=O(),n=this.environment.DISPUTE_CONTRACT_ADDRESS,i=this.environment.DISPUTE_ABI,[r,o,p]=yield Promise.all([t.readContract({address:n,abi:i,functionName:"disputeBond"}),t.readContract({address:n,abi:i,functionName:"protocolDisputeFee"}),t.readContract({address:n,abi:i,functionName:"disputeToken"})]),d=p===a,u=r+o;
505
501
  // Get user's balance
506
- let l;return l=p?yield t.getBalance({address:e}):yield t.readContract({address:d,abi:s,functionName:"balanceOf",args:[e]}),{bondAmount:r,protocolFee:o,totalRequired:u,tokenAddress:d,isNativeToken:p,userBalance:l,hasSufficientBalance:l>=u}}))}
502
+ let l;return l=d?yield t.getBalance({address:e}):yield t.readContract({address:p,abi:s,functionName:"balanceOf",args:[e]}),{bondAmount:r,protocolFee:o,totalRequired:u,tokenAddress:p,isNativeToken:d,userBalance:l,hasSufficientBalance:l>=u}}))}
507
503
  /**
508
- * Fractionalizes an IP NFT into fungible ERC20 tokens.
509
- * The NFT is transferred to the fractionalizer contract and a new ERC20 token is created.
510
- * The caller receives the full supply of fractional tokens.
511
- *
512
- * @param tokenId The token ID of the IP NFT to fractionalize.
513
- * @returns A promise that resolves with the transaction result.
514
- *
515
- * @example
516
- * ```typescript
517
- * // First approve the fractionalizer contract to transfer your NFT
518
- * await origin.approve(fractionalizerAddress, tokenId);
504
+ * Gets the royalty vault address for a given token ID.
505
+ * Returns null if no vault has been deployed yet.
519
506
  *
520
- * // Then fractionalize
521
- * const result = await origin.fractionalize(1n);
522
- * ```
523
- */function He(e){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"fractionalize",[e],{waitForReceipt:!0})}))}
507
+ * @param tokenId The token ID to look up.
508
+ * @returns The vault address, or null if no vault exists.
509
+ */function $e(e){return m(this,void 0,void 0,(function*(){const t=yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"getRoyaltyVault",[e]);return t&&t!==a?t:null}))}
524
510
  /**
525
- * Redeems an IP NFT by burning all of its fractional tokens.
526
- * The caller must hold the entire supply of the NFT's fractional token.
527
- * After redemption, the NFT is transferred back to the caller.
528
- *
529
- * @param tokenId The token ID of the IP NFT to redeem.
530
- * @returns A promise that resolves with the transaction result.
511
+ * Gets the list of revenue token addresses that have accumulated in a token's vault.
531
512
  *
532
- * @example
533
- * ```typescript
534
- * // Requires holding 100% of the fractional token supply
535
- * await origin.redeem(1n);
536
- * ```
537
- */function je(e){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"redeem",[e],{waitForReceipt:!0})}))}
513
+ * @param tokenId The token ID to look up.
514
+ * @returns An array of ERC20 token addresses with revenue in the vault.
515
+ */function He(e){return m(this,void 0,void 0,(function*(){return(yield this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"getVaultRevenueTokens",[e]))||[]}))}
538
516
  /**
539
- * Gets the fractional ERC20 token address for a specific IP NFT.
540
- * Returns zero address if the NFT has not been fractionalized.
517
+ * Returns the amount of revenue claimable by a holder for a given token and revenue token.
518
+ * If no holder is provided, the connected wallet address is used.
541
519
  *
542
- * @param tokenId The token ID of the IP NFT.
543
- * @returns A promise that resolves with the fractional token address.
544
- *
545
- * @example
546
- * ```typescript
547
- * const fractionalToken = await origin.getTokenForNFT(1n);
548
- * if (fractionalToken !== zeroAddress) {
549
- * console.log(`Fractional token: ${fractionalToken}`);
550
- * } else {
551
- * console.log("NFT has not been fractionalized");
552
- * }
553
- * ```
554
- */function Le(e){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"getTokenForNFT",[e])}))}
520
+ * @param tokenId The token ID whose vault to query.
521
+ * @param revenueToken The ERC20 revenue token address.
522
+ * @param holder Optional holder address. Defaults to connected wallet.
523
+ * @returns The claimable amount in the revenue token's smallest unit.
524
+ */function Ve(e,t,n){return m(this,void 0,void 0,(function*(){const i=yield xe(this.viemClient,n);return yield this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"claimableRevenue",[e,i,t])}))}
555
525
  /**
556
- * Fractionalizes an IP NFT with automatic approval.
557
- * This method first approves the fractionalizer contract to transfer your NFT,
558
- * then calls fractionalize. This is the recommended method for most use cases.
526
+ * Claims accumulated revenue for a token from a specific revenue token.
527
+ * The caller must hold Royalty Tokens to claim their proportional share.
559
528
  *
560
- * @param tokenId The token ID of the IP NFT to fractionalize.
561
- * @returns A promise that resolves with the transaction result.
562
- *
563
- * @example
564
- * ```typescript
565
- * // Single call handles approval and fractionalization
566
- * const result = await origin.fractionalizeWithApproval(1n);
567
- * ```
568
- */function ze(e){return m(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})}))}
529
+ * @param tokenId The token ID whose vault to claim from.
530
+ * @param revenueToken The ERC20 revenue token address to claim.
531
+ * @returns The transaction result.
532
+ */function je(e,t){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"claimRevenue",[e,t],{waitForReceipt:!0})}))}
569
533
  /**
570
- * Redeems fractional tokens for the underlying NFT, but only if the caller owns 100% of the supply.
571
- * This method checks the caller's balance before attempting to redeem, providing a clear error
572
- * if they don't hold the full supply.
534
+ * Claims accumulated revenue for a token from multiple revenue tokens in a single transaction.
535
+ * The caller must hold Royalty Tokens to claim their proportional share.
573
536
  *
574
- * @param tokenId The token ID of the original NFT to redeem.
575
- * @returns A promise that resolves with the transaction result.
576
- * @throws Error if the caller doesn't own 100% of the fractional tokens.
577
- *
578
- * @example
579
- * ```typescript
580
- * try {
581
- * const result = await origin.redeemIfComplete(1n);
582
- * console.log("NFT redeemed successfully!");
583
- * } catch (error) {
584
- * console.log("You don't own all fractional tokens yet");
585
- * }
586
- * ```
587
- */function Ve(e){return m(this,void 0,void 0,(function*(){
588
- // get the ERC20 token address for this NFT
589
- const t=yield this.getTokenForNFT(e);if(!t||"0x0000000000000000000000000000000000000000"===t)throw new Error("This NFT has not been fractionalized");
590
- // get current wallet address
591
- const n=yield _e(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=O(),[s,r]=yield Promise.all([a.readContract({address:t,abi:i,functionName:"balanceOf",args:[n]}),a.readContract({address:t,abi:i,functionName:"totalSupply",args:[]})]);
592
- // check caller's balance and total supply
593
- 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.`)}
594
- // proceed with redemption
595
- return this.callContractMethod(this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,this.environment.FRACTIONALIZER_ABI,"redeem",[e],{waitForReceipt:!0})}))}
596
- // minimal ERC20 ABI
597
- const qe=[{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"}];
598
- /**
599
- * Gets a user's ownership percentage of a fractionalized NFT.
600
- * Returns detailed information about the user's fractional token holdings.
601
- *
602
- * @param tokenId The token ID of the original NFT.
603
- * @param owner Optional address to check. If not provided, uses connected wallet.
604
- * @returns A promise that resolves with the ownership details.
605
- *
606
- * @example
607
- * ```typescript
608
- * const ownership = await origin.getFractionOwnership(1n);
609
- *
610
- * if (!ownership.isFractionalized) {
611
- * console.log("This NFT has not been fractionalized");
612
- * } else {
613
- * console.log(`You own ${ownership.ownershipPercentage}% of this NFT`);
614
- * console.log(`Balance: ${ownership.balance} / ${ownership.totalSupply}`);
615
- *
616
- * if (ownership.canRedeem) {
617
- * console.log("You can redeem the original NFT!");
618
- * await origin.redeem(1n);
619
- * }
620
- * }
621
- * ```
622
- */function Je(e,t){return m(this,void 0,void 0,(function*(){const n=yield _e(this.viemClient,t),i=yield this.getTokenForNFT(e);
623
- // get the ERC20 token address for this NFT
624
- // check if fractionalized
625
- if(!i||i===a)return{tokenId:e,erc20Address:a,isFractionalized:!1,balance:BigInt(0),totalSupply:BigInt(0),ownershipPercentage:0,canRedeem:!1,decimals:18};const s=O(),[r,o,d]=yield Promise.all([s.readContract({address:i,abi:qe,functionName:"balanceOf",args:[n]}),s.readContract({address:i,abi:qe,functionName:"totalSupply",args:[]}),s.readContract({address:i,abi:qe,functionName:"decimals",args:[]})]);
626
- // fetch ERC20 data
627
- // calculate ownership percentage
628
- let p=0;o>BigInt(0)&&(p=Number(r*BigInt(1e4)/o)/100);const u=r>=o&&o>BigInt(0);return{tokenId:e,erc20Address:i,isFractionalized:!0,balance:r,totalSupply:o,ownershipPercentage:p,canRedeem:u,decimals:d}}))}
629
- /**
630
- * Checks if a user can fractionalize an NFT and why not if they can't.
631
- * Returns detailed information about eligibility requirements.
632
- *
633
- * @param tokenId The token ID of the NFT to check.
634
- * @param owner Optional address to check. If not provided, uses connected wallet.
635
- * @returns A promise that resolves with the fractionalize eligibility details.
537
+ * @param tokenId The token ID whose vault to claim from.
538
+ * @param revenueTokens Array of ERC20 revenue token addresses to claim.
539
+ * @returns The transaction result.
540
+ */function Le(e,t){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.MARKETPLACE_CONTRACT_ADDRESS,this.environment.MARKETPLACE_ABI,"claimRevenueBatch",[e,t],{waitForReceipt:!0})}))}
541
+ /**
542
+ * Deploys a new royalty vault for an existing NFT that was minted before the vault system.
543
+ * This is used to migrate old NFTs to the new royalty vault system.
636
544
  *
637
- * @example
638
- * ```typescript
639
- * const eligibility = await origin.canFractionalize(1n);
545
+ * @param tokenId The token ID to deploy a vault for.
546
+ * @returns The transaction result including the new vault address.
547
+ */function ze(e){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.IP_ROYALTY_VAULT_FACTORY_CONTRACT_ADDRESS,this.environment.IP_ROYALTY_VAULT_FACTORY_ABI,"deployVaultForExistingNFT",[e],{waitForReceipt:!0})}))}const qe=[{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"}];
548
+ /**
549
+ * Gets the Royalty Token balance for a holder in a token's vault.
550
+ * If no holder is provided, the connected wallet address is used.
640
551
  *
641
- * if (eligibility.canFractionalize) {
642
- * if (eligibility.needsApproval) {
643
- * // Use fractionalizeWithApproval for convenience
644
- * await origin.fractionalizeWithApproval(1n);
645
- * } else {
646
- * await origin.fractionalize(1n);
647
- * }
648
- * } else {
649
- * console.log(`Cannot fractionalize: ${eligibility.reason}`);
650
- * }
651
- * ```
652
- */function We(e,t){return m(this,void 0,void 0,(function*(){const n=yield _e(this.viemClient,t),i=O(),s=this.environment.FRACTIONALIZER_CONTRACT_ADDRESS,[r,o,d,p,u]=yield Promise.all([this.ownerOf(e),this.dataStatus(e),this.getTokenForNFT(e),i.readContract({address:this.environment.DATANFT_CONTRACT_ADDRESS,abi:this.environment.IPNFT_ABI,functionName:"getApproved",args:[e]}),i.readContract({address:this.environment.DATANFT_CONTRACT_ADDRESS,abi:this.environment.IPNFT_ABI,functionName:"isApprovedForAll",args:[n,s]})]),l=r.toLowerCase()===n.toLowerCase(),y=d&&d!==a,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};
653
- // check requirements
654
- return l?y?Object.assign(Object.assign({},m),{reason:`This NFT is already fractionalized. ERC20: ${d}`}):o===xe.DELETED?Object.assign(Object.assign({},m),{reason:"This NFT has been deleted and cannot be fractionalized"}):o===xe.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}`})}))}
552
+ * @param tokenId The token ID whose vault to query.
553
+ * @param holder Optional holder address. Defaults to connected wallet.
554
+ * @returns The royalty token balance info including vault address, balance, total supply, percentage, and decimals.
555
+ */function Je(e,t){return m(this,void 0,void 0,(function*(){const n=yield xe(this.viemClient,t),i=yield this.callContractMethod(this.environment.DATANFT_CONTRACT_ADDRESS,this.environment.IPNFT_ABI,"getRoyaltyVault",[e]);
556
+ // Get vault address
557
+ if(!i||i===a)throw new Error(`No royalty vault found for token ${e}. Deploy a vault first using deployVaultForExistingNFT.`);const s=O(),[r,o,p]=yield Promise.all([s.readContract({address:i,abi:qe,functionName:"balanceOf",args:[n]}),s.readContract({address:i,abi:qe,functionName:"totalSupply"}),s.readContract({address:i,abi:qe,functionName:"decimals"})]);
558
+ // Read balance, totalSupply, and decimals in parallel
559
+ return{vaultAddress:i,balance:r,totalSupply:o,percentage:o>BigInt(0)?Number(r*BigInt(1e4)/o)/100:0,decimals:Number(p)}}))}
655
560
  /**
656
561
  * Gets information about a registered app from the AppRegistry.
657
562
  *
@@ -665,15 +570,15 @@ return l?y?Object.assign(Object.assign({},m),{reason:`This NFT is already fracti
665
570
  * console.log(`Revenue Share: ${appInfo.revenueShareBps / 100}%`);
666
571
  * console.log(`Active: ${appInfo.isActive}`);
667
572
  * ```
668
- */function Ge(e){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.APP_REGISTRY_CONTRACT_ADDRESS,this.environment.APP_REGISTRY_ABI,"getAppInfo",[e])}))}
573
+ */function Ye(e){return m(this,void 0,void 0,(function*(){return this.callContractMethod(this.environment.APP_REGISTRY_CONTRACT_ADDRESS,this.environment.APP_REGISTRY_ABI,"getAppInfo",[e])}))}
669
574
  /**
670
575
  * Approves a spender to spend a specified amount of tokens on behalf of the owner.
671
576
  * If the current allowance is less than the specified amount, it will perform the approval.
672
577
  * Waits for the approval transaction to be confirmed before returning.
673
578
  * @param {ApproveParams} params - The parameters for the approval.
674
- */function Ze(e){return m(this,arguments,void 0,(function*({walletClient:e,publicClient:t,tokenAddress:n,owner:i,spender:a,amount:r,chain:o}){if((yield t.readContract({address:n,abi:s,functionName:"allowance",args:[i,a]}))<r){const d=yield e.writeContract({address:n,account:i,abi:s,functionName:"approve",args:[a,r],chain:o});
579
+ */function Ge(e){return m(this,arguments,void 0,(function*({walletClient:e,publicClient:t,tokenAddress:n,owner:i,spender:a,amount:r,chain:o}){if((yield t.readContract({address:n,abi:s,functionName:"allowance",args:[i,a]}))<r){const p=yield e.writeContract({address:n,account:i,abi:s,functionName:"approve",args:[a,r],chain:o});
675
580
  // Wait for the approval transaction to be confirmed with extra confirmations
676
- yield t.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e=>setTimeout(e,1e3)))}}))}
581
+ yield t.waitForTransactionReceipt({hash:p,confirmations:2}),yield new Promise((e=>setTimeout(e,1e3)))}}))}
677
582
  /**
678
583
  * Executes an atomic bulk purchase of multiple IP-NFT licenses.
679
584
  * All purchases succeed or all fail together.
@@ -692,7 +597,7 @@ yield t.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
692
597
  * const totalValue = 3000000000000000n;
693
598
  * await origin.bulkBuyAccess(buyerAddress, purchases, totalValue);
694
599
  * ```
695
- */function Ye(e,t,n){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkBuyAccess",[e,t],{waitForReceipt:!0,value:n})}
600
+ */function We(e,t,n){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkBuyAccess",[e,t],{waitForReceipt:!0,value:n})}
696
601
  /**
697
602
  * Executes a fault-tolerant bulk purchase of multiple IP-NFT licenses.
698
603
  * Individual purchases can fail without reverting the entire transaction.
@@ -748,7 +653,7 @@ yield t.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
748
653
  * const activeFlags = await origin.checkActiveStatus([1n, 2n, 3n]);
749
654
  * const activeTokens = tokenIds.filter((_, i) => activeFlags[i]);
750
655
  * ```
751
- */function et(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"checkActiveStatus",[e])}
656
+ */function Ze(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"checkActiveStatus",[e])}
752
657
  /**
753
658
  * Smart bulk purchase that automatically fetches terms and handles the entire purchase flow.
754
659
  * This is the recommended method for most use cases.
@@ -765,9 +670,9 @@ yield t.waitForTransactionReceipt({hash:d,confirmations:2}),yield new Promise((e
765
670
  * // Tolerant purchase - continue even if some fail
766
671
  * const result = await origin.bulkBuyAccessSmart([1n, 2n, 3n], { tolerant: true });
767
672
  * ```
768
- */function tt(e,t){return m(this,void 0,void 0,(function*(){if(!e||0===e.length)throw new P("No token IDs provided for bulk purchase. Please provide at least one token ID.");
673
+ */function et(e,t){return m(this,void 0,void 0,(function*(){if(!e||0===e.length)throw new S("No token IDs provided for bulk purchase. Please provide at least one token ID.");
769
674
  // Get the buyer's wallet address
770
- const n=this.viemClient;if(!n)throw new N("Cannot perform bulk purchase: wallet not connected. Please connect a wallet first.");let i;if(n.account)i=n.account.address;else{const e=yield n.request({method:"eth_requestAccounts",params:[]});if(!e||0===e.length)throw new N("No accounts found in connected wallet. Please unlock your wallet or add an account.");i=e[0]}
675
+ const n=this.viemClient;if(!n)throw new _("Cannot perform bulk purchase: wallet not connected. Please connect a wallet first.");let i;if(n.account)i=n.account.address;else{const e=yield n.request({method:"eth_requestAccounts",params:[]});if(!e||0===e.length)throw new _("No accounts found in connected wallet. Please unlock your wallet or add an account.");i=e[0]}
771
676
  // Build purchase params from on-chain data
772
677
  const s=yield this.buildPurchaseParams(e);
773
678
  // Calculate total native token cost
@@ -775,7 +680,7 @@ let r=BigInt(0);const o=[];for(const e of s)if(e.expectedPaymentToken===a)r+=e.e
775
680
  // Group ERC20 purchases by token
776
681
  const t=o.find((t=>t.token===e.expectedPaymentToken));t?t.amount+=e.expectedPrice:o.push({token:e.expectedPaymentToken,amount:e.expectedPrice})}
777
682
  // Approve ERC20 tokens if needed
778
- const d=O();for(const e of o)yield Ze({walletClient:n,publicClient:d,tokenAddress:e.token,owner:i,spender:this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,amount:e.amount,chain:this.environment.CHAIN});
683
+ const p=O();for(const e of o)yield Ge({walletClient:n,publicClient:p,tokenAddress:e.token,owner:i,spender:this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,amount:e.amount,chain:this.environment.CHAIN});
779
684
  // Execute the purchase
780
685
  return(null==t?void 0:t.tolerant)?this.bulkBuyAccessTolerant(i,s,r):this.bulkBuyAccess(i,s,r)}))}
781
686
  /**
@@ -803,7 +708,7 @@ return(null==t?void 0:t.tolerant)?this.bulkBuyAccessTolerant(i,s,r):this.bulkBuy
803
708
  * ];
804
709
  * await origin.bulkMint(mints);
805
710
  * ```
806
- */function nt(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkMint",[e],{waitForReceipt:!0})}
711
+ */function tt(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkMint",[e],{waitForReceipt:!0})}
807
712
  /**
808
713
  * Executes a fault-tolerant bulk mint of multiple IP-NFTs.
809
714
  * Individual mints can fail without reverting the entire transaction.
@@ -817,38 +722,38 @@ return(null==t?void 0:t.tolerant)?this.bulkBuyAccessTolerant(i,s,r):this.bulkBuy
817
722
  * console.log(`Minted ${result.successCount} of ${mints.length} tokens`);
818
723
  * console.log(`Failed tokens: ${result.failedTokenIds}`);
819
724
  * ```
820
- */function it(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkMintTolerant",[e],{waitForReceipt:!0})}var at,st,rt,ot,dt,pt,ut,lt,yt,ct,mt,ht,Tt,ft,vt,wt,At,It,gt,bt,Ct,Et;
725
+ */function nt(e){return this.callContractMethod(this.environment.BATCH_OPERATIONS_CONTRACT_ADDRESS,this.environment.BATCH_OPERATIONS_ABI,"bulkMintTolerant",[e],{waitForReceipt:!0})}var it,at,st,rt,ot,pt,dt,ut,lt,yt,ct,mt,ht,Tt,ft,vt,wt,At,It,bt,gt,Ct;
821
726
  /**
822
727
  * The Origin class
823
728
  * Handles interactions with Origin protocol.
824
- */class St{constructor(e,t,n,i,a){at.add(this),t?this.jwt=t:console.warn("JWT not provided. Some features may be unavailable."),this.viemClient=n,this.environment="string"==typeof e?Z[e]:e||Z.DEVELOPMENT,this.baseParentId=i,this.appId=a,
729
+ */class Et{constructor(e,t,n,i,a){it.add(this),t?this.jwt=t:console.warn("JWT not provided. Some features may be unavailable."),this.viemClient=n,this.environment="string"==typeof e?W[e]:e||W.DEVELOPMENT,this.baseParentId=i,this.appId=a,
825
730
  // DataNFT methods
826
- this.mintWithSignature=ee.bind(this),this.registerIpNFT=te.bind(this),this.updateTerms=ne.bind(this),this.finalizeDelete=ie.bind(this),this.getOrCreateRoyaltyVault=ae.bind(this),this.getTerms=se.bind(this),this.ownerOf=re.bind(this),this.balanceOf=oe.bind(this),this.tokenURI=de.bind(this),this.dataStatus=pe.bind(this),this.isApprovedForAll=ue.bind(this),this.transferFrom=le.bind(this),this.safeTransferFrom=ye.bind(this),this.approve=ce.bind(this),this.setApprovalForAll=me.bind(this),
731
+ this.mintWithSignature=ee.bind(this),this.registerIpNFT=te.bind(this),this.updateTerms=ne.bind(this),this.finalizeDelete=ie.bind(this),this.getTerms=ae.bind(this),this.ownerOf=se.bind(this),this.balanceOf=re.bind(this),this.tokenURI=oe.bind(this),this.dataStatus=pe.bind(this),this.isApprovedForAll=de.bind(this),this.transferFrom=ue.bind(this),this.safeTransferFrom=le.bind(this),this.approve=ye.bind(this),this.setApprovalForAll=ce.bind(this),
827
732
  // Marketplace methods
828
- this.buyAccess=he.bind(this),this.hasAccess=Te.bind(this),this.subscriptionExpiry=fe.bind(this),
733
+ this.buyAccess=me.bind(this),this.hasAccess=he.bind(this),this.subscriptionExpiry=Te.bind(this),
829
734
  // Bulk purchase methods
830
- this.bulkBuyAccess=Ye.bind(this),this.bulkBuyAccessTolerant=Ke.bind(this),this.bulkBuyAccessSmart=tt.bind(this),this.previewBulkCost=Qe.bind(this),this.buildPurchaseParams=Xe.bind(this),this.checkActiveStatus=et.bind(this),
735
+ this.bulkBuyAccess=We.bind(this),this.bulkBuyAccessTolerant=Ke.bind(this),this.bulkBuyAccessSmart=et.bind(this),this.previewBulkCost=Qe.bind(this),this.buildPurchaseParams=Xe.bind(this),this.checkActiveStatus=Ze.bind(this),
831
736
  // Bulk mint methods
832
- this.bulkMint=nt.bind(this),this.bulkMintTolerant=it.bind(this),
737
+ this.bulkMint=tt.bind(this),this.bulkMintTolerant=nt.bind(this),
833
738
  // Dispute module methods
834
- this.raiseDispute=ve.bind(this),this.raiseDisputeSmart=be.bind(this),this.disputeAssertion=Ce.bind(this),this.disputeAssertionSmart=Ee.bind(this),this.voteOnDispute=Se.bind(this),this.resolveDispute=Pe.bind(this),this.cancelDispute=Re.bind(this),this.tagChildIp=Ne.bind(this),this.getDispute=De.bind(this),this.canVoteOnDispute=Fe.bind(this),this.getDisputeProgress=Ue.bind(this),this.getDisputeRequirements=$e.bind(this),
835
- // Fractionalizer module methods
836
- this.fractionalize=He.bind(this),this.redeem=je.bind(this),this.getTokenForNFT=Le.bind(this),this.fractionalizeWithApproval=ze.bind(this),this.redeemIfComplete=Ve.bind(this),this.getFractionOwnership=Je.bind(this),this.canFractionalize=We.bind(this),
739
+ this.raiseDispute=fe.bind(this),this.raiseDisputeSmart=be.bind(this),this.disputeAssertion=ge.bind(this),this.disputeAssertionSmart=Ce.bind(this),this.voteOnDispute=Ee.bind(this),this.resolveDispute=Pe.bind(this),this.cancelDispute=Se.bind(this),this.tagChildIp=Re.bind(this),this.getDispute=_e.bind(this),this.canVoteOnDispute=Be.bind(this),this.getDisputeProgress=Fe.bind(this),this.getDisputeRequirements=Ue.bind(this),
740
+ // Royalty vault module methods
741
+ this.getRoyaltyVault=$e.bind(this),this.getVaultRevenueTokens=He.bind(this),this.claimableRevenue=Ve.bind(this),this.claimRevenue=je.bind(this),this.claimRevenueBatch=Le.bind(this),this.deployVaultForExistingNFT=ze.bind(this),this.getRoyaltyTokenBalance=Je.bind(this),
837
742
  // AppRegistry module methods
838
- this.getAppInfo=Ge.bind(this)}getJwt(){return this.jwt}setViemClient(e){this.viemClient=e}
743
+ this.getAppInfo=Ye.bind(this)}getJwt(){return this.jwt}setViemClient(e){this.viemClient=e}
839
744
  /**
840
745
  * Approves an ERC20 token for spending by a spender address if the current allowance is insufficient.
841
746
  * Waits for the approval transaction to be confirmed before returning.
842
747
  * @param tokenAddress The address of the ERC20 token.
843
748
  * @param spender The address that will be approved to spend the tokens.
844
749
  * @param amount The amount of tokens to approve.
845
- */approveERC20IfNeeded(e,t,n){return m(this,void 0,void 0,(function*(){const i=yield h(this,at,"m",mt).call(this);yield Ze({walletClient:this.viemClient,publicClient:O(),tokenAddress:e,owner:i,spender:t,amount:n,chain:this.environment.CHAIN})}))}
750
+ */approveERC20IfNeeded(e,t,n){return m(this,void 0,void 0,(function*(){const i=yield h(this,it,"m",ct).call(this);yield Ge({walletClient:this.viemClient,publicClient:O(),tokenAddress:e,owner:i,spender:t,amount:n,chain:this.environment.CHAIN})}))}
846
751
  /**
847
752
  * Uploads a JSON object to IPFS and returns the resulting CID.
848
753
  * @param data The JSON object to upload.
849
754
  * @returns The CID of the uploaded JSON.
850
755
  * @throws {APIError} If the upload fails.
851
- */uploadJSONToIPFS(e){return m(this,void 0,void 0,(function*(){const t=JSON.stringify(e),n=new File([t],"evidence.json",{type:"application/json"}),i=yield h(this,at,"m",ot).call(this,n);if(!i)throw new S("Failed to upload evidence to IPFS");return i}))}
756
+ */uploadJSONToIPFS(e){return m(this,void 0,void 0,(function*(){const t=JSON.stringify(e),n=new File([t],"evidence.json",{type:"application/json"}),i=yield h(this,it,"m",rt).call(this,n);if(!i)throw new P("Failed to upload evidence to IPFS");return i}))}
852
757
  /**
853
758
  * Mints a file-based IpNFT.
854
759
  * @param file The file to mint.
@@ -857,10 +762,10 @@ this.getAppInfo=Ge.bind(this)}getJwt(){return this.jwt}setViemClient(e){this.vie
857
762
  * @param parents Optional parent token IDs for lineage tracking.
858
763
  * @param options Optional parameters including progress callback, preview image, and use asset as preview flag.
859
764
  * @returns The token ID of the minted IpNFT as a string, or null if minting failed.
860
- */mintFile(e,t,n,i,a){return m(this,void 0,void 0,(function*(){let s,r=null;try{r=yield h(this,at,"m",lt).call(this)}catch(t){throw new N(`Cannot mint file "${e.name}": wallet not connected. Please connect a wallet first.`)}try{if(s=yield h(this,at,"m",dt).call(this,e,a),!s||!s.key)throw new S(`Failed to upload file "${e.name}": no upload info returned from server`)}catch(t){if(t instanceof S||t instanceof N)throw t;throw new S(`Failed to upload file "${e.name}": ${_(t)}`)}e.type&&(t.mimetype=e.type);let o=null;(null==a?void 0:a.previewImage)&&(null==a?void 0:a.previewImage.type.startsWith("image/"))?o=yield h(this,at,"m",ot).call(this,a.previewImage):(null==a?void 0:a.useAssetAsPreview)&&e.type.startsWith("image/")&&(o=yield h(this,at,"m",ot).call(this,e)),o&&(t.image=`ipfs://${o}`);const d=BigInt(Date.now()+6e5);// 10 minutes from now
861
- let p;this.baseParentId&&(i||(i=[]),i.unshift(this.baseParentId));try{p=yield this.registerIpNFT("file",d,n,t,!0,// isIp
765
+ */mintFile(e,t,n,i,a){return m(this,void 0,void 0,(function*(){let s,r=null;try{r=yield h(this,it,"m",ut).call(this)}catch(t){throw new _(`Cannot mint file "${e.name}": wallet not connected. Please connect a wallet first.`)}try{if(s=yield h(this,it,"m",ot).call(this,e,a),!s||!s.key)throw new P(`Failed to upload file "${e.name}": no upload info returned from server`)}catch(t){if(t instanceof P||t instanceof _)throw t;throw new P(`Failed to upload file "${e.name}": ${D(t)}`)}e.type&&(t.mimetype=e.type);let o=null;(null==a?void 0:a.previewImage)&&(null==a?void 0:a.previewImage.type.startsWith("image/"))?o=yield h(this,it,"m",rt).call(this,a.previewImage):(null==a?void 0:a.useAssetAsPreview)&&e.type.startsWith("image/")&&(o=yield h(this,it,"m",rt).call(this,e)),o&&(t.image=`ipfs://${o}`);const p=BigInt(Date.now()+6e5);// 10 minutes from now
766
+ let d;this.baseParentId&&(i||(i=[]),i.unshift(this.baseParentId));try{d=yield this.registerIpNFT("file",p,n,t,!0,// isIp
862
767
  s.key,// fileKey
863
- i,this.appId)}catch(e){throw yield h(this,at,"m",rt).call(this,s.key,s.uploadId,[]),new Error(`Failed to register IpNFT: ${e instanceof Error?e.message:String(e)}`)}const{tokenId:u,signerAddress:l,creatorContentHash:y,signature:c,uri:m}=p;if(!(u&&l&&y&&void 0!==c&&m))throw new Error("Failed to register IpNFT: Missing required fields in registration response.");try{const e=yield this.mintWithSignature(r,u,i||[],!0,y,m,n,d,c,this.appId);if(-1===["0x1","success"].indexOf(e.receipt.status))throw yield h(this,at,"m",rt).call(this,s.key,s.uploadId,[]),new Error(`Minting failed with status: ${e.receipt.status}`)}catch(e){throw yield h(this,at,"m",rt).call(this,s.key,s.uploadId,[]),new Error(`Minting transaction failed: ${e instanceof Error?e.message:String(e)}`)}return u.toString()}))}
768
+ i,this.appId)}catch(e){throw yield h(this,it,"m",st).call(this,s.key,s.uploadId,[]),new Error(`Failed to register IpNFT: ${e instanceof Error?e.message:String(e)}`)}const{tokenId:u,signerAddress:l,creatorContentHash:y,signature:c,uri:m}=d;if(!(u&&l&&y&&void 0!==c&&m))throw new Error("Failed to register IpNFT: Missing required fields in registration response.");try{const e=yield this.mintWithSignature(r,u,i||[],!0,y,m,n,p,c,this.appId);if(-1===["0x1","success"].indexOf(e.receipt.status))throw yield h(this,it,"m",st).call(this,s.key,s.uploadId,[]),new Error(`Minting failed with status: ${e.receipt.status}`)}catch(e){throw yield h(this,it,"m",st).call(this,s.key,s.uploadId,[]),new Error(`Minting transaction failed: ${e instanceof Error?e.message:String(e)}`)}return u.toString()}))}
864
769
  /**
865
770
  * Mints multiple file-based IpNFTs in a single transaction using the BatchOperations contract.
866
771
  * Each file is uploaded and registered individually, then all mints are batched into one on-chain call.
@@ -880,33 +785,33 @@ i,this.appId)}catch(e){throw yield h(this,at,"m",rt).call(this,s.key,s.uploadId,
880
785
  * // Tolerant mode - continue even if some mints fail
881
786
  * const result = await origin.bulkMintFile(entries, { tolerant: true });
882
787
  * ```
883
- */bulkMintFile(e,t){return m(this,void 0,void 0,(function*(){var n,i;if(!e||0===e.length)throw new P("No file entries provided for bulk mint. Please provide at least one entry.");let a=null;try{a=yield h(this,at,"m",lt).call(this)}catch(e){throw new N("Cannot bulk mint files: wallet not connected. Please connect a wallet first.")}const s=[],r=[],o=[];for(let d=0;d<e.length;d++){const p=e[d],{file:u,metadata:l,license:y}=p;let c,{parents:m}=p;
788
+ */bulkMintFile(e,t){return m(this,void 0,void 0,(function*(){var n,i;if(!e||0===e.length)throw new S("No file entries provided for bulk mint. Please provide at least one entry.");let a=null;try{a=yield h(this,it,"m",ut).call(this)}catch(e){throw new _("Cannot bulk mint files: wallet not connected. Please connect a wallet first.")}const s=[],r=[],o=[];for(let p=0;p<e.length;p++){const d=e[p],{file:u,metadata:l,license:y}=d;let c,{parents:m}=d;
884
789
  // Upload file
885
- try{if(c=yield h(this,at,"m",dt).call(this,u,{progressCallback:n=>{var i;null===(i=null==t?void 0:t.progressCallback)||void 0===i||i.call(t,{fileIndex:d,fileCount:e.length,stage:"uploading",percent:n})}}),!c||!c.key)throw new S(`Failed to upload file "${u.name}": no upload info returned from server`)}catch(e){if(e instanceof S||e instanceof N)throw e;throw new S(`Failed to upload file "${u.name}": ${_(e)}`)}o.push(c),
790
+ try{if(c=yield h(this,it,"m",ot).call(this,u,{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})}}),!c||!c.key)throw new P(`Failed to upload file "${u.name}": no upload info returned from server`)}catch(e){if(e instanceof P||e instanceof _)throw e;throw new P(`Failed to upload file "${u.name}": ${D(e)}`)}o.push(c),
886
791
  // Set mimetype
887
792
  u.type&&(l.mimetype=u.type);
888
793
  // Handle preview image
889
- let T=null;p.previewImage&&p.previewImage.type.startsWith("image/")?T=yield h(this,at,"m",ot).call(this,p.previewImage):p.useAssetAsPreview&&u.type.startsWith("image/")&&(T=yield h(this,at,"m",ot).call(this,u)),T&&(l.image=`ipfs://${T}`);const f=BigInt(Date.now()+6e5);// 10 minutes from now
794
+ let T=null;d.previewImage&&d.previewImage.type.startsWith("image/")?T=yield h(this,it,"m",rt).call(this,d.previewImage):d.useAssetAsPreview&&u.type.startsWith("image/")&&(T=yield h(this,it,"m",rt).call(this,u)),T&&(l.image=`ipfs://${T}`);const f=BigInt(Date.now()+6e5);// 10 minutes from now
890
795
  // Prepare parents
891
796
  let v;this.baseParentId&&(m||(m=[]),m=[this.baseParentId,...m]),
892
797
  // Register IpNFT to get signature
893
- null===(n=null==t?void 0:t.progressCallback)||void 0===n||n.call(t,{fileIndex:d,fileCount:e.length,stage:"registering",percent:100});try{v=yield this.registerIpNFT("file",f,y,l,!0,// isIp
798
+ null===(n=null==t?void 0:t.progressCallback)||void 0===n||n.call(t,{fileIndex:p,fileCount:e.length,stage:"registering",percent:100});try{v=yield this.registerIpNFT("file",f,y,l,!0,// isIp
894
799
  c.key,// fileKey
895
- m,this.appId)}catch(e){throw yield h(this,at,"m",rt).call(this,c.key,c.uploadId,[]),new Error(`Failed to register IpNFT for file "${u.name}": ${e instanceof Error?e.message:String(e)}`)}const{tokenId:w,creatorContentHash:A,signature:I,uri:g}=v;if(!w||!A||void 0===I||!g)throw yield h(this,at,"m",rt).call(this,c.key,c.uploadId,[]),new Error(`Failed to register IpNFT for file "${u.name}": Missing required fields in registration response.`);r.push(w.toString()),s.push({to:a,tokenId:BigInt(w),creatorContentHash:A,uri:g,licenseTerms:y,deadline:f,parents:m||[],isIP:!0,appId:null!==(i=this.appId)&&void 0!==i?i:"",signature:I})}
800
+ m,this.appId)}catch(e){throw yield h(this,it,"m",st).call(this,c.key,c.uploadId,[]),new Error(`Failed to register IpNFT for file "${u.name}": ${e instanceof Error?e.message:String(e)}`)}const{tokenId:w,creatorContentHash:A,signature:I,uri:b}=v;if(!w||!A||void 0===I||!b)throw yield h(this,it,"m",st).call(this,c.key,c.uploadId,[]),new Error(`Failed to register IpNFT for file "${u.name}": Missing required fields in registration response.`);r.push(w.toString()),s.push({to:a,tokenId:BigInt(w),creatorContentHash:A,uri:b,licenseTerms:y,deadline:f,parents:m||[],isIP:!0,appId:null!==(i=this.appId)&&void 0!==i?i:"",signature:I})}
896
801
  // Execute bulk mint
897
802
  try{let e;return e=(null==t?void 0:t.tolerant)?yield this.bulkMintTolerant(s):yield this.bulkMint(s),{tokenIds:r,result:e}}catch(e){
898
803
  // Mark all uploads as failed
899
- for(const e of o)try{yield h(this,at,"m",rt).call(this,e.key,e.uploadId,[])}catch(e){}throw new Error(`Bulk mint transaction failed: ${e instanceof Error?e.message:String(e)}`)}}))}
804
+ for(const e of o)try{yield h(this,it,"m",st).call(this,e.key,e.uploadId,[])}catch(e){}throw new Error(`Bulk mint transaction failed: ${e instanceof Error?e.message:String(e)}`)}}))}
900
805
  /**
901
806
  * Mints a social IpNFT.
902
807
  * @param source The social media source (spotify, twitter, tiktok).
903
808
  * @param metadata The metadata associated with the social media content.
904
809
  * @param license The license terms for the IpNFT.
905
810
  * @return The token ID of the minted IpNFT as a string, or null if minting failed.
906
- */mintSocial(e,t,n){return m(this,void 0,void 0,(function*(){let i=null;try{i=yield h(this,at,"m",lt).call(this)}catch(t){throw new N(`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
811
+ */mintSocial(e,t,n){return m(this,void 0,void 0,(function*(){let i=null;try{i=yield h(this,it,"m",ut).call(this)}catch(t){throw new _(`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
907
812
  let s,r=this.baseParentId?[this.baseParentId]:[];try{s=yield this.registerIpNFT(e,a,n,t,!0,// isIp
908
813
  void 0,// fileKey
909
- r,this.appId)}catch(e){throw new Error(`Failed to register Social IpNFT: ${e instanceof Error?e.message:String(e)}`)}const{tokenId:o,signerAddress:d,creatorContentHash:p,signature:u,uri:l}=s;if(!(o&&d&&p&&void 0!==u&&l))throw new Error("Failed to register Social IpNFT: Missing required fields in registration response.");try{const e=yield this.mintWithSignature(i,o,r,!0,p,l,n,a,u,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 o.toString()}))}
814
+ r,this.appId)}catch(e){throw new Error(`Failed to register Social IpNFT: ${e instanceof Error?e.message:String(e)}`)}const{tokenId:o,signerAddress:p,creatorContentHash:d,signature:u,uri:l}=s;if(!(o&&p&&d&&void 0!==u&&l))throw new Error("Failed to register Social IpNFT: Missing required fields in registration response.");try{const e=yield this.mintWithSignature(i,o,r,!0,d,l,n,a,u,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 o.toString()}))}
910
815
  /**
911
816
  * Call a contract method.
912
817
  * @param {string} contractAddress The contract address.
@@ -916,9 +821,9 @@ r,this.appId)}catch(e){throw new Error(`Failed to register Social IpNFT: ${e ins
916
821
  * @param {CallOptions} [options] The call options.
917
822
  * @returns {Promise<any>} A promise that resolves with the result of the contract call or transaction hash.
918
823
  * @throws {Error} - Throws an error if the wallet client is not connected and the method is not a view function.
919
- */callContractMethod(e,t,n,i){return m(this,arguments,void 0,(function*(e,t,n,i,a={}){var s;let o=null;try{o=yield h(this,at,"m",lt).call(this)}catch(t){throw new N(`Cannot call "${n}" on contract ${e}: wallet not connected`)}const d=r({abi:t,name:n});if(d&&"stateMutability"in d&&("view"===d.stateMutability||"pure"===d.stateMutability)){const a=O();return(yield a.readContract({address:e,abi:t,functionName:n,args:i}))||null}yield h(this,at,"m",ut).call(this,this.environment.CHAIN);const p=O(),{result:u,request:l}=yield p.simulateContract({account:o,address:e,abi:t,functionName:n,args:i,value:a.value});
824
+ */callContractMethod(e,t,n,i){return m(this,arguments,void 0,(function*(e,t,n,i,a={}){var s;let o=null;try{o=yield h(this,it,"m",ut).call(this)}catch(t){throw new _(`Cannot call "${n}" on contract ${e}: wallet not connected`)}const p=r({abi:t,name:n});if(p&&"stateMutability"in p&&("view"===p.stateMutability||"pure"===p.stateMutability)){const a=O();return(yield a.readContract({address:e,abi:t,functionName:n,args:i}))||null}yield h(this,it,"m",dt).call(this,this.environment.CHAIN);const d=O(),{result:u,request:l}=yield d.simulateContract({account:o,address:e,abi:t,functionName:n,args:i,value:a.value});
920
825
  // simulate
921
- if(a.simulate)return u;try{const t=yield null===(s=this.viemClient)||void 0===s?void 0:s.writeContract(l);if("string"!=typeof t)throw new D(`Transaction for "${n}" failed to send: no transaction hash returned`,{contractName:e,methodName:n});if(!a.waitForReceipt)return{txHash:t,simulatedResult:u};return{txHash:t,receipt:yield h(this,at,"m",pt).call(this,t),simulatedResult:u}}catch(t){if(t instanceof D||t instanceof N)throw t;throw new D(`Transaction for "${n}" failed: ${_(t)}`,{contractName:e,methodName:n})}}))}
826
+ if(a.simulate)return u;try{const t=yield null===(s=this.viemClient)||void 0===s?void 0:s.writeContract(l);if("string"!=typeof t)throw new x(`Transaction for "${n}" failed to send: no transaction hash returned`,{contractName:e,methodName:n});if(!a.waitForReceipt)return{txHash:t,simulatedResult:u};return{txHash:t,receipt:yield h(this,it,"m",pt).call(this,t),simulatedResult:u}}catch(t){if(t instanceof x||t instanceof _)throw t;throw new x(`Transaction for "${n}" failed: ${D(t)}`,{contractName:e,methodName:n})}}))}
922
827
  /**
923
828
  * Gets comprehensive token information in a single call.
924
829
  * Combines owner, status, terms, URI, and access information.
@@ -938,11 +843,11 @@ if(a.simulate)return u;try{const t=yield null===(s=this.viemClient)||void 0===s?
938
843
  // Resolve the address to check access for
939
844
  let i;if(t)i=t;else if(null===(n=this.viemClient)||void 0===n?void 0:n.account)i=this.viemClient.account.address;else if(this.viemClient)try{const e=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});i=e&&e.length>0?e[0]:"0x0000000000000000000000000000000000000000"}catch(e){i="0x0000000000000000000000000000000000000000"}else i="0x0000000000000000000000000000000000000000";
940
845
  // Fetch all information in parallel
941
- 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:""})))]);
846
+ const[a,s,r,o,p]=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:""})))]);
942
847
  // Get access info if we have a valid address
943
- let p=!1,u=null;if("0x0000000000000000000000000000000000000000"!==i)try{[p,u]=yield Promise.all([this.hasAccess(i,e),this.subscriptionExpiry(e,i)])}catch(e){
848
+ let d=!1,u=null;if("0x0000000000000000000000000000000000000000"!==i)try{[d,u]=yield Promise.all([this.hasAccess(i,e),this.subscriptionExpiry(e,i)])}catch(e){
944
849
  // Access check failed, defaults are fine
945
- }return{tokenId:e,owner:a,uri:s,status:r,terms:o,hasAccess:p,accessExpiry:u,appId:(null==d?void 0:d.appId)||""}}))}
850
+ }return{tokenId:e,owner:a,uri:s,status:r,terms:o,hasAccess:d,accessExpiry:u,appId:(null==p?void 0:p.appId)||""}}))}
946
851
  /**
947
852
  * Buy access to an asset by first checking its price via getTerms, then calling buyAccess.
948
853
  * Automatically fetches protocol and app fees from the contracts.
@@ -960,19 +865,19 @@ let p=!1,u=null;if("0x0000000000000000000000000000000000000000"!==i)try{[p,u]=yi
960
865
  * console.log("Access purchased:", result.txHash);
961
866
  * }
962
867
  * ```
963
- */buyAccessSmart(e){return m(this,void 0,void 0,(function*(){let t=null;try{t=yield h(this,at,"m",lt).call(this)}catch(t){throw new N(`Cannot buy access to token ${e}: wallet not connected. Please connect a wallet first.`)}
868
+ */buyAccessSmart(e){return m(this,void 0,void 0,(function*(){let t=null;try{t=yield h(this,it,"m",ut).call(this)}catch(t){throw new _(`Cannot buy access to token ${e}: wallet not connected. Please connect a wallet first.`)}
964
869
  // Check if user already has access
965
- if(yield this.hasAccess(t,e))return console.log("User already has access to this asset"),null;const n=yield this.getTerms(e);if(!n)throw new S(`Failed to fetch license terms for token ${e}: no terms returned`);const{price:i,paymentToken:s,duration:r}=n;if(void 0===i||void 0===s||void 0===r)throw new S(`Invalid license terms for token ${e}: missing price, paymentToken, or duration`);
870
+ if(yield this.hasAccess(t,e))return console.log("User already has access to this asset"),null;const n=yield this.getTerms(e);if(!n)throw new P(`Failed to fetch license terms for token ${e}: no terms returned`);const{price:i,paymentToken:s,duration:r}=n;if(void 0===i||void 0===s||void 0===r)throw new P(`Invalid license terms for token ${e}: missing price, paymentToken, or duration`);
966
871
  // Fetch protocol fee from marketplace
967
- const o=yield h(this,at,"m",yt).call(this),d=yield h(this,at,"m",ct).call(this,e),p=i;
872
+ const o=yield h(this,it,"m",lt).call(this),p=yield h(this,it,"m",yt).call(this,e),d=i;
968
873
  // Fetch app fee from token's appId
969
- return s===a?this.buyAccess(t,e,p,r,s,o,d,p):(yield Ze({walletClient:this.viemClient,publicClient:O(),tokenAddress:s,owner:t,spender:this.environment.MARKETPLACE_CONTRACT_ADDRESS,amount:p,chain:this.environment.CHAIN}),this.buyAccess(t,e,p,r,s,o,d))}))}
874
+ return s===a?this.buyAccess(t,e,d,r,s,o,p,d):(yield Ge({walletClient:this.viemClient,publicClient:O(),tokenAddress:s,owner:t,spender:this.environment.MARKETPLACE_CONTRACT_ADDRESS,amount:d,chain:this.environment.CHAIN}),this.buyAccess(t,e,d,r,s,o,p))}))}
970
875
  /**
971
876
  * Fetch the underlying data associated with a specific token ID.
972
877
  * @param {bigint} tokenId - The token ID to fetch data for.
973
878
  * @returns {Promise<any>} A promise that resolves with the fetched data.
974
879
  * @throws {Error} Throws an error if the data cannot be fetched.
975
- */getData(e){return m(this,void 0,void 0,(function*(){const t=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/data/${e}`,{method:"GET",headers:{Authorization:`Bearer ${this.jwt}`,"Content-Type":"application/json"}});if(!t.ok){const n=yield t.text().catch((()=>t.statusText));throw new S(`Failed to fetch data for token ${e} (HTTP ${t.status}): ${n}`,t.status)}return t.json()}))}
880
+ */getData(e){return m(this,void 0,void 0,(function*(){const t=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/origin/data/${e}`,{method:"GET",headers:{Authorization:`Bearer ${this.jwt}`,"Content-Type":"application/json"}});if(!t.ok){const n=yield t.text().catch((()=>t.statusText));throw new P(`Failed to fetch data for token ${e} (HTTP ${t.status}): ${n}`,t.status)}return t.json()}))}
976
881
  /**
977
882
  * Get the Token Bound Account (TBA) address for a specific token ID.
978
883
  * @param {bigint} tokenId - The token ID to get the TBA address for.
@@ -1000,7 +905,7 @@ return s===a?this.buyAccess(t,e,p,r,s,o,d,p):(yield Ze({walletClient:this.viemCl
1000
905
  * ```
1001
906
  */getRoyalties(e,t){return m(this,void 0,void 0,(function*(){try{const n=yield this.getTokenBoundAccount(e),i=O();let s,r;if(t&&t!==a){
1002
907
  // erc20 (wrapped camp)
1003
- const e=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],stateMutability:"view",type:"function"}];s=yield this.callContractMethod(t,e,"balanceOf",[n]);const i=yield this.callContractMethod(t,e,"decimals",[]);r=d(s,i)}else s=yield i.getBalance({address:n}),r=o(s);return{tokenBoundAccount:n,balance:s,balanceFormatted:r}}catch(t){throw new Error(`Failed to retrieve royalties for token ${e}: ${t instanceof Error?t.message:String(t)}`)}}))}
908
+ const e=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],stateMutability:"view",type:"function"}];s=yield this.callContractMethod(t,e,"balanceOf",[n]);const i=yield this.callContractMethod(t,e,"decimals",[]);r=p(s,i)}else s=yield i.getBalance({address:n}),r=o(s);return{tokenBoundAccount:n,balance:s,balanceFormatted:r}}catch(t){throw new Error(`Failed to retrieve royalties for token ${e}: ${t instanceof Error?t.message:String(t)}`)}}))}
1004
909
  /**
1005
910
  * Claim royalties from a token's Token Bound Account (TBA).
1006
911
  * @param {bigint} tokenId - The token ID to claim royalties from.
@@ -1016,25 +921,25 @@ const e=[{inputs:[{name:"owner",type:"address"}],name:"balanceOf",outputs:[{name
1016
921
  * // Claim ERC20 token royalties to a specific address
1017
922
  * await origin.claimRoyalties(1n, "0xRecipient...", "0xToken...");
1018
923
  * ```
1019
- */claimRoyalties(e,t,n){return m(this,void 0,void 0,(function*(){const i=yield h(this,at,"m",mt).call(this,t),s=yield this.getTokenBoundAccount(e),r=(yield this.getRoyalties(e,n)).balance;if(r===BigInt(0))throw new Error("No royalties available to claim");let o,d,u;
924
+ */claimRoyalties(e,t,n){return m(this,void 0,void 0,(function*(){const i=yield h(this,it,"m",ct).call(this,t),s=yield this.getTokenBoundAccount(e),r=(yield this.getRoyalties(e,n)).balance;if(r===BigInt(0))throw new Error("No royalties available to claim");let o,p,u;
1020
925
  // Call execute on the TBA
1021
926
  return n&&n!==a?(
1022
927
  // ERC20 token transfer
1023
- o=n,d=BigInt(0),
928
+ o=n,p=BigInt(0),
1024
929
  // Encode ERC20 transfer call: transfer(address to, uint256 amount)
1025
- u=p({abi:[{inputs:[{name:"to",type:"address"},{name:"amount",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],functionName:"transfer",args:[i,r]})):(
930
+ u=d({abi:[{inputs:[{name:"to",type:"address"},{name:"amount",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],functionName:"transfer",args:[i,r]})):(
1026
931
  // Native token transfer
1027
- o=i,d=r,u="0x"),this.callContractMethod(s,this.environment.TBA_ABI,"execute",[o,d,u,0],// operation: 0 = CALL
1028
- {waitForReceipt:!0,value:BigInt(0)})}))}}at=new WeakSet,st=function(e,t){return m(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}}))},rt=function(e,t,n){return m(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}}))},ot=function(e){return m(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}`)}}))},dt=function(e,t){return m(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 h(this,at,"m",st).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 X(i,n.urls,(null==t?void 0:t.progressCallback)||(()=>{}))}catch(e){try{yield h(this,at,"m",rt).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 h(this,at,"m",rt).call(this,n.key,n.uploadId,a)}catch(e){console.error("Failed to update status to success:",e)}return n}))},pt=function(e){return m(this,arguments,void 0,(function*(e,t={}){var n,i,a;const s=O();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){
932
+ o=i,p=r,u="0x"),this.callContractMethod(s,this.environment.TBA_ABI,"execute",[o,p,u,0],// operation: 0 = CALL
933
+ {waitForReceipt:!0,value:BigInt(0)})}))}}it=new WeakSet,at=function(e,t){return m(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}}))},st=function(e,t,n){return m(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}}))},rt=function(e){return m(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 p=yield fetch(s,{method:"POST",body:o});if(!p.ok){const e=yield p.text().catch((()=>p.statusText));throw new Error(`Failed to upload preview image to IPFS (HTTP ${p.status}): ${e}`)}const d=yield p.json();if(!d||!d.data)throw new Error("Invalid response from IPFS upload: Missing data field");return null===(t=d.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}`)}}))},ot=function(e,t){return m(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 h(this,it,"m",at).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 Z(i,n.urls,(null==t?void 0:t.progressCallback)||(()=>{}))}catch(e){try{yield h(this,it,"m",st).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 h(this,it,"m",st).call(this,n.key,n.uploadId,a)}catch(e){console.error("Failed to update status to success:",e)}return n}))},pt=function(e){return m(this,arguments,void 0,(function*(e,t={}){var n,i,a;const s=O();let r=e;const o=null!==(n=t.confirmations)&&void 0!==n?n:1,p=null!==(i=t.timeoutMs)&&void 0!==i?i:18e4,d=null!==(a=t.pollingIntervalMs)&&void 0!==a?a:1500;try{return yield s.waitForTransactionReceipt({hash:r,confirmations:o,timeout:p,pollingInterval:d,onReplaced:e=>{r=e.transaction.hash}})}catch(e){
1029
934
  // fallback
1030
- 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}}))},ut=function(e){return m(this,void 0,void 0,(function*(){if(!this.viemClient)throw new N(`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=>{M=e,x=null})// reset public client to be recreated with new chain
935
+ const t=Date.now();for(;Date.now()-t<p;){try{const e=yield s.getTransactionReceipt({hash:r});if(e&&e.blockNumber)return e}catch(e){}yield new Promise((e=>setTimeout(e,d)))}throw e}}))},dt=function(e){return m(this,void 0,void 0,(function*(){if(!this.viemClient)throw new _(`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=>{M=e,N=null})// reset public client to be recreated with new chain
1031
936
  (e);try{yield this.viemClient.request({method:"wallet_switchEthereumChain",params:[{chainId:"0x"+BigInt(e.id).toString(16)}]})}catch(t){
1032
937
  // Unrecognized chain
1033
- 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)}]})}}}))},lt=function(){return m(this,void 0,void 0,(function*(){if(!this.viemClient)throw new N("No wallet connected. Please connect a wallet to perform this action.");
938
+ 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)}]})}}}))},ut=function(){return m(this,void 0,void 0,(function*(){if(!this.viemClient)throw new _("No wallet connected. Please connect a wallet to perform this action.");
1034
939
  // If account is already set on the client, return it directly
1035
940
  if(this.viemClient.account)return this.viemClient.account.address;
1036
941
  // Otherwise request accounts (browser wallet flow)
1037
- const e=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});if(!e||0===e.length)throw new N("No accounts found in connected wallet. Please unlock your wallet or add an account.");return e[0]}))},yt=function(){return m(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}}))},ct=function(e){return m(this,void 0,void 0,(function*(){try{
942
+ const e=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});if(!e||0===e.length)throw new _("No accounts found in connected wallet. Please unlock your wallet or add an account.");return e[0]}))},lt=function(){return m(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}}))},yt=function(e){return m(this,void 0,void 0,(function*(){try{
1038
943
  // First, get the token info to find its appId
1039
944
  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;
1040
945
  // Check if app registry is configured
@@ -1042,11 +947,11 @@ if(!this.environment.APP_REGISTRY_CONTRACT_ADDRESS||!this.environment.APP_REGIST
1042
947
  // Fetch app info from registry
1043
948
  const i=yield this.callContractMethod(this.environment.APP_REGISTRY_CONTRACT_ADDRESS,this.environment.APP_REGISTRY_ABI,"getAppInfo",[n]);
1044
949
  // Only return fee if app is active
1045
- 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}}))},mt=function(e){return m(this,void 0,void 0,(function*(){if(e)return e;if(!this.viemClient)throw new N("No wallet address provided and no wallet connected. Please provide an address or connect a wallet.");
950
+ 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}}))},ct=function(e){return m(this,void 0,void 0,(function*(){if(e)return e;if(!this.viemClient)throw new _("No wallet address provided and no wallet connected. Please provide an address or connect a wallet.");
1046
951
  // If account is already set on the client, return it directly
1047
952
  if(this.viemClient.account)return this.viemClient.account.address;
1048
953
  // Otherwise request accounts (browser wallet flow)
1049
- const t=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});if(!t||0===t.length)throw new N("No accounts found in connected wallet. Please unlock your wallet or add an account.");return t[0]}))};
954
+ const t=yield this.viemClient.request({method:"eth_requestAccounts",params:[]});if(!t||0===t.length)throw new _("No accounts found in connected wallet. Please unlock your wallet or add an account.");return t[0]}))};
1050
955
  /**
1051
956
  * The Auth class.
1052
957
  * @class
@@ -1062,13 +967,13 @@ class Pt{
1062
967
  * @param {StorageAdapter} [options.storage] Custom storage adapter. Defaults to localStorage in browser, memory storage in Node.js.
1063
968
  * @throws {APIError} - Throws an error if the clientId is not provided.
1064
969
  */
1065
- constructor({clientId:e,appId:t,redirectUri:n,environment:i="DEVELOPMENT",baseParentId:a,storage:s}){if(ht.add(this),Tt.set(this,void 0),ft.set(this,void 0),vt.set(this,void 0),wt.set(this,void 0),!e)throw new P("clientId is required");
970
+ constructor({clientId:e,appId:t,redirectUri:n,environment:i="DEVELOPMENT",baseParentId:a,storage:s}){if(mt.add(this),ht.set(this,void 0),Tt.set(this,void 0),ft.set(this,void 0),vt.set(this,void 0),!e)throw new S("clientId is required");
1066
971
  // if (!appId) {
1067
972
  // throw new ValidationError("appId is required");
1068
973
  // }
1069
- if(-1===["PRODUCTION","DEVELOPMENT"].indexOf(i))throw new P(`Invalid environment "${i}". Must be "DEVELOPMENT" or "PRODUCTION"`);T(this,ft,"undefined"==typeof window,"f"),T(this,wt,s||(h(this,ft,"f")?new g:new I),"f"),this.viem=null,this.environment=Z[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,T(this,Tt,{},"f"),
974
+ if(-1===["PRODUCTION","DEVELOPMENT"].indexOf(i))throw new S(`Invalid environment "${i}". Must be "DEVELOPMENT" or "PRODUCTION"`);T(this,Tt,"undefined"==typeof window,"f"),T(this,vt,s||(h(this,Tt,"f")?new b:new I),"f"),this.viem=null,this.environment=W[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,T(this,ht,{},"f"),
1070
975
  // only subscribe to providers in browser environment
1071
- h(this,ft,"f")||Q((e=>{h(this,ht,"m",At).call(this,"providers",e)})),h(this,ht,"m",It).call(this)}
976
+ h(this,Tt,"f")||X((e=>{h(this,mt,"m",wt).call(this,"providers",e)})),h(this,mt,"m",At).call(this)}
1072
977
  /**
1073
978
  * Subscribe to an event. Possible events are "state", "provider", "providers", and "viem".
1074
979
  * @param {("state"|"provider"|"providers"|"viem")} event The event.
@@ -1078,26 +983,26 @@ h(this,ft,"f")||Q((e=>{h(this,ht,"m",At).call(this,"providers",e)})),h(this,ht,"
1078
983
  * auth.on("state", (state) => {
1079
984
  * console.log(state);
1080
985
  * });
1081
- */on(e,t){h(this,Tt,"f")[e]||(h(this,Tt,"f")[e]=[]),h(this,Tt,"f")[e].push(t),"providers"===e&&t(K())}
986
+ */on(e,t){h(this,ht,"f")[e]||(h(this,ht,"f")[e]=[]),h(this,ht,"f")[e].push(t),"providers"===e&&t(Q())}
1082
987
  /**
1083
988
  * Unsubscribe from an event. Possible events are "state", "provider", "providers", and "viem".
1084
989
  * @param {("state"|"provider"|"providers"|"viem")} event The event.
1085
990
  * @param {function} callback The callback function.
1086
991
  * @returns {void}
1087
- */off(e,t){h(this,Tt,"f")[e]&&(h(this,Tt,"f")[e]=h(this,Tt,"f")[e].filter((e=>e!==t)))}
992
+ */off(e,t){h(this,ht,"f")[e]&&(h(this,ht,"f")[e]=h(this,ht,"f")[e].filter((e=>e!==t)))}
1088
993
  /**
1089
994
  * Set the loading state.
1090
995
  * @param {boolean} loading The loading state.
1091
996
  * @returns {void}
1092
- */setLoading(e){h(this,ht,"m",At).call(this,"state",e?"loading":this.isAuthenticated?"authenticated":"unauthenticated")}
997
+ */setLoading(e){h(this,mt,"m",wt).call(this,"state",e?"loading":this.isAuthenticated?"authenticated":"unauthenticated")}
1093
998
  /**
1094
999
  * 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.
1095
1000
  * @param {object} options The options object. Includes the provider and the provider info.
1096
1001
  * @returns {void}
1097
1002
  * @throws {APIError} - Throws an error if the provider is not provided.
1098
- */setProvider({provider:t,info:i,address:a}){if(!t)throw new S("provider is required");this.viem=((t,i="window.ethereum",a,s)=>{var r,o;if(!t&&!k)return console.warn("Provider is required to create a client."),null;const d=a||C;if(!k||k.transport.name!==i&&t||s!==(null===(r=k.account)||void 0===r?void 0:r.address)&&t||(null==M?void 0:M.id)!==d.id){const a={chain:d,transport:n(t,{name:i})};s&&(a.account=l(s)),k=e(a),M=d,x&&(null===(o=x.chain)||void 0===o?void 0:o.id)!==d.id&&(x=null)}return k})(t,i.name,this.environment.CHAIN,a),this.origin&&this.origin.setViemClient(this.viem),
1003
+ */setProvider({provider:t,info:i,address:a}){if(!t)throw new P("provider is required");this.viem=((t,i="window.ethereum",a,s)=>{var r,o;if(!t&&!k)return console.warn("Provider is required to create a client."),null;const p=a||C;if(!k||k.transport.name!==i&&t||s!==(null===(r=k.account)||void 0===r?void 0:r.address)&&t||(null==M?void 0:M.id)!==p.id){const a={chain:p,transport:n(t,{name:i})};s&&(a.account=l(s)),k=e(a),M=p,N&&(null===(o=N.chain)||void 0===o?void 0:o.id)!==p.id&&(N=null)}return k})(t,i.name,this.environment.CHAIN,a),this.origin&&this.origin.setViemClient(this.viem),
1099
1004
  // TODO: only use one of these
1100
- h(this,ht,"m",At).call(this,"viem",this.viem),h(this,ht,"m",At).call(this,"provider",{provider:t,info:i}),h(this,wt,"f").setItem("camp-sdk:provider",JSON.stringify(i))}
1005
+ h(this,mt,"m",wt).call(this,"viem",this.viem),h(this,mt,"m",wt).call(this,"provider",{provider:t,info:i}),h(this,vt,"f").setItem("camp-sdk:provider",JSON.stringify(i))}
1101
1006
  /**
1102
1007
  * 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.
1103
1008
  * @param {string} walletAddress The wallet address.
@@ -1106,7 +1011,7 @@ h(this,ht,"m",At).call(this,"viem",this.viem),h(this,ht,"m",At).call(this,"provi
1106
1011
  /**
1107
1012
  * Recover the provider from local storage.
1108
1013
  * @returns {Promise<void>}
1109
- */recoverProvider(){return m(this,void 0,void 0,(function*(){var e,t,n,i,a,s,r,o,d,p,u,l,y;if(!this.walletAddress)return void console.warn("No wallet address found in local storage. Please connect your wallet again.");const c=yield h(this,wt,"f").getItem("camp-sdk:provider");if(!c)return;const m=JSON.parse(c);let T;const f=null!==(e=K())&&void 0!==e?e:[];
1014
+ */recoverProvider(){return m(this,void 0,void 0,(function*(){var e,t,n,i,a,s,r,o,p,d,u,l,y;if(!this.walletAddress)return void console.warn("No wallet address found in local storage. Please connect your wallet again.");const c=yield h(this,vt,"f").getItem("camp-sdk:provider");if(!c)return;const m=JSON.parse(c);let T;const f=null!==(e=Q())&&void 0!==e?e:[];
1110
1015
  // first pass: try to find provider by UUID/name and check if it has the right address
1111
1016
  // without prompting (using eth_accounts)
1112
1017
  for(const e of f)try{if(m.uuid&&(null===(t=e.info)||void 0===t?void 0:t.uuid)===m.uuid||m.name&&(null===(n=e.info)||void 0===n?void 0:n.name)===m.name){
@@ -1116,19 +1021,19 @@ const t=yield e.provider.request({method:"eth_accounts"});if(t.length>0&&(null==
1116
1021
  // but still avoid prompting
1117
1022
  if(!T)for(const e of f)try{
1118
1023
  // skip providers we already checked in the first pass
1119
- if(m.uuid&&(null===(s=e.info)||void 0===s?void 0:s.uuid)===m.uuid||m.name&&(null===(r=e.info)||void 0===r?void 0:r.name)===m.name)continue;const t=yield e.provider.request({method:"eth_accounts"});if(t.length>0&&(null===(o=t[0])||void 0===o?void 0:o.toLowerCase())===(null===(d=this.walletAddress)||void 0===d?void 0:d.toLowerCase())){T=e;break}}catch(e){console.warn("Failed to fetch accounts from provider:",e)}
1024
+ if(m.uuid&&(null===(s=e.info)||void 0===s?void 0:s.uuid)===m.uuid||m.name&&(null===(r=e.info)||void 0===r?void 0:r.name)===m.name)continue;const t=yield e.provider.request({method:"eth_accounts"});if(t.length>0&&(null===(o=t[0])||void 0===o?void 0:o.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)}
1120
1025
  // third pass: if still no provider found and we have UUID/name info,
1121
1026
  // try prompting the user (only for the stored provider)
1122
- if(!T&&(m.uuid||m.name))for(const e of f)try{if(m.uuid&&(null===(p=e.info)||void 0===p?void 0:p.uuid)===m.uuid||m.name&&(null===(u=e.info)||void 0===u?void 0:u.name)===m.name){const t=yield e.provider.request({method:"eth_requestAccounts"});if(t.length>0&&(null===(l=t[0])||void 0===l?void 0:l.toLowerCase())===(null===(y=this.walletAddress)||void 0===y?void 0:y.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.")}))}
1027
+ if(!T&&(m.uuid||m.name))for(const e of f)try{if(m.uuid&&(null===(d=e.info)||void 0===d?void 0:d.uuid)===m.uuid||m.name&&(null===(u=e.info)||void 0===u?void 0:u.name)===m.name){const t=yield e.provider.request({method:"eth_requestAccounts"});if(t.length>0&&(null===(l=t[0])||void 0===l?void 0:l.toLowerCase())===(null===(y=this.walletAddress)||void 0===y?void 0:y.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.")}))}
1123
1028
  /**
1124
1029
  * Disconnect the user.
1125
1030
  * @returns {Promise<void>}
1126
- */disconnect(){return m(this,void 0,void 0,(function*(){this.isAuthenticated&&(h(this,ht,"m",At).call(this,"state","unauthenticated"),this.isAuthenticated=!1,this.walletAddress=null,this.userId=null,this.jwt=null,this.origin=null,T(this,vt,void 0,"f"),yield h(this,wt,"f").removeItem("camp-sdk:wallet-address"),yield h(this,wt,"f").removeItem("camp-sdk:user-id"),yield h(this,wt,"f").removeItem("camp-sdk:jwt"),yield h(this,wt,"f").removeItem("camp-sdk:environment"))}))}
1031
+ */disconnect(){return m(this,void 0,void 0,(function*(){this.isAuthenticated&&(h(this,mt,"m",wt).call(this,"state","unauthenticated"),this.isAuthenticated=!1,this.walletAddress=null,this.userId=null,this.jwt=null,this.origin=null,T(this,ft,void 0,"f"),yield h(this,vt,"f").removeItem("camp-sdk:wallet-address"),yield h(this,vt,"f").removeItem("camp-sdk:user-id"),yield h(this,vt,"f").removeItem("camp-sdk:jwt"),yield h(this,vt,"f").removeItem("camp-sdk:environment"))}))}
1127
1032
  /**
1128
1033
  * Connect the user's wallet and sign the message.
1129
1034
  * @returns {Promise<{ success: boolean; message: string; walletAddress: string }>} A promise that resolves with the authentication result.
1130
1035
  * @throws {APIError} - Throws an error if the user cannot be authenticated.
1131
- */connect(){return m(this,void 0,void 0,(function*(){h(this,ht,"m",At).call(this,"state","loading");try{this.walletAddress||(yield h(this,ht,"m",gt).call(this)),this.walletAddress=u(this.walletAddress);const e=yield h(this,ht,"m",bt).call(this),t=h(this,ht,"m",Et).call(this,e),n=yield this.viem.signMessage({account:this.walletAddress,message:t}),i=yield h(this,ht,"m",Ct).call(this,t,n);if(i.success)return this.isAuthenticated=!0,this.userId=i.userId,this.jwt=i.token,this.origin=new St(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),yield h(this,wt,"f").setItem("camp-sdk:jwt",this.jwt),yield h(this,wt,"f").setItem("camp-sdk:wallet-address",this.walletAddress),yield h(this,wt,"f").setItem("camp-sdk:user-id",this.userId),yield h(this,wt,"f").setItem("camp-sdk:environment",this.environment.NAME),h(this,ht,"m",At).call(this,"state","authenticated"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,h(this,ht,"m",At).call(this,"state","unauthenticated"),new S("Failed to authenticate: signature verification failed")}catch(e){if(this.isAuthenticated=!1,h(this,ht,"m",At).call(this,"state","unauthenticated"),e instanceof S||e instanceof N)throw e;throw new S(`Failed to authenticate: ${_(e)}`)}}))}
1036
+ */connect(){return m(this,void 0,void 0,(function*(){h(this,mt,"m",wt).call(this,"state","loading");try{this.walletAddress||(yield h(this,mt,"m",It).call(this)),this.walletAddress=u(this.walletAddress);const e=yield h(this,mt,"m",bt).call(this),t=h(this,mt,"m",Ct).call(this,e),n=yield this.viem.signMessage({account:this.walletAddress,message:t}),i=yield h(this,mt,"m",gt).call(this,t,n);if(i.success)return this.isAuthenticated=!0,this.userId=i.userId,this.jwt=i.token,this.origin=new Et(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),yield h(this,vt,"f").setItem("camp-sdk:jwt",this.jwt),yield h(this,vt,"f").setItem("camp-sdk:wallet-address",this.walletAddress),yield h(this,vt,"f").setItem("camp-sdk:user-id",this.userId),yield h(this,vt,"f").setItem("camp-sdk:environment",this.environment.NAME),h(this,mt,"m",wt).call(this,"state","authenticated"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,h(this,mt,"m",wt).call(this,"state","unauthenticated"),new P("Failed to authenticate: signature verification failed")}catch(e){if(this.isAuthenticated=!1,h(this,mt,"m",wt).call(this,"state","unauthenticated"),e instanceof P||e instanceof _)throw e;throw new P(`Failed to authenticate: ${D(e)}`)}}))}
1132
1037
  /**
1133
1038
  * Connect with a custom signer (for Node.js or custom wallet implementations).
1134
1039
  * This method bypasses browser wallet interactions and uses the provided signer directly.
@@ -1147,9 +1052,9 @@ if(!T&&(m.uuid||m.name))for(const e of f)try{if(m.uuid&&(null===(p=e.info)||void
1147
1052
  * const account = privateKeyToAccount('0x...');
1148
1053
  * const client = createWalletClient({ account, chain: mainnet, transport: http() });
1149
1054
  * await auth.connectWithSigner(client);
1150
- */connectWithSigner(e,t){return m(this,void 0,void 0,(function*(){h(this,ht,"m",At).call(this,"state","loading");try{T(this,vt,A(e),"f"),this.walletAddress=u(yield h(this,vt,"f").getAddress()),
1055
+ */connectWithSigner(e,t){return m(this,void 0,void 0,(function*(){h(this,mt,"m",wt).call(this,"state","loading");try{T(this,ft,A(e),"f"),this.walletAddress=u(yield h(this,ft,"f").getAddress()),
1151
1056
  // store the signer as viem client if it's a viem client, otherwise keep adapter
1152
- "viem"===h(this,vt,"f").type&&(this.viem=e);const n=yield h(this,ht,"m",bt).call(this),i=h(this,ht,"m",Et).call(this,n,null==t?void 0:t.domain,null==t?void 0:t.uri),a=yield h(this,vt,"f").signMessage(i),s=yield h(this,ht,"m",Ct).call(this,i,a);if(s.success)return this.isAuthenticated=!0,this.userId=s.userId,this.jwt=s.token,this.origin=new St(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),yield h(this,wt,"f").setItem("camp-sdk:jwt",this.jwt),yield h(this,wt,"f").setItem("camp-sdk:wallet-address",this.walletAddress),yield h(this,wt,"f").setItem("camp-sdk:user-id",this.userId),yield h(this,wt,"f").setItem("camp-sdk:environment",this.environment.NAME),h(this,ht,"m",At).call(this,"state","authenticated"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,h(this,ht,"m",At).call(this,"state","unauthenticated"),new S("Failed to authenticate: signature verification failed")}catch(e){if(this.isAuthenticated=!1,T(this,vt,void 0,"f"),h(this,ht,"m",At).call(this,"state","unauthenticated"),e instanceof S||e instanceof N)throw e;throw new S(`Failed to authenticate: ${_(e)}`)}}))}
1057
+ "viem"===h(this,ft,"f").type&&(this.viem=e);const n=yield h(this,mt,"m",bt).call(this),i=h(this,mt,"m",Ct).call(this,n,null==t?void 0:t.domain,null==t?void 0:t.uri),a=yield h(this,ft,"f").signMessage(i),s=yield h(this,mt,"m",gt).call(this,i,a);if(s.success)return this.isAuthenticated=!0,this.userId=s.userId,this.jwt=s.token,this.origin=new Et(this.environment,this.jwt,this.viem,this.baseParentId,this.appId),yield h(this,vt,"f").setItem("camp-sdk:jwt",this.jwt),yield h(this,vt,"f").setItem("camp-sdk:wallet-address",this.walletAddress),yield h(this,vt,"f").setItem("camp-sdk:user-id",this.userId),yield h(this,vt,"f").setItem("camp-sdk:environment",this.environment.NAME),h(this,mt,"m",wt).call(this,"state","authenticated"),{success:!0,message:"Successfully authenticated",walletAddress:this.walletAddress};throw this.isAuthenticated=!1,h(this,mt,"m",wt).call(this,"state","unauthenticated"),new P("Failed to authenticate: signature verification failed")}catch(e){if(this.isAuthenticated=!1,T(this,ft,void 0,"f"),h(this,mt,"m",wt).call(this,"state","unauthenticated"),e instanceof P||e instanceof _)throw e;throw new P(`Failed to authenticate: ${D(e)}`)}}))}
1153
1058
  /**
1154
1059
  * Get the user's linked social accounts.
1155
1060
  * @returns {Promise<Record<string, boolean>>} A promise that resolves with the user's linked social accounts.
@@ -1158,34 +1063,34 @@ if(!T&&(m.uuid||m.name))for(const e of f)try{if(m.uuid&&(null===(p=e.info)||void
1158
1063
  * const auth = new Auth({ clientId: "your-client-id" });
1159
1064
  * const socials = await auth.getLinkedSocials();
1160
1065
  * console.log(socials);
1161
- */getLinkedSocials(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to get linked social accounts");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/connections-sdk`,{method:"GET",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"}}).then((e=>e.json()));if(e.isError)throw new S(e.message||"Failed to fetch connections");{const t={};return Object.keys(e.data.data).forEach((n=>{t[n.split("User")[0]]=e.data.data[n]})),t}}))}
1066
+ */getLinkedSocials(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to get linked social accounts");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/client-user/connections-sdk`,{method:"GET",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"}}).then((e=>e.json()));if(e.isError)throw new P(e.message||"Failed to fetch connections");{const t={};return Object.keys(e.data.data).forEach((n=>{t[n.split("User")[0]]=e.data.data[n]})),t}}))}
1162
1067
  /**
1163
1068
  * Link the user's Twitter account.
1164
1069
  * @returns {Promise<void>}
1165
1070
  * @throws {Error} - Throws an error if the user is not authenticated or in Node.js environment.
1166
- */linkTwitter(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link Twitter account");if(h(this,ft,"f"))throw new S("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}`}))}
1071
+ */linkTwitter(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link Twitter account");if(h(this,Tt,"f"))throw new P("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}`}))}
1167
1072
  /**
1168
1073
  * Link the user's Discord account.
1169
1074
  * @returns {Promise<void>}
1170
1075
  * @throws {Error} - Throws an error if the user is not authenticated or in Node.js environment.
1171
- */linkDiscord(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link Discord account");if(h(this,ft,"f"))throw new S("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}`}))}
1076
+ */linkDiscord(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link Discord account");if(h(this,Tt,"f"))throw new P("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}`}))}
1172
1077
  /**
1173
1078
  * Link the user's Spotify account.
1174
1079
  * @returns {Promise<void>}
1175
1080
  * @throws {Error} - Throws an error if the user is not authenticated or in Node.js environment.
1176
- */linkSpotify(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link Spotify account");if(h(this,ft,"f"))throw new S("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}`}))}
1081
+ */linkSpotify(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link Spotify account");if(h(this,Tt,"f"))throw new P("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}`}))}
1177
1082
  /**
1178
1083
  * Link the user's TikTok account.
1179
1084
  * @param {string} handle The user's TikTok handle.
1180
1085
  * @returns {Promise<any>} A promise that resolves with the TikTok account data.
1181
1086
  * @throws {Error|APIError} - Throws an error if the user is not authenticated.
1182
- */linkTikTok(e){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link TikTok account");const t=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/tiktok/connect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({userHandle:e,clientId:this.clientId,userId:this.userId})}).then((e=>e.json()));if(t.isError)throw"Request failed with status code 502"===t.message?new S("TikTok service is currently unavailable, try again later"):new S(t.message||"Failed to link TikTok account");return t.data}))}
1087
+ */linkTikTok(e){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link TikTok account");const t=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/tiktok/connect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({userHandle:e,clientId:this.clientId,userId:this.userId})}).then((e=>e.json()));if(t.isError)throw"Request failed with status code 502"===t.message?new P("TikTok service is currently unavailable, try again later"):new P(t.message||"Failed to link TikTok account");return t.data}))}
1183
1088
  /**
1184
1089
  * Send an OTP to the user's Telegram account.
1185
1090
  * @param {string} phoneNumber The user's phone number.
1186
1091
  * @returns {Promise<any>} A promise that resolves with the OTP data.
1187
1092
  * @throws {Error|APIError} - Throws an error if the user is not authenticated.
1188
- */sendTelegramOTP(e){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to send Telegram OTP");if(!e)throw new P("Phone number is required to send Telegram OTP");yield this.unlinkTelegram();const t=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/telegram/sendOTP-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({phone:e})}).then((e=>e.json()));if(t.isError)throw new S(t.message||"Failed to send Telegram OTP");return t.data}))}
1093
+ */sendTelegramOTP(e){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to send Telegram OTP");if(!e)throw new S("Phone number is required to send Telegram OTP");yield this.unlinkTelegram();const t=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/telegram/sendOTP-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({phone:e})}).then((e=>e.json()));if(t.isError)throw new P(t.message||"Failed to send Telegram OTP");return t.data}))}
1189
1094
  /**
1190
1095
  * Link the user's Telegram account.
1191
1096
  * @param {string} phoneNumber The user's phone number.
@@ -1193,34 +1098,34 @@ if(!T&&(m.uuid||m.name))for(const e of f)try{if(m.uuid&&(null===(p=e.info)||void
1193
1098
  * @param {string} phoneCodeHash The phone code hash.
1194
1099
  * @returns {Promise<object>} A promise that resolves with the Telegram account data.
1195
1100
  * @throws {APIError|Error} - Throws an error if the user is not authenticated. Also throws an error if the phone number, OTP, and phone code hash are not provided.
1196
- */linkTelegram(e,t,n){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link Telegram account");if(!e||!t||!n)throw new P("Phone number, OTP, and phone code hash are all required to link Telegram");const i=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/telegram/signIn-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({phone:e,code:t,phone_code_hash:n,userId:this.userId,clientId:this.clientId})}).then((e=>e.json()));if(i.isError)throw new S(i.message||"Failed to link Telegram account");return i.data}))}
1101
+ */linkTelegram(e,t,n){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to link Telegram account");if(!e||!t||!n)throw new S("Phone number, OTP, and phone code hash are all required to link Telegram");const i=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/telegram/signIn-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({phone:e,code:t,phone_code_hash:n,userId:this.userId,clientId:this.clientId})}).then((e=>e.json()));if(i.isError)throw new P(i.message||"Failed to link Telegram account");return i.data}))}
1197
1102
  /**
1198
1103
  * Unlink the user's Twitter account.
1199
1104
  * @returns {Promise<any>} A promise that resolves with the unlink result.
1200
1105
  * @throws {Error} - Throws an error if the user is not authenticated.
1201
1106
  * @throws {APIError} - Throws an error if the request fails.
1202
- */unlinkTwitter(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to unlink Twitter account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/twitter/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new S(e.message||"Failed to unlink Twitter account");return e.data}))}
1107
+ */unlinkTwitter(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to unlink Twitter account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/twitter/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new P(e.message||"Failed to unlink Twitter account");return e.data}))}
1203
1108
  /**
1204
1109
  * Unlink the user's Discord account.
1205
1110
  * @returns {Promise<any>} A promise that resolves with the unlink result.
1206
1111
  * @throws {Error} - Throws an error if the user is not authenticated.
1207
1112
  * @throws {APIError} - Throws an error if the request fails.
1208
- */unlinkDiscord(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to unlink Discord account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/discord/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new S(e.message||"Failed to unlink Discord account");return e.data}))}
1113
+ */unlinkDiscord(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to unlink Discord account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/discord/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new P(e.message||"Failed to unlink Discord account");return e.data}))}
1209
1114
  /**
1210
1115
  * Unlink the user's Spotify account.
1211
1116
  * @returns {Promise<any>} A promise that resolves with the unlink result.
1212
1117
  * @throws {Error} - Throws an error if the user is not authenticated.
1213
1118
  * @throws {APIError} - Throws an error if the request fails.
1214
- */unlinkSpotify(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to unlink Spotify account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/spotify/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new S(e.message||"Failed to unlink Spotify account");return e.data}))}
1119
+ */unlinkSpotify(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to unlink Spotify account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/spotify/disconnect-sdk`,{method:"POST",redirect:"follow",headers:{Authorization:`Bearer ${this.jwt}`,"x-client-id":this.clientId,"Content-Type":"application/json"},body:JSON.stringify({id:this.userId})}).then((e=>e.json()));if(e.isError)throw new P(e.message||"Failed to unlink Spotify account");return e.data}))}
1215
1120
  /**
1216
1121
  * Unlink the user's TikTok account.
1217
1122
  * @returns {Promise<any>} A promise that resolves with the unlink result.
1218
1123
  * @throws {Error} - Throws an error if the user is not authenticated.
1219
1124
  * @throws {APIError} - Throws an error if the request fails.
1220
- */unlinkTikTok(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to unlink TikTok account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/tiktok/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 S(e.message||"Failed to unlink TikTok account");return e.data}))}
1125
+ */unlinkTikTok(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("User must be authenticated to unlink TikTok account");const e=yield fetch(`${this.environment.AUTH_HUB_BASE_API}/tiktok/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 P(e.message||"Failed to unlink TikTok account");return e.data}))}
1221
1126
  /**
1222
1127
  * Unlink the user's Telegram account.
1223
1128
  * @returns {Promise<any>} A promise that resolves with the unlink result.
1224
1129
  * @throws {Error} - Throws an error if the user is not authenticated.
1225
1130
  * @throws {APIError} - Throws an error if the request fails.
1226
- */unlinkTelegram(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("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 S(e.message||"Failed to unlink Telegram account");return e.data}))}}Tt=new WeakMap,ft=new WeakMap,vt=new WeakMap,wt=new WeakMap,ht=new WeakSet,At=function(e,t){h(this,Tt,"f")[e]&&h(this,Tt,"f")[e].forEach((e=>e(t)))},It=function(e){return m(this,void 0,void 0,(function*(){const t=yield h(this,wt,"f").getItem("camp-sdk:wallet-address"),n=yield h(this,wt,"f").getItem("camp-sdk:user-id"),i=yield h(this,wt,"f").getItem("camp-sdk:jwt"),a=yield h(this,wt,"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 St(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}):h(this,ft,"f")||(console.warn("No matching provider was given for the stored wallet address. Trying to recover provider."),yield this.recoverProvider())):this.isAuthenticated=!1}))},gt=function(){return m(this,void 0,void 0,(function*(){try{const[e]=yield this.viem.requestAddresses();return this.walletAddress=u(e),this.walletAddress}catch(e){throw new N(`Failed to connect wallet: ${_(e)}`)}}))},bt=function(){return m(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 S(t.message||`Failed to fetch nonce (HTTP ${e.status})`,e.status);return t.data}catch(e){if(e instanceof S)throw e;throw new S(`Failed to fetch nonce: ${_(e)}`)}}))},Ct=function(e,t){return m(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 S(`Failed to verify signature: ${_(e)}`)}}))},Et=function(e,t,n){return y({domain:t||(h(this,ft,"f")?"localhost":window.location.host),address:this.walletAddress,statement:z,uri:n||(h(this,ft,"f")?"http://localhost":window.location.origin),version:"1",chainId:this.environment.CHAIN.id,nonce:e})};export{Pt as Auth,I as BrowserStorage,w as CustomSignerAdapter,xe as DataStatus,Me as DisputeStatus,v as EthersSignerAdapter,ke as LicenseType,g as MemoryStorage,St as Origin,f as ViemSignerAdapter,E as campMainnet,C as campTestnet,Oe as createLicenseTerms,b as createNodeWalletClient,A as createSignerAdapter,ge as decodeCidFromBytes32,Ie as encodeCidToBytes32};
1131
+ */unlinkTelegram(){return m(this,void 0,void 0,(function*(){if(!this.isAuthenticated)throw new R("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 P(e.message||"Failed to unlink Telegram account");return e.data}))}}ht=new WeakMap,Tt=new WeakMap,ft=new WeakMap,vt=new WeakMap,mt=new WeakSet,wt=function(e,t){h(this,ht,"f")[e]&&h(this,ht,"f")[e].forEach((e=>e(t)))},At=function(e){return m(this,void 0,void 0,(function*(){const t=yield h(this,vt,"f").getItem("camp-sdk:wallet-address"),n=yield h(this,vt,"f").getItem("camp-sdk:user-id"),i=yield h(this,vt,"f").getItem("camp-sdk:jwt"),a=yield h(this,vt,"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 Et(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}):h(this,Tt,"f")||(console.warn("No matching provider was given for the stored wallet address. Trying to recover provider."),yield this.recoverProvider())):this.isAuthenticated=!1}))},It=function(){return m(this,void 0,void 0,(function*(){try{const[e]=yield this.viem.requestAddresses();return this.walletAddress=u(e),this.walletAddress}catch(e){throw new _(`Failed to connect wallet: ${D(e)}`)}}))},bt=function(){return m(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 P(t.message||`Failed to fetch nonce (HTTP ${e.status})`,e.status);return t.data}catch(e){if(e instanceof P)throw e;throw new P(`Failed to fetch nonce: ${D(e)}`)}}))},gt=function(e,t){return m(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 P(`Failed to verify signature: ${D(e)}`)}}))},Ct=function(e,t,n){return y({domain:t||(h(this,Tt,"f")?"localhost":window.location.host),address:this.walletAddress,statement:L,uri:n||(h(this,Tt,"f")?"http://localhost":window.location.origin),version:"1",chainId:this.environment.CHAIN.id,nonce:e})};export{Pt as Auth,I as BrowserStorage,w as CustomSignerAdapter,ke as DataStatus,Ne as DisputeStatus,v as EthersSignerAdapter,De as LicenseType,b as MemoryStorage,Et as Origin,f as ViemSignerAdapter,E as campMainnet,C as campTestnet,Me as createLicenseTerms,g as createNodeWalletClient,A as createSignerAdapter,Ie as decodeCidFromBytes32,Ae as encodeCidToBytes32};