import { ethers } from "ethers";
import { EventEmitter } from "events";
import { StakeInfo, StakingContractConfig, StakingOperationResult, StakingStats, StakingViewResult, UserStakeInfo } from "./types";
export declare class StakingContract extends EventEmitter {
    private contract;
    private provider;
    private signer;
    private address;
    constructor(config?: StakingContractConfig);
    initialize(provider?: ethers.Provider, signer?: ethers.Signer): Promise<void>;
    cleanup(): Promise<void>;
    stake(recipient: string, amount: bigint): Promise<StakingOperationResult>;
    initiateUnstake(amount: bigint): Promise<StakingOperationResult>;
    finalizeUnstake(): Promise<StakingOperationResult>;
    claim(): Promise<StakingOperationResult>;
    getPendingRewards(userAddress: string): Promise<StakingViewResult<bigint>>;
    getVenicePercentage(): Promise<StakingViewResult<bigint>>;
    getStakeInfo(userAddress: string): Promise<StakingViewResult<StakeInfo>>;
    getUserStakeInfo(userAddress: string): Promise<StakingViewResult<UserStakeInfo>>;
    getStakingStats(): Promise<StakingViewResult<StakingStats>>;
}
