import type { DatasetRecord, DatasetItem, DatasetItemRow, DatasetVersion, CreateDatasetInput, UpdateDatasetInput, AddDatasetItemInput, UpdateDatasetItemInput, ListDatasetsInput, ListDatasetsOutput, ListDatasetItemsInput, ListDatasetItemsOutput, ListDatasetVersionsInput, ListDatasetVersionsOutput, BatchInsertItemsInput, BatchDeleteItemsInput } from '../../types.js';
import { StorageDomain } from '../base.js';
/**
 * Abstract base class for datasets storage domain.
 * Provides the contract for dataset and dataset item CRUD operations.
 *
 * Schema validation is handled in this base class via Template Method pattern.
 * Subclasses implement protected _do* methods for actual storage operations,
 * including SCD-2 versioning (version bump, row ops, dataset_version insert).
 */
export declare abstract class DatasetsStorage extends StorageDomain {
    constructor();
    dangerouslyClearAll(): Promise<void>;
    abstract createDataset(input: CreateDatasetInput): Promise<DatasetRecord>;
    abstract getDatasetById(args: {
        id: string;
    }): Promise<DatasetRecord | null>;
    abstract deleteDataset(args: {
        id: string;
    }): Promise<void>;
    abstract listDatasets(args: ListDatasetsInput): Promise<ListDatasetsOutput>;
    /**
     * Update a dataset. Validates existing items against new schemas if schemas are changing.
     * Subclasses implement _doUpdateDataset for actual storage operation.
     */
    updateDataset(args: UpdateDatasetInput): Promise<DatasetRecord>;
    /** Subclasses implement actual storage update logic */
    protected abstract _doUpdateDataset(args: UpdateDatasetInput): Promise<DatasetRecord>;
    /**
     * Add an item to a dataset. Validates input/groundTruth against dataset schemas.
     * Subclasses implement _doAddItem which handles SCD-2 versioning internally.
     */
    addItem(args: AddDatasetItemInput): Promise<DatasetItem>;
    /** Subclasses implement actual storage add logic with SCD-2 versioning */
    protected abstract _doAddItem(args: AddDatasetItemInput): Promise<DatasetItem>;
    /**
     * Update an item in a dataset. Validates changed fields against dataset schemas.
     * Subclasses implement _doUpdateItem which handles SCD-2 versioning internally.
     */
    updateItem(args: UpdateDatasetItemInput): Promise<DatasetItem>;
    /** Subclasses implement actual storage update logic with SCD-2 versioning */
    protected abstract _doUpdateItem(args: UpdateDatasetItemInput): Promise<DatasetItem>;
    /**
     * Delete an item from a dataset. Creates a tombstone row via SCD-2.
     * Subclasses implement _doDeleteItem which handles SCD-2 versioning internally.
     */
    deleteItem(args: {
        id: string;
        datasetId: string;
    }): Promise<void>;
    /** Subclasses implement actual storage delete logic with SCD-2 versioning */
    protected abstract _doDeleteItem(args: {
        id: string;
        datasetId: string;
    }): Promise<void>;
    abstract listItems(args: ListDatasetItemsInput): Promise<ListDatasetItemsOutput>;
    abstract getItemById(args: {
        id: string;
        datasetVersion?: number;
    }): Promise<DatasetItem | null>;
    abstract getItemsByVersion(args: {
        datasetId: string;
        version: number;
    }): Promise<DatasetItem[]>;
    abstract getItemHistory(itemId: string): Promise<DatasetItemRow[]>;
    abstract createDatasetVersion(datasetId: string, version: number): Promise<DatasetVersion>;
    abstract listDatasetVersions(input: ListDatasetVersionsInput): Promise<ListDatasetVersionsOutput>;
    /**
     * Batch insert items to a dataset. Validates all items against dataset schemas,
     * then delegates to subclass which handles SCD-2 versioning internally.
     */
    batchInsertItems(input: BatchInsertItemsInput): Promise<DatasetItem[]>;
    /** Subclasses implement batch insert with SCD-2 versioning */
    protected abstract _doBatchInsertItems(input: BatchInsertItemsInput): Promise<DatasetItem[]>;
    /**
     * Batch delete items from a dataset. Creates tombstone rows via SCD-2.
     * Subclasses implement _doBatchDeleteItems which handles SCD-2 versioning internally.
     */
    batchDeleteItems(input: BatchDeleteItemsInput): Promise<void>;
    /** Subclasses implement batch delete with SCD-2 versioning */
    protected abstract _doBatchDeleteItems(input: BatchDeleteItemsInput): Promise<void>;
}
//# sourceMappingURL=base.d.ts.map