import type { BlockValidationConfig, BlockValidationViewer, BlockViewer, ChainContractViewer, ChainQualified, HydratedBlockStateValidationFunction, HydratedBlockValidationFunction, SignedHydratedBlock, SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol/protocol-lib';
import { HydratedBlockValidationError } from '@xyo-network/xl1-protocol/protocol-lib';
import type { CreatableProviderParams } from '../../CreatableProvider/index.js';
import { AbstractCreatableProvider } from '../../CreatableProvider/index.js';
/** Parameters for SimpleBlockValidationViewer. */
export interface SimpleBlockValidationViewerParams extends CreatableProviderParams {
    maxUncleWindowSize?: number;
    protocol?: HydratedBlockValidationFunction;
    state?: HydratedBlockStateValidationFunction;
}
/** SimpleBlockValidationViewer implementation. */
export declare class SimpleBlockValidationViewer extends AbstractCreatableProvider<SimpleBlockValidationViewerParams> implements BlockValidationViewer {
    static readonly connectionTypes: readonly ["lmdb", "mongo", "memory", "rpc"];
    static readonly defaultMoniker: "BlockValidationViewer";
    static readonly dependencies: ("BlockViewer" | "AccountBalanceViewer" | "ChainContractViewer")[];
    static readonly monikers: "BlockValidationViewer"[];
    static readonly surface: "node";
    moniker: "BlockValidationViewer";
    private _accountBalanceViewer;
    private _blockViewer;
    private _chainContractViewer;
    private _uncleWindowedChainCache;
    protected get blockViewer(): BlockViewer<"BlockViewer">;
    protected get chainContractViewer(): ChainContractViewer;
    protected get maxUncleWindowSize(): number;
    static paramsHandler(params: Partial<SimpleBlockValidationViewerParams>): Promise<SimpleBlockValidationViewerParams>;
    createHandler(): Promise<void>;
    qualifiedValidateBlock(block: SignedHydratedBlockWithHashMeta, config?: BlockValidationConfig): Promise<ChainQualified<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>>;
    qualifiedValidateBlocks(blocks: SignedHydratedBlock[], config?: BlockValidationConfig): Promise<ChainQualified<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>>;
    qualifiedValidateUncle(_blocks: SignedHydratedBlock[], _config?: BlockValidationConfig): Promise<ChainQualified<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>>;
    validateBlock(block: SignedHydratedBlock, config?: BlockValidationConfig): Promise<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>;
    validateBlocks(blocks: SignedHydratedBlock[], config?: BlockValidationConfig): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>;
    validateUncle(blocks: SignedHydratedBlock[], config?: BlockValidationConfig): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>;
    private doValidateProtocol;
    private doValidateState;
    private updateWindowedChainCache;
}
//# sourceMappingURL=SimpleBlockValidationViewer.d.ts.map