import { LuminaJsx } from '@arcgis/lumina';
export type LogLevel = "debug" | "info" | "warn" | "error" | "trace" | "off";
type Message = string;
type MajorVersion = number;
type DeprecatedContext = "component" | "property" | "method" | "event" | "slot";
type DeprecatedParams = {
    name: string;
    suggested?: string | string[];
    component?: string;
    removalVersion: MajorVersion | "future";
};
type SimpleComponentName<T> = T extends `calcite-${infer Name}` ? Name : T;
type ComponentDeprecatedParams = Omit<DeprecatedParams, "name"> & {
    name: SimpleComponentName<keyof LuminaJsx.IntrinsicElements>;
};
/** Exported for testing purposes only */
export declare const loggedDeprecations: Set<string>;
export declare const logger: {
    readonly debug: (message: Message) => void;
    readonly info: (message: Message) => void;
    readonly warn: (message: Message) => void;
    readonly error: (message: Message) => void;
    readonly trace: (message: Message) => void;
    readonly deprecated: typeof deprecated;
};
/**
 * Logs a deprecation warning to the console.
 *
 * @param context the context in which the deprecation is occurring
 * @param params the deprecation details
 */
declare function deprecated(context: Exclude<DeprecatedContext, "component">, params: DeprecatedParams): void;
declare function deprecated(context: Extract<DeprecatedContext, "component">, params: ComponentDeprecatedParams): void;
export {};
