aiia-vault-sdk 1.3.1 → 1.3.3
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/FairLaunch.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FairLaunchSDK=void 0;const e=require("ethers"),i=t(require("./abis/FairLaunch.json")),a=t(require("./contracts.json")),n=require("./utils");exports.FairLaunchSDK=class{constructor(t,r){this.name="FairLaunch",this.isBootstrapped=!1,this._projectToken=null,this._fundingToken=null,this._projectTokenDecimals=null,this._fundingTokenDecimals=null,this.formatEventArgs=async t=>{await this.bootstrap();const{eventName:e,args:i}=t;switch(e){case"Contributed":return{...t,args:{...i,user:i.user.toLowerCase(),amount:Number(i.amount)/10**this._fundingTokenDecimals}};case"SaleEnded":return{...t,args:{...i,totalRaised:Number(i.totalRaised)/10**this._fundingTokenDecimals,tokenPrice:Number(i.tokenPrice)/10**this._fundingTokenDecimals}};case"InitialClaimed":case"VestedClaimed":return{...t,args:{...i,user:i.user.toLowerCase(),amount:Number(i.amount)/10**this._projectTokenDecimals}};case"TradingVaultPositionCreated":return{...t,args:{...i,user:i.user.toLowerCase(),positionId:Number(i.positionId),amount:Number(i.amount)/10**this._fundingTokenDecimals}};case"LiquidityAdded":return{...t,args:{...i,tokenAmount:Number(i.tokenAmount)/10**this._projectTokenDecimals,fundingTokenAmount:Number(i.fundingTokenAmount)/10**this._fundingTokenDecimals}};default:return t}};const o=Array.isArray(t)?t:[t];this.providers=o.map((t=>new e.ethers.JsonRpcProvider(t)));const s=(0,n.getRandomProvider)(this.providers);this.contractAddress=(0,n.resolveContractAddress)(o[0],this.name,a.default,r),this.contract=new e.ethers.Contract(this.contractAddress,i.default.abi,s)}getRandomProvider(){return(0,n.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,i.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,n.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,i)=>t[i])),0===this.providers.length)throw new Error("No active RPC providers available");this._projectToken=await this.contract.projectToken(),this._fundingToken=await this.contract.fundingToken();const[e,i]=await Promise.all([(0,n.getTokenDecimals)(this._projectToken,this.getRandomProvider()),(0,n.getTokenDecimals)(this._fundingToken,this.getRandomProvider())]);this._projectTokenDecimals=e,this._fundingTokenDecimals=i,this.isBootstrapped=!0}async signAndSendTransaction(t,e,i={}){return(0,n.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),i,this.contract)}async buildContributeTx(t,i){await this.bootstrap();const a=e.ethers.parseUnits(t.toString(),this._fundingTokenDecimals);return await this.contract.contribute.populateTransaction(a,i)}async buildEndSaleTx(){return await this.contract.endSale.populateTransaction()}async buildAddLiquidityTx(){return await this.contract.addLiquidity.populateTransaction()}async buildEnableClaimingTx(){return await this.contract.enableClaiming.populateTransaction()}async buildClaimInitialTx(){return await this.contract.claimInitial.populateTransaction()}async buildClaimVestedTx(){return await this.contract.claimVested.populateTransaction()}async buildUpdateLiquidityTokensTx(t){await this.bootstrap();const i=e.ethers.parseUnits(t.toString(),this._projectTokenDecimals);return await this.contract.updateLiquidityTokens.populateTransaction(i)}async buildUpdateLiquidityPercentTx(t){return await this.contract.updateLiquidityPercent.populateTransaction(t)}async buildUpdateInitialClaimPercentTx(t){return await this.contract.updateInitialClaimPercent.populateTransaction(t)}async buildUpdateVestingDurationTx(t){return await this.contract.updateVestingDuration.populateTransaction(t)}async buildUpdateEarlyParticipationWindowTx(t){return await this.contract.updateEarlyParticipationWindow.populateTransaction(t)}async buildWithdrawLPTokensTx(t,e){return await this.contract.withdrawLPTokens.populateTransaction(t,e)}async buildWithdrawERC20Tx(t,i){const a=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),n=await a.decimals(),r=e.ethers.parseUnits(i.toString(),n);return await this.contract.withdrawERC20.populateTransaction(t,r)}async buildApproveERC20Tx(t,i,a){const r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),o=await r.decimals(),s=e.ethers.parseUnits(a.toString(),o);return(0,n.buildApproveERC20Tx)(t,i,s,this.getRandomProvider())}async getSaleInfo(){await this.bootstrap();const[t,e,i,a,n,r,o,s]=await Promise.all([this.contract.startTime(),this.contract.endTime(),this.contract.totalTokensForSale(),this.contract.totalRaised(),this.contract.tokenPrice(),this.contract.saleEnded(),this.contract.claimingEnabled(),this.contract.liquidityAdded()]);return{startTime:Number(t),endTime:Number(e),totalTokensForSale:Number(i)/10**this._projectTokenDecimals,totalRaised:Number(a)/10**this._fundingTokenDecimals,tokenPrice:Number(n)/10**this._fundingTokenDecimals,saleEnded:r,claimingEnabled:o,liquidityAdded:s}}async getUserContribution(t){await this.bootstrap();const e=await this.contract.userContributions(t);return{amount:Number(e.amount)/10**this._fundingTokenDecimals,tokenAllocation:Number(e.tokenAllocation)/10**this._projectTokenDecimals,hasClaimedInitial:e.hasClaimedInitial,vestedClaimed:Number(e.vestedClaimed)/10**this._projectTokenDecimals,tradingVaultId:Number(e.tradingVaultId)}}async getContributorsCount(){return Number(await this.contract.getContributorsCount())}async getContributorAt(t){return await this.contract.getContributorAt(t)}async getAllContributors(){const t=await this.getContributorsCount(),e=[];for(let i=0;i<t;i++)e.push(await this.getContributorAt(i));return e}async getProjectToken(){return this._projectToken||(this._projectToken=await this.contract.projectToken()),this._projectToken}async getFundingToken(){return this._fundingToken||(this._fundingToken=await this.contract.fundingToken()),this._fundingToken}async getTradingVault(){return await this.contract.tradingVault()}async getDexRouter(){return await this.contract.dexRouter()}async getLiquidityTokens(){await this.bootstrap();const t=await this.contract.liquidityTokens();return Number(t)/10**this._projectTokenDecimals}async getLiquidityPercent(){return Number(await this.contract.liquidityPercent())}async getInitialClaimPercent(){return Number(await this.contract.initialClaimPercent())}async getVestingDuration(){return Number(await this.contract.vestingDuration())}async getVestingStartTime(){return Number(await this.contract.vestingStartTime())}async getEarlyParticipationWindow(){return Number(await this.contract.earlyParticipationWindow())}async hasOperatorRole(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.hasRole(e,t)}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantOperatorRoleTx(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getAllowance(t,e,i){const[a,r]=await Promise.all([(0,n.getTokenAllowance)(t,e,i,this.getRandomProvider()),(0,n.getTokenDecimals)(t,this.getRandomProvider())]);return Number(a)/Math.pow(10,r)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,i){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,i)}async streamEvents(t,e,i,a=1e3,r=5e3){const o=["Contributed","SaleEnded","InitialClaimed","VestedClaimed","ClaimingEnabled","LiquidityAdded","TradingVaultPositionCreated"];return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,o),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:i,fromBlock:t,batchSize:a,sleepTime:r})}};
|
1
|
+
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FairLaunchSDK=void 0;const e=require("ethers"),i=t(require("./abis/FairLaunch.json")),a=t(require("./contracts.json")),n=require("./utils");exports.FairLaunchSDK=class{constructor(t,r){this.name="FairLaunch",this.isBootstrapped=!1,this._projectToken=null,this._fundingToken=null,this._projectTokenDecimals=null,this._fundingTokenDecimals=null,this.formatEventArgs=async t=>{await this.bootstrap();const{eventName:e,args:i}=t;switch(e){case"Contributed":return{...t,args:{...i,user:i.user.toLowerCase(),amount:Number(i.amount)/10**this._fundingTokenDecimals}};case"SaleEnded":return{...t,args:{...i,totalRaised:Number(i.totalRaised)/10**this._fundingTokenDecimals,tokenPrice:Number(i.tokenPrice)/10**this._fundingTokenDecimals}};case"InitialClaimed":case"VestedClaimed":return{...t,args:{...i,user:i.user.toLowerCase(),amount:Number(i.amount)/10**this._projectTokenDecimals}};case"TradingVaultPositionCreated":return{...t,args:{...i,user:i.user.toLowerCase(),positionId:Number(i.positionId),amount:Number(i.amount)/10**this._fundingTokenDecimals}};case"LiquidityAdded":return{...t,args:{...i,tokenAmount:Number(i.tokenAmount)/10**this._projectTokenDecimals,fundingTokenAmount:Number(i.fundingTokenAmount)/10**this._fundingTokenDecimals}};default:return t}};const o=Array.isArray(t)?t:[t];this.providers=o.map((t=>new e.ethers.JsonRpcProvider(t,void 0,{staticNetwork:!0})));const s=(0,n.getRandomProvider)(this.providers);this.contractAddress=(0,n.resolveContractAddress)(o[0],this.name,a.default,r),this.contract=new e.ethers.Contract(this.contractAddress,i.default.abi,s)}getRandomProvider(){return(0,n.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,i.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,n.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,i)=>t[i])),0===this.providers.length)throw new Error("No active RPC providers available");this._projectToken=await this.contract.projectToken(),this._fundingToken=await this.contract.fundingToken();const[e,i]=await Promise.all([(0,n.getTokenDecimals)(this._projectToken,this.getRandomProvider()),(0,n.getTokenDecimals)(this._fundingToken,this.getRandomProvider())]);this._projectTokenDecimals=e,this._fundingTokenDecimals=i,this.isBootstrapped=!0}async signAndSendTransaction(t,e,i={}){return(0,n.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),i,this.contract)}async buildContributeTx(t,i){await this.bootstrap();const a=e.ethers.parseUnits(t.toString(),this._fundingTokenDecimals);return await this.contract.contribute.populateTransaction(a,i)}async buildEndSaleTx(){return await this.contract.endSale.populateTransaction()}async buildAddLiquidityTx(){return await this.contract.addLiquidity.populateTransaction()}async buildEnableClaimingTx(){return await this.contract.enableClaiming.populateTransaction()}async buildClaimInitialTx(){return await this.contract.claimInitial.populateTransaction()}async buildClaimVestedTx(){return await this.contract.claimVested.populateTransaction()}async buildUpdateLiquidityTokensTx(t){await this.bootstrap();const i=e.ethers.parseUnits(t.toString(),this._projectTokenDecimals);return await this.contract.updateLiquidityTokens.populateTransaction(i)}async buildUpdateLiquidityPercentTx(t){return await this.contract.updateLiquidityPercent.populateTransaction(t)}async buildUpdateInitialClaimPercentTx(t){return await this.contract.updateInitialClaimPercent.populateTransaction(t)}async buildUpdateVestingDurationTx(t){return await this.contract.updateVestingDuration.populateTransaction(t)}async buildUpdateEarlyParticipationWindowTx(t){return await this.contract.updateEarlyParticipationWindow.populateTransaction(t)}async buildWithdrawLPTokensTx(t,e){return await this.contract.withdrawLPTokens.populateTransaction(t,e)}async buildWithdrawERC20Tx(t,i){const a=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),n=await a.decimals(),r=e.ethers.parseUnits(i.toString(),n);return await this.contract.withdrawERC20.populateTransaction(t,r)}async buildApproveERC20Tx(t,i,a){const r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),o=await r.decimals(),s=e.ethers.parseUnits(a.toString(),o);return(0,n.buildApproveERC20Tx)(t,i,s,this.getRandomProvider())}async getSaleInfo(){await this.bootstrap();const[t,e,i,a,n,r,o,s]=await Promise.all([this.contract.startTime(),this.contract.endTime(),this.contract.totalTokensForSale(),this.contract.totalRaised(),this.contract.tokenPrice(),this.contract.saleEnded(),this.contract.claimingEnabled(),this.contract.liquidityAdded()]);return{startTime:Number(t),endTime:Number(e),totalTokensForSale:Number(i)/10**this._projectTokenDecimals,totalRaised:Number(a)/10**this._fundingTokenDecimals,tokenPrice:Number(n)/10**this._fundingTokenDecimals,saleEnded:r,claimingEnabled:o,liquidityAdded:s}}async getUserContribution(t){await this.bootstrap();const e=await this.contract.userContributions(t);return{amount:Number(e.amount)/10**this._fundingTokenDecimals,tokenAllocation:Number(e.tokenAllocation)/10**this._projectTokenDecimals,hasClaimedInitial:e.hasClaimedInitial,vestedClaimed:Number(e.vestedClaimed)/10**this._projectTokenDecimals,tradingVaultId:Number(e.tradingVaultId)}}async getContributorsCount(){return Number(await this.contract.getContributorsCount())}async getContributorAt(t){return await this.contract.getContributorAt(t)}async getAllContributors(){const t=await this.getContributorsCount(),e=[];for(let i=0;i<t;i++)e.push(await this.getContributorAt(i));return e}async getProjectToken(){return this._projectToken||(this._projectToken=await this.contract.projectToken()),this._projectToken}async getFundingToken(){return this._fundingToken||(this._fundingToken=await this.contract.fundingToken()),this._fundingToken}async getTradingVault(){return await this.contract.tradingVault()}async getDexRouter(){return await this.contract.dexRouter()}async getLiquidityTokens(){await this.bootstrap();const t=await this.contract.liquidityTokens();return Number(t)/10**this._projectTokenDecimals}async getLiquidityPercent(){return Number(await this.contract.liquidityPercent())}async getInitialClaimPercent(){return Number(await this.contract.initialClaimPercent())}async getVestingDuration(){return Number(await this.contract.vestingDuration())}async getVestingStartTime(){return Number(await this.contract.vestingStartTime())}async getEarlyParticipationWindow(){return Number(await this.contract.earlyParticipationWindow())}async hasOperatorRole(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.hasRole(e,t)}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantOperatorRoleTx(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getAllowance(t,e,i){const[a,r]=await Promise.all([(0,n.getTokenAllowance)(t,e,i,this.getRandomProvider()),(0,n.getTokenDecimals)(t,this.getRandomProvider())]);return Number(a)/Math.pow(10,r)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,i){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,i)}async streamEvents(t,e,i,a=1e3,r=5e3){const o=["Contributed","SaleEnded","InitialClaimed","VestedClaimed","ClaimingEnabled","LiquidityAdded","TradingVaultPositionCreated"];return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,o),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:i,fromBlock:t,batchSize:a,sleepTime:r})}};
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MultiLevelReferralNFTSDK=void 0;const t=require("ethers"),r=e(require("./abis/NFTTicket.json")),a=e(require("./contracts.json")),s=require("./utils");exports.MultiLevelReferralNFTSDK=class{constructor(e,
|
1
|
+
"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MultiLevelReferralNFTSDK=void 0;const t=require("ethers"),r=e(require("./abis/NFTTicket.json")),a=e(require("./contracts.json")),s=require("./utils");exports.MultiLevelReferralNFTSDK=class{constructor(e,o){this.name="NFTTicket",this.isBootstrapped=!1,this.formatEventArgs=e=>{const{eventName:r,args:a}=e;switch(r){case"NFTMinted":return{...e,args:{...a,owner:a.owner.toLowerCase(),tokenId:Number(a.tokenId)}};case"ReferrerSet":return{...e,args:{...a,referrer:a.referrer.toLowerCase(),referee:a.referee.toLowerCase()}};case"ReferralPaid":return{...e,args:{...a,receiver:a.receiver.toLowerCase(),buyer:a.buyer.toLowerCase(),amount:Number(t.ethers.formatEther(a.amount)),level:Number(a.level),originalAmount:Number(t.ethers.formatEther(a.originalAmount)),tokenId:Number(a.tokenId)}};case"ReferralCodeSet":return{...e,args:{...a,user:a.user.toLowerCase(),referralCode:a.referralCode}};case"MaxReferralLevelsUpdated":return{...e,args:{...a,oldValue:Number(a.oldValue),newValue:Number(a.newValue)}};case"Transfer":return{...e,args:{...a,from:a.from.toLowerCase(),to:a.to.toLowerCase(),tokenId:Number(a.tokenId)}};default:return e}};const n=Array.isArray(e)?e:[e];this.providers=n.map((e=>new t.ethers.JsonRpcProvider(e,void 0,{staticNetwork:!0})));const i=(0,s.getRandomProvider)(this.providers);this.contractAddress=(0,s.resolveContractAddress)(n[0],this.name,a.default,o),this.contract=new t.ethers.Contract(this.contractAddress,r.default.abi,i)}getRandomProvider(){return(0,s.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new t.ethers.Contract(this.contractAddress,r.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const e=await Promise.all(this.providers.map(((e,t)=>(0,s.checkRpcHealth)(e,t))));if(this.providers=this.providers.filter(((t,r)=>e[r])),0===this.providers.length)throw new Error("No active RPC providers available");this.isBootstrapped=!0}async signAndSendTransaction(e,t,r={}){return(0,s.signAndSendTransaction)(e,t,(()=>this.getRandomProvider()),r,this.contract)}async getPrice(){const e=await this.contract.price();return Number(t.ethers.formatEther(e))}async getSharePercent(){const e=await this.contract.sharePercent();return Number(e)}async getMaxReferralLevels(){const e=await this.contract.maxReferralLevels();return Number(e)}async getReferrer(e){return await this.contract.referrers(e)}async getReferralCodeOwner(e){return await this.contract.referralCodes(e)}async getUserReferralCode(e){return await this.contract.userReferralCodes(e)}async buildGenerateReferralCodeTx(){return await this.contract.generateReferralCode.populateTransaction()}async buildGenerateReferralCodeForUserTx(e){return await this.contract.generateReferralCodeForUser.populateTransaction(e)}async buildSetPriceTx(e){const r=t.ethers.parseEther(e.toString());return await this.contract.setPrice.populateTransaction(r)}async buildSetMaxReferralLevelsTx(e){if(await this.bootstrap(),e<1||e>10)throw new Error("Maximum referral levels must be between 1 and 10");return await this.contract.setMaxReferralLevels.populateTransaction(e)}async buildSetSharePercentTx(e){if(await this.bootstrap(),e<0||e>100)throw new Error("Share percentage must be between 0 and 100");return await this.contract.setSharePercent.populateTransaction(e)}async buildBuyNFTTx(e){const r=await this.getPrice(),a=await this.contract.buy.populateTransaction(e);return a.value=t.ethers.parseEther(r.toString()),a}async buildBatchBuyNFTTx(e,r){if(await this.bootstrap(),r<=0)throw new Error("Amount must be greater than 0");const a=await this.getPrice()*r,s=await this.contract.batchBuy.populateTransaction(e,r);return s.value=t.ethers.parseEther(a.toString()),s}async buildWithdrawTx(e){const r=t.ethers.parseEther(e.toString());return await this.contract.withdraw.populateTransaction(r)}async buildMintToTx(e){return await this.bootstrap(),this.contract.mintTo.populateTransaction(e)}async buildBatchMintTx(e,t){return await this.bootstrap(),this.contract.batchMint.populateTransaction(e,t)}async getOwner(){return await this.contract.owner()}getContractAddress(){return this.contractAddress}async getAllEvents(e,t,r){return await this.bootstrap(),(0,s.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),e,t,r)}async streamEvents(e,t,r,a=1e3,o=5e3,n=0,i){return await this.bootstrap(),(0,s.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(e,t)=>this.getAllEvents(e,t),formatEvent:e=>this.formatEventArgs(e),onEvent:t,saveLatestBlock:r,fromBlock:e,batchSize:a,sleepTime:o,whitelistEvents:void 0,shouldContinue:i,blockGap:n})}};
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SeedRoundFundraiserSDK=void 0;const e=require("ethers"),n=t(require("./abis/SeedRoundFundraiser.json")),o=t(require("./contracts.json")),r=require("./utils"),i=t(require("./whitelist-tokens.json"));exports.SeedRoundFundraiserSDK=class{constructor(t,i){this.name="SeedRoundFundraiser",this.isBootstrapped=!1,this.PRICE_PRECISION=1e18,this.whitelistedTokensArray=[],this.projectToken="",this.projectTokenDecimals=0,this.formatEventArgs=t=>{const{eventName:e,args:n}=t;switch(e){case"TokenWhitelisted":return{...t,args:{...n,token:n.token.toLowerCase(),price:Number(n.price)/this.PRICE_PRECISION}};case"TokenPriceUpdated":return{...t,args:{...n,token:n.token.toLowerCase(),oldPrice:Number(n.oldPrice)/this.PRICE_PRECISION,newPrice:Number(n.newPrice)/this.PRICE_PRECISION}};case"TokenRemovedFromWhitelist":return{...t,args:{...n,token:n.token.toLowerCase()}};case"RoundCreated":case"RoundUpdated":return{...t,args:{...n,roundId:Number(n.roundId),startTime:Number(n.startTime),endTime:Number(n.endTime),targetFund:Number(n.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(n.totalAllocation),maxFundPerAccount:Number(n.maxFundPerAccount)/this.PRICE_PRECISION}};case"RoundEnded":return{...t,args:{...n,roundId:Number(n.roundId),raisedFunds:Number(n.raisedFunds)/this.PRICE_PRECISION,participants:Number(n.participants)}};case"Contribution":const e=this.whitelistedTokensArray.find((t=>t.address===n.token)),o=e?.decimals||18;return{...t,args:{...n,roundId:Number(n.roundId),contributor:n.contributor.toLowerCase(),token:n.token.toLowerCase(),symbol:e?.symbol||"ETH",amount:Number(n.amount)/10**o,fundAmount:Number(n.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(n.tokenAllocation)/1e18}};case"TokensClaimed":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),amount:Number(n.amount)}};case"ProjectTokenUpdated":return{...t,args:{...n,oldToken:n.oldToken.toLowerCase(),newToken:n.newToken.toLowerCase()}};case"ClaimingEnabledUpdated":case"RefundEnabledUpdated":return{...t,args:{...n,roundId:Number(n.roundId),enabled:n.enabled}};case"Refunded":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount)}};default:return t}};const a=Array.isArray(t)?t:[t];this.providers=a.map((t=>new e.ethers.JsonRpcProvider(t)));const s=(0,r.getRandomProvider)(this.providers);this.contractAddress=(0,r.resolveContractAddress)(a[0],this.name,o.default,i),this.contract=new e.ethers.Contract(this.contractAddress,n.default.abi,s),this.networkName=(0,r.getNetworkFromRpc)(a[0]),this.importWhitelistedTokens()}importWhitelistedTokens(){try{i.default[this.networkName]?(this.whitelistedTokensArray=i.default[this.networkName].map((t=>({name:t.name,address:t.address.toLowerCase(),decimals:t.decimals,symbol:t.symbol,icon:t.icon}))),console.log(`Imported ${this.whitelistedTokensArray.length} whitelisted tokens for ${this.networkName} network`)):console.log(`No whitelisted tokens found for ${this.networkName} network`)}catch(t){console.error("Error importing whitelisted tokens:",t)}}async getWhitelistedTokenInfo(t,e,n,o,r){const i=t.toLowerCase();if(!this.whitelistedTokensArray.some((t=>t.address===i)))return null;const a=await this.getWhitelistedToken(i);if(!a.isWhitelisted)return null;let s=0,d=0n;return r&&r.roundId>=0&&(d=r.maxFundPerAccountRaw*BigInt(10**n)/a.priceRaw,s=r.maxFundPerAccount/a.price),{address:i,isWhitelisted:a.isWhitelisted,price:a.price,symbol:e,maxContribution:s,maxContributionRaw:d,decimals:n,icon:o}}async getAllWhitelistedTokensInfo(){const t=await this.getLatestRoundId();let e;if(t>=0){const n=await this.getRound(t);n.exists&&!n.ended&&(e={roundId:t,maxFundPerAccount:n.maxFundPerAccount,maxFundPerAccountRaw:n.maxFundPerAccountRaw})}const n=this.whitelistedTokensArray.map((t=>this.getWhitelistedTokenInfo(t.address,t.symbol,t.decimals,t.icon,e)));return(await Promise.all(n)).filter((t=>null!==t))}getRandomProvider(){return(0,r.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,n.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,r.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,n)=>t[n])),0===this.providers.length)throw new Error("No active RPC providers available");this.projectToken=await this.getProjectToken(),this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()),this.isBootstrapped=!0}async signAndSendTransaction(t,e,n={}){return(0,r.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),n,this.contract)}async buildAddWhitelistedTokenTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.addWhitelistedToken.populateTransaction(t,n)}async buildUpdateTokenPriceTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.updateTokenPrice.populateTransaction(t,n)}async buildRemoveWhitelistedTokenTx(t){return await this.contract.removeWhitelistedToken.populateTransaction(t)}async buildCreateRoundTx(t,e,n,o,i){const a=BigInt(Math.floor(n*this.PRICE_PRECISION)),s=BigInt(Math.floor(i*this.PRICE_PRECISION)),d=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),c=BigInt(Math.floor(o*Math.pow(10,d)));return await this.contract.createRound.populateTransaction(t,e,a,c,s)}async buildUpdateRoundTx(t,e,n,o,i,a){const s=BigInt(Math.floor(o*this.PRICE_PRECISION)),d=BigInt(Math.floor(a*this.PRICE_PRECISION)),c=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),u=BigInt(Math.floor(i*Math.pow(10,c)));return await this.contract.updateRound.populateTransaction(t,e,n,s,u,d)}async buildEndRoundTx(t){return await this.contract.endRound.populateTransaction(t)}async buildSetClaimingEnabledTx(t,e){return await this.contract.setClaimingEnabled.populateTransaction(t,e)}async buildSetRefundEnabledTx(t,e){return await this.contract.setRefundEnabled.populateTransaction(t,e)}async buildContributeTx(t,n,o){let i=18;n!==e.ethers.ZeroAddress&&(i=await(0,r.getTokenDecimals)(n,this.getRandomProvider()));const a=e.ethers.parseUnits(o.toString(),i),s=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:a);return n===e.ethers.ZeroAddress&&(s.value=a),s}async buildContributeTxRaw(t,n,o){const r=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:o);return n===e.ethers.ZeroAddress&&(r.value=o),r}async buildWithdrawFundsTx(t,e){const n=await(0,r.getTokenDecimals)(t,this.getRandomProvider()),o=BigInt(Math.floor(e*Math.pow(10,n)));return await this.contract.withdrawFunds.populateTransaction(t,o)}async buildClaimTokensByRoundIdTx(t){return await this.contract.claimTokensByRoundId.populateTransaction(t)}async getWhitelistedToken(t){const e=await this.contract.whitelistedTokens(t);return{isWhitelisted:e.isWhitelisted,price:Number(e.price)/this.PRICE_PRECISION,priceRaw:e.price}}async getRound(t){const e=await this.contract.rounds(t);return this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider())),{startTime:Number(e.startTime),endTime:Number(e.endTime),targetFund:Number(e.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(e.totalAllocation)/10**this.projectTokenDecimals,maxFundPerAccount:Number(e.maxFundPerAccount)/this.PRICE_PRECISION,maxFundPerAccountRaw:e.maxFundPerAccount,exists:e.exists,ended:e.ended,claimingEnabled:e.claimingEnabled,refundEnabled:e.refundEnabled}}async getUserContribution(t,n){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const o=await this.contract.userContributions(t,n);let i=18;return o.contributedToken!==e.ethers.ZeroAddress&&"0x0000000000000000000000000000000000000000"!==o.contributedToken&&(i=await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider())),{fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation)/10**this.projectTokenDecimals,claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/10**i,contributedAmountRaw:o.contributedAmount}}async getRoundRaisedFunds(t){const e=await this.contract.roundRaisedFunds(t);return Number(e)/this.PRICE_PRECISION}async getRoundParticipants(t){const e=await this.contract.roundParticipants(t);return Number(e)}async getUserParticipatedRound(t){const e=await this.contract.userParticipatedRound(t);return Number(e)}async getProjectToken(){return await this.contract.projectToken()}async getTotalRounds(){const t=await this.contract.totalRounds();return Number(t)}async getTotalRaisedFunds(){const t=await this.contract.totalRaisedFunds();return Number(t)/this.PRICE_PRECISION}async isRoundActive(t){return await this.contract.isRoundActive(t)}async getLatestRoundId(){const t=await this.getTotalRounds();return 0===t?-1:t-1}async getRoundInfo(t){const e=await this.getTotalRounds();if(t<0||t>=e)throw new Error(`Invalid round ID: ${t}`);return{roundId:t,config:await this.getRound(t),raisedFunds:await this.getRoundRaisedFunds(t),participants:await this.getRoundParticipants(t),isActive:await this.isRoundActive(t)}}async getUserTotalContribution(t){const e=await this.contract.getUserTotalContribution(t);return{totalFundAmount:Number(e.totalFundAmount)/this.PRICE_PRECISION,totalTokenAllocation:Number(e.totalTokenAllocation)}}async getTransactionStatus(t,e=10){return await(0,r.getTransactionStatus)(this.getRandomProvider(),t,e)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,n){return await this.bootstrap(),(0,r.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,n)}async streamEvents(t,e,n,o=1e3,i=5e3,a=0,s){return await this.bootstrap(),(0,r.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,s),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:n,fromBlock:t,batchSize:o,sleepTime:i,blockGap:a})}async getUserRoundContribution(t,n){const[o,i]=await Promise.all([this.contract.getUserRoundContribution(t,n),this.contract.rounds(t)]),a=o.contributedToken!==e.ethers.ZeroAddress?await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider()):18,s={fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation),claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/a,contributedAmountRaw:o.contributedAmount},d=Math.floor(Date.now()/1e3),c=i.exists&&!i.ended&&d>=Number(i.startTime)&&d<=Number(i.endTime),u={contribution:s,roundInfo:{exists:i.exists,isActive:c,claimingEnabled:i.claimingEnabled,refundEnabled:i.refundEnabled}};if(s.fundAmount>0){const t=s.contributedToken;let n="ETH",o=18;return t!==e.ethers.ZeroAddress&&([n,o]=await Promise.all([(0,r.getTokenSymbol)(t,this.getRandomProvider()),(0,r.getTokenDecimals)(t,this.getRandomProvider())])),{...u,tokenInfo:{symbol:n,decimals:o}}}return u}async buildTransferProjectTokenToContract(t){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const n=new e.ethers.Interface(["function transfer(address to, uint256 amount) returns (bool)"]),o=e.ethers.parseUnits(t.toString(),this.projectTokenDecimals);return{to:this.projectToken,data:n.encodeFunctionData("transfer",[this.contractAddress,o])}}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}};
|
1
|
+
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SeedRoundFundraiserSDK=void 0;const e=require("ethers"),n=t(require("./abis/SeedRoundFundraiser.json")),o=t(require("./contracts.json")),r=require("./utils"),i=t(require("./whitelist-tokens.json"));exports.SeedRoundFundraiserSDK=class{constructor(t,i){this.name="SeedRoundFundraiser",this.isBootstrapped=!1,this.PRICE_PRECISION=1e18,this.whitelistedTokensArray=[],this.projectToken="",this.projectTokenDecimals=0,this.formatEventArgs=t=>{const{eventName:e,args:n}=t;switch(e){case"TokenWhitelisted":return{...t,args:{...n,token:n.token.toLowerCase(),price:Number(n.price)/this.PRICE_PRECISION}};case"TokenPriceUpdated":return{...t,args:{...n,token:n.token.toLowerCase(),oldPrice:Number(n.oldPrice)/this.PRICE_PRECISION,newPrice:Number(n.newPrice)/this.PRICE_PRECISION}};case"TokenRemovedFromWhitelist":return{...t,args:{...n,token:n.token.toLowerCase()}};case"RoundCreated":case"RoundUpdated":return{...t,args:{...n,roundId:Number(n.roundId),startTime:Number(n.startTime),endTime:Number(n.endTime),targetFund:Number(n.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(n.totalAllocation),maxFundPerAccount:Number(n.maxFundPerAccount)/this.PRICE_PRECISION}};case"RoundEnded":return{...t,args:{...n,roundId:Number(n.roundId),raisedFunds:Number(n.raisedFunds)/this.PRICE_PRECISION,participants:Number(n.participants)}};case"Contribution":const e=this.whitelistedTokensArray.find((t=>t.address===n.token)),o=e?.decimals||18;return{...t,args:{...n,roundId:Number(n.roundId),contributor:n.contributor.toLowerCase(),token:n.token.toLowerCase(),symbol:e?.symbol||"ETH",amount:Number(n.amount)/10**o,fundAmount:Number(n.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(n.tokenAllocation)/1e18}};case"TokensClaimed":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),amount:Number(n.amount)}};case"ProjectTokenUpdated":return{...t,args:{...n,oldToken:n.oldToken.toLowerCase(),newToken:n.newToken.toLowerCase()}};case"ClaimingEnabledUpdated":case"RefundEnabledUpdated":return{...t,args:{...n,roundId:Number(n.roundId),enabled:n.enabled}};case"Refunded":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount)}};default:return t}};const a=Array.isArray(t)?t:[t];this.providers=a.map((t=>new e.ethers.JsonRpcProvider(t,void 0,{staticNetwork:!0})));const s=(0,r.getRandomProvider)(this.providers);this.contractAddress=(0,r.resolveContractAddress)(a[0],this.name,o.default,i),this.contract=new e.ethers.Contract(this.contractAddress,n.default.abi,s),this.networkName=(0,r.getNetworkFromRpc)(a[0]),this.importWhitelistedTokens()}importWhitelistedTokens(){try{i.default[this.networkName]?(this.whitelistedTokensArray=i.default[this.networkName].map((t=>({name:t.name,address:t.address.toLowerCase(),decimals:t.decimals,symbol:t.symbol,icon:t.icon}))),console.log(`Imported ${this.whitelistedTokensArray.length} whitelisted tokens for ${this.networkName} network`)):console.log(`No whitelisted tokens found for ${this.networkName} network`)}catch(t){console.error("Error importing whitelisted tokens:",t)}}async getWhitelistedTokenInfo(t,e,n,o,r){const i=t.toLowerCase();if(!this.whitelistedTokensArray.some((t=>t.address===i)))return null;const a=await this.getWhitelistedToken(i);if(!a.isWhitelisted)return null;let s=0,d=0n;return r&&r.roundId>=0&&(d=r.maxFundPerAccountRaw*BigInt(10**n)/a.priceRaw,s=r.maxFundPerAccount/a.price),{address:i,isWhitelisted:a.isWhitelisted,price:a.price,symbol:e,maxContribution:s,maxContributionRaw:d,decimals:n,icon:o}}async getAllWhitelistedTokensInfo(){const t=await this.getLatestRoundId();let e;if(t>=0){const n=await this.getRound(t);n.exists&&!n.ended&&(e={roundId:t,maxFundPerAccount:n.maxFundPerAccount,maxFundPerAccountRaw:n.maxFundPerAccountRaw})}const n=this.whitelistedTokensArray.map((t=>this.getWhitelistedTokenInfo(t.address,t.symbol,t.decimals,t.icon,e)));return(await Promise.all(n)).filter((t=>null!==t))}getRandomProvider(){return(0,r.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,n.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,r.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,n)=>t[n])),0===this.providers.length)throw new Error("No active RPC providers available");this.projectToken=await this.getProjectToken(),this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()),this.isBootstrapped=!0}async signAndSendTransaction(t,e,n={}){return(0,r.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),n,this.contract)}async buildAddWhitelistedTokenTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.addWhitelistedToken.populateTransaction(t,n)}async buildUpdateTokenPriceTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.updateTokenPrice.populateTransaction(t,n)}async buildRemoveWhitelistedTokenTx(t){return await this.contract.removeWhitelistedToken.populateTransaction(t)}async buildCreateRoundTx(t,e,n,o,i){const a=BigInt(Math.floor(n*this.PRICE_PRECISION)),s=BigInt(Math.floor(i*this.PRICE_PRECISION)),d=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),c=BigInt(Math.floor(o*Math.pow(10,d)));return await this.contract.createRound.populateTransaction(t,e,a,c,s)}async buildUpdateRoundTx(t,e,n,o,i,a){const s=BigInt(Math.floor(o*this.PRICE_PRECISION)),d=BigInt(Math.floor(a*this.PRICE_PRECISION)),c=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),u=BigInt(Math.floor(i*Math.pow(10,c)));return await this.contract.updateRound.populateTransaction(t,e,n,s,u,d)}async buildEndRoundTx(t){return await this.contract.endRound.populateTransaction(t)}async buildSetClaimingEnabledTx(t,e){return await this.contract.setClaimingEnabled.populateTransaction(t,e)}async buildSetRefundEnabledTx(t,e){return await this.contract.setRefundEnabled.populateTransaction(t,e)}async buildContributeTx(t,n,o){let i=18;n!==e.ethers.ZeroAddress&&(i=await(0,r.getTokenDecimals)(n,this.getRandomProvider()));const a=e.ethers.parseUnits(o.toString(),i),s=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:a);return n===e.ethers.ZeroAddress&&(s.value=a),s}async buildContributeTxRaw(t,n,o){const r=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:o);return n===e.ethers.ZeroAddress&&(r.value=o),r}async buildWithdrawFundsTx(t,e){const n=await(0,r.getTokenDecimals)(t,this.getRandomProvider()),o=BigInt(Math.floor(e*Math.pow(10,n)));return await this.contract.withdrawFunds.populateTransaction(t,o)}async buildClaimTokensByRoundIdTx(t){return await this.contract.claimTokensByRoundId.populateTransaction(t)}async getWhitelistedToken(t){const e=await this.contract.whitelistedTokens(t);return{isWhitelisted:e.isWhitelisted,price:Number(e.price)/this.PRICE_PRECISION,priceRaw:e.price}}async getRound(t){const e=await this.contract.rounds(t);return this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider())),{startTime:Number(e.startTime),endTime:Number(e.endTime),targetFund:Number(e.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(e.totalAllocation)/10**this.projectTokenDecimals,maxFundPerAccount:Number(e.maxFundPerAccount)/this.PRICE_PRECISION,maxFundPerAccountRaw:e.maxFundPerAccount,exists:e.exists,ended:e.ended,claimingEnabled:e.claimingEnabled,refundEnabled:e.refundEnabled}}async getUserContribution(t,n){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const o=await this.contract.userContributions(t,n);let i=18;return o.contributedToken!==e.ethers.ZeroAddress&&"0x0000000000000000000000000000000000000000"!==o.contributedToken&&(i=await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider())),{fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation)/10**this.projectTokenDecimals,claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/10**i,contributedAmountRaw:o.contributedAmount}}async getRoundRaisedFunds(t){const e=await this.contract.roundRaisedFunds(t);return Number(e)/this.PRICE_PRECISION}async getRoundParticipants(t){const e=await this.contract.roundParticipants(t);return Number(e)}async getUserParticipatedRound(t){const e=await this.contract.userParticipatedRound(t);return Number(e)}async getProjectToken(){return await this.contract.projectToken()}async getTotalRounds(){const t=await this.contract.totalRounds();return Number(t)}async getTotalRaisedFunds(){const t=await this.contract.totalRaisedFunds();return Number(t)/this.PRICE_PRECISION}async isRoundActive(t){return await this.contract.isRoundActive(t)}async getLatestRoundId(){const t=await this.getTotalRounds();return 0===t?-1:t-1}async getRoundInfo(t){const e=await this.getTotalRounds();if(t<0||t>=e)throw new Error(`Invalid round ID: ${t}`);return{roundId:t,config:await this.getRound(t),raisedFunds:await this.getRoundRaisedFunds(t),participants:await this.getRoundParticipants(t),isActive:await this.isRoundActive(t)}}async getUserTotalContribution(t){const e=await this.contract.getUserTotalContribution(t);return{totalFundAmount:Number(e.totalFundAmount)/this.PRICE_PRECISION,totalTokenAllocation:Number(e.totalTokenAllocation)}}async getTransactionStatus(t,e=10){return await(0,r.getTransactionStatus)(this.getRandomProvider(),t,e)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,n){return await this.bootstrap(),(0,r.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,n)}async streamEvents(t,e,n,o=1e3,i=5e3,a=0,s){return await this.bootstrap(),(0,r.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,s),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:n,fromBlock:t,batchSize:o,sleepTime:i,blockGap:a})}async getUserRoundContribution(t,n){const[o,i]=await Promise.all([this.contract.getUserRoundContribution(t,n),this.contract.rounds(t)]),a=o.contributedToken!==e.ethers.ZeroAddress?await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider()):18,s={fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation),claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/a,contributedAmountRaw:o.contributedAmount},d=Math.floor(Date.now()/1e3),c=i.exists&&!i.ended&&d>=Number(i.startTime)&&d<=Number(i.endTime),u={contribution:s,roundInfo:{exists:i.exists,isActive:c,claimingEnabled:i.claimingEnabled,refundEnabled:i.refundEnabled}};if(s.fundAmount>0){const t=s.contributedToken;let n="ETH",o=18;return t!==e.ethers.ZeroAddress&&([n,o]=await Promise.all([(0,r.getTokenSymbol)(t,this.getRandomProvider()),(0,r.getTokenDecimals)(t,this.getRandomProvider())])),{...u,tokenInfo:{symbol:n,decimals:o}}}return u}async buildTransferProjectTokenToContract(t){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const n=new e.ethers.Interface(["function transfer(address to, uint256 amount) returns (bool)"]),o=e.ethers.parseUnits(t.toString(),this.projectTokenDecimals);return{to:this.projectToken,data:n.encodeFunctionData("transfer",[this.contractAddress,o])}}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}};
|
@@ -86,6 +86,11 @@
|
|
86
86
|
"name": "InvalidInitialization",
|
87
87
|
"type": "error"
|
88
88
|
},
|
89
|
+
{
|
90
|
+
"inputs": [],
|
91
|
+
"name": "InvalidNonce",
|
92
|
+
"type": "error"
|
93
|
+
},
|
89
94
|
{
|
90
95
|
"inputs": [],
|
91
96
|
"name": "InvalidOperator",
|
@@ -874,17 +879,17 @@
|
|
874
879
|
{
|
875
880
|
"inputs": [
|
876
881
|
{
|
877
|
-
"internalType": "
|
882
|
+
"internalType": "address",
|
878
883
|
"name": "",
|
879
|
-
"type": "
|
884
|
+
"type": "address"
|
880
885
|
}
|
881
886
|
],
|
882
|
-
"name": "
|
887
|
+
"name": "userNonces",
|
883
888
|
"outputs": [
|
884
889
|
{
|
885
|
-
"internalType": "
|
890
|
+
"internalType": "uint256",
|
886
891
|
"name": "",
|
887
|
-
"type": "
|
892
|
+
"type": "uint256"
|
888
893
|
}
|
889
894
|
],
|
890
895
|
"stateMutability": "view",
|
@@ -929,8 +934,8 @@
|
|
929
934
|
"type": "function"
|
930
935
|
}
|
931
936
|
],
|
932
|
-
"bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161194490816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610cb8575080630cd4884b14610c7e5780630e15561a14610c605780630e316ab714610c3757806314d6aed014610c23578063248a9ca314610bfd5780632e17de7814610b7a5780632f2ff15d14610b4957806336568abe14610b035780633a4b66f114610a465780633d840ef6146109c15780633f4ba83a1461093e578063420ed8ea146108fb5780635c975abb146108cb5780636386c1c71461087f578063715018a6146108155780637e69954e14610761578063817b1cd2146107435780638456cb59146106cf5780638da5cb5b146106995780638da7ad231461065f57806391d1485414610605578063a1ebf35d146105ca578063a217fddf146105ae578063d547741f14610578578063e8c153291461055a578063eb12d61e146104f7578063eb4af045146104a3578063eb990c5914610270578063f188768414610252578063f2fde38b14610227578063f5b541a6146101ec578063f978fd61146101bb5763facea9c51461019557600080fd5b346101b65760203660031901126101b6576101ae610ef6565b600435600255005b600080fd5b346101b65760203660031901126101b6576004356000526006602052602060ff604060002054166040519015158152f35b346101b65760003660031901126101b65760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b346101b65760203660031901126101b657610250610243610d0b565b61024b611671565b610e2d565b005b346101b65760003660031901126101b6576020600354604051908152f35b346101b65760803660031901126101b657610289610d0b565b610291610d21565b90606435916000805160206118ef833981519152549260ff8460401c16159367ffffffffffffffff81168015908161049b575b6001149081610491575b159081610488575b506104775767ffffffffffffffff1981166001176000805160206118ef833981519152558461044a575b506103096116a7565b6103116116a7565b61031a83610e2d565b6103226116a7565b61032a6116a7565b6103326116a7565b60016000805160206118cf8339815191525561034c6116a7565b6001600160a01b038216908115610439576103a76040936103977f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d966044356002558460035561127b565b506103a133611315565b506111e3565b508251917f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2600082526020820152a16103e057005b68ff0000000000000000196000805160206118ef83398151915254166000805160206118ef833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ccea9e6f60e01b60005260046000fd5b68ffffffffffffffffff191668010000000000000001176000805160206118ef8339815191525584610300565b63f92ee8a960e01b60005260046000fd5b905015866102d6565b303b1591506102ce565b8691506102c4565b346101b65760203660031901126101b6577f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d60406004356104e2610ef6565b600354908060035582519182526020820152a1005b346101b65760203660031901126101b657610510610d0b565b610518610ea3565b6001600160a01b03811690811561043957610532906111e3565b507f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2005b346101b65760003660031901126101b6576020600254604051908152f35b346101b65760403660031901126101b657610250600435610597610d21565b906105a96105a482610d65565b610f68565b611060565b346101b65760003660031901126101b657602060405160008152f35b346101b65760003660031901126101b65760206040517fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f708152f35b346101b65760403660031901126101b65761061e610d21565b60043560005260008051602061188f83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b65760203660031901126101b6576001600160a01b03610680610d0b565b1660005260046020526020604060002054604051908152f35b346101b65760003660031901126101b65760008051602061184f833981519152546040516001600160a01b039091168152602090f35b346101b65760003660031901126101b6576106e8610ea3565b6106f0611461565b600160ff196000805160206118af8339815191525416176000805160206118af833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101b65760003660031901126101b6576020600054604051908152f35b346101b65760803660031901126101b65760043560643567ffffffffffffffff81116101b6576107986107b6913690600401610d37565b906107a1611107565b6107a9611461565b604435602435853361148b565b8147106108045760008080846107ce82958233611605565b335af16107d9610dda565b50156107f35760016000805160206118cf83398151915255005b6312171d8360e31b60005260046000fd5b63786e0a9960e01b60005260046000fd5b346101b65760003660031901126101b65761082e611671565b60008051602061184f83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b65760203660031901126101b65760406001600160a01b036108a2610d0b565b168060005260046020528160002054906000526005602052816000205482519182526020820152f35b346101b65760003660031901126101b657602060ff6000805160206118af83398151915254166040519015158152f35b346101b65760203660031901126101b6576000808080610919610d0b565b610921610ea3565b47906001600160a01b03165af1610936610dda565b50156107f357005b346101b65760003660031901126101b657610957610ea3565b6000805160206118af8339815191525460ff8116156109b05760ff19166000805160206118af833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b60005260046000fd5b346101b65760a03660031901126101b65760043560243560843567ffffffffffffffff81116101b6576109fb610a11913690600401610d37565b90610a04611107565b606435604435853361148b565b9047610a1d8285610e0a565b1161080457600080806107ce819487610a4188610a3a8333611150565b8333611605565b610e0a565b60003660031901126101b657610a5a611107565b610a62611461565b3415610af2576003543410610ae1573360005260046020526040600020610a8a348254610e0a565b9055610a9834600054610e0a565b6000556040513481524260208201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9060403392a260016000805160206118cf83398151915255005b638ecf3d0360e01b60005260046000fd5b631f2a200560e01b60005260046000fd5b346101b65760403660031901126101b657610b1c610d21565b336001600160a01b03821603610b385761025090600435611060565b63334bd91960e11b60005260046000fd5b346101b65760403660031901126101b657610250600435610b68610d21565b90610b756105a482610d65565b6113d1565b346101b65760203660031901126101b657600435610b96611107565b610ba08133611150565b600080808084335af1610bb1610dda565b50156107f3576040519081524260208201527f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e60403392a260016000805160206118cf83398151915255005b346101b65760203660031901126101b6576020610c1b600435610d65565b604051908152f35b60003660031901126101b6573415610af257005b346101b65760203660031901126101b657610250610c53610d0b565b610c5b610ea3565b610fb2565b346101b65760003660031901126101b6576020600154604051908152f35b346101b65760203660031901126101b6576001600160a01b03610c9f610d0b565b1660005260056020526020604060002054604051908152f35b346101b65760203660031901126101b6576004359063ffffffff60e01b82168092036101b657602091637965db0b60e01b8114908115610cfa575b5015158152f35b6301ffc9a760e01b14905083610cf3565b600435906001600160a01b03821682036101b657565b602435906001600160a01b03821682036101b657565b9181601f840112156101b65782359167ffffffffffffffff83116101b657602083818601950101116101b657565b60005260008051602061188f83398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff821117610da857604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610da857601f01601f191660200190565b3d15610e05573d90610deb82610dbe565b91610df96040519384610d86565b82523d6000602084013e565b606090565b91908201809211610e1757565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03168015610e8d5760008051602061184f83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615610edc57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615610f2f57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b600081815260008051602061188f8339815191526020908152604080832033845290915290205460ff1615610f9a5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff161561105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191690553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b50600090565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff161561110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b5050600090565b60026000805160206118cf83398151915254146111325760026000805160206118cf83398151915255565b633ee5aeb560e01b60005260046000fd5b91908203918211610e1757565b8115610af2576001600160a01b031660008181526004602052604090205490919081116111d25760407f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e91836000526004602052816000206111b3828254611143565b90556111c181600054611143565b6000558151908152426020820152a2565b6378de4a6960e11b60005260046000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff1661105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191660011790553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f709060008051602061182f8339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1661105a576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff1916600117905533919060008051602061182f8339815191528180a4600190565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1661105a576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060008051602061182f8339815191529080a4600190565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff1661110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff191660011790553392919060008051602061182f8339815191529080a4600190565b60ff6000805160206118af833981519152541661147a57565b63d93c066560e01b60005260046000fd5b9290919493948215610af25760025483116115f4578142116115e3576040519260208401943060601b86526bffffffffffffffffffffffff199060601b166034850152604884015260688301526088820152608881526114ec60a882610d86565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000209182600052600660205260ff604060002054166115d25761153b82610dbe565b6115486040519182610d86565b82815236838301116101b65760006020846115789561156f958386013783010152836116d5565b90929192611711565b6001600160a01b0316600090815260008051602061186f833981519152602052604090205460ff16156115c1578060005260066020526040600020600160ff1982541617905590565b638baa579f60e01b60005260046000fd5b630d75493360e01b60005260046000fd5b630819bdcd60e01b60005260046000fd5b636d363c4560e01b60005260046000fd5b7f41e99e9dc0d7cfce35db1b179b2938d186cbc127e72e9058202a7159ff3b44d69160609160018060a01b031693846000526005602052604060002061164c838254610e0a565b905561165a82600154610e0a565b6001556040519182524260208301526040820152a2565b60008051602061184f833981519152546001600160a01b0316330361169257565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206118ef8339815191525460401c16156116c457565b631afcd79f60e31b60005260046000fd5b8151919060418303611706576116ff92506020820151906060604084015193015160001a90611799565b9192909190565b505060009160029190565b9190916004811015611783578061172757509050565b6000600182036117425763f645eedf60e01b60005260046000fd5b5060028103611760578263fce698f760e01b60005260045260246000fd5b9091600360009214611770575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611822579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15611816576000516001600160a01b0381161561180a5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ed82e8858f919528fd86c81da277f0812ef4876fae8bc5251645af9640d3f49f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203943c117bee9f8422e1fc19e8a213361f03eaf44333381ea7426c465b3f9e81e64736f6c634300081c0033",
|
933
|
-
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610cb8575080630cd4884b14610c7e5780630e15561a14610c605780630e316ab714610c3757806314d6aed014610c23578063248a9ca314610bfd5780632e17de7814610b7a5780632f2ff15d14610b4957806336568abe14610b035780633a4b66f114610a465780633d840ef6146109c15780633f4ba83a1461093e578063420ed8ea146108fb5780635c975abb146108cb5780636386c1c71461087f578063715018a6146108155780637e69954e14610761578063817b1cd2146107435780638456cb59146106cf5780638da5cb5b146106995780638da7ad231461065f57806391d1485414610605578063a1ebf35d146105ca578063a217fddf146105ae578063d547741f14610578578063e8c153291461055a578063eb12d61e146104f7578063eb4af045146104a3578063eb990c5914610270578063f188768414610252578063f2fde38b14610227578063f5b541a6146101ec578063f978fd61146101bb5763facea9c51461019557600080fd5b346101b65760203660031901126101b6576101ae610ef6565b600435600255005b600080fd5b346101b65760203660031901126101b6576004356000526006602052602060ff604060002054166040519015158152f35b346101b65760003660031901126101b65760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b346101b65760203660031901126101b657610250610243610d0b565b61024b611671565b610e2d565b005b346101b65760003660031901126101b6576020600354604051908152f35b346101b65760803660031901126101b657610289610d0b565b610291610d21565b90606435916000805160206118ef833981519152549260ff8460401c16159367ffffffffffffffff81168015908161049b575b6001149081610491575b159081610488575b506104775767ffffffffffffffff1981166001176000805160206118ef833981519152558461044a575b506103096116a7565b6103116116a7565b61031a83610e2d565b6103226116a7565b61032a6116a7565b6103326116a7565b60016000805160206118cf8339815191525561034c6116a7565b6001600160a01b038216908115610439576103a76040936103977f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d966044356002558460035561127b565b506103a133611315565b506111e3565b508251917f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2600082526020820152a16103e057005b68ff0000000000000000196000805160206118ef83398151915254166000805160206118ef833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ccea9e6f60e01b60005260046000fd5b68ffffffffffffffffff191668010000000000000001176000805160206118ef8339815191525584610300565b63f92ee8a960e01b60005260046000fd5b905015866102d6565b303b1591506102ce565b8691506102c4565b346101b65760203660031901126101b6577f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d60406004356104e2610ef6565b600354908060035582519182526020820152a1005b346101b65760203660031901126101b657610510610d0b565b610518610ea3565b6001600160a01b03811690811561043957610532906111e3565b507f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2005b346101b65760003660031901126101b6576020600254604051908152f35b346101b65760403660031901126101b657610250600435610597610d21565b906105a96105a482610d65565b610f68565b611060565b346101b65760003660031901126101b657602060405160008152f35b346101b65760003660031901126101b65760206040517fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f708152f35b346101b65760403660031901126101b65761061e610d21565b60043560005260008051602061188f83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b65760203660031901126101b6576001600160a01b03610680610d0b565b1660005260046020526020604060002054604051908152f35b346101b65760003660031901126101b65760008051602061184f833981519152546040516001600160a01b039091168152602090f35b346101b65760003660031901126101b6576106e8610ea3565b6106f0611461565b600160ff196000805160206118af8339815191525416176000805160206118af833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101b65760003660031901126101b6576020600054604051908152f35b346101b65760803660031901126101b65760043560643567ffffffffffffffff81116101b6576107986107b6913690600401610d37565b906107a1611107565b6107a9611461565b604435602435853361148b565b8147106108045760008080846107ce82958233611605565b335af16107d9610dda565b50156107f35760016000805160206118cf83398151915255005b6312171d8360e31b60005260046000fd5b63786e0a9960e01b60005260046000fd5b346101b65760003660031901126101b65761082e611671565b60008051602061184f83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b65760203660031901126101b65760406001600160a01b036108a2610d0b565b168060005260046020528160002054906000526005602052816000205482519182526020820152f35b346101b65760003660031901126101b657602060ff6000805160206118af83398151915254166040519015158152f35b346101b65760203660031901126101b6576000808080610919610d0b565b610921610ea3565b47906001600160a01b03165af1610936610dda565b50156107f357005b346101b65760003660031901126101b657610957610ea3565b6000805160206118af8339815191525460ff8116156109b05760ff19166000805160206118af833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b60005260046000fd5b346101b65760a03660031901126101b65760043560243560843567ffffffffffffffff81116101b6576109fb610a11913690600401610d37565b90610a04611107565b606435604435853361148b565b9047610a1d8285610e0a565b1161080457600080806107ce819487610a4188610a3a8333611150565b8333611605565b610e0a565b60003660031901126101b657610a5a611107565b610a62611461565b3415610af2576003543410610ae1573360005260046020526040600020610a8a348254610e0a565b9055610a9834600054610e0a565b6000556040513481524260208201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9060403392a260016000805160206118cf83398151915255005b638ecf3d0360e01b60005260046000fd5b631f2a200560e01b60005260046000fd5b346101b65760403660031901126101b657610b1c610d21565b336001600160a01b03821603610b385761025090600435611060565b63334bd91960e11b60005260046000fd5b346101b65760403660031901126101b657610250600435610b68610d21565b90610b756105a482610d65565b6113d1565b346101b65760203660031901126101b657600435610b96611107565b610ba08133611150565b600080808084335af1610bb1610dda565b50156107f3576040519081524260208201527f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e60403392a260016000805160206118cf83398151915255005b346101b65760203660031901126101b6576020610c1b600435610d65565b604051908152f35b60003660031901126101b6573415610af257005b346101b65760203660031901126101b657610250610c53610d0b565b610c5b610ea3565b610fb2565b346101b65760003660031901126101b6576020600154604051908152f35b346101b65760203660031901126101b6576001600160a01b03610c9f610d0b565b1660005260056020526020604060002054604051908152f35b346101b65760203660031901126101b6576004359063ffffffff60e01b82168092036101b657602091637965db0b60e01b8114908115610cfa575b5015158152f35b6301ffc9a760e01b14905083610cf3565b600435906001600160a01b03821682036101b657565b602435906001600160a01b03821682036101b657565b9181601f840112156101b65782359167ffffffffffffffff83116101b657602083818601950101116101b657565b60005260008051602061188f83398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff821117610da857604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610da857601f01601f191660200190565b3d15610e05573d90610deb82610dbe565b91610df96040519384610d86565b82523d6000602084013e565b606090565b91908201809211610e1757565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03168015610e8d5760008051602061184f83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615610edc57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615610f2f57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b600081815260008051602061188f8339815191526020908152604080832033845290915290205460ff1615610f9a5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff161561105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191690553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b50600090565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff161561110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b5050600090565b60026000805160206118cf83398151915254146111325760026000805160206118cf83398151915255565b633ee5aeb560e01b60005260046000fd5b91908203918211610e1757565b8115610af2576001600160a01b031660008181526004602052604090205490919081116111d25760407f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e91836000526004602052816000206111b3828254611143565b90556111c181600054611143565b6000558151908152426020820152a2565b6378de4a6960e11b60005260046000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff1661105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191660011790553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f709060008051602061182f8339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1661105a576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff1916600117905533919060008051602061182f8339815191528180a4600190565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1661105a576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060008051602061182f8339815191529080a4600190565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff1661110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff191660011790553392919060008051602061182f8339815191529080a4600190565b60ff6000805160206118af833981519152541661147a57565b63d93c066560e01b60005260046000fd5b9290919493948215610af25760025483116115f4578142116115e3576040519260208401943060601b86526bffffffffffffffffffffffff199060601b166034850152604884015260688301526088820152608881526114ec60a882610d86565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000209182600052600660205260ff604060002054166115d25761153b82610dbe565b6115486040519182610d86565b82815236838301116101b65760006020846115789561156f958386013783010152836116d5565b90929192611711565b6001600160a01b0316600090815260008051602061186f833981519152602052604090205460ff16156115c1578060005260066020526040600020600160ff1982541617905590565b638baa579f60e01b60005260046000fd5b630d75493360e01b60005260046000fd5b630819bdcd60e01b60005260046000fd5b636d363c4560e01b60005260046000fd5b7f41e99e9dc0d7cfce35db1b179b2938d186cbc127e72e9058202a7159ff3b44d69160609160018060a01b031693846000526005602052604060002061164c838254610e0a565b905561165a82600154610e0a565b6001556040519182524260208301526040820152a2565b60008051602061184f833981519152546001600160a01b0316330361169257565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206118ef8339815191525460401c16156116c457565b631afcd79f60e31b60005260046000fd5b8151919060418303611706576116ff92506020820151906060604084015193015160001a90611799565b9192909190565b505060009160029190565b9190916004811015611783578061172757509050565b6000600182036117425763f645eedf60e01b60005260046000fd5b5060028103611760578263fce698f760e01b60005260045260246000fd5b9091600360009214611770575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611822579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15611816576000516001600160a01b0381161561180a5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ed82e8858f919528fd86c81da277f0812ef4876fae8bc5251645af9640d3f49f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203943c117bee9f8422e1fc19e8a213361f03eaf44333381ea7426c465b3f9e81e64736f6c634300081c0033",
|
937
|
+
"bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161195b90816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610cc1575080630cd4884b14610c875780630e15561a14610c695780630e316ab714610c4057806314d6aed014610c2c578063248a9ca314610c065780632e17de7814610b835780632f2ff15d14610b525780632f7801f414610b1857806336568abe14610ad25780633a4b66f114610a155780633d840ef6146109905780633f4ba83a1461090d578063420ed8ea146108ca5780635c975abb1461089a5780636386c1c71461084e578063715018a6146107e45780637e69954e14610730578063817b1cd2146107125780638456cb591461069e5780638da5cb5b146106685780638da7ad231461062e57806391d14854146105d4578063a1ebf35d14610599578063a217fddf1461057d578063d547741f14610547578063e8c1532914610529578063eb12d61e146104c6578063eb4af04514610472578063eb990c591461023f578063f188768414610221578063f2fde38b146101f6578063f5b541a6146101bb5763facea9c51461019557600080fd5b346101b65760203660031901126101b6576101ae610eff565b600435600255005b600080fd5b346101b65760003660031901126101b65760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b346101b65760203660031901126101b65761021f610212610d14565b61021a611688565b610e36565b005b346101b65760003660031901126101b6576020600354604051908152f35b346101b65760803660031901126101b657610258610d14565b610260610d2a565b9060643591600080516020611906833981519152549260ff8460401c16159367ffffffffffffffff81168015908161046a575b6001149081610460575b159081610457575b506104465767ffffffffffffffff1981166001176000805160206119068339815191525584610419575b506102d86116be565b6102e06116be565b6102e983610e36565b6102f16116be565b6102f96116be565b6103016116be565b60016000805160206118e68339815191525561031b6116be565b6001600160a01b038216908115610408576103766040936103667f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d9660443560025584600355611284565b506103703361131e565b506111ec565b508251917f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2600082526020820152a16103af57005b68ff0000000000000000196000805160206119068339815191525416600080516020611906833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ccea9e6f60e01b60005260046000fd5b68ffffffffffffffffff1916680100000000000000011760008051602061190683398151915255846102cf565b63f92ee8a960e01b60005260046000fd5b905015866102a5565b303b15915061029d565b869150610293565b346101b65760203660031901126101b6577f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d60406004356104b1610eff565b600354908060035582519182526020820152a1005b346101b65760203660031901126101b6576104df610d14565b6104e7610eac565b6001600160a01b03811690811561040857610501906111ec565b507f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2005b346101b65760003660031901126101b6576020600254604051908152f35b346101b65760403660031901126101b65761021f600435610566610d2a565b9061057861057382610d6e565b610f71565b611069565b346101b65760003660031901126101b657602060405160008152f35b346101b65760003660031901126101b65760206040517fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f708152f35b346101b65760403660031901126101b6576105ed610d2a565b6004356000526000805160206118a683398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b65760203660031901126101b6576001600160a01b0361064f610d14565b1660005260046020526020604060002054604051908152f35b346101b65760003660031901126101b657600080516020611866833981519152546040516001600160a01b039091168152602090f35b346101b65760003660031901126101b6576106b7610eac565b6106bf61146a565b600160ff196000805160206118c68339815191525416176000805160206118c6833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101b65760003660031901126101b6576020600054604051908152f35b346101b65760803660031901126101b65760043560643567ffffffffffffffff81116101b657610767610785913690600401610d40565b90610770611110565b61077861146a565b6044356024358533611494565b8147106107d357600080808461079d8295823361161c565b335af16107a8610de3565b50156107c25760016000805160206118e683398151915255005b6312171d8360e31b60005260046000fd5b63786e0a9960e01b60005260046000fd5b346101b65760003660031901126101b6576107fd611688565b60008051602061186683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b65760203660031901126101b65760406001600160a01b03610871610d14565b168060005260046020528160002054906000526005602052816000205482519182526020820152f35b346101b65760003660031901126101b657602060ff6000805160206118c683398151915254166040519015158152f35b346101b65760203660031901126101b65760008080806108e8610d14565b6108f0610eac565b47906001600160a01b03165af1610905610de3565b50156107c257005b346101b65760003660031901126101b657610926610eac565b6000805160206118c68339815191525460ff81161561097f5760ff19166000805160206118c6833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b60005260046000fd5b346101b65760a03660031901126101b65760043560243560843567ffffffffffffffff81116101b6576109ca6109e0913690600401610d40565b906109d3611110565b6064356044358533611494565b90476109ec8285610e13565b116107d3576000808061079d819487610a1088610a098333611159565b833361161c565b610e13565b60003660031901126101b657610a29611110565b610a3161146a565b3415610ac1576003543410610ab0573360005260046020526040600020610a59348254610e13565b9055610a6734600054610e13565b6000556040513481524260208201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9060403392a260016000805160206118e683398151915255005b638ecf3d0360e01b60005260046000fd5b631f2a200560e01b60005260046000fd5b346101b65760403660031901126101b657610aeb610d2a565b336001600160a01b03821603610b075761021f90600435611069565b63334bd91960e11b60005260046000fd5b346101b65760203660031901126101b6576001600160a01b03610b39610d14565b1660005260066020526020604060002054604051908152f35b346101b65760403660031901126101b65761021f600435610b71610d2a565b90610b7e61057382610d6e565b6113da565b346101b65760203660031901126101b657600435610b9f611110565b610ba98133611159565b600080808084335af1610bba610de3565b50156107c2576040519081524260208201527f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e60403392a260016000805160206118e683398151915255005b346101b65760203660031901126101b6576020610c24600435610d6e565b604051908152f35b60003660031901126101b6573415610ac157005b346101b65760203660031901126101b65761021f610c5c610d14565b610c64610eac565b610fbb565b346101b65760003660031901126101b6576020600154604051908152f35b346101b65760203660031901126101b6576001600160a01b03610ca8610d14565b1660005260056020526020604060002054604051908152f35b346101b65760203660031901126101b6576004359063ffffffff60e01b82168092036101b657602091637965db0b60e01b8114908115610d03575b5015158152f35b6301ffc9a760e01b14905083610cfc565b600435906001600160a01b03821682036101b657565b602435906001600160a01b03821682036101b657565b9181601f840112156101b65782359167ffffffffffffffff83116101b657602083818601950101116101b657565b6000526000805160206118a683398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff821117610db157604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610db157601f01601f191660200190565b3d15610e0e573d90610df482610dc7565b91610e026040519384610d8f565b82523d6000602084013e565b606090565b91908201809211610e2057565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03168015610e965760008051602061186683398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615610ee557565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615610f3857565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b60008181526000805160206118a68339815191526020908152604080832033845290915290205460ff1615610fa35750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b0381166000908152600080516020611886833981519152602052604090205460ff1615611063576001600160a01b0316600081815260008051602061188683398151915260205260408120805460ff191690553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b50600090565b60008181526000805160206118a6833981519152602090815260408083206001600160a01b038616845290915290205460ff16156111095760008181526000805160206118a6833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b5050600090565b60026000805160206118e6833981519152541461113b5760026000805160206118e683398151915255565b633ee5aeb560e01b60005260046000fd5b91908203918211610e2057565b8115610ac1576001600160a01b031660008181526004602052604090205490919081116111db5760407f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e91836000526004602052816000206111bc82825461114c565b90556111ca8160005461114c565b6000558151908152426020820152a2565b6378de4a6960e11b60005260046000fd5b6001600160a01b0381166000908152600080516020611886833981519152602052604090205460ff16611063576001600160a01b0316600081815260008051602061188683398151915260205260408120805460ff191660011790553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70906000805160206118468339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16611063576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206118468339815191528180a4600190565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16611063576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206118468339815191529080a4600190565b60008181526000805160206118a6833981519152602090815260408083206001600160a01b038616845290915290205460ff166111095760008181526000805160206118a6833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206118468339815191529080a4600190565b60ff6000805160206118c6833981519152541661148357565b63d93c066560e01b60005260046000fd5b919394928115610ac157600254821161160b578042116115fa576001600160a01b03831660008181526006602052604090205490959081036115e9576040519260208401943060601b86526bffffffffffffffffffffffff199060601b1660348501526048840152606883015260888201526088815261151560a882610d8f565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000209261154e82610dc7565b61155b6040519182610d8f565b82815236838301116101b657600060208461158b95611582958386013783010152846116ec565b90929192611728565b6001600160a01b03166000908152600080516020611886833981519152602052604090205460ff16156115d8576000526006602052604060002080546000198114610e2057600101905590565b638baa579f60e01b60005260046000fd5b633ab3447f60e11b60005260046000fd5b630819bdcd60e01b60005260046000fd5b636d363c4560e01b60005260046000fd5b7f41e99e9dc0d7cfce35db1b179b2938d186cbc127e72e9058202a7159ff3b44d69160609160018060a01b0316938460005260056020526040600020611663838254610e13565b905561167182600154610e13565b6001556040519182524260208301526040820152a2565b600080516020611866833981519152546001600160a01b031633036116a957565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206119068339815191525460401c16156116db57565b631afcd79f60e31b60005260046000fd5b815191906041830361171d5761171692506020820151906060604084015193015160001a906117b0565b9192909190565b505060009160029190565b919091600481101561179a578061173e57509050565b6000600182036117595763f645eedf60e01b60005260046000fd5b5060028103611777578263fce698f760e01b60005260045260246000fd5b9091600360009214611787575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611839579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa1561182d576000516001600160a01b038116156118215790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ed82e8858f919528fd86c81da277f0812ef4876fae8bc5251645af9640d3f49f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220558fda1858d2bf95d755ef762ffc8bb34086b71c82967d295cccffbf663472cd64736f6c634300081c0033",
|
938
|
+
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610cc1575080630cd4884b14610c875780630e15561a14610c695780630e316ab714610c4057806314d6aed014610c2c578063248a9ca314610c065780632e17de7814610b835780632f2ff15d14610b525780632f7801f414610b1857806336568abe14610ad25780633a4b66f114610a155780633d840ef6146109905780633f4ba83a1461090d578063420ed8ea146108ca5780635c975abb1461089a5780636386c1c71461084e578063715018a6146107e45780637e69954e14610730578063817b1cd2146107125780638456cb591461069e5780638da5cb5b146106685780638da7ad231461062e57806391d14854146105d4578063a1ebf35d14610599578063a217fddf1461057d578063d547741f14610547578063e8c1532914610529578063eb12d61e146104c6578063eb4af04514610472578063eb990c591461023f578063f188768414610221578063f2fde38b146101f6578063f5b541a6146101bb5763facea9c51461019557600080fd5b346101b65760203660031901126101b6576101ae610eff565b600435600255005b600080fd5b346101b65760003660031901126101b65760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b346101b65760203660031901126101b65761021f610212610d14565b61021a611688565b610e36565b005b346101b65760003660031901126101b6576020600354604051908152f35b346101b65760803660031901126101b657610258610d14565b610260610d2a565b9060643591600080516020611906833981519152549260ff8460401c16159367ffffffffffffffff81168015908161046a575b6001149081610460575b159081610457575b506104465767ffffffffffffffff1981166001176000805160206119068339815191525584610419575b506102d86116be565b6102e06116be565b6102e983610e36565b6102f16116be565b6102f96116be565b6103016116be565b60016000805160206118e68339815191525561031b6116be565b6001600160a01b038216908115610408576103766040936103667f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d9660443560025584600355611284565b506103703361131e565b506111ec565b508251917f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2600082526020820152a16103af57005b68ff0000000000000000196000805160206119068339815191525416600080516020611906833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ccea9e6f60e01b60005260046000fd5b68ffffffffffffffffff1916680100000000000000011760008051602061190683398151915255846102cf565b63f92ee8a960e01b60005260046000fd5b905015866102a5565b303b15915061029d565b869150610293565b346101b65760203660031901126101b6577f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d60406004356104b1610eff565b600354908060035582519182526020820152a1005b346101b65760203660031901126101b6576104df610d14565b6104e7610eac565b6001600160a01b03811690811561040857610501906111ec565b507f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2005b346101b65760003660031901126101b6576020600254604051908152f35b346101b65760403660031901126101b65761021f600435610566610d2a565b9061057861057382610d6e565b610f71565b611069565b346101b65760003660031901126101b657602060405160008152f35b346101b65760003660031901126101b65760206040517fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f708152f35b346101b65760403660031901126101b6576105ed610d2a565b6004356000526000805160206118a683398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b65760203660031901126101b6576001600160a01b0361064f610d14565b1660005260046020526020604060002054604051908152f35b346101b65760003660031901126101b657600080516020611866833981519152546040516001600160a01b039091168152602090f35b346101b65760003660031901126101b6576106b7610eac565b6106bf61146a565b600160ff196000805160206118c68339815191525416176000805160206118c6833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101b65760003660031901126101b6576020600054604051908152f35b346101b65760803660031901126101b65760043560643567ffffffffffffffff81116101b657610767610785913690600401610d40565b90610770611110565b61077861146a565b6044356024358533611494565b8147106107d357600080808461079d8295823361161c565b335af16107a8610de3565b50156107c25760016000805160206118e683398151915255005b6312171d8360e31b60005260046000fd5b63786e0a9960e01b60005260046000fd5b346101b65760003660031901126101b6576107fd611688565b60008051602061186683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b65760203660031901126101b65760406001600160a01b03610871610d14565b168060005260046020528160002054906000526005602052816000205482519182526020820152f35b346101b65760003660031901126101b657602060ff6000805160206118c683398151915254166040519015158152f35b346101b65760203660031901126101b65760008080806108e8610d14565b6108f0610eac565b47906001600160a01b03165af1610905610de3565b50156107c257005b346101b65760003660031901126101b657610926610eac565b6000805160206118c68339815191525460ff81161561097f5760ff19166000805160206118c6833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b60005260046000fd5b346101b65760a03660031901126101b65760043560243560843567ffffffffffffffff81116101b6576109ca6109e0913690600401610d40565b906109d3611110565b6064356044358533611494565b90476109ec8285610e13565b116107d3576000808061079d819487610a1088610a098333611159565b833361161c565b610e13565b60003660031901126101b657610a29611110565b610a3161146a565b3415610ac1576003543410610ab0573360005260046020526040600020610a59348254610e13565b9055610a6734600054610e13565b6000556040513481524260208201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9060403392a260016000805160206118e683398151915255005b638ecf3d0360e01b60005260046000fd5b631f2a200560e01b60005260046000fd5b346101b65760403660031901126101b657610aeb610d2a565b336001600160a01b03821603610b075761021f90600435611069565b63334bd91960e11b60005260046000fd5b346101b65760203660031901126101b6576001600160a01b03610b39610d14565b1660005260066020526020604060002054604051908152f35b346101b65760403660031901126101b65761021f600435610b71610d2a565b90610b7e61057382610d6e565b6113da565b346101b65760203660031901126101b657600435610b9f611110565b610ba98133611159565b600080808084335af1610bba610de3565b50156107c2576040519081524260208201527f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e60403392a260016000805160206118e683398151915255005b346101b65760203660031901126101b6576020610c24600435610d6e565b604051908152f35b60003660031901126101b6573415610ac157005b346101b65760203660031901126101b65761021f610c5c610d14565b610c64610eac565b610fbb565b346101b65760003660031901126101b6576020600154604051908152f35b346101b65760203660031901126101b6576001600160a01b03610ca8610d14565b1660005260056020526020604060002054604051908152f35b346101b65760203660031901126101b6576004359063ffffffff60e01b82168092036101b657602091637965db0b60e01b8114908115610d03575b5015158152f35b6301ffc9a760e01b14905083610cfc565b600435906001600160a01b03821682036101b657565b602435906001600160a01b03821682036101b657565b9181601f840112156101b65782359167ffffffffffffffff83116101b657602083818601950101116101b657565b6000526000805160206118a683398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff821117610db157604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610db157601f01601f191660200190565b3d15610e0e573d90610df482610dc7565b91610e026040519384610d8f565b82523d6000602084013e565b606090565b91908201809211610e2057565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03168015610e965760008051602061186683398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615610ee557565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615610f3857565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b60008181526000805160206118a68339815191526020908152604080832033845290915290205460ff1615610fa35750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b0381166000908152600080516020611886833981519152602052604090205460ff1615611063576001600160a01b0316600081815260008051602061188683398151915260205260408120805460ff191690553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b50600090565b60008181526000805160206118a6833981519152602090815260408083206001600160a01b038616845290915290205460ff16156111095760008181526000805160206118a6833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b5050600090565b60026000805160206118e6833981519152541461113b5760026000805160206118e683398151915255565b633ee5aeb560e01b60005260046000fd5b91908203918211610e2057565b8115610ac1576001600160a01b031660008181526004602052604090205490919081116111db5760407f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e91836000526004602052816000206111bc82825461114c565b90556111ca8160005461114c565b6000558151908152426020820152a2565b6378de4a6960e11b60005260046000fd5b6001600160a01b0381166000908152600080516020611886833981519152602052604090205460ff16611063576001600160a01b0316600081815260008051602061188683398151915260205260408120805460ff191660011790553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70906000805160206118468339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16611063576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206118468339815191528180a4600190565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16611063576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206118468339815191529080a4600190565b60008181526000805160206118a6833981519152602090815260408083206001600160a01b038616845290915290205460ff166111095760008181526000805160206118a6833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206118468339815191529080a4600190565b60ff6000805160206118c6833981519152541661148357565b63d93c066560e01b60005260046000fd5b919394928115610ac157600254821161160b578042116115fa576001600160a01b03831660008181526006602052604090205490959081036115e9576040519260208401943060601b86526bffffffffffffffffffffffff199060601b1660348501526048840152606883015260888201526088815261151560a882610d8f565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000209261154e82610dc7565b61155b6040519182610d8f565b82815236838301116101b657600060208461158b95611582958386013783010152846116ec565b90929192611728565b6001600160a01b03166000908152600080516020611886833981519152602052604090205460ff16156115d8576000526006602052604060002080546000198114610e2057600101905590565b638baa579f60e01b60005260046000fd5b633ab3447f60e11b60005260046000fd5b630819bdcd60e01b60005260046000fd5b636d363c4560e01b60005260046000fd5b7f41e99e9dc0d7cfce35db1b179b2938d186cbc127e72e9058202a7159ff3b44d69160609160018060a01b0316938460005260056020526040600020611663838254610e13565b905561167182600154610e13565b6001556040519182524260208301526040820152a2565b600080516020611866833981519152546001600160a01b031633036116a957565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206119068339815191525460401c16156116db57565b631afcd79f60e31b60005260046000fd5b815191906041830361171d5761171692506020820151906060604084015193015160001a906117b0565b9192909190565b505060009160029190565b919091600481101561179a578061173e57509050565b6000600182036117595763f645eedf60e01b60005260046000fd5b5060028103611777578263fce698f760e01b60005260045260246000fd5b9091600360009214611787575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611839579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa1561182d576000516001600160a01b038116156118215790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ed82e8858f919528fd86c81da277f0812ef4876fae8bc5251645af9640d3f49f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220558fda1858d2bf95d755ef762ffc8bb34086b71c82967d295cccffbf663472cd64736f6c634300081c0033",
|
934
939
|
"linkReferences": {},
|
935
940
|
"deployedLinkReferences": {}
|
936
941
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
|
2
2
|
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../common";
|
3
3
|
export interface EthStakingInterface extends Interface {
|
4
|
-
getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "OPERATOR_ROLE" | "SIGNER_ROLE" | "addRewards" | "addSigner" | "emergencyUnstake" | "getRoleAdmin" | "getUserInfo" | "grantRole" | "harvestReward" | "hasRole" | "initialize" | "maxRewardAmount" | "minStakeAmount" | "owner" | "pause" | "paused" | "removeSigner" | "renounceOwnership" | "renounceRole" | "revokeRole" | "setMinStakeAmount" | "stake" | "supportsInterface" | "totalRewards" | "totalStaked" | "transferOwnership" | "unpause" | "unstake" | "unstakeAndHarvest" | "updateMaxRewardAmount" | "
|
4
|
+
getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "OPERATOR_ROLE" | "SIGNER_ROLE" | "addRewards" | "addSigner" | "emergencyUnstake" | "getRoleAdmin" | "getUserInfo" | "grantRole" | "harvestReward" | "hasRole" | "initialize" | "maxRewardAmount" | "minStakeAmount" | "owner" | "pause" | "paused" | "removeSigner" | "renounceOwnership" | "renounceRole" | "revokeRole" | "setMinStakeAmount" | "stake" | "supportsInterface" | "totalRewards" | "totalStaked" | "transferOwnership" | "unpause" | "unstake" | "unstakeAndHarvest" | "updateMaxRewardAmount" | "userNonces" | "userStakes" | "userTotalRewardsHarvested"): FunctionFragment;
|
5
5
|
getEvent(nameOrSignatureOrTopic: "Initialized" | "MinStakeUpdated" | "OwnershipTransferred" | "Paused" | "RewardHarvested" | "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" | "SignerUpdated" | "Staked" | "Unpaused" | "Unstaked"): EventFragment;
|
6
6
|
encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
|
7
7
|
encodeFunctionData(functionFragment: "OPERATOR_ROLE", values?: undefined): string;
|
@@ -34,7 +34,7 @@ export interface EthStakingInterface extends Interface {
|
|
34
34
|
encodeFunctionData(functionFragment: "unstake", values: [BigNumberish]): string;
|
35
35
|
encodeFunctionData(functionFragment: "unstakeAndHarvest", values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, BytesLike]): string;
|
36
36
|
encodeFunctionData(functionFragment: "updateMaxRewardAmount", values: [BigNumberish]): string;
|
37
|
-
encodeFunctionData(functionFragment: "
|
37
|
+
encodeFunctionData(functionFragment: "userNonces", values: [AddressLike]): string;
|
38
38
|
encodeFunctionData(functionFragment: "userStakes", values: [AddressLike]): string;
|
39
39
|
encodeFunctionData(functionFragment: "userTotalRewardsHarvested", values: [AddressLike]): string;
|
40
40
|
decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
|
@@ -68,7 +68,7 @@ export interface EthStakingInterface extends Interface {
|
|
68
68
|
decodeFunctionResult(functionFragment: "unstake", data: BytesLike): Result;
|
69
69
|
decodeFunctionResult(functionFragment: "unstakeAndHarvest", data: BytesLike): Result;
|
70
70
|
decodeFunctionResult(functionFragment: "updateMaxRewardAmount", data: BytesLike): Result;
|
71
|
-
decodeFunctionResult(functionFragment: "
|
71
|
+
decodeFunctionResult(functionFragment: "userNonces", data: BytesLike): Result;
|
72
72
|
decodeFunctionResult(functionFragment: "userStakes", data: BytesLike): Result;
|
73
73
|
decodeFunctionResult(functionFragment: "userTotalRewardsHarvested", data: BytesLike): Result;
|
74
74
|
}
|
@@ -370,7 +370,7 @@ export interface EthStaking extends BaseContract {
|
|
370
370
|
], [
|
371
371
|
void
|
372
372
|
], "nonpayable">;
|
373
|
-
|
373
|
+
userNonces: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
|
374
374
|
userStakes: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
|
375
375
|
userTotalRewardsHarvested: TypedContractMethod<[
|
376
376
|
arg0: AddressLike
|
@@ -458,7 +458,7 @@ export interface EthStaking extends BaseContract {
|
|
458
458
|
void
|
459
459
|
], "nonpayable">;
|
460
460
|
getFunction(nameOrSignature: "updateMaxRewardAmount"): TypedContractMethod<[_newMaxReward: BigNumberish], [void], "nonpayable">;
|
461
|
-
getFunction(nameOrSignature: "
|
461
|
+
getFunction(nameOrSignature: "userNonces"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
|
462
462
|
getFunction(nameOrSignature: "userStakes"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
|
463
463
|
getFunction(nameOrSignature: "userTotalRewardsHarvested"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
|
464
464
|
getEvent(key: "Initialized"): TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
|
package/dist/contracts.json
CHANGED
@@ -42,8 +42,8 @@
|
|
42
42
|
"NFTTicket": "0x3f1AC66384593AAF4d99B51776E1d7df00d2C271",
|
43
43
|
"NFTTicket-implemented": "0x5099f248392C336186AA438BC871c6d3E0886b0C",
|
44
44
|
"NFTTicket-implemented-old": "0x8915d96Ae316b321e8B3A00Ba21e4F5D41FF526C",
|
45
|
-
"EthStaking": "
|
46
|
-
"EthStaking-implemented": "
|
45
|
+
"EthStaking": "0x65535DCF365B6dDb16E48e59476c289a07Cd4284",
|
46
|
+
"EthStaking-implemented": "0x18897940594eBcF2cb4BD2E38d59F7FA79Dc406b"
|
47
47
|
},
|
48
48
|
"base": {
|
49
49
|
"SeedRoundFundraiser": "0x3e7b414cAd1011c757dBA1a58212Db561dc9feeB",
|