aiia-vault-sdk 1.3.0 → 1.3.2

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.
@@ -58,25 +58,25 @@ export declare class EthStakingSDK {
58
58
  */
59
59
  buildUnstakeTx(amount: number): Promise<ethers.ContractTransaction>;
60
60
  /**
61
- * Builds a transaction to claim rewards
62
- * @param amount Reward amount to claim in wei (as bigint)
61
+ * Builds a transaction to harvest rewards
62
+ * @param amount Reward amount to harvest in wei (as bigint)
63
63
  * @param nonce Unique nonce to prevent replay attacks
64
64
  * @param deadline Timestamp after which signature is invalid
65
65
  * @param signature Signature from authorized signer
66
66
  * @returns Populated transaction
67
67
  */
68
- buildClaimRewardTxRaw(amount: bigint, nonce: bigint, deadline: bigint, signature: string): Promise<ethers.ContractTransaction>;
68
+ buildHarvestRewardTxRaw(amount: bigint, nonce: bigint, deadline: bigint, signature: string): Promise<ethers.ContractTransaction>;
69
69
  /**
70
- * Builds a transaction to claim rewards
71
- * @param amount Reward amount to claim in ether
70
+ * Builds a transaction to harvest rewards
71
+ * @param amount Reward amount to harvest in ether
72
72
  * @param nonce Unique nonce to prevent replay attacks
73
73
  * @param deadline Timestamp after which signature is invalid
74
74
  * @param signature Signature from authorized signer
75
75
  * @returns Populated transaction
76
76
  */
77
- buildClaimRewardTx(amount: number, nonce: number, deadline: number, signature: string): Promise<ethers.ContractTransaction>;
77
+ buildHarvestRewardTx(amount: number, nonce: number, deadline: number, signature: string): Promise<ethers.ContractTransaction>;
78
78
  /**
79
- * Builds a transaction to unstake and claim in one transaction
79
+ * Builds a transaction to unstake and harvest in one transaction
80
80
  * @param unstakeAmount Unstake amount in wei (as bigint)
81
81
  * @param rewardAmount Reward amount in wei (as bigint)
82
82
  * @param nonce Unique nonce to prevent replay attacks
@@ -84,9 +84,9 @@ export declare class EthStakingSDK {
84
84
  * @param signature Signature from authorized signer
85
85
  * @returns Populated transaction
86
86
  */
87
- buildUnstakeAndClaimTxRaw(unstakeAmount: bigint, rewardAmount: bigint, nonce: bigint, deadline: bigint, signature: string): Promise<ethers.ContractTransaction>;
87
+ buildUnstakeAndHarvestTxRaw(unstakeAmount: bigint, rewardAmount: bigint, nonce: bigint, deadline: bigint, signature: string): Promise<ethers.ContractTransaction>;
88
88
  /**
89
- * Builds a transaction to unstake and claim in one transaction
89
+ * Builds a transaction to unstake and harvest in one transaction
90
90
  * @param unstakeAmount Unstake amount in ether
91
91
  * @param rewardAmount Reward amount in ether
92
92
  * @param nonce Unique nonce to prevent replay attacks
@@ -94,7 +94,7 @@ export declare class EthStakingSDK {
94
94
  * @param signature Signature from authorized signer
95
95
  * @returns Populated transaction
96
96
  */
97
- buildUnstakeAndClaimTx(unstakeAmount: number, rewardAmount: number, nonce: number, deadline: number, signature: string): Promise<ethers.ContractTransaction>;
97
+ buildUnstakeAndHarvestTx(unstakeAmount: number, rewardAmount: number, nonce: number, deadline: number, signature: string): Promise<ethers.ContractTransaction>;
98
98
  /**
99
99
  * Builds a transaction to add rewards to the contract
100
100
  * @param amount Amount to add in wei (as bigint)
@@ -180,12 +180,12 @@ export declare class EthStakingSDK {
180
180
  */
181
181
  getTotalRewards(): Promise<number>;
182
182
  /**
183
- * Gets maximum reward amount allowed in a single claim in wei
183
+ * Gets maximum reward amount allowed in a single harvest in wei
184
184
  * @returns Maximum reward amount as bigint
185
185
  */
186
186
  getMaxRewardAmountRaw(): Promise<bigint>;
187
187
  /**
188
- * Gets maximum reward amount allowed in a single claim in ether
188
+ * Gets maximum reward amount allowed in a single harvest in ether
189
189
  * @returns Maximum reward amount as number
190
190
  */
191
191
  getMaxRewardAmount(): Promise<number>;
@@ -200,22 +200,22 @@ export declare class EthStakingSDK {
200
200
  */
201
201
  getMinStakeAmount(): Promise<number>;
202
202
  /**
203
- * Gets user's stake and total claimed rewards in wei
203
+ * Gets user's stake and total harvested rewards in wei
204
204
  * @param user Address of the user
205
- * @returns Object containing stake and claimed rewards as bigint
205
+ * @returns Object containing stake and harvested rewards as bigint
206
206
  */
207
207
  getUserInfoRaw(user: string): Promise<{
208
208
  stake: bigint;
209
- claimed: bigint;
209
+ harvested: bigint;
210
210
  }>;
211
211
  /**
212
- * Gets user's stake and total claimed rewards in ether
212
+ * Gets user's stake and total harvested rewards in ether
213
213
  * @param user Address of the user
214
- * @returns Object containing stake and claimed rewards as number
214
+ * @returns Object containing stake and harvested rewards as number
215
215
  */
216
216
  getUserInfo(user: string): Promise<{
217
217
  stake: number;
218
- claimed: number;
218
+ harvested: number;
219
219
  }>;
220
220
  /**
221
221
  * Gets user's stake in wei
@@ -230,17 +230,17 @@ export declare class EthStakingSDK {
230
230
  */
231
231
  getUserStake(user: string): Promise<number>;
232
232
  /**
233
- * Gets user's total rewards claimed in wei
233
+ * Gets user's total rewards harvested in wei
234
234
  * @param user Address of the user
235
- * @returns User's total rewards claimed as bigint
235
+ * @returns User's total rewards harvested as bigint
236
236
  */
237
- getUserTotalRewardsClaimedRaw(user: string): Promise<bigint>;
237
+ getUserTotalRewardsHarvestedRaw(user: string): Promise<bigint>;
238
238
  /**
239
- * Gets user's total rewards claimed in ether
239
+ * Gets user's total rewards harvested in ether
240
240
  * @param user Address of the user
241
- * @returns User's total rewards claimed as number
241
+ * @returns User's total rewards harvested as number
242
242
  */
243
- getUserTotalRewardsClaimed(user: string): Promise<number>;
243
+ getUserTotalRewardsHarvested(user: string): Promise<number>;
244
244
  /**
245
245
  * Checks if the contract is paused
246
246
  * @returns Boolean indicating if contract is paused
@@ -280,9 +280,9 @@ export declare class EthStakingSDK {
280
280
  */
281
281
  hasAdminRole(address: string): Promise<boolean>;
282
282
  /**
283
- * Creates a signature for claiming rewards
283
+ * Creates a signature for harvesting rewards
284
284
  * @param contractAddress Address of the EthStaking contract
285
- * @param userAddress Address of the user claiming rewards
285
+ * @param userAddress Address of the user harvesting rewards
286
286
  * @param amount Reward amount in ether
287
287
  * @param nonce Unique nonce to prevent replay attacks
288
288
  * @param deadline Timestamp after which signature is invalid
@@ -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.EthStakingSDK=void 0;const a=require("ethers"),e=t(require("./abis/EthStaking.json")),r=t(require("./contracts.json")),s=require("./utils");exports.EthStakingSDK=class{constructor(t,n){this.name="EthStaking",this.isBootstrapped=!1,this.formatEventArgs=t=>{const{eventName:e,args:r}=t;switch(e){case"Staked":case"Unstaked":return{...t,args:{...r,user:r.user.toLowerCase(),amount:Number(a.ethers.formatEther(r.amount)),timestamp:Number(r.timestamp)}};case"RewardClaimed":return{...t,args:{...r,user:r.user.toLowerCase(),amount:Number(a.ethers.formatEther(r.amount)),timestamp:Number(r.timestamp),signatureHash:r.signatureHash}};case"SignerUpdated":return{...t,args:{...r,newSigner:r.newSigner.toLowerCase()}};case"MinStakeUpdated":return{...t,args:{...r,oldAmount:Number(a.ethers.formatEther(r.oldAmount)),newAmount:Number(a.ethers.formatEther(r.newAmount))}};default:return t}};const i=Array.isArray(t)?t:[t];this.providers=i.map((t=>new a.ethers.JsonRpcProvider(t,void 0,{staticNetwork:!0})));const o=(0,s.getRandomProvider)(this.providers);this.contractAddress=(0,s.resolveContractAddress)(i[0],this.name,r.default,n),this.contract=new a.ethers.Contract(this.contractAddress,e.default.abi,o)}getRandomProvider(){return(0,s.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new a.ethers.Contract(this.contractAddress,e.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,a)=>(0,s.checkRpcHealth)(t,a))));if(this.providers=this.providers.filter(((a,e)=>t[e])),0===this.providers.length)throw new Error("No active RPC providers available");this.isBootstrapped=!0}async signAndSendTransaction(t,a,e={}){return(0,s.signAndSendTransaction)(t,a,(()=>this.getRandomProvider()),e,this.contract)}async buildStakeTxRaw(t){return await this.contract.stake.populateTransaction({value:t})}async buildStakeTx(t){return await this.buildStakeTxRaw(a.ethers.parseEther(t.toString()))}async buildUnstakeTxRaw(t){return await this.contract.unstake.populateTransaction(t)}async buildUnstakeTx(t){return await this.buildUnstakeTxRaw(a.ethers.parseEther(t.toString()))}async buildClaimRewardTxRaw(t,a,e,r){return await this.contract.claimReward.populateTransaction(t,a,e,r)}async buildClaimRewardTx(t,e,r,s){return await this.buildClaimRewardTxRaw(a.ethers.parseEther(t.toString()),BigInt(e),BigInt(r),s)}async buildUnstakeAndClaimTxRaw(t,a,e,r,s){return await this.contract.unstakeAndClaim.populateTransaction(t,a,e,r,s)}async buildUnstakeAndClaimTx(t,e,r,s,n){return await this.buildUnstakeAndClaimTxRaw(a.ethers.parseEther(t.toString()),a.ethers.parseEther(e.toString()),BigInt(r),BigInt(s),n)}async buildAddRewardsTxRaw(t){return await this.contract.addRewards.populateTransaction({value:t})}async buildAddRewardsTx(t){return await this.buildAddRewardsTxRaw(a.ethers.parseEther(t.toString()))}async buildUpdateMaxRewardAmountTxRaw(t){return await this.contract.updateMaxRewardAmount.populateTransaction(t)}async buildUpdateMaxRewardAmountTx(t){return await this.buildUpdateMaxRewardAmountTxRaw(a.ethers.parseEther(t.toString()))}async buildSetMinStakeAmountTxRaw(t){return await this.contract.setMinStakeAmount.populateTransaction(t)}async buildSetMinStakeAmountTx(t){return await this.buildSetMinStakeAmountTxRaw(a.ethers.parseEther(t.toString()))}async buildAddSignerTx(t){return await this.contract.addSigner.populateTransaction(t)}async buildRemoveSignerTx(t){return await this.contract.removeSigner.populateTransaction(t)}async buildPauseTx(){return await this.contract.pause.populateTransaction()}async buildUnpauseTx(){return await this.contract.unpause.populateTransaction()}async buildEmergencyUnstakeTx(t){return await this.contract.emergencyUnstake.populateTransaction(t)}async getTotalStakedRaw(){return await this.contract.totalStaked()}async getTotalStaked(){const t=await this.getTotalStakedRaw();return Number(a.ethers.formatEther(t))}async getTotalRewardsRaw(){return await this.contract.totalRewards()}async getTotalRewards(){const t=await this.getTotalRewardsRaw();return Number(a.ethers.formatEther(t))}async getMaxRewardAmountRaw(){return await this.contract.maxRewardAmount()}async getMaxRewardAmount(){const t=await this.getMaxRewardAmountRaw();return Number(a.ethers.formatEther(t))}async getMinStakeAmountRaw(){return await this.contract.minStakeAmount()}async getMinStakeAmount(){const t=await this.getMinStakeAmountRaw();return Number(a.ethers.formatEther(t))}async getUserInfoRaw(t){const[a,e]=await this.contract.getUserInfo(t);return{stake:a,claimed:e}}async getUserInfo(t){const{stake:e,claimed:r}=await this.getUserInfoRaw(t);return{stake:Number(a.ethers.formatEther(e)),claimed:Number(a.ethers.formatEther(r))}}async getUserStakeRaw(t){return await this.contract.userStakes(t)}async getUserStake(t){const e=await this.getUserStakeRaw(t);return Number(a.ethers.formatEther(e))}async getUserTotalRewardsClaimedRaw(t){return await this.contract.userTotalRewardsClaimed(t)}async getUserTotalRewardsClaimed(t){const e=await this.getUserTotalRewardsClaimedRaw(t);return Number(a.ethers.formatEther(e))}async isPaused(){return await this.contract.paused()}async getOperatorRoleHash(){return await this.contract.OPERATOR_ROLE()}async getSignerRoleHash(){return await this.contract.SIGNER_ROLE()}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}async hasOperatorRole(t){const a=await this.contract.OPERATOR_ROLE();return await this.contract.hasRole(a,t)}async hasSignerRole(t){const a=await this.contract.SIGNER_ROLE();return await this.contract.hasRole(a,t)}async hasAdminRole(t){const a=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(a,t)}async createRewardSignature(t,e,r,s,n,i){const o=a.ethers.parseEther(r.toString()),c=a.ethers.solidityPackedKeccak256(["address","address","uint256","uint256","uint256"],[t,e,o,s,n]),u=new a.ethers.Wallet(i);return{signature:await u.signMessage(a.ethers.getBytes(c)),messageHash:c.toString()}}getContractAddress(){return this.contractAddress}async getAllEvents(t,a,e){return await this.bootstrap(),(0,s.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,a,e)}async streamEvents(t,a,e,r=1e3,n=5e3,i=0){const o=["Staked","Unstaked","RewardClaimed","SignerUpdated","MinStakeUpdated"];return await this.bootstrap(),(0,s.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,a)=>this.getAllEvents(t,a,o),formatEvent:t=>this.formatEventArgs(t),onEvent:a,saveLatestBlock:e,fromBlock:t,batchSize:r,sleepTime:n,blockGap:i})}};
1
+ "use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.EthStakingSDK=void 0;const e=require("ethers"),a=t(require("./abis/EthStaking.json")),r=t(require("./contracts.json")),s=require("./utils");exports.EthStakingSDK=class{constructor(t,n){this.name="EthStaking",this.isBootstrapped=!1,this.formatEventArgs=t=>{const{eventName:a,args:r}=t;switch(a){case"Staked":case"Unstaked":return{...t,args:{...r,user:r.user.toLowerCase(),amount:Number(e.ethers.formatEther(r.amount)),timestamp:Number(r.timestamp)}};case"RewardHarvested":return{...t,args:{...r,user:r.user.toLowerCase(),amount:Number(e.ethers.formatEther(r.amount)),timestamp:Number(r.timestamp),signatureHash:r.signatureHash}};case"SignerUpdated":return{...t,args:{...r,newSigner:r.newSigner.toLowerCase()}};case"MinStakeUpdated":return{...t,args:{...r,oldAmount:Number(e.ethers.formatEther(r.oldAmount)),newAmount:Number(e.ethers.formatEther(r.newAmount))}};default:return t}};const i=Array.isArray(t)?t:[t];this.providers=i.map((t=>new e.ethers.JsonRpcProvider(t,void 0,{staticNetwork:!0})));const o=(0,s.getRandomProvider)(this.providers);this.contractAddress=(0,s.resolveContractAddress)(i[0],this.name,r.default,n),this.contract=new e.ethers.Contract(this.contractAddress,a.default.abi,o)}getRandomProvider(){return(0,s.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,a.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,s.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,a)=>t[a])),0===this.providers.length)throw new Error("No active RPC providers available");this.isBootstrapped=!0}async signAndSendTransaction(t,e,a={}){return(0,s.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),a,this.contract)}async buildStakeTxRaw(t){return await this.contract.stake.populateTransaction({value:t})}async buildStakeTx(t){return await this.buildStakeTxRaw(e.ethers.parseEther(t.toString()))}async buildUnstakeTxRaw(t){return await this.contract.unstake.populateTransaction(t)}async buildUnstakeTx(t){return await this.buildUnstakeTxRaw(e.ethers.parseEther(t.toString()))}async buildHarvestRewardTxRaw(t,e,a,r){return await this.contract.harvestReward.populateTransaction(t,e,a,r)}async buildHarvestRewardTx(t,a,r,s){return await this.buildHarvestRewardTxRaw(e.ethers.parseEther(t.toString()),BigInt(a),BigInt(r),s)}async buildUnstakeAndHarvestTxRaw(t,e,a,r,s){return await this.contract.unstakeAndHarvest.populateTransaction(t,e,a,r,s)}async buildUnstakeAndHarvestTx(t,a,r,s,n){return await this.buildUnstakeAndHarvestTxRaw(e.ethers.parseEther(t.toString()),e.ethers.parseEther(a.toString()),BigInt(r),BigInt(s),n)}async buildAddRewardsTxRaw(t){return await this.contract.addRewards.populateTransaction({value:t})}async buildAddRewardsTx(t){return await this.buildAddRewardsTxRaw(e.ethers.parseEther(t.toString()))}async buildUpdateMaxRewardAmountTxRaw(t){return await this.contract.updateMaxRewardAmount.populateTransaction(t)}async buildUpdateMaxRewardAmountTx(t){return await this.buildUpdateMaxRewardAmountTxRaw(e.ethers.parseEther(t.toString()))}async buildSetMinStakeAmountTxRaw(t){return await this.contract.setMinStakeAmount.populateTransaction(t)}async buildSetMinStakeAmountTx(t){return await this.buildSetMinStakeAmountTxRaw(e.ethers.parseEther(t.toString()))}async buildAddSignerTx(t){return await this.contract.addSigner.populateTransaction(t)}async buildRemoveSignerTx(t){return await this.contract.removeSigner.populateTransaction(t)}async buildPauseTx(){return await this.contract.pause.populateTransaction()}async buildUnpauseTx(){return await this.contract.unpause.populateTransaction()}async buildEmergencyUnstakeTx(t){return await this.contract.emergencyUnstake.populateTransaction(t)}async getTotalStakedRaw(){return await this.contract.totalStaked()}async getTotalStaked(){const t=await this.getTotalStakedRaw();return Number(e.ethers.formatEther(t))}async getTotalRewardsRaw(){return await this.contract.totalRewards()}async getTotalRewards(){const t=await this.getTotalRewardsRaw();return Number(e.ethers.formatEther(t))}async getMaxRewardAmountRaw(){return await this.contract.maxRewardAmount()}async getMaxRewardAmount(){const t=await this.getMaxRewardAmountRaw();return Number(e.ethers.formatEther(t))}async getMinStakeAmountRaw(){return await this.contract.minStakeAmount()}async getMinStakeAmount(){const t=await this.getMinStakeAmountRaw();return Number(e.ethers.formatEther(t))}async getUserInfoRaw(t){const[e,a]=await this.contract.getUserInfo(t);return{stake:e,harvested:a}}async getUserInfo(t){const{stake:a,harvested:r}=await this.getUserInfoRaw(t);return{stake:Number(e.ethers.formatEther(a)),harvested:Number(e.ethers.formatEther(r))}}async getUserStakeRaw(t){return await this.contract.userStakes(t)}async getUserStake(t){const a=await this.getUserStakeRaw(t);return Number(e.ethers.formatEther(a))}async getUserTotalRewardsHarvestedRaw(t){return await this.contract.userTotalRewardsHarvested(t)}async getUserTotalRewardsHarvested(t){const a=await this.getUserTotalRewardsHarvestedRaw(t);return Number(e.ethers.formatEther(a))}async isPaused(){return await this.contract.paused()}async getOperatorRoleHash(){return await this.contract.OPERATOR_ROLE()}async getSignerRoleHash(){return await this.contract.SIGNER_ROLE()}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}async hasOperatorRole(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.hasRole(e,t)}async hasSignerRole(t){const e=await this.contract.SIGNER_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 createRewardSignature(t,a,r,s,n,i){const o=e.ethers.parseEther(r.toString()),c=e.ethers.solidityPackedKeccak256(["address","address","uint256","uint256","uint256"],[t,a,o,s,n]),u=new e.ethers.Wallet(i);return{signature:await u.signMessage(e.ethers.getBytes(c)),messageHash:c.toString()}}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,a){return await this.bootstrap(),(0,s.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,a)}async streamEvents(t,e,a,r=1e3,n=5e3,i=0){const o=["Staked","Unstaked","RewardHarvested","SignerUpdated","MinStakeUpdated"];return await this.bootstrap(),(0,s.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,o),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:a,fromBlock:t,batchSize:r,sleepTime:n,blockGap:i})}};
@@ -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,n){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 o=Array.isArray(e)?e:[e];this.providers=o.map((e=>new t.ethers.JsonRpcProvider(e)));const i=(0,s.getRandomProvider)(this.providers);this.contractAddress=(0,s.resolveContractAddress)(o[0],this.name,a.default,n),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,n=5e3,o=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:n,whitelistEvents:void 0,shouldContinue:i,blockGap:o})}};
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()}};
@@ -245,7 +245,7 @@
245
245
  "type": "bytes32"
246
246
  }
247
247
  ],
248
- "name": "RewardClaimed",
248
+ "name": "RewardHarvested",
249
249
  "type": "event"
250
250
  },
251
251
  {
@@ -458,34 +458,6 @@
458
458
  "stateMutability": "nonpayable",
459
459
  "type": "function"
460
460
  },
461
- {
462
- "inputs": [
463
- {
464
- "internalType": "uint256",
465
- "name": "_amount",
466
- "type": "uint256"
467
- },
468
- {
469
- "internalType": "uint256",
470
- "name": "_nonce",
471
- "type": "uint256"
472
- },
473
- {
474
- "internalType": "uint256",
475
- "name": "_deadline",
476
- "type": "uint256"
477
- },
478
- {
479
- "internalType": "bytes",
480
- "name": "_signature",
481
- "type": "bytes"
482
- }
483
- ],
484
- "name": "claimReward",
485
- "outputs": [],
486
- "stateMutability": "nonpayable",
487
- "type": "function"
488
- },
489
461
  {
490
462
  "inputs": [
491
463
  {
@@ -535,7 +507,7 @@
535
507
  },
536
508
  {
537
509
  "internalType": "uint256",
538
- "name": "claimed",
510
+ "name": "harvested",
539
511
  "type": "uint256"
540
512
  }
541
513
  ],
@@ -560,6 +532,34 @@
560
532
  "stateMutability": "nonpayable",
561
533
  "type": "function"
562
534
  },
535
+ {
536
+ "inputs": [
537
+ {
538
+ "internalType": "uint256",
539
+ "name": "_amount",
540
+ "type": "uint256"
541
+ },
542
+ {
543
+ "internalType": "uint256",
544
+ "name": "_nonce",
545
+ "type": "uint256"
546
+ },
547
+ {
548
+ "internalType": "uint256",
549
+ "name": "_deadline",
550
+ "type": "uint256"
551
+ },
552
+ {
553
+ "internalType": "bytes",
554
+ "name": "_signature",
555
+ "type": "bytes"
556
+ }
557
+ ],
558
+ "name": "harvestReward",
559
+ "outputs": [],
560
+ "stateMutability": "nonpayable",
561
+ "type": "function"
562
+ },
563
563
  {
564
564
  "inputs": [
565
565
  {
@@ -853,7 +853,7 @@
853
853
  "type": "bytes"
854
854
  }
855
855
  ],
856
- "name": "unstakeAndClaim",
856
+ "name": "unstakeAndHarvest",
857
857
  "outputs": [],
858
858
  "stateMutability": "nonpayable",
859
859
  "type": "function"
@@ -917,7 +917,7 @@
917
917
  "type": "address"
918
918
  }
919
919
  ],
920
- "name": "userTotalRewardsClaimed",
920
+ "name": "userTotalRewardsHarvested",
921
921
  "outputs": [
922
922
  {
923
923
  "internalType": "uint256",
@@ -929,8 +929,8 @@
929
929
  "type": "function"
930
930
  }
931
931
  ],
932
- "bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161194490816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610cb8575080630e15561a14610c9a5780630e316ab714610c7157806314d6aed014610c5d578063248a9ca314610c375780632e17de7814610bb45780632f2ff15d14610b8357806336568abe14610b3d5780633a4b66f114610a805780633f4ba83a146109fd578063420ed8ea146109ba57806356652f08146109805780635c975abb146109505780636209deb4146108e35780636386c1c714610897578063715018a61461082d578063817b1cd21461080f5780638456cb591461079b5780638da5cb5b146107655780638da7ad231461072b57806391d14854146106d1578063a1ebf35d14610696578063a217fddf1461067a578063d547741f14610644578063e8c1532914610626578063eb12d61e146105c3578063eb4af0451461056f578063eb990c591461033c578063eed4172f14610270578063f188768414610252578063f2fde38b14610227578063f5b541a6146101ec578063f978fd61146101bb5763facea9c51461019557600080fd5b346101b65760203660031901126101b6576101ae610ef6565b600435600255005b600080fd5b346101b65760203660031901126101b6576004356000526006602052602060ff604060002054166040519015158152f35b346101b65760003660031901126101b65760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b346101b65760203660031901126101b657610250610243610d0b565b61024b611605565b610e2d565b005b346101b65760003660031901126101b6576020600354604051908152f35b346101b65760a03660031901126101b65760043560243560843567ffffffffffffffff81116101b6576102aa6102c0913690600401610d37565b906102b3611107565b606435604435853361148b565b90476102cc8285610e0a565b1161032b57600080806102f58194876102f0886102e98333611150565b833361163b565b610e0a565b335af1610300610dda565b501561031a5760016000805160206118cf83398151915255005b6312171d8360e31b60005260046000fd5b63786e0a9960e01b60005260046000fd5b346101b65760803660031901126101b657610355610d0b565b61035d610d21565b90606435916000805160206118ef833981519152549260ff8460401c16159367ffffffffffffffff811680159081610567575b600114908161055d575b159081610554575b506105435767ffffffffffffffff1981166001176000805160206118ef8339815191525584610516575b506103d56116a7565b6103dd6116a7565b6103e683610e2d565b6103ee6116a7565b6103f66116a7565b6103fe6116a7565b60016000805160206118cf833981519152556104186116a7565b6001600160a01b038216908115610505576104736040936104637f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d966044356002558460035561127b565b5061046d33611315565b506111e3565b508251917f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2600082526020820152a16104ac57005b68ff0000000000000000196000805160206118ef83398151915254166000805160206118ef833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ccea9e6f60e01b60005260046000fd5b68ffffffffffffffffff191668010000000000000001176000805160206118ef83398151915255846103cc565b63f92ee8a960e01b60005260046000fd5b905015866103a2565b303b15915061039a565b869150610390565b346101b65760203660031901126101b6577f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d60406004356105ae610ef6565b600354908060035582519182526020820152a1005b346101b65760203660031901126101b6576105dc610d0b565b6105e4610ea3565b6001600160a01b038116908115610505576105fe906111e3565b507f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2005b346101b65760003660031901126101b6576020600254604051908152f35b346101b65760403660031901126101b657610250600435610663610d21565b9061067561067082610d65565b610f68565b611060565b346101b65760003660031901126101b657602060405160008152f35b346101b65760003660031901126101b65760206040517fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f708152f35b346101b65760403660031901126101b6576106ea610d21565b60043560005260008051602061188f83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b65760203660031901126101b6576001600160a01b0361074c610d0b565b1660005260046020526020604060002054604051908152f35b346101b65760003660031901126101b65760008051602061184f833981519152546040516001600160a01b039091168152602090f35b346101b65760003660031901126101b6576107b4610ea3565b6107bc611461565b600160ff196000805160206118af8339815191525416176000805160206118af833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101b65760003660031901126101b6576020600054604051908152f35b346101b65760003660031901126101b657610846611605565b60008051602061184f83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b65760203660031901126101b65760406001600160a01b036108ba610d0b565b168060005260046020528160002054906000526005602052816000205482519182526020820152f35b346101b65760803660031901126101b65760043560643567ffffffffffffffff81116101b65761091a610938913690600401610d37565b90610923611107565b61092b611461565b604435602435853361148b565b81471061032b5760008080846102f58295823361163b565b346101b65760003660031901126101b657602060ff6000805160206118af83398151915254166040519015158152f35b346101b65760203660031901126101b6576001600160a01b036109a1610d0b565b1660005260056020526020604060002054604051908152f35b346101b65760203660031901126101b65760008080806109d8610d0b565b6109e0610ea3565b47906001600160a01b03165af16109f5610dda565b501561031a57005b346101b65760003660031901126101b657610a16610ea3565b6000805160206118af8339815191525460ff811615610a6f5760ff19166000805160206118af833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b60005260046000fd5b60003660031901126101b657610a94611107565b610a9c611461565b3415610b2c576003543410610b1b573360005260046020526040600020610ac4348254610e0a565b9055610ad234600054610e0a565b6000556040513481524260208201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9060403392a260016000805160206118cf83398151915255005b638ecf3d0360e01b60005260046000fd5b631f2a200560e01b60005260046000fd5b346101b65760403660031901126101b657610b56610d21565b336001600160a01b03821603610b725761025090600435611060565b63334bd91960e11b60005260046000fd5b346101b65760403660031901126101b657610250600435610ba2610d21565b90610baf61067082610d65565b6113d1565b346101b65760203660031901126101b657600435610bd0611107565b610bda8133611150565b600080808084335af1610beb610dda565b501561031a576040519081524260208201527f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e60403392a260016000805160206118cf83398151915255005b346101b65760203660031901126101b6576020610c55600435610d65565b604051908152f35b60003660031901126101b6573415610b2c57005b346101b65760203660031901126101b657610250610c8d610d0b565b610c95610ea3565b610fb2565b346101b65760003660031901126101b6576020600154604051908152f35b346101b65760203660031901126101b6576004359063ffffffff60e01b82168092036101b657602091637965db0b60e01b8114908115610cfa575b5015158152f35b6301ffc9a760e01b14905083610cf3565b600435906001600160a01b03821682036101b657565b602435906001600160a01b03821682036101b657565b9181601f840112156101b65782359167ffffffffffffffff83116101b657602083818601950101116101b657565b60005260008051602061188f83398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff821117610da857604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610da857601f01601f191660200190565b3d15610e05573d90610deb82610dbe565b91610df96040519384610d86565b82523d6000602084013e565b606090565b91908201809211610e1757565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03168015610e8d5760008051602061184f83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615610edc57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615610f2f57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b600081815260008051602061188f8339815191526020908152604080832033845290915290205460ff1615610f9a5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff161561105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191690553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b50600090565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff161561110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b5050600090565b60026000805160206118cf83398151915254146111325760026000805160206118cf83398151915255565b633ee5aeb560e01b60005260046000fd5b91908203918211610e1757565b8115610b2c576001600160a01b031660008181526004602052604090205490919081116111d25760407f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e91836000526004602052816000206111b3828254611143565b90556111c181600054611143565b6000558151908152426020820152a2565b6378de4a6960e11b60005260046000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff1661105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191660011790553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f709060008051602061182f8339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1661105a576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff1916600117905533919060008051602061182f8339815191528180a4600190565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1661105a576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060008051602061182f8339815191529080a4600190565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff1661110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff191660011790553392919060008051602061182f8339815191529080a4600190565b60ff6000805160206118af833981519152541661147a57565b63d93c066560e01b60005260046000fd5b9290919493948215610b2c5760025483116115f4578142116115e3576040519260208401943060601b86526bffffffffffffffffffffffff199060601b166034850152604884015260688301526088820152608881526114ec60a882610d86565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000209182600052600660205260ff604060002054166115d25761153b82610dbe565b6115486040519182610d86565b82815236838301116101b65760006020846115789561156f958386013783010152836116d5565b90929192611711565b6001600160a01b0316600090815260008051602061186f833981519152602052604090205460ff16156115c1578060005260066020526040600020600160ff1982541617905590565b638baa579f60e01b60005260046000fd5b630d75493360e01b60005260046000fd5b630819bdcd60e01b60005260046000fd5b636d363c4560e01b60005260046000fd5b60008051602061184f833981519152546001600160a01b0316330361162657565b63118cdaa760e01b6000523360045260246000fd5b7f1ab02525bc421da50dabc2743019f8a7cb75b9389f8cb2b855c71ce053f0f1b79160609160018060a01b0316938460005260056020526040600020611682838254610e0a565b905561169082600154610e0a565b6001556040519182524260208301526040820152a2565b60ff6000805160206118ef8339815191525460401c16156116c457565b631afcd79f60e31b60005260046000fd5b8151919060418303611706576116ff92506020820151906060604084015193015160001a90611799565b9192909190565b505060009160029190565b9190916004811015611783578061172757509050565b6000600182036117425763f645eedf60e01b60005260046000fd5b5060028103611760578263fce698f760e01b60005260045260246000fd5b9091600360009214611770575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611822579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15611816576000516001600160a01b0381161561180a5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ed82e8858f919528fd86c81da277f0812ef4876fae8bc5251645af9640d3f49f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a74e299edaa7f281b91e85d2666e34f499a9bcbb13ee23dfc9c8d278110a78cf64736f6c634300081c0033",
933
- "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610cb8575080630e15561a14610c9a5780630e316ab714610c7157806314d6aed014610c5d578063248a9ca314610c375780632e17de7814610bb45780632f2ff15d14610b8357806336568abe14610b3d5780633a4b66f114610a805780633f4ba83a146109fd578063420ed8ea146109ba57806356652f08146109805780635c975abb146109505780636209deb4146108e35780636386c1c714610897578063715018a61461082d578063817b1cd21461080f5780638456cb591461079b5780638da5cb5b146107655780638da7ad231461072b57806391d14854146106d1578063a1ebf35d14610696578063a217fddf1461067a578063d547741f14610644578063e8c1532914610626578063eb12d61e146105c3578063eb4af0451461056f578063eb990c591461033c578063eed4172f14610270578063f188768414610252578063f2fde38b14610227578063f5b541a6146101ec578063f978fd61146101bb5763facea9c51461019557600080fd5b346101b65760203660031901126101b6576101ae610ef6565b600435600255005b600080fd5b346101b65760203660031901126101b6576004356000526006602052602060ff604060002054166040519015158152f35b346101b65760003660031901126101b65760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b346101b65760203660031901126101b657610250610243610d0b565b61024b611605565b610e2d565b005b346101b65760003660031901126101b6576020600354604051908152f35b346101b65760a03660031901126101b65760043560243560843567ffffffffffffffff81116101b6576102aa6102c0913690600401610d37565b906102b3611107565b606435604435853361148b565b90476102cc8285610e0a565b1161032b57600080806102f58194876102f0886102e98333611150565b833361163b565b610e0a565b335af1610300610dda565b501561031a5760016000805160206118cf83398151915255005b6312171d8360e31b60005260046000fd5b63786e0a9960e01b60005260046000fd5b346101b65760803660031901126101b657610355610d0b565b61035d610d21565b90606435916000805160206118ef833981519152549260ff8460401c16159367ffffffffffffffff811680159081610567575b600114908161055d575b159081610554575b506105435767ffffffffffffffff1981166001176000805160206118ef8339815191525584610516575b506103d56116a7565b6103dd6116a7565b6103e683610e2d565b6103ee6116a7565b6103f66116a7565b6103fe6116a7565b60016000805160206118cf833981519152556104186116a7565b6001600160a01b038216908115610505576104736040936104637f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d966044356002558460035561127b565b5061046d33611315565b506111e3565b508251917f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2600082526020820152a16104ac57005b68ff0000000000000000196000805160206118ef83398151915254166000805160206118ef833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ccea9e6f60e01b60005260046000fd5b68ffffffffffffffffff191668010000000000000001176000805160206118ef83398151915255846103cc565b63f92ee8a960e01b60005260046000fd5b905015866103a2565b303b15915061039a565b869150610390565b346101b65760203660031901126101b6577f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d60406004356105ae610ef6565b600354908060035582519182526020820152a1005b346101b65760203660031901126101b6576105dc610d0b565b6105e4610ea3565b6001600160a01b038116908115610505576105fe906111e3565b507f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2005b346101b65760003660031901126101b6576020600254604051908152f35b346101b65760403660031901126101b657610250600435610663610d21565b9061067561067082610d65565b610f68565b611060565b346101b65760003660031901126101b657602060405160008152f35b346101b65760003660031901126101b65760206040517fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f708152f35b346101b65760403660031901126101b6576106ea610d21565b60043560005260008051602061188f83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b65760203660031901126101b6576001600160a01b0361074c610d0b565b1660005260046020526020604060002054604051908152f35b346101b65760003660031901126101b65760008051602061184f833981519152546040516001600160a01b039091168152602090f35b346101b65760003660031901126101b6576107b4610ea3565b6107bc611461565b600160ff196000805160206118af8339815191525416176000805160206118af833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101b65760003660031901126101b6576020600054604051908152f35b346101b65760003660031901126101b657610846611605565b60008051602061184f83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b65760203660031901126101b65760406001600160a01b036108ba610d0b565b168060005260046020528160002054906000526005602052816000205482519182526020820152f35b346101b65760803660031901126101b65760043560643567ffffffffffffffff81116101b65761091a610938913690600401610d37565b90610923611107565b61092b611461565b604435602435853361148b565b81471061032b5760008080846102f58295823361163b565b346101b65760003660031901126101b657602060ff6000805160206118af83398151915254166040519015158152f35b346101b65760203660031901126101b6576001600160a01b036109a1610d0b565b1660005260056020526020604060002054604051908152f35b346101b65760203660031901126101b65760008080806109d8610d0b565b6109e0610ea3565b47906001600160a01b03165af16109f5610dda565b501561031a57005b346101b65760003660031901126101b657610a16610ea3565b6000805160206118af8339815191525460ff811615610a6f5760ff19166000805160206118af833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b60005260046000fd5b60003660031901126101b657610a94611107565b610a9c611461565b3415610b2c576003543410610b1b573360005260046020526040600020610ac4348254610e0a565b9055610ad234600054610e0a565b6000556040513481524260208201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9060403392a260016000805160206118cf83398151915255005b638ecf3d0360e01b60005260046000fd5b631f2a200560e01b60005260046000fd5b346101b65760403660031901126101b657610b56610d21565b336001600160a01b03821603610b725761025090600435611060565b63334bd91960e11b60005260046000fd5b346101b65760403660031901126101b657610250600435610ba2610d21565b90610baf61067082610d65565b6113d1565b346101b65760203660031901126101b657600435610bd0611107565b610bda8133611150565b600080808084335af1610beb610dda565b501561031a576040519081524260208201527f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e60403392a260016000805160206118cf83398151915255005b346101b65760203660031901126101b6576020610c55600435610d65565b604051908152f35b60003660031901126101b6573415610b2c57005b346101b65760203660031901126101b657610250610c8d610d0b565b610c95610ea3565b610fb2565b346101b65760003660031901126101b6576020600154604051908152f35b346101b65760203660031901126101b6576004359063ffffffff60e01b82168092036101b657602091637965db0b60e01b8114908115610cfa575b5015158152f35b6301ffc9a760e01b14905083610cf3565b600435906001600160a01b03821682036101b657565b602435906001600160a01b03821682036101b657565b9181601f840112156101b65782359167ffffffffffffffff83116101b657602083818601950101116101b657565b60005260008051602061188f83398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff821117610da857604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610da857601f01601f191660200190565b3d15610e05573d90610deb82610dbe565b91610df96040519384610d86565b82523d6000602084013e565b606090565b91908201809211610e1757565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03168015610e8d5760008051602061184f83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615610edc57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615610f2f57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b600081815260008051602061188f8339815191526020908152604080832033845290915290205460ff1615610f9a5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff161561105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191690553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b50600090565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff161561110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b5050600090565b60026000805160206118cf83398151915254146111325760026000805160206118cf83398151915255565b633ee5aeb560e01b60005260046000fd5b91908203918211610e1757565b8115610b2c576001600160a01b031660008181526004602052604090205490919081116111d25760407f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e91836000526004602052816000206111b3828254611143565b90556111c181600054611143565b6000558151908152426020820152a2565b6378de4a6960e11b60005260046000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff1661105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191660011790553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f709060008051602061182f8339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1661105a576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff1916600117905533919060008051602061182f8339815191528180a4600190565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1661105a576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060008051602061182f8339815191529080a4600190565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff1661110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff191660011790553392919060008051602061182f8339815191529080a4600190565b60ff6000805160206118af833981519152541661147a57565b63d93c066560e01b60005260046000fd5b9290919493948215610b2c5760025483116115f4578142116115e3576040519260208401943060601b86526bffffffffffffffffffffffff199060601b166034850152604884015260688301526088820152608881526114ec60a882610d86565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000209182600052600660205260ff604060002054166115d25761153b82610dbe565b6115486040519182610d86565b82815236838301116101b65760006020846115789561156f958386013783010152836116d5565b90929192611711565b6001600160a01b0316600090815260008051602061186f833981519152602052604090205460ff16156115c1578060005260066020526040600020600160ff1982541617905590565b638baa579f60e01b60005260046000fd5b630d75493360e01b60005260046000fd5b630819bdcd60e01b60005260046000fd5b636d363c4560e01b60005260046000fd5b60008051602061184f833981519152546001600160a01b0316330361162657565b63118cdaa760e01b6000523360045260246000fd5b7f1ab02525bc421da50dabc2743019f8a7cb75b9389f8cb2b855c71ce053f0f1b79160609160018060a01b0316938460005260056020526040600020611682838254610e0a565b905561169082600154610e0a565b6001556040519182524260208301526040820152a2565b60ff6000805160206118ef8339815191525460401c16156116c457565b631afcd79f60e31b60005260046000fd5b8151919060418303611706576116ff92506020820151906060604084015193015160001a90611799565b9192909190565b505060009160029190565b9190916004811015611783578061172757509050565b6000600182036117425763f645eedf60e01b60005260046000fd5b5060028103611760578263fce698f760e01b60005260045260246000fd5b9091600360009214611770575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611822579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15611816576000516001600160a01b0381161561180a5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ed82e8858f919528fd86c81da277f0812ef4876fae8bc5251645af9640d3f49f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220a74e299edaa7f281b91e85d2666e34f499a9bcbb13ee23dfc9c8d278110a78cf64736f6c634300081c0033",
932
+ "bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161194490816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610cb8575080630cd4884b14610c7e5780630e15561a14610c605780630e316ab714610c3757806314d6aed014610c23578063248a9ca314610bfd5780632e17de7814610b7a5780632f2ff15d14610b4957806336568abe14610b035780633a4b66f114610a465780633d840ef6146109c15780633f4ba83a1461093e578063420ed8ea146108fb5780635c975abb146108cb5780636386c1c71461087f578063715018a6146108155780637e69954e14610761578063817b1cd2146107435780638456cb59146106cf5780638da5cb5b146106995780638da7ad231461065f57806391d1485414610605578063a1ebf35d146105ca578063a217fddf146105ae578063d547741f14610578578063e8c153291461055a578063eb12d61e146104f7578063eb4af045146104a3578063eb990c5914610270578063f188768414610252578063f2fde38b14610227578063f5b541a6146101ec578063f978fd61146101bb5763facea9c51461019557600080fd5b346101b65760203660031901126101b6576101ae610ef6565b600435600255005b600080fd5b346101b65760203660031901126101b6576004356000526006602052602060ff604060002054166040519015158152f35b346101b65760003660031901126101b65760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b346101b65760203660031901126101b657610250610243610d0b565b61024b611671565b610e2d565b005b346101b65760003660031901126101b6576020600354604051908152f35b346101b65760803660031901126101b657610289610d0b565b610291610d21565b90606435916000805160206118ef833981519152549260ff8460401c16159367ffffffffffffffff81168015908161049b575b6001149081610491575b159081610488575b506104775767ffffffffffffffff1981166001176000805160206118ef833981519152558461044a575b506103096116a7565b6103116116a7565b61031a83610e2d565b6103226116a7565b61032a6116a7565b6103326116a7565b60016000805160206118cf8339815191525561034c6116a7565b6001600160a01b038216908115610439576103a76040936103977f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d966044356002558460035561127b565b506103a133611315565b506111e3565b508251917f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2600082526020820152a16103e057005b68ff0000000000000000196000805160206118ef83398151915254166000805160206118ef833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ccea9e6f60e01b60005260046000fd5b68ffffffffffffffffff191668010000000000000001176000805160206118ef8339815191525584610300565b63f92ee8a960e01b60005260046000fd5b905015866102d6565b303b1591506102ce565b8691506102c4565b346101b65760203660031901126101b6577f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d60406004356104e2610ef6565b600354908060035582519182526020820152a1005b346101b65760203660031901126101b657610510610d0b565b610518610ea3565b6001600160a01b03811690811561043957610532906111e3565b507f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2005b346101b65760003660031901126101b6576020600254604051908152f35b346101b65760403660031901126101b657610250600435610597610d21565b906105a96105a482610d65565b610f68565b611060565b346101b65760003660031901126101b657602060405160008152f35b346101b65760003660031901126101b65760206040517fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f708152f35b346101b65760403660031901126101b65761061e610d21565b60043560005260008051602061188f83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b65760203660031901126101b6576001600160a01b03610680610d0b565b1660005260046020526020604060002054604051908152f35b346101b65760003660031901126101b65760008051602061184f833981519152546040516001600160a01b039091168152602090f35b346101b65760003660031901126101b6576106e8610ea3565b6106f0611461565b600160ff196000805160206118af8339815191525416176000805160206118af833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101b65760003660031901126101b6576020600054604051908152f35b346101b65760803660031901126101b65760043560643567ffffffffffffffff81116101b6576107986107b6913690600401610d37565b906107a1611107565b6107a9611461565b604435602435853361148b565b8147106108045760008080846107ce82958233611605565b335af16107d9610dda565b50156107f35760016000805160206118cf83398151915255005b6312171d8360e31b60005260046000fd5b63786e0a9960e01b60005260046000fd5b346101b65760003660031901126101b65761082e611671565b60008051602061184f83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b65760203660031901126101b65760406001600160a01b036108a2610d0b565b168060005260046020528160002054906000526005602052816000205482519182526020820152f35b346101b65760003660031901126101b657602060ff6000805160206118af83398151915254166040519015158152f35b346101b65760203660031901126101b6576000808080610919610d0b565b610921610ea3565b47906001600160a01b03165af1610936610dda565b50156107f357005b346101b65760003660031901126101b657610957610ea3565b6000805160206118af8339815191525460ff8116156109b05760ff19166000805160206118af833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b60005260046000fd5b346101b65760a03660031901126101b65760043560243560843567ffffffffffffffff81116101b6576109fb610a11913690600401610d37565b90610a04611107565b606435604435853361148b565b9047610a1d8285610e0a565b1161080457600080806107ce819487610a4188610a3a8333611150565b8333611605565b610e0a565b60003660031901126101b657610a5a611107565b610a62611461565b3415610af2576003543410610ae1573360005260046020526040600020610a8a348254610e0a565b9055610a9834600054610e0a565b6000556040513481524260208201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9060403392a260016000805160206118cf83398151915255005b638ecf3d0360e01b60005260046000fd5b631f2a200560e01b60005260046000fd5b346101b65760403660031901126101b657610b1c610d21565b336001600160a01b03821603610b385761025090600435611060565b63334bd91960e11b60005260046000fd5b346101b65760403660031901126101b657610250600435610b68610d21565b90610b756105a482610d65565b6113d1565b346101b65760203660031901126101b657600435610b96611107565b610ba08133611150565b600080808084335af1610bb1610dda565b50156107f3576040519081524260208201527f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e60403392a260016000805160206118cf83398151915255005b346101b65760203660031901126101b6576020610c1b600435610d65565b604051908152f35b60003660031901126101b6573415610af257005b346101b65760203660031901126101b657610250610c53610d0b565b610c5b610ea3565b610fb2565b346101b65760003660031901126101b6576020600154604051908152f35b346101b65760203660031901126101b6576001600160a01b03610c9f610d0b565b1660005260056020526020604060002054604051908152f35b346101b65760203660031901126101b6576004359063ffffffff60e01b82168092036101b657602091637965db0b60e01b8114908115610cfa575b5015158152f35b6301ffc9a760e01b14905083610cf3565b600435906001600160a01b03821682036101b657565b602435906001600160a01b03821682036101b657565b9181601f840112156101b65782359167ffffffffffffffff83116101b657602083818601950101116101b657565b60005260008051602061188f83398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff821117610da857604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610da857601f01601f191660200190565b3d15610e05573d90610deb82610dbe565b91610df96040519384610d86565b82523d6000602084013e565b606090565b91908201809211610e1757565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03168015610e8d5760008051602061184f83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615610edc57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615610f2f57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b600081815260008051602061188f8339815191526020908152604080832033845290915290205460ff1615610f9a5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff161561105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191690553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b50600090565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff161561110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b5050600090565b60026000805160206118cf83398151915254146111325760026000805160206118cf83398151915255565b633ee5aeb560e01b60005260046000fd5b91908203918211610e1757565b8115610af2576001600160a01b031660008181526004602052604090205490919081116111d25760407f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e91836000526004602052816000206111b3828254611143565b90556111c181600054611143565b6000558151908152426020820152a2565b6378de4a6960e11b60005260046000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff1661105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191660011790553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f709060008051602061182f8339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1661105a576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff1916600117905533919060008051602061182f8339815191528180a4600190565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1661105a576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060008051602061182f8339815191529080a4600190565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff1661110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff191660011790553392919060008051602061182f8339815191529080a4600190565b60ff6000805160206118af833981519152541661147a57565b63d93c066560e01b60005260046000fd5b9290919493948215610af25760025483116115f4578142116115e3576040519260208401943060601b86526bffffffffffffffffffffffff199060601b166034850152604884015260688301526088820152608881526114ec60a882610d86565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000209182600052600660205260ff604060002054166115d25761153b82610dbe565b6115486040519182610d86565b82815236838301116101b65760006020846115789561156f958386013783010152836116d5565b90929192611711565b6001600160a01b0316600090815260008051602061186f833981519152602052604090205460ff16156115c1578060005260066020526040600020600160ff1982541617905590565b638baa579f60e01b60005260046000fd5b630d75493360e01b60005260046000fd5b630819bdcd60e01b60005260046000fd5b636d363c4560e01b60005260046000fd5b7f41e99e9dc0d7cfce35db1b179b2938d186cbc127e72e9058202a7159ff3b44d69160609160018060a01b031693846000526005602052604060002061164c838254610e0a565b905561165a82600154610e0a565b6001556040519182524260208301526040820152a2565b60008051602061184f833981519152546001600160a01b0316330361169257565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206118ef8339815191525460401c16156116c457565b631afcd79f60e31b60005260046000fd5b8151919060418303611706576116ff92506020820151906060604084015193015160001a90611799565b9192909190565b505060009160029190565b9190916004811015611783578061172757509050565b6000600182036117425763f645eedf60e01b60005260046000fd5b5060028103611760578263fce698f760e01b60005260045260246000fd5b9091600360009214611770575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611822579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15611816576000516001600160a01b0381161561180a5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ed82e8858f919528fd86c81da277f0812ef4876fae8bc5251645af9640d3f49f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203943c117bee9f8422e1fc19e8a213361f03eaf44333381ea7426c465b3f9e81e64736f6c634300081c0033",
933
+ "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610cb8575080630cd4884b14610c7e5780630e15561a14610c605780630e316ab714610c3757806314d6aed014610c23578063248a9ca314610bfd5780632e17de7814610b7a5780632f2ff15d14610b4957806336568abe14610b035780633a4b66f114610a465780633d840ef6146109c15780633f4ba83a1461093e578063420ed8ea146108fb5780635c975abb146108cb5780636386c1c71461087f578063715018a6146108155780637e69954e14610761578063817b1cd2146107435780638456cb59146106cf5780638da5cb5b146106995780638da7ad231461065f57806391d1485414610605578063a1ebf35d146105ca578063a217fddf146105ae578063d547741f14610578578063e8c153291461055a578063eb12d61e146104f7578063eb4af045146104a3578063eb990c5914610270578063f188768414610252578063f2fde38b14610227578063f5b541a6146101ec578063f978fd61146101bb5763facea9c51461019557600080fd5b346101b65760203660031901126101b6576101ae610ef6565b600435600255005b600080fd5b346101b65760203660031901126101b6576004356000526006602052602060ff604060002054166040519015158152f35b346101b65760003660031901126101b65760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b346101b65760203660031901126101b657610250610243610d0b565b61024b611671565b610e2d565b005b346101b65760003660031901126101b6576020600354604051908152f35b346101b65760803660031901126101b657610289610d0b565b610291610d21565b90606435916000805160206118ef833981519152549260ff8460401c16159367ffffffffffffffff81168015908161049b575b6001149081610491575b159081610488575b506104775767ffffffffffffffff1981166001176000805160206118ef833981519152558461044a575b506103096116a7565b6103116116a7565b61031a83610e2d565b6103226116a7565b61032a6116a7565b6103326116a7565b60016000805160206118cf8339815191525561034c6116a7565b6001600160a01b038216908115610439576103a76040936103977f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d966044356002558460035561127b565b506103a133611315565b506111e3565b508251917f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2600082526020820152a16103e057005b68ff0000000000000000196000805160206118ef83398151915254166000805160206118ef833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ccea9e6f60e01b60005260046000fd5b68ffffffffffffffffff191668010000000000000001176000805160206118ef8339815191525584610300565b63f92ee8a960e01b60005260046000fd5b905015866102d6565b303b1591506102ce565b8691506102c4565b346101b65760203660031901126101b6577f171aabb8815c02fd00303450a77058600e3661eb75ce2e77972c0f080bc7099d60406004356104e2610ef6565b600354908060035582519182526020820152a1005b346101b65760203660031901126101b657610510610d0b565b610518610ea3565b6001600160a01b03811690811561043957610532906111e3565b507f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73600080a2005b346101b65760003660031901126101b6576020600254604051908152f35b346101b65760403660031901126101b657610250600435610597610d21565b906105a96105a482610d65565b610f68565b611060565b346101b65760003660031901126101b657602060405160008152f35b346101b65760003660031901126101b65760206040517fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f708152f35b346101b65760403660031901126101b65761061e610d21565b60043560005260008051602061188f83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b65760203660031901126101b6576001600160a01b03610680610d0b565b1660005260046020526020604060002054604051908152f35b346101b65760003660031901126101b65760008051602061184f833981519152546040516001600160a01b039091168152602090f35b346101b65760003660031901126101b6576106e8610ea3565b6106f0611461565b600160ff196000805160206118af8339815191525416176000805160206118af833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101b65760003660031901126101b6576020600054604051908152f35b346101b65760803660031901126101b65760043560643567ffffffffffffffff81116101b6576107986107b6913690600401610d37565b906107a1611107565b6107a9611461565b604435602435853361148b565b8147106108045760008080846107ce82958233611605565b335af16107d9610dda565b50156107f35760016000805160206118cf83398151915255005b6312171d8360e31b60005260046000fd5b63786e0a9960e01b60005260046000fd5b346101b65760003660031901126101b65761082e611671565b60008051602061184f83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b65760203660031901126101b65760406001600160a01b036108a2610d0b565b168060005260046020528160002054906000526005602052816000205482519182526020820152f35b346101b65760003660031901126101b657602060ff6000805160206118af83398151915254166040519015158152f35b346101b65760203660031901126101b6576000808080610919610d0b565b610921610ea3565b47906001600160a01b03165af1610936610dda565b50156107f357005b346101b65760003660031901126101b657610957610ea3565b6000805160206118af8339815191525460ff8116156109b05760ff19166000805160206118af833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b60005260046000fd5b346101b65760a03660031901126101b65760043560243560843567ffffffffffffffff81116101b6576109fb610a11913690600401610d37565b90610a04611107565b606435604435853361148b565b9047610a1d8285610e0a565b1161080457600080806107ce819487610a4188610a3a8333611150565b8333611605565b610e0a565b60003660031901126101b657610a5a611107565b610a62611461565b3415610af2576003543410610ae1573360005260046020526040600020610a8a348254610e0a565b9055610a9834600054610e0a565b6000556040513481524260208201527f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee9060403392a260016000805160206118cf83398151915255005b638ecf3d0360e01b60005260046000fd5b631f2a200560e01b60005260046000fd5b346101b65760403660031901126101b657610b1c610d21565b336001600160a01b03821603610b385761025090600435611060565b63334bd91960e11b60005260046000fd5b346101b65760403660031901126101b657610250600435610b68610d21565b90610b756105a482610d65565b6113d1565b346101b65760203660031901126101b657600435610b96611107565b610ba08133611150565b600080808084335af1610bb1610dda565b50156107f3576040519081524260208201527f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e60403392a260016000805160206118cf83398151915255005b346101b65760203660031901126101b6576020610c1b600435610d65565b604051908152f35b60003660031901126101b6573415610af257005b346101b65760203660031901126101b657610250610c53610d0b565b610c5b610ea3565b610fb2565b346101b65760003660031901126101b6576020600154604051908152f35b346101b65760203660031901126101b6576001600160a01b03610c9f610d0b565b1660005260056020526020604060002054604051908152f35b346101b65760203660031901126101b6576004359063ffffffff60e01b82168092036101b657602091637965db0b60e01b8114908115610cfa575b5015158152f35b6301ffc9a760e01b14905083610cf3565b600435906001600160a01b03821682036101b657565b602435906001600160a01b03821682036101b657565b9181601f840112156101b65782359167ffffffffffffffff83116101b657602083818601950101116101b657565b60005260008051602061188f83398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff821117610da857604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610da857601f01601f191660200190565b3d15610e05573d90610deb82610dbe565b91610df96040519384610d86565b82523d6000602084013e565b606090565b91908201809211610e1757565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03168015610e8d5760008051602061184f83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615610edc57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615610f2f57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b600081815260008051602061188f8339815191526020908152604080832033845290915290205460ff1615610f9a5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff161561105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191690553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f70907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b50600090565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff161561110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b5050600090565b60026000805160206118cf83398151915254146111325760026000805160206118cf83398151915255565b633ee5aeb560e01b60005260046000fd5b91908203918211610e1757565b8115610af2576001600160a01b031660008181526004602052604090205490919081116111d25760407f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e91836000526004602052816000206111b3828254611143565b90556111c181600054611143565b6000558151908152426020820152a2565b6378de4a6960e11b60005260046000fd5b6001600160a01b038116600090815260008051602061186f833981519152602052604090205460ff1661105a576001600160a01b0316600081815260008051602061186f83398151915260205260408120805460ff191660011790553391907fe2f4eaae4a9751e85a3e4a7b9587827a877f29914755229b07a7b2da98285f709060008051602061182f8339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1661105a576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff1916600117905533919060008051602061182f8339815191528180a4600190565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1661105a576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299060008051602061182f8339815191529080a4600190565b600081815260008051602061188f833981519152602090815260408083206001600160a01b038616845290915290205460ff1661110057600081815260008051602061188f833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff191660011790553392919060008051602061182f8339815191529080a4600190565b60ff6000805160206118af833981519152541661147a57565b63d93c066560e01b60005260046000fd5b9290919493948215610af25760025483116115f4578142116115e3576040519260208401943060601b86526bffffffffffffffffffffffff199060601b166034850152604884015260688301526088820152608881526114ec60a882610d86565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c6000209182600052600660205260ff604060002054166115d25761153b82610dbe565b6115486040519182610d86565b82815236838301116101b65760006020846115789561156f958386013783010152836116d5565b90929192611711565b6001600160a01b0316600090815260008051602061186f833981519152602052604090205460ff16156115c1578060005260066020526040600020600160ff1982541617905590565b638baa579f60e01b60005260046000fd5b630d75493360e01b60005260046000fd5b630819bdcd60e01b60005260046000fd5b636d363c4560e01b60005260046000fd5b7f41e99e9dc0d7cfce35db1b179b2938d186cbc127e72e9058202a7159ff3b44d69160609160018060a01b031693846000526005602052604060002061164c838254610e0a565b905561165a82600154610e0a565b6001556040519182524260208301526040820152a2565b60008051602061184f833981519152546001600160a01b0316330361169257565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206118ef8339815191525460401c16156116c457565b631afcd79f60e31b60005260046000fd5b8151919060418303611706576116ff92506020820151906060604084015193015160001a90611799565b9192909190565b505060009160029190565b9190916004811015611783578061172757509050565b6000600182036117425763f645eedf60e01b60005260046000fd5b5060028103611760578263fce698f760e01b60005260045260246000fd5b9091600360009214611770575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611822579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15611816576000516001600160a01b0381161561180a5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300ed82e8858f919528fd86c81da277f0812ef4876fae8bc5251645af9640d3f49f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203943c117bee9f8422e1fc19e8a213361f03eaf44333381ea7426c465b3f9e81e64736f6c634300081c0033",
934
934
  "linkReferences": {},
935
935
  "deployedLinkReferences": {}
936
936
  }
@@ -1,18 +1,18 @@
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" | "claimReward" | "emergencyUnstake" | "getRoleAdmin" | "getUserInfo" | "grantRole" | "hasRole" | "initialize" | "maxRewardAmount" | "minStakeAmount" | "owner" | "pause" | "paused" | "removeSigner" | "renounceOwnership" | "renounceRole" | "revokeRole" | "setMinStakeAmount" | "stake" | "supportsInterface" | "totalRewards" | "totalStaked" | "transferOwnership" | "unpause" | "unstake" | "unstakeAndClaim" | "updateMaxRewardAmount" | "usedSignatures" | "userStakes" | "userTotalRewardsClaimed"): FunctionFragment;
5
- getEvent(nameOrSignatureOrTopic: "Initialized" | "MinStakeUpdated" | "OwnershipTransferred" | "Paused" | "RewardClaimed" | "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" | "SignerUpdated" | "Staked" | "Unpaused" | "Unstaked"): EventFragment;
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" | "usedSignatures" | "userStakes" | "userTotalRewardsHarvested"): FunctionFragment;
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;
8
8
  encodeFunctionData(functionFragment: "SIGNER_ROLE", values?: undefined): string;
9
9
  encodeFunctionData(functionFragment: "addRewards", values?: undefined): string;
10
10
  encodeFunctionData(functionFragment: "addSigner", values: [AddressLike]): string;
11
- encodeFunctionData(functionFragment: "claimReward", values: [BigNumberish, BigNumberish, BigNumberish, BytesLike]): string;
12
11
  encodeFunctionData(functionFragment: "emergencyUnstake", values: [AddressLike]): string;
13
12
  encodeFunctionData(functionFragment: "getRoleAdmin", values: [BytesLike]): string;
14
13
  encodeFunctionData(functionFragment: "getUserInfo", values: [AddressLike]): string;
15
14
  encodeFunctionData(functionFragment: "grantRole", values: [BytesLike, AddressLike]): string;
15
+ encodeFunctionData(functionFragment: "harvestReward", values: [BigNumberish, BigNumberish, BigNumberish, BytesLike]): string;
16
16
  encodeFunctionData(functionFragment: "hasRole", values: [BytesLike, AddressLike]): string;
17
17
  encodeFunctionData(functionFragment: "initialize", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string;
18
18
  encodeFunctionData(functionFragment: "maxRewardAmount", values?: undefined): string;
@@ -32,21 +32,21 @@ export interface EthStakingInterface extends Interface {
32
32
  encodeFunctionData(functionFragment: "transferOwnership", values: [AddressLike]): string;
33
33
  encodeFunctionData(functionFragment: "unpause", values?: undefined): string;
34
34
  encodeFunctionData(functionFragment: "unstake", values: [BigNumberish]): string;
35
- encodeFunctionData(functionFragment: "unstakeAndClaim", values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, BytesLike]): string;
35
+ encodeFunctionData(functionFragment: "unstakeAndHarvest", values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, BytesLike]): string;
36
36
  encodeFunctionData(functionFragment: "updateMaxRewardAmount", values: [BigNumberish]): string;
37
37
  encodeFunctionData(functionFragment: "usedSignatures", values: [BytesLike]): string;
38
38
  encodeFunctionData(functionFragment: "userStakes", values: [AddressLike]): string;
39
- encodeFunctionData(functionFragment: "userTotalRewardsClaimed", values: [AddressLike]): string;
39
+ encodeFunctionData(functionFragment: "userTotalRewardsHarvested", values: [AddressLike]): string;
40
40
  decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
41
41
  decodeFunctionResult(functionFragment: "OPERATOR_ROLE", data: BytesLike): Result;
42
42
  decodeFunctionResult(functionFragment: "SIGNER_ROLE", data: BytesLike): Result;
43
43
  decodeFunctionResult(functionFragment: "addRewards", data: BytesLike): Result;
44
44
  decodeFunctionResult(functionFragment: "addSigner", data: BytesLike): Result;
45
- decodeFunctionResult(functionFragment: "claimReward", data: BytesLike): Result;
46
45
  decodeFunctionResult(functionFragment: "emergencyUnstake", data: BytesLike): Result;
47
46
  decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result;
48
47
  decodeFunctionResult(functionFragment: "getUserInfo", data: BytesLike): Result;
49
48
  decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
49
+ decodeFunctionResult(functionFragment: "harvestReward", data: BytesLike): Result;
50
50
  decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
51
51
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
52
52
  decodeFunctionResult(functionFragment: "maxRewardAmount", data: BytesLike): Result;
@@ -66,11 +66,11 @@ export interface EthStakingInterface extends Interface {
66
66
  decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
67
67
  decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;
68
68
  decodeFunctionResult(functionFragment: "unstake", data: BytesLike): Result;
69
- decodeFunctionResult(functionFragment: "unstakeAndClaim", data: BytesLike): Result;
69
+ decodeFunctionResult(functionFragment: "unstakeAndHarvest", data: BytesLike): Result;
70
70
  decodeFunctionResult(functionFragment: "updateMaxRewardAmount", data: BytesLike): Result;
71
71
  decodeFunctionResult(functionFragment: "usedSignatures", data: BytesLike): Result;
72
72
  decodeFunctionResult(functionFragment: "userStakes", data: BytesLike): Result;
73
- decodeFunctionResult(functionFragment: "userTotalRewardsClaimed", data: BytesLike): Result;
73
+ decodeFunctionResult(functionFragment: "userTotalRewardsHarvested", data: BytesLike): Result;
74
74
  }
75
75
  export declare namespace InitializedEvent {
76
76
  type InputTuple = [version: BigNumberish];
@@ -118,7 +118,7 @@ export declare namespace PausedEvent {
118
118
  type Log = TypedEventLog<Event>;
119
119
  type LogDescription = TypedLogDescription<Event>;
120
120
  }
121
- export declare namespace RewardClaimedEvent {
121
+ export declare namespace RewardHarvestedEvent {
122
122
  type InputTuple = [
123
123
  user: AddressLike,
124
124
  amount: BigNumberish,
@@ -271,14 +271,6 @@ export interface EthStaking extends BaseContract {
271
271
  SIGNER_ROLE: TypedContractMethod<[], [string], "view">;
272
272
  addRewards: TypedContractMethod<[], [void], "payable">;
273
273
  addSigner: TypedContractMethod<[_signer: AddressLike], [void], "nonpayable">;
274
- claimReward: TypedContractMethod<[
275
- _amount: BigNumberish,
276
- _nonce: BigNumberish,
277
- _deadline: BigNumberish,
278
- _signature: BytesLike
279
- ], [
280
- void
281
- ], "nonpayable">;
282
274
  emergencyUnstake: TypedContractMethod<[
283
275
  _recipient: AddressLike
284
276
  ], [
@@ -290,7 +282,7 @@ export interface EthStaking extends BaseContract {
290
282
  ], [
291
283
  [bigint, bigint] & {
292
284
  stake: bigint;
293
- claimed: bigint;
285
+ harvested: bigint;
294
286
  }
295
287
  ], "view">;
296
288
  grantRole: TypedContractMethod<[
@@ -299,6 +291,14 @@ export interface EthStaking extends BaseContract {
299
291
  ], [
300
292
  void
301
293
  ], "nonpayable">;
294
+ harvestReward: TypedContractMethod<[
295
+ _amount: BigNumberish,
296
+ _nonce: BigNumberish,
297
+ _deadline: BigNumberish,
298
+ _signature: BytesLike
299
+ ], [
300
+ void
301
+ ], "nonpayable">;
302
302
  hasRole: TypedContractMethod<[
303
303
  role: BytesLike,
304
304
  account: AddressLike
@@ -356,7 +356,7 @@ export interface EthStaking extends BaseContract {
356
356
  ], "nonpayable">;
357
357
  unpause: TypedContractMethod<[], [void], "nonpayable">;
358
358
  unstake: TypedContractMethod<[_amount: BigNumberish], [void], "nonpayable">;
359
- unstakeAndClaim: TypedContractMethod<[
359
+ unstakeAndHarvest: TypedContractMethod<[
360
360
  _unstakeAmount: BigNumberish,
361
361
  _rewardAmount: BigNumberish,
362
362
  _nonce: BigNumberish,
@@ -372,7 +372,7 @@ export interface EthStaking extends BaseContract {
372
372
  ], "nonpayable">;
373
373
  usedSignatures: TypedContractMethod<[arg0: BytesLike], [boolean], "view">;
374
374
  userStakes: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
375
- userTotalRewardsClaimed: TypedContractMethod<[
375
+ userTotalRewardsHarvested: TypedContractMethod<[
376
376
  arg0: AddressLike
377
377
  ], [
378
378
  bigint
@@ -383,14 +383,6 @@ export interface EthStaking extends BaseContract {
383
383
  getFunction(nameOrSignature: "SIGNER_ROLE"): TypedContractMethod<[], [string], "view">;
384
384
  getFunction(nameOrSignature: "addRewards"): TypedContractMethod<[], [void], "payable">;
385
385
  getFunction(nameOrSignature: "addSigner"): TypedContractMethod<[_signer: AddressLike], [void], "nonpayable">;
386
- getFunction(nameOrSignature: "claimReward"): TypedContractMethod<[
387
- _amount: BigNumberish,
388
- _nonce: BigNumberish,
389
- _deadline: BigNumberish,
390
- _signature: BytesLike
391
- ], [
392
- void
393
- ], "nonpayable">;
394
386
  getFunction(nameOrSignature: "emergencyUnstake"): TypedContractMethod<[_recipient: AddressLike], [void], "nonpayable">;
395
387
  getFunction(nameOrSignature: "getRoleAdmin"): TypedContractMethod<[role: BytesLike], [string], "view">;
396
388
  getFunction(nameOrSignature: "getUserInfo"): TypedContractMethod<[
@@ -398,7 +390,7 @@ export interface EthStaking extends BaseContract {
398
390
  ], [
399
391
  [bigint, bigint] & {
400
392
  stake: bigint;
401
- claimed: bigint;
393
+ harvested: bigint;
402
394
  }
403
395
  ], "view">;
404
396
  getFunction(nameOrSignature: "grantRole"): TypedContractMethod<[
@@ -407,6 +399,14 @@ export interface EthStaking extends BaseContract {
407
399
  ], [
408
400
  void
409
401
  ], "nonpayable">;
402
+ getFunction(nameOrSignature: "harvestReward"): TypedContractMethod<[
403
+ _amount: BigNumberish,
404
+ _nonce: BigNumberish,
405
+ _deadline: BigNumberish,
406
+ _signature: BytesLike
407
+ ], [
408
+ void
409
+ ], "nonpayable">;
410
410
  getFunction(nameOrSignature: "hasRole"): TypedContractMethod<[
411
411
  role: BytesLike,
412
412
  account: AddressLike
@@ -448,7 +448,7 @@ export interface EthStaking extends BaseContract {
448
448
  getFunction(nameOrSignature: "transferOwnership"): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">;
449
449
  getFunction(nameOrSignature: "unpause"): TypedContractMethod<[], [void], "nonpayable">;
450
450
  getFunction(nameOrSignature: "unstake"): TypedContractMethod<[_amount: BigNumberish], [void], "nonpayable">;
451
- getFunction(nameOrSignature: "unstakeAndClaim"): TypedContractMethod<[
451
+ getFunction(nameOrSignature: "unstakeAndHarvest"): TypedContractMethod<[
452
452
  _unstakeAmount: BigNumberish,
453
453
  _rewardAmount: BigNumberish,
454
454
  _nonce: BigNumberish,
@@ -460,12 +460,12 @@ export interface EthStaking extends BaseContract {
460
460
  getFunction(nameOrSignature: "updateMaxRewardAmount"): TypedContractMethod<[_newMaxReward: BigNumberish], [void], "nonpayable">;
461
461
  getFunction(nameOrSignature: "usedSignatures"): TypedContractMethod<[arg0: BytesLike], [boolean], "view">;
462
462
  getFunction(nameOrSignature: "userStakes"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
463
- getFunction(nameOrSignature: "userTotalRewardsClaimed"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
463
+ getFunction(nameOrSignature: "userTotalRewardsHarvested"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
464
464
  getEvent(key: "Initialized"): TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
465
465
  getEvent(key: "MinStakeUpdated"): TypedContractEvent<MinStakeUpdatedEvent.InputTuple, MinStakeUpdatedEvent.OutputTuple, MinStakeUpdatedEvent.OutputObject>;
466
466
  getEvent(key: "OwnershipTransferred"): TypedContractEvent<OwnershipTransferredEvent.InputTuple, OwnershipTransferredEvent.OutputTuple, OwnershipTransferredEvent.OutputObject>;
467
467
  getEvent(key: "Paused"): TypedContractEvent<PausedEvent.InputTuple, PausedEvent.OutputTuple, PausedEvent.OutputObject>;
468
- getEvent(key: "RewardClaimed"): TypedContractEvent<RewardClaimedEvent.InputTuple, RewardClaimedEvent.OutputTuple, RewardClaimedEvent.OutputObject>;
468
+ getEvent(key: "RewardHarvested"): TypedContractEvent<RewardHarvestedEvent.InputTuple, RewardHarvestedEvent.OutputTuple, RewardHarvestedEvent.OutputObject>;
469
469
  getEvent(key: "RoleAdminChanged"): TypedContractEvent<RoleAdminChangedEvent.InputTuple, RoleAdminChangedEvent.OutputTuple, RoleAdminChangedEvent.OutputObject>;
470
470
  getEvent(key: "RoleGranted"): TypedContractEvent<RoleGrantedEvent.InputTuple, RoleGrantedEvent.OutputTuple, RoleGrantedEvent.OutputObject>;
471
471
  getEvent(key: "RoleRevoked"): TypedContractEvent<RoleRevokedEvent.InputTuple, RoleRevokedEvent.OutputTuple, RoleRevokedEvent.OutputObject>;
@@ -482,8 +482,8 @@ export interface EthStaking extends BaseContract {
482
482
  OwnershipTransferred: TypedContractEvent<OwnershipTransferredEvent.InputTuple, OwnershipTransferredEvent.OutputTuple, OwnershipTransferredEvent.OutputObject>;
483
483
  "Paused(address)": TypedContractEvent<PausedEvent.InputTuple, PausedEvent.OutputTuple, PausedEvent.OutputObject>;
484
484
  Paused: TypedContractEvent<PausedEvent.InputTuple, PausedEvent.OutputTuple, PausedEvent.OutputObject>;
485
- "RewardClaimed(address,uint256,uint256,bytes32)": TypedContractEvent<RewardClaimedEvent.InputTuple, RewardClaimedEvent.OutputTuple, RewardClaimedEvent.OutputObject>;
486
- RewardClaimed: TypedContractEvent<RewardClaimedEvent.InputTuple, RewardClaimedEvent.OutputTuple, RewardClaimedEvent.OutputObject>;
485
+ "RewardHarvested(address,uint256,uint256,bytes32)": TypedContractEvent<RewardHarvestedEvent.InputTuple, RewardHarvestedEvent.OutputTuple, RewardHarvestedEvent.OutputObject>;
486
+ RewardHarvested: TypedContractEvent<RewardHarvestedEvent.InputTuple, RewardHarvestedEvent.OutputTuple, RewardHarvestedEvent.OutputObject>;
487
487
  "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent<RoleAdminChangedEvent.InputTuple, RoleAdminChangedEvent.OutputTuple, RoleAdminChangedEvent.OutputObject>;
488
488
  RoleAdminChanged: TypedContractEvent<RoleAdminChangedEvent.InputTuple, RoleAdminChangedEvent.OutputTuple, RoleAdminChangedEvent.OutputObject>;
489
489
  "RoleGranted(bytes32,address,address)": TypedContractEvent<RoleGrantedEvent.InputTuple, RoleGrantedEvent.OutputTuple, RoleGrantedEvent.OutputObject>;
@@ -42,8 +42,8 @@
42
42
  "NFTTicket": "0x3f1AC66384593AAF4d99B51776E1d7df00d2C271",
43
43
  "NFTTicket-implemented": "0x5099f248392C336186AA438BC871c6d3E0886b0C",
44
44
  "NFTTicket-implemented-old": "0x8915d96Ae316b321e8B3A00Ba21e4F5D41FF526C",
45
- "EthStaking": "0xaEC708D2ED6546aa415c6823bae7Db0fc1A61359",
46
- "EthStaking-implemented": "0xcC2c11F69e5f26d47e6e356DC763985FFE010498"
45
+ "EthStaking": "0x15fcdFC625fD7c7A4dFC6Ba7a8cBcA312e80Dad8",
46
+ "EthStaking-implemented": "0x9af37a0daae87e6D9012d7091C5Bd16ec5D27345"
47
47
  },
48
48
  "base": {
49
49
  "SeedRoundFundraiser": "0x3e7b414cAd1011c757dBA1a58212Db561dc9feeB",
package/dist/types.d.ts CHANGED
@@ -440,7 +440,7 @@ export interface RawEthStakingEventTypes {
440
440
  amount: bigint;
441
441
  timestamp: bigint;
442
442
  };
443
- RewardClaimed: {
443
+ RewardHarvested: {
444
444
  user: string;
445
445
  amount: bigint;
446
446
  timestamp: bigint;
@@ -496,7 +496,7 @@ export interface EthStakingEventTypes {
496
496
  amount: number;
497
497
  timestamp: number;
498
498
  };
499
- RewardClaimed: {
499
+ RewardHarvested: {
500
500
  user: string;
501
501
  amount: number;
502
502
  timestamp: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiia-vault-sdk",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "SDK for AIIA Vault Contract",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",