/// <reference types="bn.js" />
import * as anchor from '@project-serum/anchor';
import { UnlocStaking } from '../types/unloc_staking';
import { Connection, Keypair } from '@solana/web3.js';
export declare function initStakingProgram(connection: Connection, wallet: any, programId?: any): void;
export interface ExtraRewardConfigs {
    duration: any;
    extraPercentage: any;
}
export declare function getStakingStateAddress(): Promise<anchor.web3.PublicKey>;
export declare function estimateRewards(stateData: any, extraConfigData: any, poolData: any, userData: any): any;
export declare function estimateStakingRewardsPerSec(stateData: any, extraConfigData: any, poolData: any, userData: any): number;
export declare function createStakingState(connection: Connection, wallet: any, tokenPerSecond: number, earlyUnlocFee: number, profileLevels: anchor.BN[], rewardMint: string): Promise<string>;
export declare function getStakingState(): Promise<import("@project-serum/anchor/dist/cjs/program/namespace/types").TypeDef<{
    name: "stateAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "authority";
            type: "publicKey";
        }, {
            name: "rewardMint";
            type: "publicKey";
        }, {
            name: "rewardVault";
            type: "publicKey";
        }, {
            name: "feeVault";
            type: "publicKey";
        }, {
            name: "bump";
            type: "u8";
        }, {
            name: "totalPoint";
            type: "u64";
        }, {
            name: "startTime";
            type: "i64";
        }, {
            name: "tokenPerSecond";
            type: "u64";
        }, {
            name: "earlyUnlockFee";
            type: "u64";
        }, {
            name: "profileLevels";
            type: {
                vec: "u128";
            };
        }];
    };
} | {
    name: "extraRewardsAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "configs";
            type: {
                vec: {
                    defined: "DurationExtraRewardConfig";
                };
            };
        }];
    };
} | {
    name: "farmPoolAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "mint";
            type: "publicKey";
        }, {
            name: "vault";
            type: "publicKey";
        }, {
            name: "point";
            type: "u64";
        }, {
            name: "lastRewardTime";
            type: "i64";
        }, {
            name: "accRewardPerShare";
            type: "u128";
        }, {
            name: "amountMultipler";
            type: "u64";
        }, {
            name: "totalUser";
            type: "u64";
        }];
    };
} | {
    name: "farmPoolUserAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "pool";
            type: "publicKey";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "rewardAmount";
            type: "u128";
        }, {
            name: "extraReward";
            type: "u128";
        }, {
            name: "rewardDebt";
            type: "u128";
        }, {
            name: "lastStakeTime";
            type: "i64";
        }, {
            name: "lockDuration";
            type: "i64";
        }, {
            name: "unlocScore";
            type: "u128";
        }, {
            name: "profileLevel";
            type: "u64";
        }, {
            name: "reserved1";
            type: "u128";
        }, {
            name: "reserved2";
            type: "u128";
        }, {
            name: "reserved3";
            type: "u128";
        }];
    };
}, anchor.IdlTypes<UnlocStaking>>>;
export declare function getStakingExtraRewardConfigs(): Promise<import("@project-serum/anchor/dist/cjs/program/namespace/types").TypeDef<{
    name: "stateAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "authority";
            type: "publicKey";
        }, {
            name: "rewardMint";
            type: "publicKey";
        }, {
            name: "rewardVault";
            type: "publicKey";
        }, {
            name: "feeVault";
            type: "publicKey";
        }, {
            name: "bump";
            type: "u8";
        }, {
            name: "totalPoint";
            type: "u64";
        }, {
            name: "startTime";
            type: "i64";
        }, {
            name: "tokenPerSecond";
            type: "u64";
        }, {
            name: "earlyUnlockFee";
            type: "u64";
        }, {
            name: "profileLevels";
            type: {
                vec: "u128";
            };
        }];
    };
} | {
    name: "extraRewardsAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "configs";
            type: {
                vec: {
                    defined: "DurationExtraRewardConfig";
                };
            };
        }];
    };
} | {
    name: "farmPoolAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "mint";
            type: "publicKey";
        }, {
            name: "vault";
            type: "publicKey";
        }, {
            name: "point";
            type: "u64";
        }, {
            name: "lastRewardTime";
            type: "i64";
        }, {
            name: "accRewardPerShare";
            type: "u128";
        }, {
            name: "amountMultipler";
            type: "u64";
        }, {
            name: "totalUser";
            type: "u64";
        }];
    };
} | {
    name: "farmPoolUserAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "pool";
            type: "publicKey";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "rewardAmount";
            type: "u128";
        }, {
            name: "extraReward";
            type: "u128";
        }, {
            name: "rewardDebt";
            type: "u128";
        }, {
            name: "lastStakeTime";
            type: "i64";
        }, {
            name: "lockDuration";
            type: "i64";
        }, {
            name: "unlocScore";
            type: "u128";
        }, {
            name: "profileLevel";
            type: "u64";
        }, {
            name: "reserved1";
            type: "u128";
        }, {
            name: "reserved2";
            type: "u128";
        }, {
            name: "reserved3";
            type: "u128";
        }];
    };
}, anchor.IdlTypes<UnlocStaking>> | null>;
export declare function createStakingExtraReward(connection: Connection, wallet: any): Promise<any>;
export declare function setStakingExtraReward(connection: Connection, wallet: any, extraRewards: ExtraRewardConfigs[]): Promise<any>;
export declare function fundToStakingProgram(connection: Connection, wallet: any, poolSigner: string, masterRewardVault: string, amount: any): Promise<any>;
export declare function getAllStakingPools(): Promise<anchor.ProgramAccount<import("@project-serum/anchor/dist/cjs/program/namespace/types").TypeDef<{
    name: "stateAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "authority";
            type: "publicKey";
        }, {
            name: "rewardMint";
            type: "publicKey";
        }, {
            name: "rewardVault";
            type: "publicKey";
        }, {
            name: "feeVault";
            type: "publicKey";
        }, {
            name: "bump";
            type: "u8";
        }, {
            name: "totalPoint";
            type: "u64";
        }, {
            name: "startTime";
            type: "i64";
        }, {
            name: "tokenPerSecond";
            type: "u64";
        }, {
            name: "earlyUnlockFee";
            type: "u64";
        }, {
            name: "profileLevels";
            type: {
                vec: "u128";
            };
        }];
    };
} | {
    name: "extraRewardsAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "configs";
            type: {
                vec: {
                    defined: "DurationExtraRewardConfig";
                };
            };
        }];
    };
} | {
    name: "farmPoolAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "mint";
            type: "publicKey";
        }, {
            name: "vault";
            type: "publicKey";
        }, {
            name: "point";
            type: "u64";
        }, {
            name: "lastRewardTime";
            type: "i64";
        }, {
            name: "accRewardPerShare";
            type: "u128";
        }, {
            name: "amountMultipler";
            type: "u64";
        }, {
            name: "totalUser";
            type: "u64";
        }];
    };
} | {
    name: "farmPoolUserAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "pool";
            type: "publicKey";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "rewardAmount";
            type: "u128";
        }, {
            name: "extraReward";
            type: "u128";
        }, {
            name: "rewardDebt";
            type: "u128";
        }, {
            name: "lastStakeTime";
            type: "i64";
        }, {
            name: "lockDuration";
            type: "i64";
        }, {
            name: "unlocScore";
            type: "u128";
        }, {
            name: "profileLevel";
            type: "u64";
        }, {
            name: "reserved1";
            type: "u128";
        }, {
            name: "reserved2";
            type: "u128";
        }, {
            name: "reserved3";
            type: "u128";
        }];
    };
}, anchor.IdlTypes<UnlocStaking>>>[]>;
export declare function getFirstStakingPool(): Promise<anchor.ProgramAccount<import("@project-serum/anchor/dist/cjs/program/namespace/types").TypeDef<{
    name: "stateAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "authority";
            type: "publicKey";
        }, {
            name: "rewardMint";
            type: "publicKey";
        }, {
            name: "rewardVault";
            type: "publicKey";
        }, {
            name: "feeVault";
            type: "publicKey";
        }, {
            name: "bump";
            type: "u8";
        }, {
            name: "totalPoint";
            type: "u64";
        }, {
            name: "startTime";
            type: "i64";
        }, {
            name: "tokenPerSecond";
            type: "u64";
        }, {
            name: "earlyUnlockFee";
            type: "u64";
        }, {
            name: "profileLevels";
            type: {
                vec: "u128";
            };
        }];
    };
} | {
    name: "extraRewardsAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "configs";
            type: {
                vec: {
                    defined: "DurationExtraRewardConfig";
                };
            };
        }];
    };
} | {
    name: "farmPoolAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "mint";
            type: "publicKey";
        }, {
            name: "vault";
            type: "publicKey";
        }, {
            name: "point";
            type: "u64";
        }, {
            name: "lastRewardTime";
            type: "i64";
        }, {
            name: "accRewardPerShare";
            type: "u128";
        }, {
            name: "amountMultipler";
            type: "u64";
        }, {
            name: "totalUser";
            type: "u64";
        }];
    };
} | {
    name: "farmPoolUserAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "pool";
            type: "publicKey";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "rewardAmount";
            type: "u128";
        }, {
            name: "extraReward";
            type: "u128";
        }, {
            name: "rewardDebt";
            type: "u128";
        }, {
            name: "lastStakeTime";
            type: "i64";
        }, {
            name: "lockDuration";
            type: "i64";
        }, {
            name: "unlocScore";
            type: "u128";
        }, {
            name: "profileLevel";
            type: "u64";
        }, {
            name: "reserved1";
            type: "u128";
        }, {
            name: "reserved2";
            type: "u128";
        }, {
            name: "reserved3";
            type: "u128";
        }];
    };
}, anchor.IdlTypes<UnlocStaking>>>>;
export declare function createStakingPool(connection: Connection, wallet: any, rewardMint: string, pools: any[]): Promise<any>;
export declare function closeStakingPool(connection: Connection, wallet: any, poolSigner: string, pools: any[]): Promise<any>;
export declare function changeStakingPoolAmountMultipler(connection: Connection, wallet: any, poolSigner: string): Promise<any>;
export declare function changeStakingTokenPerSecond(connection: Connection, wallet: any, pools: any[], tokenPerSecond: number): Promise<any>;
export declare function changeStakingPoolPoint(connection: Connection, wallet: any, poolSigner: string): Promise<any>;
export declare function getStakingPoolUserAccount(wallet: any, poolSigner: any): Promise<import("@project-serum/anchor/dist/cjs/program/namespace/types").TypeDef<{
    name: "stateAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "authority";
            type: "publicKey";
        }, {
            name: "rewardMint";
            type: "publicKey";
        }, {
            name: "rewardVault";
            type: "publicKey";
        }, {
            name: "feeVault";
            type: "publicKey";
        }, {
            name: "bump";
            type: "u8";
        }, {
            name: "totalPoint";
            type: "u64";
        }, {
            name: "startTime";
            type: "i64";
        }, {
            name: "tokenPerSecond";
            type: "u64";
        }, {
            name: "earlyUnlockFee";
            type: "u64";
        }, {
            name: "profileLevels";
            type: {
                vec: "u128";
            };
        }];
    };
} | {
    name: "extraRewardsAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "configs";
            type: {
                vec: {
                    defined: "DurationExtraRewardConfig";
                };
            };
        }];
    };
} | {
    name: "farmPoolAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "mint";
            type: "publicKey";
        }, {
            name: "vault";
            type: "publicKey";
        }, {
            name: "point";
            type: "u64";
        }, {
            name: "lastRewardTime";
            type: "i64";
        }, {
            name: "accRewardPerShare";
            type: "u128";
        }, {
            name: "amountMultipler";
            type: "u64";
        }, {
            name: "totalUser";
            type: "u64";
        }];
    };
} | {
    name: "farmPoolUserAccount";
    type: {
        kind: "struct";
        fields: [{
            name: "bump";
            type: "u8";
        }, {
            name: "pool";
            type: "publicKey";
        }, {
            name: "authority";
            type: "publicKey";
        }, {
            name: "amount";
            type: "u64";
        }, {
            name: "rewardAmount";
            type: "u128";
        }, {
            name: "extraReward";
            type: "u128";
        }, {
            name: "rewardDebt";
            type: "u128";
        }, {
            name: "lastStakeTime";
            type: "i64";
        }, {
            name: "lockDuration";
            type: "i64";
        }, {
            name: "unlocScore";
            type: "u128";
        }, {
            name: "profileLevel";
            type: "u64";
        }, {
            name: "reserved1";
            type: "u128";
        }, {
            name: "reserved2";
            type: "u128";
        }, {
            name: "reserved3";
            type: "u128";
        }];
    };
}, anchor.IdlTypes<UnlocStaking>> | null>;
export declare const TIERS_XCRP: number[];
export declare function calculateTiers(amount: number, lockDuration: number): {
    xCRP: number;
    tiers: number;
};
export declare function stake(connection: Connection, wallet: any, poolSigner: string, rewardMint: string, poolVault: string, rewardUserVault: string, amount: any, lock?: number, signers?: Keypair[]): Promise<string>;
export declare function createStakingUser(connection: Connection, wallet: any, poolSigner: string, signers?: Keypair[]): Promise<string | null>;
export declare function unstake(connection: Connection, wallet: any, poolSigner: string, rewardMint: string, poolVault: string, rewardUserVault: string, amount: number, signers?: Keypair[]): Promise<string | null>;
export declare function harvest(connection: Connection, wallet: any, poolSigner: string, rewardMint: string, rewardUserVault: string, stateRewardVault: string, signers?: Keypair[]): Promise<string | null>;
//# sourceMappingURL=index.d.ts.map