1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9172],{9644:function(t,r,e){e.d(r,{S:function(){return n}});var a=e(7280);class n{get chainId(){return this._chainId}constructor(t,r,e){this.contractWrapper=t,this.storage=r,this.erc1155=new a.aL(this.contractWrapper,this.storage,e),this._chainId=e}onNetworkUpdated(t){this.contractWrapper.updateSignerOrProvider(t)}getAddress(){return this.contractWrapper.address}async get(t){return this.erc1155.get(t)}async totalSupply(t){return this.erc1155.totalSupply(t)}async balanceOf(t,r){return this.erc1155.balanceOf(t,r)}async balance(t){return this.erc1155.balance(t)}async isApproved(t,r){return this.erc1155.isApproved(t,r)}transfer=(0,a.dx)((()=>{var t=this;return async function(r,e,a){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[0];return t.erc1155.transfer.prepare(r,e,a,n)}})());setApprovalForAll=(0,a.dx)((async(t,r)=>this.erc1155.setApprovalForAll.prepare(t,r)));airdrop=(0,a.dx)((()=>{var t=this;return async function(r,e,a){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[0];return t.erc1155.airdrop.prepare(r,e,a,n)}})())}},13426:function(t,r,e){e.d(r,{h:function(){return s}});var a=e(49242),n=e(7280);async function s(t,r,e){const s=t.getProvider(),o=new n.dw(s,r,a,{},t.storage),c=await t.getSignerAddress(),d=t.address;return(await o.read("allowance",[c,d])).gte(e)}},59172:function(t,r,e){e.r(r),e.d(r,{Pack:function(){return I}});var a=e(2593),n=e(61744),s=e(9279),o=e(7280),c=e(13426),d=e(9644),i=e(49242),p=e(27761),h=e(62),u=e(1604);e(64063),e(2162),e(62822),e(54098),e(71770),e(13550);const w=u.z.object({contractAddress:o.ab}),g=w.extend({quantity:h.A}),l=w.extend({tokenId:o.a8}),f=w.extend({tokenId:o.a8,quantity:o.a8}),k=g.omit({quantity:!0}).extend({quantityPerReward:h.A}),W=l,v=f.omit({quantity:!0}).extend({quantityPerReward:o.a8}),A=(()=>k.extend({totalRewards:o.a8.default("1")}))(),m=W,y=(()=>v.extend({totalRewards:o.a8.default("1")}))(),R=(()=>u.z.object({erc20Rewards:u.z.array(A).default([]),erc721Rewards:u.z.array(m).default([]),erc1155Rewards:u.z.array(y).default([])}))(),P=(()=>R.extend({packMetadata:h.N,rewardsPerPack:o.a8.default("1"),openStartTime:o.ac.default(new Date)}))();class C{featureName=o.dX.name;constructor(t,r,e,a,n){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:new o.dw(t,r,p,a,e);this.contractWrapper=s,this.storage=e,this.chainId=n,this.events=new o.aR(this.contractWrapper)}onNetworkUpdated(t){this.contractWrapper.updateSignerOrProvider(t)}getAddress(){return this.contractWrapper.address}open=(0,o.dx)((()=>{var t=this;return async function(r){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e5;return o.aW.fromContractWrapper({contractWrapper:t.contractWrapper,method:"openPack",args:[r,e],overrides:{gasLimit:n},parse:r=>{let e=a.O$.from(0);try{e=t.contractWrapper.parseLogs("PackOpenRequested",r?.logs)[0].args.requestId}catch(n){}return{receipt:r,id:e}}})}})());claimRewards=(0,o.dx)((()=>{var t=this;return async function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5e5;return o.aW.fromContractWrapper({contractWrapper:t.contractWrapper,method:"claimRewards",args:[],overrides:{gasLimit:r},parse:async r=>{const e=t.contractWrapper.parseLogs("PackOpened",r?.logs);if(0===e.length)throw new Error("PackOpened event not found");const a=e[0].args.rewardUnitsDistributed;return await t.parseRewards(a)}})}})());async parseRewards(t){const r=[],e=[],a=[];for(const s of t)switch(s.tokenType){case 0:{const t=await(0,o.bb)(this.contractWrapper.getProvider(),s.assetContract);r.push({contractAddress:s.assetContract,quantityPerReward:n.formatUnits(s.totalAmount,t.decimals).toString()});break}case 1:e.push({contractAddress:s.assetContract,tokenId:s.tokenId.toString()});break;case 2:a.push({contractAddress:s.assetContract,tokenId:s.tokenId.toString(),quantityPerReward:s.totalAmount.toString()})}return{erc20Rewards:r,erc721Rewards:e,erc1155Rewards:a}}async addPackOpenEventListener(t){return this.events.addEventListener("PackOpened",(async r=>{t(r.data.packId.toString(),r.data.opener,await this.parseRewards(r.data.rewardUnitsDistributed))}))}async canClaimRewards(t){const r=await(0,o.cL)(t||await this.contractWrapper.getSignerAddress());return await this.contractWrapper.read("canClaimRewards",[r])}async openAndClaim(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e5;const n=await this.contractWrapper.sendTransaction("openPackAndClaimRewards",[t,r,e],{gasLimit:a.O$.from(5e5)});let s=a.O$.from(0);try{s=this.contractWrapper.parseLogs("PackOpenRequested",n?.logs)[0].args.requestId}catch(o){}return{receipt:n,id:s}}async getLinkBalance(){return this.getLinkContract().balanceOf(this.contractWrapper.address)}async transferLink(t){await this.getLinkContract().transfer(this.contractWrapper.address,t)}getLinkContract(){const t=o.cZ[this.chainId];if(!t)throw new Error(`No LINK token address found for chainId ${this.chainId}`);const r=new o.dw(this.contractWrapper.getSignerOrProvider(),t,i,this.contractWrapper.options,this.storage);return new o.au(r,this.storage,this.chainId)}}class I extends d.S{static contractRoles=o.dY;get vrf(){return(0,o.cc)(this._vrf,o.dX)}constructor(t,r,e){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0;super(arguments.length>6&&void 0!==arguments[6]?arguments[6]:new o.dw(t,r,n,a.gasless&&"openzeppelin"in a.gasless?{...a,gasless:{...a.gasless,openzeppelin:{...a.gasless.openzeppelin,useEOAForwarder:!0}}}:a,e),e,s),this.abi=o.e.parse(n||[]),this.metadata=new o.ah(this.contractWrapper,o.dZ,this.storage),this.app=new o.b0(this.contractWrapper,this.metadata,this.storage),this.roles=new o.ai(this.contractWrapper,I.contractRoles),this.royalties=new o.aj(this.contractWrapper,this.metadata),this.encoder=new o.ag(this.contractWrapper),this.estimator=new o.aQ(this.contractWrapper),this.events=new o.aR(this.contractWrapper),this.interceptor=new o.aS(this.contractWrapper),this.owner=new o.aV(this.contractWrapper),this._vrf=this.detectVrf()}onNetworkUpdated(t){this.contractWrapper.updateSignerOrProvider(t),this._vrf?.onNetworkUpdated(t)}getAddress(){return this.contractWrapper.address}async get(t){return this.erc1155.get(t)}async getAll(t){return this.erc1155.getAll(t)}async getOwned(t){return this.erc1155.getOwned(t)}async getTotalCount(){return this.erc1155.totalCount()}async isTransferRestricted(){return!(await this.contractWrapper.read("hasRole",[(0,o.bI)("transfer"),s.d]))}async getPackContents(t){const{contents:r,perUnitAmounts:e}=await this.contractWrapper.read("getPackContents",[t]),s=[],c=[],d=[];for(let i=0;i<r.length;
1i++){const t=r[i],p=e[i];switch(t.tokenType){case 0:{const r=await(0,o.bb)(this.contractWrapper.getProvider(),t.assetContract),e=n.formatUnits(p,r.decimals),c=n.formatUnits(a.O$.from(t.totalAmount).div(p),r.decimals);s.push({contractAddress:t.assetContract,quantityPerReward:e,totalRewards:c});break}case 1:c.push({contractAddress:t.assetContract,tokenId:t.tokenId.toString()});break;case 2:d.push({contractAddress:t.assetContract,tokenId:t.tokenId.toString(),quantityPerReward:p.toString(),totalRewards:a.O$.from(t.totalAmount).div(p).toString()})}}return{erc20Rewards:s,erc721Rewards:c,erc1155Rewards:d}}create=(0,o.dx)((async t=>{const r=await this.contractWrapper.getSignerAddress();return this.createTo.prepare(r,t)}));addPackContents=(0,o.dx)((async(t,r)=>{const e=await this.contractWrapper.getSignerAddress(),a=await R.parseAsync(r),{contents:n,numOfRewardUnits:s}=await this.toPackContentArgs(a);return o.aW.fromContractWrapper({contractWrapper:this.contractWrapper,method:"addPackContents",args:[t,n,s,e],parse:t=>{const r=this.contractWrapper.parseLogs("PackUpdated",t?.logs);if(0===r.length)throw new Error("PackUpdated event not found");const e=r[0].args.packId;return{id:e,receipt:t,data:()=>this.erc1155.get(e)}}})}));createTo=(0,o.dx)((async(t,r)=>{const e=await(0,o.dU)(r.packMetadata,this.storage),a=await P.parseAsync(r),{erc20Rewards:n,erc721Rewards:s,erc1155Rewards:c}=a,d={erc20Rewards:n,erc721Rewards:s,erc1155Rewards:c},{contents:i,numOfRewardUnits:p}=await this.toPackContentArgs(d);return o.aW.fromContractWrapper({contractWrapper:this.contractWrapper,method:"createPack",args:[i,p,e,a.openStartTime,a.rewardsPerPack,await(0,o.cL)(t)],parse:t=>{const r=this.contractWrapper.parseLogs("PackCreated",t?.logs);if(0===r.length)throw new Error("PackCreated event not found");const e=r[0].args.packId;return{id:e,receipt:t,data:()=>this.erc1155.get(e)}}})}));open=(0,o.dx)((()=>{var t=this;return async function(r){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e5;if(t._vrf)throw new Error("This contract is using Chainlink VRF, use `contract.vrf.open()` or `contract.vrf.openAndClaim()` instead");return o.aW.fromContractWrapper({contractWrapper:t.contractWrapper,method:"openPack",args:[r,e],overrides:{gasLimit:a},parse:async r=>{const e=t.contractWrapper.parseLogs("PackOpened",r?.logs);if(0===e.length)throw new Error("PackOpened event not found");const a=e[0].args.rewardUnitsDistributed,s=[],c=[],d=[];for(const i of a)switch(i.tokenType){case 0:{const r=await(0,o.bb)(t.contractWrapper.getProvider(),i.assetContract);s.push({contractAddress:i.assetContract,quantityPerReward:n.formatUnits(i.totalAmount,r.decimals).toString()});break}case 1:c.push({contractAddress:i.assetContract,tokenId:i.tokenId.toString()});break;case 2:d.push({contractAddress:i.assetContract,tokenId:i.tokenId.toString(),quantityPerReward:i.totalAmount.toString()})}return{erc20Rewards:s,erc721Rewards:c,erc1155Rewards:d}}})}})());async toPackContentArgs(t){const r=[],e=[],{erc20Rewards:n,erc721Rewards:s,erc1155Rewards:d}=t,i=this.contractWrapper.getProvider(),p=await this.contractWrapper.getSignerAddress();for(const a of n){const t=(await(0,o.ba)(i,a.quantityPerReward,a.contractAddress)).mul(a.totalRewards);if(!(await(0,c.h)(this.contractWrapper,a.contractAddress,t)))throw new Error(`ERC20 token with contract address "${a.contractAddress}" does not have enough allowance to transfer.\n\nYou can set allowance to the multiwrap contract to transfer these tokens by running:\n\nawait sdk.getToken("${a.contractAddress}").setAllowance("${this.getAddress()}", ${t});\n\n`);e.push(a.totalRewards),r.push({assetContract:a.contractAddress,tokenType:0,totalAmount:t,tokenId:0})}for(const a of s){if(!(await(0,o.dG)(this.contractWrapper.getProvider(),this.getAddress(),a.contractAddress,a.tokenId,p)))throw new Error(`ERC721 token "${a.tokenId}" with contract address "${a.contractAddress}" is not approved for transfer.\n\nYou can give approval the multiwrap contract to transfer this token by running:\n\nawait sdk.getNFTCollection("${a.contractAddress}").setApprovalForToken("${this.getAddress()}", ${a.tokenId});\n\n`);e.push("1"),r.push({assetContract:a.contractAddress,tokenType:1,totalAmount:1,tokenId:a.tokenId})}for(const c of d){if(!(await(0,o.dG)(this.contractWrapper.getProvider(),this.getAddress(),c.contractAddress,c.tokenId,p)))throw new Error(`ERC1155 token "${c.tokenId}" with contract address "${c.contractAddress}" is not approved for transfer.\n\nYou can give approval the multiwrap contract to transfer this token by running:\n\nawait sdk.getEdition("${c.contractAddress}").setApprovalForAll("${this.getAddress()}", true);\n\n`);e.push(c.totalRewards),r.push({assetContract:c.contractAddress,tokenType:2,totalAmount:a.O$.from(c.quantityPerReward).mul(a.O$.from(c.totalRewards)),tokenId:c.tokenId})}return{contents:r,numOfRewardUnits:e}}async prepare(t,r,e){return o.aW.fromContractWrapper({contractWrapper:this.contractWrapper,method:t,args:r,overrides:e})}async call(t,r,e){return this.contractWrapper.call(t,r,e)}
1detectVrf(){if((0,o.cd)(this.contractWrapper,"PackVRF"))return new C(this.contractWrapper.getSignerOrProvider(),this.contractWrapper.address,this.storage,this.contractWrapper.options,this.chainId)}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.