import type { Address, EthAddress, Promisable } from '@ariestools/sdk';
import { type IAddressStaking } from '@xyo-network/typechain';
import { type Position, type StakeEventsViewer, type StakeViewer } from '@xyo-network/xl1-protocol/protocol-lib';
import type { EvmViewerParams } from './AbstractEvmViewer.js';
import { AbstractEvmViewer } from './AbstractEvmViewer.js';
/** Public contract for Evm Stake Viewer Params. */
export interface EvmStakeViewerParams extends EvmViewerParams {
}
/** Implements Evm Stake Viewer behavior for the SDK provider graph. */
export declare class EvmStakeViewer extends AbstractEvmViewer<EvmStakeViewerParams, IAddressStaking> implements StakeViewer {
    /** Connection kinds supported by this provider. */
    static readonly connectionTypes: readonly ["evm-rpc"];
    /** Primary moniker used to resolve this provider. */
    static readonly defaultMoniker: "StakeViewer";
    /** Provider monikers that must resolve before this provider can be created. */
    static readonly dependencies: ("StakeEventsViewer" | "EvmChainViewer")[];
    /** Provider monikers implemented by this provider class. */
    static readonly monikers: "StakeViewer"[];
    /** Read, write, or mixed capability surface exposed by the provider. */
    static readonly surface: "node";
    /** Moniker implemented by this provider instance. */
    readonly moniker: "StakeViewer";
    private _callMutex;
    private _deploymentBlock;
    /**
     * Materialized index of every staking position, built from the contract's
     * event log at start and kept current by live event listeners. This is the
     * sole data source for the set-valued queries (activeStakes/removedStakes/
     * withdrawnStakes) and for stakeById — it is replicated state, not a cache,
     * so its startup sync is unconditional and never gated by `primeCaches`.
     */
    private _positionIndex;
    private _stakeEventsViewer;
    /** Returns the stake events result exposed by this provider. */
    get stakeEvents(): StakeEventsViewer;
    /** Returns the active result exposed by this provider. */
    active(): Promise<bigint>;
    /** Returns the active by address staked result exposed by this provider. */
    activeByAddressStaked(address: Address): Promise<bigint>;
    /** Returns the active by staker result exposed by this provider. */
    activeByStaker(address: Address): Promise<bigint>;
    /** Returns the active stakes result exposed by this provider. */
    activeStakes(): Promisable<Position[]>;
    /** Creates the provider instance after its dependencies and configuration have resolved. */
    createHandler(): Promise<void>;
    /** Returns the min withdrawal blocks result exposed by this provider. */
    minWithdrawalBlocks(): number;
    /** Returns the pending result exposed by this provider. */
    pending(): Promise<bigint>;
    /** Returns the pending by staker result exposed by this provider. */
    pendingByStaker(staker: Address): Promise<bigint>;
    /** Returns the removed stakes result exposed by this provider. */
    removedStakes(): Promisable<Position[]>;
    /** Returns the rewards contract result exposed by this provider. */
    rewardsContract(): Address;
    /** Returns the stake by id result exposed by this provider. */
    stakeById(id: number): Promisable<Position>;
    /** Returns the stake by staker result exposed by this provider. */
    stakeByStaker(staker: Address, slot: number): Promise<Position>;
    /** Returns the stakes by staked result exposed by this provider. */
    stakesByStaked(staked: Address, range?: [number, number | undefined]): Promise<Position[]>;
    /** Returns the stakes by staker result exposed by this provider. */
    stakesByStaker(staker: Address, range?: [number, number | undefined]): Promise<Position[]>;
    /** Returns the staking token address result exposed by this provider. */
    stakingTokenAddress(): Address;
    /** Returns the withdrawn result exposed by this provider. */
    withdrawn(): Promise<bigint>;
    /** Returns the withdrawn by staker result exposed by this provider. */
    withdrawnByStaker(staker: Address): Promise<bigint>;
    /** Returns the withdrawn stakes result exposed by this provider. */
    withdrawnStakes(): Promisable<Position[]>;
    protected connectContract(address: EthAddress): IAddressStaking;
    protected startHandler(): Promise<void>;
    private applyHistoricalStakeEvent;
}
//# sourceMappingURL=EvmStakeViewer.d.ts.map