import { ethers } from 'ethers'; import { type Chain } from 'viem'; export declare enum WithdrawStatus { Pending = 0, Completed = 1, Cancelled = 2 } export declare abstract class BaseProject { abstract name: string; abstract miningToken: { name: string; symbol: string; decimals: number; isNative?: boolean; icon: string; }; abstract pToken: { name: string; symbol: string; decimals: number; icon: string; }; abstract chainConfig: Chain; abstract contracts: { core?: string; delegationPool: string; pToken: string; miningToken: string; dataHelper?: string; thawing?: string; vesting?: string; wpToken?: string; withdrawQueue?: string; }; isTestnet?: boolean; metadata: { guideLink?: string; description?: string; website?: string; about?: string; withdrawTips?: string; }; confirmations: number; thawingEnabled?: boolean; withdrawQueueEnabled?: boolean; minRequestAmount?: number; provider?: ethers.providers.JsonRpcProvider; constructor(provider?: ethers.providers.JsonRpcProvider); abstract getAssetsInfo: () => Promise<{ apy: number; lockedAssets: number; }>; getWithdrawRequest?: (address: string) => Promise; getProvider: () => ethers.providers.JsonRpcProvider; getPoolContract: () => ethers.Contract; getThawingContract: () => ethers.Contract; getWithdrawQueueContract: () => ethers.Contract; getVestingContract: () => ethers.Contract; getTokenContract: (address: string) => ethers.Contract; getWPTokenContract: () => ethers.Contract; getMiningTokenBalance: (address: string) => Promise; getPTokenBalance: (address: string) => Promise; getWPTokenBalance: (address: string) => Promise; deposit: (address: string, amount: string, signer: ethers.Signer) => Promise; withdraw: (address: string, amount: string, signer: ethers.Signer) => Promise; approveTokenToContract: (token: string, spender: string, amount: string, decimals: number, signer: ethers.Signer) => Promise; approveWithdrawQueue: (amount: string, signer: ethers.Signer) => Promise; getPoolBalance: () => Promise; getThawingInfo: (address: string) => Promise<{ amount: any; unlockTime: number; }>; requestWithdraw: (amount: string, signer: ethers.Signer) => Promise; cancelWithdraw: (address: string, signer: ethers.Signer) => Promise; cancelWithdrawQueue: (requestId: number, signer: ethers.Signer) => Promise; wrap: (amount: string, signer: ethers.Signer) => Promise; unwrap: (amount: string, signer: ethers.Signer) => Promise; getRequestIdsInQueue: (address: string) => Promise; getRequestCountInQueue: (address: string) => Promise; getRequestInQueue: (requestId: number) => Promise<{ owner: any; totalShares: any; timestamp: any; status: WithdrawStatus; remainingShares: any; fullfilled: boolean; }>; getWithdrawQueueByAddress: (address: string) => Promise; requestWithdrawQueue: (amount: string, signer: ethers.Signer) => Promise; convertToAssets: (amount: string) => Promise; convertToShares: (amount: string) => Promise; }