/** Extract `data` from standard NG API responses: `{ status, data, ... }` */
export declare const ngExtract: (raw: unknown) => unknown;
/** Extract paginated content from NG API responses: `{ data: { content, totalElements|totalItems } }` */
export declare const pageExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/** Pass-through extractor — returns raw response unchanged. Used for APIs that don't wrap in `data`. */
export declare const passthrough: (raw: unknown) => unknown;
/**
 * STO Global Exemptions extractor.
 * API response: `{ exemptions: [...], pagination: { page, pageSize, totalPages, totalItems }, counts: {...} }`
 * Projects each exemption to a clean, display-friendly shape (issue title, severity, requester name,
 * target name, etc.) so the LLM picks the right columns and skips the opaque IDs. Normalized to the
 * standard `{ items, total, page, pageSize, totalPages, counts }` shape used by all other paginated
 * resources, with an explicit `_nextPageHint` so pagination can't be misinterpreted.
 */
export declare const stoExemptionsExtract: (raw: unknown, input?: Record<string, unknown>) => unknown;
/**
 * AI Evals control plane — paginated list: `{ data, page, limit, total_elements }`.
 */
export declare const aiEvalsListExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * AI Evals — bare array response (e.g. suite evaluations, metric set entries list).
 */
export declare const aiEvalsArrayExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * SCS-specific extractor — strips null, undefined, empty string, empty array,
 * and empty object fields recursively from API responses. SCS payloads contain
 * ~40% empty/null fields; removing them yields significant token savings.
 */
export declare const scsCleanExtract: (raw: unknown) => unknown;
/**
 * Factory: SCS list extractor that strips empty fields AND selects only specified
 * fields from each item. Builds on scsCleanExtract to further reduce token usage
 * for list responses by keeping only actionable fields (IDs, names, counts, scores).
 *
 * @param fields - field names to retain from each list item
 */
export declare const scsListExtract: (fields: string[]) => (raw: unknown) => unknown;
/**
 * Factory for HAR (Artifact Registry) list responses.
 * HAR wraps lists as `{ data: { <arrayKey>: [...], itemCount, pageIndex, ... }, status }`.
 * Normalizes to `{ items, total, pageIndex, pageSize, pageCount }` so the deep link
 * code can find the list via `LIST_ARRAY_KEYS`.
 */
export declare const harListExtract: (arrayKey: string) => (raw: unknown) => unknown;
/**
 * Factory for v1 list responses (bare arrays).
 * If `wrapperKey` is provided, each item is unwrapped: `{ project: {...} }` → `{...}`.
 * Total is derived from array length since response headers aren't accessible.
 */
export declare const v1ListExtract: (wrapperKey?: string) => (raw: unknown) => {
    items: unknown[];
    total: number;
};
/** Factory for v1 single-item responses that may be wrapped: `{ org: {...} }` → `{...}`. */
export declare const v1Unwrap: (wrapperKey: string) => (raw: unknown) => unknown;
/**
 * Organization GET/POST/PUT responses: unwrap standard NG `{ status, data: { organization } }`
 * and prefer `organization` over legacy `org` when both could appear.
 */
export declare const unwrapOrgResponse: (raw: unknown) => unknown;
/**
 * Project GET/POST/PUT responses: unwrap NG `{ status, data: { project } }` → project entity.
 */
export declare const unwrapProjectResponse: (raw: unknown) => unknown;
/**
 * Project LIST responses: unwrap NG `{ data: { content: [{ project: {...} }, ...] } }`.
 * Each item in `content` is wrapped in a `{ project: {...} }` envelope — unwrap to
 * expose `identifier`, `name`, `orgIdentifier` directly on each item.
 */
export declare const projectListExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/** Factory for GraphQL field extraction (used by CCM). */
export declare const gqlExtract: (field: string) => (raw: unknown) => unknown;
/**
 * Extracts the runtime input template from the Harness pipeline template endpoint.
 * Unwraps `data.inputSetTemplateYaml`, `data.hasInputSets`, `data.modules`, and adds
 * a `_hint` field describing whether inputs are required.
 */
export declare const runtimeInputExtract: (raw: unknown) => unknown;
/**
 * Extracts CCM list responses with views/totalCount structure.
 * Maps `data.views` → `items` and `data.totalCount` → `total`.
 * Used by multiple CCM APIs that return this response pattern.
 */
export declare const ccmViewsExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * Extracts CCM cost breakdown data from GraphQL perspectiveGrid response.
 * Maps `data.perspectiveGrid.data` → `items` and `data.perspectiveTotalCount` → `total`.
 */
export declare const ccmBreakdownExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * Extracts CCM cost time series stats from GraphQL perspectiveTimeSeriesStats response.
 * Returns the `stats` array from `data.perspectiveTimeSeriesStats.stats`.
 */
export declare const ccmTimeseriesExtract: (raw: unknown) => unknown;
/**
 * Extracts CCM cost summary from a dual-mode GraphQL response.
 * When `data.ccmMetaData` is present (metadata query), returns it directly.
 * Otherwise returns `{ trendStats, forecastCost }` for a perspective summary query.
 */
export declare const ccmSummaryExtract: (raw: unknown) => unknown;
/**
 * Extracts CCM perspective-scoped recommendations from GraphQL response.
 * Returns `{ items, stats }` from `data.recommendationsV2` and `data.recommendationStatsV2`.
 */
export declare const ccmRecommendationsExtract: (raw: unknown) => {
    items: unknown[];
    stats: unknown;
};
/** Extract dashboard list response: `{ items, pages, resource }` */
export declare const dashboardListExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * Extracts dashboard data from a ZIP ArrayBuffer containing CSVs.
 * Matches v1 `get_dashboard_data` behavior: ZIP → CSV → structured JSON tables.
 */
export declare const dashboardDataExtract: (raw: unknown) => unknown;
/**
 * Extract chaos paginated list response: { data: [...], pagination: { totalItems } }
 * Used by chaos experiments and templates.
 */
export declare const chaosPageExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * Extract chaos probe list response: { totalNoOfProbes, data: [...] }
 */
export declare const chaosProbeListExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * Extract chaos infrastructure list response: { totalNoOfInfras, infras: [...] }
 */
export declare const chaosInfraListExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * Extract chaos K8s infrastructure list response:
 * { infras: [...], totalNoOfInfrastructures, pagination }
 */
export declare const chaosK8sInfraListExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * Extract chaos hub list response: { items: [...], pagination: { totalItems } }
 */
export declare const chaosHubListExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/** Extract chaos DR test list response: { drtests: [...] } */
export declare const chaosDRTestListExtract: (raw: unknown) => {
    items: unknown[];
    total: number;
};
/**
 * Flattens `trafficType.id` → `trafficTypeId` at the top level of an FME item.
 * Enables deep link templates to reference `trafficTypeId` directly.
 */
export declare function flattenTrafficType(item: Record<string, unknown>): void;
/** Extract FME feature flag list — passthrough with trafficType.id flattened on each item. */
export declare const fmeListExtract: (raw: unknown) => unknown;
/** Extract FME feature flag single item — passthrough with trafficType.id flattened. */
export declare const fmeGetExtract: (raw: unknown) => unknown;
//# sourceMappingURL=extractors.d.ts.map