import type BN from 'bn.js';
import { ContractABI, Logger } from '../../utils';
import type { GetRegistryAddress } from '../contracts/ContractClient';
import { GovernedContractClient } from '../contracts/GovernedContractClient';
import type { EthWeb3Manager } from '../ethWeb3Manager';
import type { AudiusTokenClient } from './AudiusTokenClient';
import type { GovernanceClient } from './GovernanceClient';
import type { StakingProxyClient } from './StakingProxyClient';
type GetEvent = {
    delegator: string;
    serviceProvider: string;
    queryStartBlock: number;
};
export declare class DelegateManagerClient extends GovernedContractClient {
    audiusTokenClient: AudiusTokenClient;
    stakingProxyClient: StakingProxyClient;
    constructor(ethWeb3Manager: EthWeb3Manager, contractABI: ContractABI['abi'], contractRegistryKey: string, getRegistryAddress: GetRegistryAddress, audiusTokenClient: AudiusTokenClient, stakingProxyClient: StakingProxyClient, governanceClient: GovernanceClient, logger?: Logger);
    delegateStake(targetSP: string, amount: BN): Promise<{
        txReceipt: import("web3-core").TransactionReceipt;
        tokenApproveReceipt: {
            txReceipt: import("web3-core").TransactionReceipt;
        };
        delegator: any;
        serviceProvider: any;
        increaseAmount: BN;
    }>;
    getIncreaseDelegateStakeEvents({ delegator, serviceProvider, queryStartBlock }: GetEvent): Promise<{
        blockNumber: number;
        delegator: any;
        increaseAmount: BN;
        serviceProvider: any;
    }[]>;
    getDecreaseDelegateStakeEvents({ delegator, serviceProvider, queryStartBlock }: GetEvent): Promise<{
        blockNumber: number;
        delegator: any;
        amount: BN;
        serviceProvider: any;
    }[]>;
    getUndelegateStakeRequestedEvents({ delegator, serviceProvider, queryStartBlock }: GetEvent): Promise<{
        blockNumber: number;
        lockupExpiryBlock: number;
        delegator: any;
        amount: BN;
        serviceProvider: any;
    }[]>;
    getUndelegateStakeCancelledEvents({ delegator, serviceProvider, queryStartBlock }: GetEvent): Promise<{
        blockNumber: number;
        delegator: any;
        amount: BN;
        serviceProvider: any;
    }[]>;
    getClaimEvents({ claimer, queryStartBlock }: {
        claimer: string;
        queryStartBlock: number;
    }): Promise<{
        blockNumber: number;
        claimer: any;
        rewards: BN;
        newTotal: BN;
    }[]>;
    getSlashEvents({ target, queryStartBlock }: {
        target: string;
        queryStartBlock: number;
    }): Promise<{
        blockNumber: number;
        target: any;
        amount: BN;
        newTotal: BN;
    }[]>;
    getDelegatorRemovedEvents({ target, queryStartBlock }: {
        target: string;
        queryStartBlock: number;
    }): Promise<{
        blockNumber: number;
        serviceProvider: any;
        delegator: any;
        unstakedAmount: BN;
    }[]>;
    requestUndelegateStake(targetSP: string, amount: BN): Promise<import("web3-core").TransactionReceipt>;
    cancelUndelegateStakeRequest(): Promise<import("web3-core").TransactionReceipt>;
    undelegateStake(): Promise<{
        txReceipt: import("web3-core").TransactionReceipt;
        delegator: any;
        serviceProvider: any;
        decreaseAmount: BN;
    }>;
    claimRewards(serviceProvider: string, txRetries?: number): Promise<import("web3-core").TransactionReceipt>;
    requestRemoveDelegator(serviceProvider: string, delegator: string): Promise<import("web3-core").TransactionReceipt>;
    cancelRemoveDelegatorRequest(serviceProvider: string, delegator: string): Promise<import("web3-core").TransactionReceipt>;
    removeDelegator(serviceProvider: string, delegator: string): Promise<{
        txReceipt: import("web3-core").TransactionReceipt;
        delegator: any;
        serviceProvider: any;
        unstakedAmount: BN;
    }>;
    getDelegatorsList(serviceProvider: string): Promise<any>;
    getTotalDelegatedToServiceProvider(serviceProvider: string): Promise<BN>;
    getTotalDelegatorStake(delegator: string): Promise<BN>;
    getTotalLockedDelegationForServiceProvider(serviceProvider: string): Promise<BN>;
    getDelegatorStakeForServiceProvider(delegator: string, serviceProvider: string): Promise<BN>;
    getPendingUndelegateRequest(delegator: string): Promise<{
        amount: BN;
        lockupExpiryBlock: number;
        target: any;
    }>;
    getPendingRemoveDelegatorRequest(serviceProvider: string, delegator: string): Promise<{
        lockupExpiryBlock: number;
    }>;
    getUndelegateLockupDuration(): Promise<number>;
    getMaxDelegators(): Promise<number>;
    getMinDelegationAmount(): Promise<BN>;
    getRemoveDelegatorLockupDuration(): Promise<number>;
    getRemoveDelegatorEvalDuration(): Promise<number>;
    getGovernanceAddress(): Promise<any>;
    getServiceProviderFactoryAddress(): Promise<any>;
    getClaimsManagerAddress(): Promise<any>;
    getStakingAddress(): Promise<any>;
    getSPMinDelegationAmount({ serviceProvider }: {
        serviceProvider: string;
    }): Promise<BN>;
    updateSPMinDelegationAmount({ serviceProvider, amount }: {
        serviceProvider: string;
        amount: BN;
    }): Promise<import("web3-core").TransactionReceipt>;
    updateRemoveDelegatorLockupDuration(duration: string): Promise<import("web3-core").TransactionReceipt>;
    updateUndelegateLockupDuration(duration: string): Promise<import("web3-core").TransactionReceipt>;
}
export {};
