import type { BlockInvalidationConfig, BlockInvalidationViewer, BlockViewer, ChainContractViewer, ChainQualified, HydratedBlockStateValidationFunction, HydratedBlockValidationError, HydratedBlockValidationFunction, SignedHydratedBlock, SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol/protocol-lib';
import type { CreatableProviderParams } from '../../CreatableProvider/index.js';
import { AbstractCreatableProvider } from '../../CreatableProvider/index.js';
/** Parameters for SimpleBlockInvalidationViewer. */
export interface SimpleBlockInvalidationViewerParams extends CreatableProviderParams {
    /** max Uncle Window Size configuration or state exposed by this contract. */
    maxUncleWindowSize?: number;
    /** Current state represented by the update. */
    state?: HydratedBlockStateValidationFunction;
    /** Underlying protocol value wrapped by this instance. */
    value?: HydratedBlockValidationFunction;
}
/** SimpleBlockInvalidationViewer implementation. */
export declare class SimpleBlockInvalidationViewer extends AbstractCreatableProvider<SimpleBlockInvalidationViewerParams> implements BlockInvalidationViewer {
    /** Connection kinds supported by this provider. */
    static readonly connectionTypes: readonly ["lmdb", "mongo", "memory"];
    /** Primary moniker used to resolve this provider. */
    static readonly defaultMoniker: "BlockInvalidationViewer";
    /** Provider monikers that must resolve before this provider can be created. */
    static readonly dependencies: ("BlockViewer" | "AccountBalanceViewer" | "ChainContractViewer")[];
    /** Provider monikers implemented by this provider class. */
    static readonly monikers: "BlockInvalidationViewer"[];
    /** Read, write, or mixed capability surface exposed by the provider. */
    static readonly surface: "node";
    /** Moniker implemented by this provider instance. */
    moniker: "BlockInvalidationViewer";
    private _accountBalanceViewer;
    private _blockViewer;
    private _chainContractViewer;
    private _uncleWindowedChainCache;
    protected get blockViewer(): BlockViewer<"BlockViewer">;
    protected get chainContractViewer(): ChainContractViewer;
    protected get maxUncleWindowSize(): number;
    /** Returns the params handler result exposed by this provider. */
    static paramsHandler(params: Partial<SimpleBlockInvalidationViewerParams>): Promise<SimpleBlockInvalidationViewerParams>;
    /** Creates the provider instance after its dependencies and configuration have resolved. */
    createHandler(): Promise<void>;
    /** Marks block as invalid. */
    invalidateBlock(block: SignedHydratedBlock, config?: BlockInvalidationConfig): Promise<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>;
    /** Marks blocks as invalid. */
    invalidateBlocks(blocks: SignedHydratedBlock[], config?: BlockInvalidationConfig): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>;
    /** Marks uncle as invalid. */
    invalidateUncle(blocks: SignedHydratedBlock[], config?: BlockInvalidationConfig): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>;
    /** Invalidates block with explicit chain qualification. */
    qualifiedInvalidateBlock(block: SignedHydratedBlockWithHashMeta, config?: BlockInvalidationConfig): Promise<ChainQualified<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>>;
    /** Invalidates blocks with explicit chain qualification. */
    qualifiedInvalidateBlocks(blocks: SignedHydratedBlock[], config?: BlockInvalidationConfig): Promise<ChainQualified<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>>;
    /** Invalidates uncle with explicit chain qualification. */
    qualifiedInvalidateUncle(_blocks: SignedHydratedBlock[], _config?: BlockInvalidationConfig): Promise<ChainQualified<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>>;
    private doInvalidateProtocol;
    private doInvalidateState;
    private updateWindowedChainCache;
}
//# sourceMappingURL=SimpleBlockInvalidationViewer.d.ts.map