aiia-vault-sdk 1.4.0 → 1.4.1

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.
@@ -362,6 +362,6 @@ export declare class Erc20StakingSDK {
362
362
  }>;
363
363
  getContractAddress(): string;
364
364
  getAllEvents(fromBlock: number, toBlock: number, whitelistEvents?: Array<keyof RawErc20StakingEventTypes>): Promise<ParsedErc20StakingEventRaw[]>;
365
- streamEvents(fromBlock: number, onEvent: (event: ParsedErc20StakingEvent) => Promise<void>, saveLatestBlock: (blockNumber: number) => Promise<void>, batchSize?: number, sleepTime?: number, blockGap?: number): Promise<void>;
365
+ streamEvents(fromBlock: number, onEvent: (event: ParsedErc20StakingEvent) => Promise<void>, saveLatestBlock: (blockNumber: number) => Promise<void>, batchSize?: number, sleepTime?: number, blockGap?: number, shouldContinue?: () => Promise<boolean> | boolean): Promise<void>;
366
366
  formatEventArgs: (event: ParsedErc20StakingEventRaw) => ParsedErc20StakingEvent;
367
367
  }
@@ -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.Erc20StakingSDK=void 0;const e=require("ethers"),a=t(require("./abis/Erc20Staking.json")),s=t(require("./contracts.json")),n=require("./utils");exports.Erc20StakingSDK=class{constructor(t,r,o){this.name="Erc20Staking",this.tokenAddress=e.ethers.ZeroAddress,this.tokenDecimals=18,this.isBootstrapped=!1,this.formatEventArgs=t=>{const{eventName:e,args:a}=t;switch(e){case"Staked":case"Unstaked":return{...t,args:{...a,user:a.user.toLowerCase(),amount:this.parseTokenAmount(a.amount),timestamp:Number(a.timestamp)}};case"RewardHarvested":return{...t,args:{...a,user:a.user.toLowerCase(),amount:this.parseTokenAmount(a.amount),timestamp:Number(a.timestamp),signatureHash:a.signatureHash}};case"SignerUpdated":return{...t,args:{...a,newSigner:a.newSigner.toLowerCase()}};case"MinStakeUpdated":return{...t,args:{...a,oldAmount:this.parseTokenAmount(a.oldAmount),newAmount:this.parseTokenAmount(a.newAmount)}};case"TokenUpdated":return{...t,args:{...a,newToken:a.newToken.toLowerCase()}};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 d=(0,n.getRandomProvider)(this.providers);this.contractAddress=(0,n.resolveContractAddress)(i[0],this.name,s.default,r),this.contract=new e.ethers.Contract(this.contractAddress,a.default.abi,d),o?this.tokenAddress=o:this.loadTokenAddress()}async loadTokenAddress(){try{this.tokenAddress=await this.contract.stakingToken(),this.tokenContract=new e.ethers.Contract(this.tokenAddress,["function decimals() view returns (uint8)","function symbol() view returns (string)","function balanceOf(address owner) view returns (uint256)","function allowance(address owner, address spender) view returns (uint256)","function approve(address spender, uint256 amount) returns (bool)"],this.getRandomProvider());try{this.tokenDecimals=await this.tokenContract.decimals()}catch(t){console.warn("Could not load token decimals, defaulting to 18")}}catch(t){console.error("Could not load token address from contract")}}getRandomProvider(){return(0,n.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,n.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.tokenAddress===e.ethers.ZeroAddress&&await this.loadTokenAddress(),this.isBootstrapped=!0}async signAndSendTransaction(t,e,a={}){return(0,n.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),a,this.contract)}getTokenDecimals(){return this.tokenAddress&&this.tokenAddress!==e.ethers.ZeroAddress||this.loadTokenAddress(),this.tokenDecimals}async getTokenAddress(){return this.tokenAddress&&this.tokenAddress!==e.ethers.ZeroAddress||await this.loadTokenAddress(),this.tokenAddress}async formatTokenAmount(t){const a=await this.getTokenDecimals();return e.ethers.parseUnits(t.toString(),a)}parseTokenAmount(t){const a=this.getTokenDecimals();return Number(e.ethers.formatUnits(t,a))}async getTokenBalanceRaw(t){return this.tokenAddress&&this.tokenAddress!==e.ethers.ZeroAddress||await this.loadTokenAddress(),await this.tokenContract.balanceOf(t)}async getTokenBalance(t){const e=await this.getTokenBalanceRaw(t);return this.parseTokenAmount(e)}async getTokenAllowanceRaw(t){return this.tokenAddress&&this.tokenAddress!==e.ethers.ZeroAddress||await this.loadTokenAddress(),await this.tokenContract.allowance(t,this.contractAddress)}async getTokenAllowance(t){const e=await this.getTokenAllowanceRaw(t);return this.parseTokenAmount(e)}async buildApproveTokenTx(t){const e=await this.formatTokenAmount(t);return(0,n.buildApproveERC20Tx)(this.tokenAddress,this.contractAddress,e,this.getRandomProvider())}async buildApproveUnlimitedTokenTx(){return await this.buildApproveTokenTx(1e6)}async buildStakeTxRaw(t){return await this.contract.stake.populateTransaction(t)}async buildStakeTx(t){const e=await this.formatTokenAmount(t);return await this.buildStakeTxRaw(e)}async buildUnstakeTxRaw(t){return await this.contract.unstake.populateTransaction(t)}async buildUnstakeTx(t){const e=await this.formatTokenAmount(t);return await this.buildUnstakeTxRaw(e)}async buildHarvestRewardTxRaw(t,e,a,s){return await this.contract.harvestReward.populateTransaction(t,e,a,s)}async buildHarvestRewardTx(t,e,a,s){const n=await this.formatTokenAmount(t);return await this.buildHarvestRewardTxRaw(n,BigInt(e),BigInt(a),s)}async buildUnstakeAndHarvestTxRaw(t,e,a,s,n){return await this.contract.unstakeAndHarvest.populateTransaction(t,e,a,s,n)}async buildUnstakeAndHarvestTx(t,e,a,s,n){const r=await this.formatTokenAmount(t),o=await this.formatTokenAmount(e);return await this.buildUnstakeAndHarvestTxRaw(r,o,BigInt(a),BigInt(s),n)}async buildAddRewardsTxRaw(t){return await this.contract.addRewards.populateTransaction(t)}async buildAddRewardsTx(t){const e=await this.formatTokenAmount(t);return await this.buildAddRewardsTxRaw(e)}async buildUpdateMaxRewardAmountTxRaw(t){return await this.contract.updateMaxRewardAmount.populateTransaction(t)}async buildUpdateMaxRewardAmountTx(t){const e=await this.formatTokenAmount(t);return await this.buildUpdateMaxRewardAmountTxRaw(e)}async buildSetMinStakeAmountTxRaw(t){return await this.contract.setMinStakeAmount.populateTransaction(t)}async buildSetMinStakeAmountTx(t){const e=await this.formatTokenAmount(t);return await this.buildSetMinStakeAmountTxRaw(e)}async buildUpdateStakingTokenTx(t){return await this.contract.updateStakingToken.populateTransaction(t)}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 buildEmergencyWithdrawTx(t){return await this.contract.emergencyWithdraw.populateTransaction(t)}async getTotalStakedRaw(){return await this.contract.totalStaked()}async getTotalStaked(){const t=await this.getTotalStakedRaw();return this.parseTokenAmount(t)}async getTotalRewardsRaw(){return await this.contract.totalRewards()}async getTotalRewards(){const t=await this.getTotalRewardsRaw();return this.parseTokenAmount(t)}async getMaxRewardAmountRaw(){return await this.contract.maxRewardAmount()}async getMaxRewardAmount(){const t=await this.getMaxRewardAmountRaw();return this.parseTokenAmount(t)}async getMinStakeAmountRaw(){return await this.contract.minStakeAmount()}async getMinStakeAmount(){const t=await this.getMinStakeAmountRaw();return this.parseTokenAmount(t)}async getUserInfoRaw(t){const[e,a]=await this.contract.getUserInfo(t);return{stake:e,harvested:a}}async getUserInfo(t){const{stake:e,harvested:a}=await this.getUserInfoRaw(t);return{stake:await this.parseTokenAmount(e),harvested:await this.parseTokenAmount(a)}}async getUserStakeRaw(t){return await this.contract.userStakes(t)}async getUserStake(t){const e=await this.getUserStakeRaw(t);return this.parseTokenAmount(e)}async getUserTotalRewardsHarvestedRaw(t){return await this.contract.userTotalRewardsHarvested(t)}async getUserTotalRewardsHarvested(t){const e=await this.getUserTotalRewardsHarvestedRaw(t);return this.parseTokenAmount(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 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,s,n,r,o){const i=await this.formatTokenAmount(s),d=e.ethers.solidityPackedKeccak256(["address","address","uint256","uint256","uint256"],[t,a,i,n,r]),c=new e.ethers.Wallet(o);return{signature:await c.signMessage(e.ethers.getBytes(d)),messageHash:d.toString()}}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,a){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,a)}async streamEvents(t,e,a,s=1e3,r=5e3,o=0){const i=["Staked","Unstaked","RewardHarvested"];return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,i),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:a,fromBlock:t,batchSize:s,sleepTime:r,blockGap:o})}};
1
+ "use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Erc20StakingSDK=void 0;const e=require("ethers"),a=t(require("./abis/Erc20Staking.json")),s=t(require("./contracts.json")),n=require("./utils");exports.Erc20StakingSDK=class{constructor(t,r,o){this.name="Erc20Staking",this.tokenAddress=e.ethers.ZeroAddress,this.tokenDecimals=18,this.isBootstrapped=!1,this.formatEventArgs=t=>{const{eventName:e,args:a}=t;switch(e){case"Staked":case"Unstaked":return{...t,args:{...a,user:a.user.toLowerCase(),amount:this.parseTokenAmount(a.amount),timestamp:Number(a.timestamp)}};case"RewardHarvested":return{...t,args:{...a,user:a.user.toLowerCase(),amount:this.parseTokenAmount(a.amount),timestamp:Number(a.timestamp),signatureHash:a.signatureHash}};case"SignerUpdated":return{...t,args:{...a,newSigner:a.newSigner.toLowerCase()}};case"MinStakeUpdated":return{...t,args:{...a,oldAmount:this.parseTokenAmount(a.oldAmount),newAmount:this.parseTokenAmount(a.newAmount)}};case"TokenUpdated":return{...t,args:{...a,newToken:a.newToken.toLowerCase()}};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 d=(0,n.getRandomProvider)(this.providers);this.contractAddress=(0,n.resolveContractAddress)(i[0],this.name,s.default,r),this.contract=new e.ethers.Contract(this.contractAddress,a.default.abi,d),o?this.tokenAddress=o:this.loadTokenAddress()}async loadTokenAddress(){try{this.tokenAddress=await this.contract.stakingToken(),this.tokenContract=new e.ethers.Contract(this.tokenAddress,["function decimals() view returns (uint8)","function symbol() view returns (string)","function balanceOf(address owner) view returns (uint256)","function allowance(address owner, address spender) view returns (uint256)","function approve(address spender, uint256 amount) returns (bool)"],this.getRandomProvider());try{this.tokenDecimals=await this.tokenContract.decimals()}catch(t){console.warn("Could not load token decimals, defaulting to 18")}}catch(t){console.error("Could not load token address from contract")}}getRandomProvider(){return(0,n.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,n.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.tokenAddress===e.ethers.ZeroAddress&&await this.loadTokenAddress(),this.isBootstrapped=!0}async signAndSendTransaction(t,e,a={}){return(0,n.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),a,this.contract)}getTokenDecimals(){return this.tokenAddress&&this.tokenAddress!==e.ethers.ZeroAddress||this.loadTokenAddress(),this.tokenDecimals}async getTokenAddress(){return this.tokenAddress&&this.tokenAddress!==e.ethers.ZeroAddress||await this.loadTokenAddress(),this.tokenAddress}async formatTokenAmount(t){const a=await this.getTokenDecimals();return e.ethers.parseUnits(t.toString(),a)}parseTokenAmount(t){const a=this.getTokenDecimals();return Number(e.ethers.formatUnits(t,a))}async getTokenBalanceRaw(t){return this.tokenAddress&&this.tokenAddress!==e.ethers.ZeroAddress||await this.loadTokenAddress(),await this.tokenContract.balanceOf(t)}async getTokenBalance(t){const e=await this.getTokenBalanceRaw(t);return this.parseTokenAmount(e)}async getTokenAllowanceRaw(t){return this.tokenAddress&&this.tokenAddress!==e.ethers.ZeroAddress||await this.loadTokenAddress(),await this.tokenContract.allowance(t,this.contractAddress)}async getTokenAllowance(t){const e=await this.getTokenAllowanceRaw(t);return this.parseTokenAmount(e)}async buildApproveTokenTx(t){const e=await this.formatTokenAmount(t);return(0,n.buildApproveERC20Tx)(this.tokenAddress,this.contractAddress,e,this.getRandomProvider())}async buildApproveUnlimitedTokenTx(){return await this.buildApproveTokenTx(1e6)}async buildStakeTxRaw(t){return await this.contract.stake.populateTransaction(t)}async buildStakeTx(t){const e=await this.formatTokenAmount(t);return await this.buildStakeTxRaw(e)}async buildUnstakeTxRaw(t){return await this.contract.unstake.populateTransaction(t)}async buildUnstakeTx(t){const e=await this.formatTokenAmount(t);return await this.buildUnstakeTxRaw(e)}async buildHarvestRewardTxRaw(t,e,a,s){return await this.contract.harvestReward.populateTransaction(t,e,a,s)}async buildHarvestRewardTx(t,e,a,s){const n=await this.formatTokenAmount(t);return await this.buildHarvestRewardTxRaw(n,BigInt(e),BigInt(a),s)}async buildUnstakeAndHarvestTxRaw(t,e,a,s,n){return await this.contract.unstakeAndHarvest.populateTransaction(t,e,a,s,n)}async buildUnstakeAndHarvestTx(t,e,a,s,n){const r=await this.formatTokenAmount(t),o=await this.formatTokenAmount(e);return await this.buildUnstakeAndHarvestTxRaw(r,o,BigInt(a),BigInt(s),n)}async buildAddRewardsTxRaw(t){return await this.contract.addRewards.populateTransaction(t)}async buildAddRewardsTx(t){const e=await this.formatTokenAmount(t);return await this.buildAddRewardsTxRaw(e)}async buildUpdateMaxRewardAmountTxRaw(t){return await this.contract.updateMaxRewardAmount.populateTransaction(t)}async buildUpdateMaxRewardAmountTx(t){const e=await this.formatTokenAmount(t);return await this.buildUpdateMaxRewardAmountTxRaw(e)}async buildSetMinStakeAmountTxRaw(t){return await this.contract.setMinStakeAmount.populateTransaction(t)}async buildSetMinStakeAmountTx(t){const e=await this.formatTokenAmount(t);return await this.buildSetMinStakeAmountTxRaw(e)}async buildUpdateStakingTokenTx(t){return await this.contract.updateStakingToken.populateTransaction(t)}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 buildEmergencyWithdrawTx(t){return await this.contract.emergencyWithdraw.populateTransaction(t)}async getTotalStakedRaw(){return await this.contract.totalStaked()}async getTotalStaked(){const t=await this.getTotalStakedRaw();return this.parseTokenAmount(t)}async getTotalRewardsRaw(){return await this.contract.totalRewards()}async getTotalRewards(){const t=await this.getTotalRewardsRaw();return this.parseTokenAmount(t)}async getMaxRewardAmountRaw(){return await this.contract.maxRewardAmount()}async getMaxRewardAmount(){const t=await this.getMaxRewardAmountRaw();return this.parseTokenAmount(t)}async getMinStakeAmountRaw(){return await this.contract.minStakeAmount()}async getMinStakeAmount(){const t=await this.getMinStakeAmountRaw();return this.parseTokenAmount(t)}async getUserInfoRaw(t){const[e,a]=await this.contract.getUserInfo(t);return{stake:e,harvested:a}}async getUserInfo(t){const{stake:e,harvested:a}=await this.getUserInfoRaw(t);return{stake:await this.parseTokenAmount(e),harvested:await this.parseTokenAmount(a)}}async getUserStakeRaw(t){return await this.contract.userStakes(t)}async getUserStake(t){const e=await this.getUserStakeRaw(t);return this.parseTokenAmount(e)}async getUserTotalRewardsHarvestedRaw(t){return await this.contract.userTotalRewardsHarvested(t)}async getUserTotalRewardsHarvested(t){const e=await this.getUserTotalRewardsHarvestedRaw(t);return this.parseTokenAmount(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 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,s,n,r,o){const i=await this.formatTokenAmount(s),d=e.ethers.solidityPackedKeccak256(["address","address","uint256","uint256","uint256"],[t,a,i,n,r]),c=new e.ethers.Wallet(o);return{signature:await c.signMessage(e.ethers.getBytes(d)),messageHash:d.toString()}}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,a){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,a)}async streamEvents(t,e,a,s=1e3,r=5e3,o=0,i){const d=["Staked","Unstaked","RewardHarvested"];return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,d),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:a,fromBlock:t,batchSize:s,sleepTime:r,blockGap:o,shouldContinue:i})}};
@@ -295,6 +295,6 @@ export declare class EthStakingSDK {
295
295
  }>;
296
296
  getContractAddress(): string;
297
297
  getAllEvents(fromBlock: number, toBlock: number, whitelistEvents?: Array<keyof RawEthStakingEventTypes>): Promise<ParsedEthStakingEventRaw[]>;
298
- streamEvents(fromBlock: number, onEvent: (event: ParsedEthStakingEvent) => Promise<void>, saveLatestBlock: (blockNumber: number) => Promise<void>, batchSize?: number, sleepTime?: number, blockGap?: number): Promise<void>;
298
+ streamEvents(fromBlock: number, onEvent: (event: ParsedEthStakingEvent) => Promise<void>, saveLatestBlock: (blockNumber: number) => Promise<void>, batchSize?: number, sleepTime?: number, blockGap?: number, shouldContinue?: () => Promise<boolean> | boolean): Promise<void>;
299
299
  formatEventArgs: (event: ParsedEthStakingEventRaw) => ParsedEthStakingEvent;
300
300
  }
@@ -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 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
+ "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,o){const c=["Staked","Unstaked","RewardHarvested","SignerUpdated","MinStakeUpdated"];return await this.bootstrap(),(0,s.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,c),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:a,fromBlock:t,batchSize:r,sleepTime:n,blockGap:i,shouldContinue:o})}};
@@ -57,6 +57,7 @@
57
57
  "MultiLevelReferralNFT-implemented": "0xc1c5cb24f727Ad0e634F1347c8BD1396BC050c77",
58
58
  "NFTTicket": "0x299d9923D9AfA0C3c7F868b948d504C4D6104b9F",
59
59
  "NFTTicket-implemented": "0x6520a840CDBd1AeCB32E6331164a4445aE1148b8",
60
- "NFTTicket-implemented-old": "0xec38C132724BF909416bc3F222DD9c3357E70C39"
60
+ "NFTTicket-implemented-old": "0xec38C132724BF909416bc3F222DD9c3357E70C39",
61
+ "TradingVault": "0x4F6CAb6b514F7920fb41A8EbD54A7CF6B4293D1F"
61
62
  }
62
63
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiia-vault-sdk",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "SDK for AIIA Vault Contract",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",