import { ChainConfig } from "@lodestar/config";
import { DataColumnSidecar, Root, Slot, SubnetID, fulu } from "@lodestar/types";
import { BeaconMetrics } from "../../metrics/metrics/beacon.js";
import { Metrics } from "../../metrics/metrics.js";
import { IBeaconChain } from "../interface.js";
export declare function validateGossipDataColumnSidecar(chain: IBeaconChain, dataColumnSidecar: fulu.DataColumnSidecar, gossipSubnet: SubnetID, metrics: Metrics | null): Promise<void>;
/**
 * SPEC FUNCTION
 * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#verify_data_column_sidecar_kzg_proofs
 */
export declare function verifyDataColumnSidecarKzgProofs(commitments: Uint8Array[], cellIndices: number[], cells: Uint8Array[], proofs: Uint8Array[]): Promise<void>;
/**
 * SPEC FUNCTION
 * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#verify_data_column_sidecar_inclusion_proof
 */
export declare function verifyDataColumnSidecarInclusionProof(dataColumnSidecar: fulu.DataColumnSidecar): boolean;
/**
 * Validate a subset of data column sidecars in a block
 *
 * Requires the block to be known to the node
 *
 * NOTE: chain is optional to skip signature verification. Helpful for testing purposes and so that can control whether
 * signature gets checked depending on the reqresp method that is being checked
 */
export declare function validateBlockDataColumnSidecars(chain: IBeaconChain | null, blockSlot: Slot, blockRoot: Root, blockBlobCount: number, dataColumnSidecars: fulu.DataColumnSidecars, metrics?: BeaconMetrics["peerDas"] | null): Promise<void>;
/**
 * SPEC FUNCTION
 * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#compute_subnet_for_data_column_sidecar
 */
export declare function computeSubnetForDataColumnSidecar(config: ChainConfig, columnSidecar: DataColumnSidecar): SubnetID;
//# sourceMappingURL=dataColumnSidecar.d.ts.map