aiia-vault-sdk 1.1.30 → 1.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FairLaunch.d.ts +95 -0
- package/dist/FairLaunch.js +1 -0
- package/dist/abis/FairLaunch.json +1211 -0
- package/dist/contracts/FairLaunch.d.ts +699 -0
- package/dist/contracts/FairLaunch.js +1 -0
- package/dist/contracts.json +7 -1
- package/dist/types.d.ts +71 -0
- package/package.json +1 -1
@@ -0,0 +1,95 @@
|
|
1
|
+
import { ethers } from "ethers";
|
2
|
+
import { type SendTransactionMutateAsync } from "@wagmi/core/query";
|
3
|
+
import { Config } from "@wagmi/core/dist/types/createConfig";
|
4
|
+
import { ParsedFairLaunchEventRaw, ParsedFairLaunchEvent } from "./types";
|
5
|
+
export interface UserContribution {
|
6
|
+
amount: number;
|
7
|
+
tokenAllocation: number;
|
8
|
+
hasClaimedInitial: boolean;
|
9
|
+
vestedClaimed: number;
|
10
|
+
tradingVaultId: number;
|
11
|
+
}
|
12
|
+
export interface SaleInfo {
|
13
|
+
startTime: number;
|
14
|
+
endTime: number;
|
15
|
+
totalTokensForSale: number;
|
16
|
+
totalRaised: number;
|
17
|
+
tokenPrice: number;
|
18
|
+
saleEnded: boolean;
|
19
|
+
claimingEnabled: boolean;
|
20
|
+
liquidityAdded: boolean;
|
21
|
+
}
|
22
|
+
export declare class FairLaunchSDK {
|
23
|
+
name: string;
|
24
|
+
private contract;
|
25
|
+
private providers;
|
26
|
+
private contractAddress;
|
27
|
+
private isBootstrapped;
|
28
|
+
private _projectToken;
|
29
|
+
private _fundingToken;
|
30
|
+
private _projectTokenDecimals;
|
31
|
+
private _fundingTokenDecimals;
|
32
|
+
constructor(rpcUrls: string | string[], contractAddress?: string);
|
33
|
+
private getRandomProvider;
|
34
|
+
private getContractWithRandomProvider;
|
35
|
+
bootstrap(): Promise<void>;
|
36
|
+
signAndSendTransaction(tx: ethers.ContractTransaction, wallet: ethers.Wallet | SendTransactionMutateAsync<Config, any>, callbacks?: {
|
37
|
+
onSubmit?: (tx: string) => void | Promise<void>;
|
38
|
+
onFinally?: (status: {
|
39
|
+
status: boolean | null;
|
40
|
+
confirmations: number;
|
41
|
+
txHash: string;
|
42
|
+
isCompleted: boolean;
|
43
|
+
attempts: number;
|
44
|
+
}) => void | Promise<void>;
|
45
|
+
onError?: (error: Error) => void | Promise<void>;
|
46
|
+
}): Promise<{
|
47
|
+
transaction: {
|
48
|
+
hash: string;
|
49
|
+
};
|
50
|
+
status: {
|
51
|
+
status: boolean | null;
|
52
|
+
confirmations: number;
|
53
|
+
isCompleted: boolean;
|
54
|
+
attempts: number;
|
55
|
+
};
|
56
|
+
}>;
|
57
|
+
buildContributeTx(amount: number): Promise<ethers.ContractTransaction>;
|
58
|
+
buildEndSaleTx(): Promise<ethers.ContractTransaction>;
|
59
|
+
buildAddLiquidityTx(): Promise<ethers.ContractTransaction>;
|
60
|
+
buildEnableClaimingTx(): Promise<ethers.ContractTransaction>;
|
61
|
+
buildClaimInitialTx(): Promise<ethers.ContractTransaction>;
|
62
|
+
buildClaimVestedTx(): Promise<ethers.ContractTransaction>;
|
63
|
+
buildUpdateLiquidityTokensTx(liquidityTokens: number): Promise<ethers.ContractTransaction>;
|
64
|
+
buildUpdateLiquidityPercentTx(liquidityPercent: number): Promise<ethers.ContractTransaction>;
|
65
|
+
buildUpdateInitialClaimPercentTx(initialClaimPercent: number): Promise<ethers.ContractTransaction>;
|
66
|
+
buildUpdateVestingDurationTx(vestingDuration: number): Promise<ethers.ContractTransaction>;
|
67
|
+
buildUpdateEarlyParticipationWindowTx(earlyParticipationWindow: number): Promise<ethers.ContractTransaction>;
|
68
|
+
buildWithdrawLPTokensTx(lpToken: string, recipient: string): Promise<ethers.ContractTransaction>;
|
69
|
+
buildWithdrawERC20Tx(token: string, amount: number): Promise<ethers.ContractTransaction>;
|
70
|
+
buildApproveERC20Tx(tokenAddress: string, spender: string, amount: number): Promise<ethers.ContractTransaction>;
|
71
|
+
getSaleInfo(): Promise<SaleInfo>;
|
72
|
+
getUserContribution(user: string): Promise<UserContribution>;
|
73
|
+
getContributorsCount(): Promise<number>;
|
74
|
+
getContributorAt(index: number): Promise<string>;
|
75
|
+
getAllContributors(): Promise<string[]>;
|
76
|
+
getProjectToken(): Promise<string>;
|
77
|
+
getFundingToken(): Promise<string>;
|
78
|
+
getTradingVault(): Promise<string>;
|
79
|
+
getDexRouter(): Promise<string>;
|
80
|
+
getLiquidityTokens(): Promise<number>;
|
81
|
+
getLiquidityPercent(): Promise<number>;
|
82
|
+
getInitialClaimPercent(): Promise<number>;
|
83
|
+
getVestingDuration(): Promise<number>;
|
84
|
+
getVestingStartTime(): Promise<number>;
|
85
|
+
getEarlyParticipationWindow(): Promise<number>;
|
86
|
+
hasOperatorRole(address: string): Promise<boolean>;
|
87
|
+
hasAdminRole(address: string): Promise<boolean>;
|
88
|
+
buildGrantOperatorRoleTx(operator: string): Promise<ethers.ContractTransaction>;
|
89
|
+
buildGrantAdminRoleTx(admin: string): Promise<ethers.ContractTransaction>;
|
90
|
+
getAllowance(tokenAddress: string, owner: string, spender: string): Promise<number>;
|
91
|
+
getContractAddress(): string;
|
92
|
+
getAllEvents(fromBlock: number, toBlock: number, whitelistEvents?: string[]): Promise<any[]>;
|
93
|
+
streamEvents(fromBlock: number, onEvent: (event: any) => Promise<void>, saveLatestBlock: (blockNumber: number) => Promise<void>, batchSize?: number, sleepTime?: number): Promise<void>;
|
94
|
+
formatEventArgs: (event: ParsedFairLaunchEventRaw) => Promise<ParsedFairLaunchEvent>;
|
95
|
+
}
|
@@ -0,0 +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){await this.bootstrap();const i=e.ethers.parseUnits(t.toString(),this._fundingTokenDecimals);return await this.contract.contribute.populateTransaction(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})}};
|