import { ForkName } from "@lodestar/params";
import { RootHex, Slot, SubnetID } from "@lodestar/types";
import { LodestarError } from "@lodestar/utils";
import { GossipActionError } from "./gossipValidation.js";
export declare enum DataColumnSidecarErrorCode {
    INVALID_INDEX = "DATA_COLUMN_SIDECAR_ERROR_INVALID_INDEX",
    NO_COMMITMENTS = "DATA_COLUMN_SIDECAR_ERROR_NO_COMMITMENTS",
    MISMATCHED_LENGTHS = "DATA_COLUMN_SIDECAR_ERROR_MISMATCHED_LENGTHS",
    INCORRECT_TYPE = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_TYPE",
    INVALID_SUBNET = "DATA_COLUMN_SIDECAR_ERROR_INVALID_SUBNET",
    INVALID_KZG_PROOF = "DATA_COLUMN_SIDECAR_ERROR_INVALID_KZG_PROOF",
    TOO_MANY_KZG_COMMITMENTS = "DATA_COLUMN_SIDECAR_ERROR_TOO_MANY_KZG_COMMITMENTS",
    /** Block and sidecars header root mismatch */
    INCORRECT_HEADER_ROOT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_HEADER_ROOT",
    /** Block and sidecars data column count mismatch */
    INCORRECT_SIDECAR_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_SIDECAR_COUNT",
    /** Sidecar doesn't match block */
    INCORRECT_BLOCK = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_BLOCK",
    /** Sidecar slot doesn't match block slot */
    INCORRECT_SIDECAR_SLOT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_SIDECAR_SLOT",
    /** Sidecar referenced block is not the expected block type */
    INCORRECT_BLOCK_TYPE = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_BLOCK_TYPE",
    /** Sidecar cell count not as expected */
    INCORRECT_CELL_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_CELL_COUNT",
    /** Sidecar kzg proof count not as expected */
    INCORRECT_KZG_COMMITMENTS_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_KZG_COMMITMENTS_COUNT",
    /** Sidecar kzg proof count not as expected */
    INCORRECT_KZG_PROOF_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_KZG_PROOF_COUNT",
    /** Sidecars proofs not valid */
    INVALID_KZG_PROOF_BATCH = "DATA_COLUMN_SIDECAR_ERROR_INVALID_KZG_PROOF_BATCH",
    ALREADY_KNOWN = "DATA_COLUMN_SIDECAR_ERROR_ALREADY_KNOWN",
    FUTURE_SLOT = "DATA_COLUMN_SIDECAR_ERROR_FUTURE_SLOT",
    WOULD_REVERT_FINALIZED_SLOT = "DATA_COLUMN_SIDECAR_ERROR_WOULD_REVERT_FINALIZED_SLOT",
    PARENT_UNKNOWN = "DATA_COLUMN_SIDECAR_ERROR_PARENT_UNKNOWN",
    BLOCK_UNKNOWN = "DATA_COLUMN_SIDECAR_ERROR_BLOCK_UNKNOWN",
    NOT_LATER_THAN_PARENT = "DATA_COLUMN_SIDECAR_ERROR_NOT_LATER_THAN_PARENT",
    PROPOSAL_SIGNATURE_INVALID = "DATA_COLUMN_SIDECAR_ERROR_PROPOSAL_SIGNATURE_INVALID",
    INCLUSION_PROOF_INVALID = "DATA_COLUMN_SIDECAR_ERROR_INCLUSION_PROOF_INVALID",
    INCORRECT_PROPOSER = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_PROPOSER",
    PAYLOAD_ENVELOPE_INPUT_MISSING = "DATA_COLUMN_SIDECAR_ERROR_PAYLOAD_ENVELOPE_INPUT_MISSING"
}
export type DataColumnSidecarErrorType = {
    code: DataColumnSidecarErrorCode.INVALID_INDEX;
    slot: Slot;
    columnIndex: number;
} | {
    code: DataColumnSidecarErrorCode.NO_COMMITMENTS;
    slot: Slot;
    columnIndex: number;
} | {
    code: DataColumnSidecarErrorCode.MISMATCHED_LENGTHS;
    columnLength: number;
    commitmentsLength: number;
    proofsLength: number;
} | {
    code: DataColumnSidecarErrorCode.INCORRECT_TYPE;
    slot: Slot;
    columnIndex: number;
    fork: ForkName;
} | {
    code: DataColumnSidecarErrorCode.INVALID_SUBNET;
    columnIndex: number;
    gossipSubnet: SubnetID;
} | {
    code: DataColumnSidecarErrorCode.TOO_MANY_KZG_COMMITMENTS;
    slot: number;
    columnIndex: number;
    count: number;
    limit: number;
} | {
    code: DataColumnSidecarErrorCode.ALREADY_KNOWN;
    columnIndex: number;
    slot: Slot;
} | {
    code: DataColumnSidecarErrorCode.FUTURE_SLOT;
    blockSlot: Slot;
    currentSlot: Slot;
} | {
    code: DataColumnSidecarErrorCode.WOULD_REVERT_FINALIZED_SLOT;
    blockSlot: Slot;
    finalizedSlot: Slot;
} | {
    code: DataColumnSidecarErrorCode.PARENT_UNKNOWN;
    parentRoot: RootHex;
    slot: Slot;
} | {
    code: DataColumnSidecarErrorCode.BLOCK_UNKNOWN;
    blockRoot: RootHex;
    slot: Slot;
} | {
    code: DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID;
    slot: Slot;
    blockRoot: RootHex;
    index: number;
} | {
    code: DataColumnSidecarErrorCode.NOT_LATER_THAN_PARENT;
    parentSlot: Slot;
    slot: Slot;
} | {
    code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID;
    slot: Slot;
    columnIndex: number;
} | {
    code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF;
    slot: Slot;
    columnIndex: number;
} | {
    code: DataColumnSidecarErrorCode.INCORRECT_SIDECAR_COUNT;
    slot: number;
    expected: number;
    actual: number;
} | {
    code: DataColumnSidecarErrorCode.INCORRECT_BLOCK;
    slot: number;
    columnIndex: number;
    expected: string;
    actual: string;
} | {
    code: DataColumnSidecarErrorCode.INCORRECT_BLOCK_TYPE;
    slot: Slot;
    columnIndex: number;
} | {
    code: DataColumnSidecarErrorCode.INCORRECT_SIDECAR_SLOT;
    columnIndex: number;
    expected: Slot;
    actual: Slot;
} | {
    code: DataColumnSidecarErrorCode.INCORRECT_HEADER_ROOT;
    slot: number;
    expected: string;
    actual: string;
} | {
    code: DataColumnSidecarErrorCode.INCORRECT_CELL_COUNT | DataColumnSidecarErrorCode.INCORRECT_KZG_COMMITMENTS_COUNT | DataColumnSidecarErrorCode.INCORRECT_KZG_PROOF_COUNT;
    slot: number;
    columnIndex: number;
    expected: number;
    actual: number;
} | {
    code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF_BATCH;
    slot: number;
    reason: string;
} | {
    code: DataColumnSidecarErrorCode.INCORRECT_PROPOSER;
    actualProposerIndex: number;
    expectedProposerIndex: number;
} | {
    code: DataColumnSidecarErrorCode.PAYLOAD_ENVELOPE_INPUT_MISSING;
    slot: Slot;
    blockRoot: RootHex;
};
export declare class DataColumnSidecarGossipError extends GossipActionError<DataColumnSidecarErrorType> {
}
export declare class DataColumnSidecarValidationError extends LodestarError<DataColumnSidecarErrorType> {
}
//# sourceMappingURL=dataColumnSidecarError.d.ts.map