import { API, NameType } from '@wharfkit/antelope';
import { Signer } from '../eosio/transaction';
export interface VestingSettings {
    sales_start_date: string;
    launch_date: string;
}
export declare const TONO_SEED_ROUND_PRICE = 0.0001;
export declare const TONO_SEED_LATE_ROUND_PRICE = 0.0002;
export declare const TONO_PUBLIC_SALE_PRICE = 0.0006;
export declare const TONO_CURRENT_PRICE = 0.0001;
export interface VestingAllocation {
    id: number;
    cliff_period_claimed: number;
    holder: string;
    time_since_sale_start: {
        _count: number;
    };
    tokens_claimed: string;
    tokens_allocated: string;
    vesting_category_type: number;
}
export declare const vestingCategories: Map<number, {
    startDelay: number;
    cliffPeriod: number;
    vestingPeriod: number;
    tgeUnlock: number;
    name: string;
}>;
export declare class VestingContract {
    static singletonInstance: VestingContract;
    contractName: string;
    static get Instance(): VestingContract;
    static getMaxAllocations: () => 5 | 150;
    static SALE_START_DATE: string;
    static VESTING_START_DATE: string;
    static calculateVestingPeriod(settings: VestingSettings, allocation: VestingAllocation): {
        launchDate: Date;
        vestingStart: Date;
        cliffEnd: Date;
        vestingEnd: Date;
    };
    constructor(contractName?: string);
    setSettings(salesDateStr: string, launchDateStr: string, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    assignTokens(sender: NameType, holder: NameType, amount: string, categoryId: number, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    withdraw(holder: NameType, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    migrateAllocation(sender: NameType, holder: NameType, allocationId: number, oldAmount: string, newAmount: string, oldCategoryId: number, newCategoryId: number, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    getSettings(): Promise<VestingSettings>;
    getAllocations(account: NameType): Promise<VestingAllocation[]>;
    getBalance(account: NameType): Promise<number>;
    getVestingCategory(categoryId: number): {
        startDelay: number;
        cliffPeriod: number;
        vestingPeriod: number;
        tgeUnlock: number;
    };
    getVestingPeriodYears(categoryId: number): string;
    getVestingPeriod(categoryId: number): string;
    getVestingAllocations(account: NameType): Promise<{
        totalAllocation: number;
        unlockable: number;
        unlocked: number;
        locked: number;
        allocationsDetails: {
            totalAllocation: number;
            unlockable: number;
            unlocked: number;
            locked: number;
            vestingStart: Date;
            allocationDate: Date;
            vestingPeriod: string;
            unlockAtVestingStart: number;
            categoryId: number;
        }[];
    }>;
}
//# sourceMappingURL=VestingContract.d.ts.map