import { Core } from '@strapi/strapi'; export type NarrationLogLevel = "debug" | "info" | "warn" | "error"; /** Correlate all logs for one admin generate / TTS attempt (grep this id in server logs). */ export declare function createNarrationRequestId(): string; /** * Single-line structured logs for grep and support tickets. * Never pass full narration text or API keys here. */ export declare function logNarrationEvent(strapi: Core.Strapi, level: NarrationLogLevel, event: string, payload: Record): void; /** Response headers useful for ElevenLabs billing / support (no secrets). */ export declare function pickUpstreamHeadersForLog(headers: Headers): Record; /** * Field names whose key shape suggests a credential. These are masked in logs * even though the plugin never logs values themselves — defense in depth in * case a downstream log pipeline later starts ingesting the key list. * * Pattern set is intentionally additive: extend by appending here, never by * inlining a regex at call sites. */ export declare const SECRET_KEY_PATTERNS: readonly RegExp[]; export declare const REDACTED_KEY_LABEL: "[redacted]"; export declare function isSecretLikeKey(key: string): boolean; export type SummarizedValueKeys = { valueFieldCount: number; valueFieldKeys: string[]; redactedKeyCount: number; }; /** * Summarize entry-form values for telemetry. * * Returns the count + a capped list of field key names. Keys that match * {@link SECRET_KEY_PATTERNS} are replaced with {@link REDACTED_KEY_LABEL} * so that copy-pasted log lines never reveal credential-shaped attribute * names from the host content type. */ export declare function summarizeValuesKeys(values: Record | null | undefined): SummarizedValueKeys;