/**
 * Deprecation helpers.
 *
 * Usage:
 *   export function oldApi() {
 *     deprecated("oldApi", { since: "0.3.0", replacement: "newApi" });
 *     // ... legacy behaviour
 *   }
 *
 * Behaviour:
 *   - First call from a given source-location emits one console.warn.
 *   - Subsequent calls from the same location are silent (deduped by
 *     stack-frame fingerprint).
 *   - Calls from a different source-location warn again.
 *   - Tests can reset state via `_resetDeprecationWarnings()`.
 *
 * Policy (per CONTRACT.md):
 *   - An API marked `@deprecated` at version X.Y.Z is removed at earliest
 *     X.(Y+2).0 (N-2 minor window). Major bumps MAY remove sooner if
 *     explicitly listed in the release notes.
 */
export interface DeprecationOptions {
    /** Version at which the API was marked deprecated, e.g. "0.3.0". */
    since?: string;
    /** Name of the replacement API to recommend. */
    replacement?: string;
    /** Version at which removal is scheduled, e.g. "0.5.0". */
    removeIn?: string;
    /** Free-form rationale appended to the warning. */
    note?: string;
    /**
     * Optional logger override (defaults to `console.warn`). Pass
     * `noopLogger.warn` in tests that want silence without resetting state.
     */
    emit?: (message: string) => void;
}
/**
 * Emit a one-time-per-call-site deprecation warning.
 *
 * Dedup key is the top-most user frame of the stack; SDK-internal frames
 * and node:internal frames are skipped so the fingerprint reflects where
 * the deprecated API is *called from* in consumer code.
 */
export declare function deprecated(apiName: string, options?: DeprecationOptions): void;
/** Test helper — clears the per-call-site dedup set. */
export declare function _resetDeprecationWarnings(): void;
/** Test helper — returns a snapshot of the warned call-sites. */
export declare function _deprecationWarnedCallSites(): readonly string[];
//# sourceMappingURL=deprecation.d.ts.map