import { API, NameType, Action, AssetType, Asset, Name, Int32, TimePoint, UInt64, Int64 } from '@wharfkit/antelope';
import { Contract } from './Contract';
import { ActionOptions } from '@wharfkit/contract';
import { Signer } from '../eosio/transaction';
export declare const TONO_SEED_ROUND_PRICE = 0.00006666666666666666;
export declare const TONO_SEED_LATE_ROUND_PRICE = 0.00006666666666666666;
export declare const TONO_PUBLIC_SALE_PRICE = 0.0001;
export declare const TONO_CURRENT_PRICE = 0.00006666666666666666;
export interface VestingAllocationRaw {
    id: UInt64;
    holder: Name;
    time_since_sale_start: {
        _count: Int64;
    };
    tokens_claimed: Asset;
    tokens_allocated: Asset;
    vesting_category_type: Int32;
}
export interface VestingAllocation {
    id: number;
    holder: Name;
    timeSinceSaleStart: number;
    tokensClaimed: string;
    tokensAllocated: string;
    vestingCategoryType: number;
}
export interface VestingAllocationDetails {
    totalAllocation: string;
    unlockable: string;
    unlocked: string;
    locked: string;
    vestingStart: Date;
    allocationDate: Date;
    vestingPeriod: number;
    unlockAtVestingStart: number;
    categoryId: number;
}
interface VestingAllocationsParsed {
    totalAllocation: number;
    unlockable: number;
    unlocked: number;
    locked: number;
    vestingStart: Date;
    allocationDate: Date;
    vestingPeriod: string;
    unlockAtVestingStart: number;
    categoryId: number;
}
export interface VestingSettingsRaw {
    sales_start_date: TimePoint;
    launch_date: TimePoint;
}
export interface VestingSettings {
    salesStartDate: Date;
    launchDate: Date;
}
export declare const vestingCategories: Map<number, {
    startDelay: number;
    cliffPeriod: number;
    vestingPeriod: number;
    tgeUnlock: number;
    name: string;
}>;
export declare class VestingContract extends Contract {
    static isTestEnv: () => boolean;
    static atAccount(account?: NameType): Promise<VestingContract>;
    static fromAbi(abi: any, account?: NameType): VestingContract;
    static getMaxAllocations(): number;
    static SALE_START_DATE: string;
    static VESTING_START_DATE: string;
    static calculateVestingPeriod(settings: VestingSettings, allocation: VestingAllocation): {
        launchDate: Date;
        vestingStart: Date;
        cliffEnd: Date;
        vestingEnd: Date;
    };
    actions: {
        setSettings: (data: {
            salesStartDate: string;
            launchDate: string;
        }, auth?: ActionOptions) => Action;
        assignTokens: (data: {
            sender: NameType;
            holder: NameType;
            amount: string;
            category: number;
        }, auth?: ActionOptions) => Action;
        withdraw: (data: {
            holder: NameType;
        }, auth?: ActionOptions) => Action;
        migrateAlloc: (data: {
            sender: NameType;
            holder: NameType;
            allocationId: number;
            oldAmount: AssetType;
            newAmount: AssetType;
            oldCategoryId: number;
            newCategoryId: number;
        }, auth?: ActionOptions) => Action;
        migrateAcc: (data: {
            holder: NameType;
        }, auth?: ActionOptions) => Action;
        resetAll: (data?: {}, auth?: ActionOptions) => Action;
    };
    setSettings(salesStartDate: string, launchDate: string, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    assignTokens(sender: NameType, holder: NameType, amount: string, category: number, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    withdraw(holder: NameType, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    migrateAllocation(sender: NameType, holder: NameType, allocationId: number, oldAmount: AssetType, newAmount: AssetType, oldCategoryId: number, newCategoryId: number, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    private getSettingsData;
    getSettings(): Promise<VestingSettings>;
    private getAllocationsData;
    getAllocations(account: NameType): Promise<VestingAllocation[]>;
    getBalance(account: NameType): Promise<number>;
    getVestingCategory(categoryId: number): {
        startDelay: number;
        cliffPeriod: number;
        vestingPeriod: number;
        tgeUnlock: number;
        name: string;
    };
    getVestingPeriodYears(categoryId: number): string;
    getVestingPeriod(categoryId: number): string;
    getVestingAllocations(account: NameType): Promise<{
        totalAllocation: number;
        unlockable: number;
        unlocked: number;
        locked: number;
        allocationsDetails: VestingAllocationsParsed[];
    }>;
    getAllUniqueHolders(print?: boolean): Promise<Set<string>>;
    getAllAllocations(accounts: Set<string>, print?: boolean): Promise<VestingAllocationAndAccount[]>;
}
interface VestingAllocationAndAccount extends VestingAllocation {
    account: string;
}
export declare const getVestingContract: () => VestingContract;
export {};
//# sourceMappingURL=VestingContract.d.ts.map