import type { Promisable } from '@ariestools/sdk';
import type { AttoXL1, BlockViewer, FinalizationViewer, NetworkStakeStepRewardsByPositionViewer, NetworkStakeStepRewardsByPositionViewerOptions, StakeViewer, StepIdentity, XL1BlockRange, XL1RangeMultipliers } from '@xyo-network/xl1-protocol/protocol-lib';
import type { CreatableProviderParams, ExternalTimeAnchorOptions, PrimeCachesMode } from '../../protocol-sdk/index-node.js';
import { AbstractCreatableProvider } from '../../protocol-sdk/index-node.js';
/** Configuration params for SimpleStepRewardsByPositionViewer. */
export interface SimpleStepRewardsByPositionViewerParams extends CreatableProviderParams {
    /** Reward multipliers applied when calculating network-stake rewards. */
    rewardMultipliers?: XL1RangeMultipliers;
    /** Reference time used to derive block-time values. */
    timeAnchor?: ExternalTimeAnchorOptions;
}
/** Viewer for network stake step rewards broken down by staking position. */
export declare class SimpleStepRewardsByPositionViewer extends AbstractCreatableProvider<SimpleStepRewardsByPositionViewerParams> implements NetworkStakeStepRewardsByPositionViewer {
    /** Connection kinds supported by this provider. */
    static readonly connectionTypes: readonly ["none"];
    /** Primary moniker used to resolve this provider. */
    static readonly defaultMoniker: "NetworkStakeStepRewardsByPositionViewer";
    /** Provider monikers that must resolve before this provider can be created. */
    static readonly dependencies: ("BlockViewer" | "FinalizationViewer" | "StakeViewer")[];
    /** Provider monikers implemented by this provider class. */
    static readonly monikers: "NetworkStakeStepRewardsByPositionViewer"[];
    /** Read, write, or mixed capability surface exposed by the provider. */
    static readonly surface: "node";
    /** Moniker implemented by this provider instance. */
    moniker: "NetworkStakeStepRewardsByPositionViewer";
    private _blockViewer;
    private _finalizationViewer;
    private _stakeViewer;
    /** Returns the reward multipliers result exposed by this provider. */
    get rewardMultipliers(): XL1RangeMultipliers;
    /** Returns the time anchor result exposed by this provider. */
    get timeAnchor(): ExternalTimeAnchorOptions | undefined;
    protected get blockViewer(): BlockViewer<"BlockViewer">;
    protected get finalizationViewer(): FinalizationViewer;
    /**
     * Priming-mode resolution with the deprecated `initRewardsCache` boolean as
     * a fallback alias: an explicit `primeCaches` (binding or top-level) wins;
     * otherwise a config-level `initRewardsCache` maps true → 'block',
     * false → 'off' (read structurally — the field is declared by actor config
     * schemas that lift it onto the locator config, not by the SDK Config).
     */
    protected get primeCaches(): PrimeCachesMode;
    protected get stakeViewer(): StakeViewer;
    /** Returns the bonus result exposed by this provider. */
    bonus({ range, positions }?: NetworkStakeStepRewardsByPositionViewerOptions): Promise<Record<number, AttoXL1>>;
    /** Returns the claimed result exposed by this provider. */
    claimed(_options?: NetworkStakeStepRewardsByPositionViewerOptions): Promisable<Record<number, AttoXL1>>;
    /** Creates the provider instance after its dependencies and configuration have resolved. */
    createHandler(): Promise<void>;
    /** Returns the earned result exposed by this provider. */
    earned({ range, positions }?: NetworkStakeStepRewardsByPositionViewerOptions): Promise<Record<number, AttoXL1>>;
    /** Returns the total result exposed by this provider. */
    total({ range, positions }?: NetworkStakeStepRewardsByPositionViewerOptions): Promise<Record<number, AttoXL1>>;
    /**
     * One position's reward summed over every completed step in the range, with
     * multipliers applied: [positionReward, rangeTotalReward]. This is the
     * warm-up target of `primeCaches` — priming precomputes it per position over
     * the whole chain.
     */
    totalForPosition(position: number, range: XL1BlockRange): Promise<[AttoXL1, AttoXL1]>;
    /** Total reward pool emitted for one completed step, with multipliers applied. */
    totalForStep(step: StepIdentity): Promise<AttoXL1>;
    /** One position's reward at one completed step, with multipliers applied: [positionReward, stepTotalReward]. */
    totalForStepForPosition(step: StepIdentity, position: number): Promise<[AttoXL1, AttoXL1]>;
    /** Returns the unclaimed result exposed by this provider. */
    unclaimed(_options?: NetworkStakeStepRewardsByPositionViewerOptions): Promisable<Record<number, AttoXL1>>;
    protected calculateRewards({ range, positions }?: NetworkStakeStepRewardsByPositionViewerOptions, rewardMultipliers?: XL1RangeMultipliers): Promise<Record<number, AttoXL1>>;
    /**
     * Precomputes `totalForPosition` for every staking position over the whole
     * chain — the full-history warm-up formerly run by SimpleXyoViewer's
     * `initRewardsCache` startHandler. Gated by `primeCaches` via `runPrime`.
     */
    protected primeRewardsCache(): Promise<void>;
    protected startHandler(): Promise<void>;
}
//# sourceMappingURL=SimpleStepRewardsByPositionViewer.d.ts.map