import type { HttpContractConfig } from "./types.js";
/**
 * Lifecycle metadata for an HTTP contract that external clients should stop
 * using.
 */
export type ContractDeprecationMeta = {
    /** UTC ISO 8601 timestamp when the contract became deprecated. */
    since: string;
    /** Optional human-readable explanation. */
    reason?: string;
    /** UTC ISO 8601 timestamp after which the contract may stop being served. */
    sunset?: string;
    /** URI reference for the preferred replacement operation. */
    replacement?: string;
    /** Absolute HTTP(S) URL with migration or deprecation documentation. */
    documentation?: string;
};
/** Stable code identifying invalid lifecycle or operation metadata. */
export type ContractLifecycleFindingCode = "INVALID_DEPRECATION_SINCE" | "INVALID_DEPRECATION_SUNSET" | "DEPRECATION_SUNSET_BEFORE_SINCE" | "INVALID_DEPRECATION_REASON" | "INVALID_DEPRECATION_REPLACEMENT" | "INVALID_DEPRECATION_DOCUMENTATION" | "INVALID_OPERATION_ID";
/** Error raised when contract lifecycle metadata is malformed. */
export declare class ContractLifecycleError extends Error {
    /** Stable machine-readable finding code. */
    readonly code: ContractLifecycleFindingCode;
    /** Name of the invalid contract, or the group label during group setup. */
    readonly contract: string;
    constructor(args: {
        code: ContractLifecycleFindingCode;
        contract: string;
        message: string;
    });
}
/** Validate deprecation metadata supplied by builders or raw contract configs. */
export declare function assertValidContractDeprecation(deprecation: unknown, contract: string): asserts deprecation is ContractDeprecationMeta;
/** Return and validate the operation ID used by OpenAPI and route registries. */
export declare function getContractOperationId(contract: Pick<HttpContractConfig, "name" | "metadata">): string;
/** Validate lifecycle metadata on a complete contract definition. */
export declare function assertValidContractLifecycle(contract: Pick<HttpContractConfig, "name" | "metadata">): void;
/** Build standards-based HTTP response headers for a deprecated contract. */
export declare function contractLifecycleResponseHeaders(contract: Pick<HttpContractConfig, "name" | "metadata">): Record<string, string>;
//# sourceMappingURL=lifecycle.d.ts.map