import type { CreateSuite } from '../models/CreateSuite';
import type { PaginatedResult } from '../models/PaginatedResult';
import type { SuiteMetadata, SuitesQuery } from '../models/SuiteMetadata';
import type { SuitesPersistenceRegistry } from '../persistence/suites/SuitesPersistenceRegistry';
import type { TestsPersistenceRegistry } from '../persistence/tests/TestsPersistenceRegistry';
export declare class SuitesManager {
    private readonly suitesPersistenceRegistry;
    private readonly testsPersistenceRegistry;
    constructor(suitesPersistenceRegistry: SuitesPersistenceRegistry, testsPersistenceRegistry: TestsPersistenceRegistry);
    createSuite(params: CreateSuite): Promise<SuiteMetadata>;
    getSuiteById(suiteId: string): Promise<SuiteMetadata>;
    getSuites(query: SuitesQuery): Promise<PaginatedResult<SuiteMetadata>>;
    /**
     * Update a suite in the persistence layer where it exists.
     * Iterates layers, updates in the first one that has it, ignores
     * SuiteNotFoundExceptions from others.
     */
    updateSuite(suiteMetadata: SuiteMetadata): Promise<void>;
    /**
     * Delete a suite from all persistence layers.
     *
     * Orphans tests that belong to the suite first, then deletes the suite
     * row. The orphan pass must run before the suite delete: SQLite has an
     * ON DELETE SET NULL FK on test_metadata.suite_id, which clears the
     * column synchronously inside DELETE FROM suite_metadata. If we deleted
     * first, the subsequent getTests({ suiteId }) filter would find zero
     * rows in the SQLite layer (column already null) and skip the JSON-blob
     * rewrite, leaving each affected test's `metadata.suiteId` pointed at a
     * suite that no longer exists. Orphaning first rewrites both the SQL
     * column and the JSON blob via updateTest, so the FK cascade is then a
     * no-op. Non-DB layers (Volatile, S3, GCS) have no FK and rely on this
     * pass for the cascade behavior in either ordering.
     */
    deleteSuite(suiteId: string): Promise<void>;
}
//# sourceMappingURL=SuitesManager.d.ts.map