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 {
    /** max Uncle Window Size configuration or state exposed by this contract. */
    maxUncleWindowSize?: number;
    /** protocol configuration or state exposed by this contract. */
    protocol?: HydratedBlockValidationFunction;
    /** Current state represented by the update. */
    state?: HydratedBlockStateValidationFunction;
}
/** SimpleBlockValidationViewer implementation. */
export declare class SimpleBlockValidationViewer extends AbstractCreatableProvider<SimpleBlockValidationViewerParams> implements BlockValidationViewer {
    /** Connection kinds supported by this provider. */
    static readonly connectionTypes: readonly ["lmdb", "mongo", "memory", "rpc"];
    /** Primary moniker used to resolve this provider. */
    static readonly defaultMoniker: "BlockValidationViewer";
    /** 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: "BlockValidationViewer"[];
    /** Read, write, or mixed capability surface exposed by the provider. */
    static readonly surface: "node";
    /** Moniker implemented by this provider instance. */
    moniker: "BlockValidationViewer";
    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<SimpleBlockValidationViewerParams>): Promise<SimpleBlockValidationViewerParams>;
    /** Creates the provider instance after its dependencies and configuration have resolved. */
    createHandler(): Promise<void>;
    /** Validates block with explicit chain qualification. */
    qualifiedValidateBlock(block: SignedHydratedBlockWithHashMeta, config?: BlockValidationConfig): Promise<ChainQualified<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>>;
    /** Validates blocks with explicit chain qualification. */
    qualifiedValidateBlocks(blocks: SignedHydratedBlock[], config?: BlockValidationConfig): Promise<ChainQualified<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>>;
    /** Validates uncle with explicit chain qualification. */
    qualifiedValidateUncle(_blocks: SignedHydratedBlock[], _config?: BlockValidationConfig): Promise<ChainQualified<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>>;
    /** Validates block and returns the validation result. */
    validateBlock(block: SignedHydratedBlock, config?: BlockValidationConfig): Promise<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>;
    /** Validates blocks and returns the validation result. */
    validateBlocks(blocks: SignedHydratedBlock[], config?: BlockValidationConfig): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>;
    /** Validates uncle and returns the validation result. */
    validateUncle(blocks: SignedHydratedBlock[], config?: BlockValidationConfig): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>;
    private doValidateProtocol;
    private doValidateState;
    private updateWindowedChainCache;
}
//# sourceMappingURL=SimpleBlockValidationViewer.d.ts.map