/**
 * Spec operations for PMO.
 *
 * This module uses Drizzle ORM for type-safe database queries.
 */
import { Project, Spec, SpecFilter, Ticket } from '../types.js';
import { StorageContext } from './types.js';
export declare class SpecStorage {
    private ctx;
    constructor(ctx: StorageContext);
    /**
     * Create a new spec.
     */
    createSpec(spec: Partial<Spec>): Promise<Spec>;
    /**
     * Get a spec by ID.
     */
    getSpec(id: string): Promise<Spec | null>;
    /**
     * List specs with optional filters.
     */
    listSpecs(filter?: SpecFilter): Promise<Spec[]>;
    /**
     * Update a spec.
     */
    updateSpec(id: string, changes: Partial<Spec>): Promise<Spec>;
    /**
     * Delete a spec.
     */
    deleteSpec(id: string): Promise<void>;
    /**
     * Link a ticket to a spec.
     */
    linkTicketToSpec(ticketId: string, specId: string): Promise<void>;
    /**
     * Unlink a ticket from a spec.
     */
    unlinkTicketFromSpec(ticketId: string, specId: string): Promise<void>;
    /**
     * Get tickets for a spec.
     */
    getTicketsForSpec(projectId: string, specId: string): Promise<Ticket[]>;
    /**
     * Get specs for a ticket.
     */
    getSpecsForTicket(ticketId: string): Promise<Spec[]>;
    /**
     * Add a spec dependency.
     */
    addSpecDependency(specId: string, dependsOnId: string): Promise<void>;
    /**
     * Remove a spec dependency.
     */
    removeSpecDependency(specId: string, dependsOnId: string): Promise<void>;
    /**
     * Get dependencies for a spec.
     */
    getSpecDependencies(specId: string): Promise<Spec[]>;
    /**
     * Get specs that depend on a spec.
     */
    getSpecDependents(specId: string): Promise<Spec[]>;
    /**
     * Link a project to a spec.
     */
    linkProjectToSpec(projectId: string, specId: string): Promise<void>;
    /**
     * Unlink a project from a spec.
     */
    unlinkProjectFromSpec(projectId: string, specId: string): Promise<void>;
    /**
     * Get specs for a project.
     */
    getSpecsForProject(projectId: string): Promise<Spec[]>;
    /**
     * Get projects for a spec.
     */
    getProjectsForSpec(specId: string): Promise<Project[]>;
}
