import { ERC20Token } from '../../types/token.types';
import { ethers } from 'ethers';
export declare class PresaleContractWrapper {
    contract: ethers.Contract;
    eventsFrom: number;
    constructor(signerOrProvider: ethers.Signer | ethers.Provider, chainId: number);
    deposit(token: ERC20Token, amount: bigint, minHINK: bigint): Promise<ethers.ContractTransaction>;
    withdraw(token: string, amount: bigint): Promise<ethers.ContractTransaction>;
    moveToNextStage(overrides?: ethers.Overrides): Promise<ethers.ContractTransaction>;
    estimateMoveToNextStageGas(): Promise<bigint>;
    getTotalDeposit(): Promise<bigint>;
    getDeposits(depositor: string, token: ERC20Token): Promise<bigint>;
    getTotalHINK(depositor: string): Promise<bigint>;
    getCurrentPresaleStageIndex(): Promise<number>;
    getCurrentMaxDepositAmount(): Promise<bigint>;
    currentPresaleStage(): Promise<{
        amountToRaise: bigint;
        priceMultiplier: bigint;
    }>;
    calculateHINK(amount: bigint): Promise<bigint>;
    queryDeposits(): Promise<(ethers.EventLog | ethers.Log)[]>;
    onEvent(eventName: string, handleEvent: ethers.Listener): void;
}
