import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Filter, Filter$Outbound } from "./filter.js";
/**
 * Catalogue metric to query.
 */
export declare const Metric: {
    readonly GenaiRequests: "genai.requests";
    readonly GenaiTokens: "genai.tokens";
    readonly GenaiCost: "genai.cost";
    readonly GenaiErrors: "genai.errors";
    readonly GenaiLatencyP50: "genai.latency.p50";
    readonly GenaiLatencyP95: "genai.latency.p95";
    readonly GenaiLatencyP99: "genai.latency.p99";
    readonly GenaiEvaluatorRuns: "genai.evaluator.runs";
    readonly GenaiEvaluatorPassRate: "genai.evaluator.pass_rate";
    readonly GenaiEvaluatorScoreAvg: "genai.evaluator.score.avg";
    readonly GenaiGuardrailRuns: "genai.guardrail.runs";
    readonly GenaiGuardrailBlockRate: "genai.guardrail.block_rate";
    readonly GenaiGuardrailTriggered: "genai.guardrail.triggered";
    readonly GenaiUsage: "genai.usage";
};
/**
 * Catalogue metric to query.
 */
export type Metric = ClosedEnum<typeof Metric>;
/**
 * Requested bucket grain. Use `auto` or omit the field to let the server choose based on the requested range.
 */
export declare const Grain: {
    readonly Auto: "auto";
    readonly Minute: "minute";
    readonly Hour: "hour";
    readonly Day: "day";
};
/**
 * Requested bucket grain. Use `auto` or omit the field to let the server choose based on the requested range.
 */
export type Grain = ClosedEnum<typeof Grain>;
export declare const GroupBy: {
    readonly Project: "project";
    readonly Identity: "identity";
    readonly Provider: "provider";
    readonly Model: "model";
    readonly Product: "product";
    readonly ApiKey: "api_key";
    readonly StatusCode: "status_code";
    readonly HttpStatusCode: "http_status_code";
    readonly CredentialType: "credential_type";
    readonly Dimension: "dimension";
    readonly DimensionType: "dimension_type";
    readonly Tag: "tag";
    readonly Agent: "agent";
    readonly Tool: "tool";
    readonly Deployment: "deployment";
    readonly Evaluator: "evaluator";
    readonly Dataset: "dataset";
    readonly Prompt: "prompt";
    readonly Policy: "policy";
    readonly Conversation: "conversation";
    readonly Thread: "thread";
    readonly MemoryStore: "memory_store";
    readonly Knowledge: "knowledge";
    readonly Sheet: "sheet";
    readonly GuardrailOrigin: "guardrail_origin";
    readonly EvaluatorName: "evaluator_name";
    readonly EvaluatorType: "evaluator_type";
    readonly EvaluatorVersion: "evaluator_version";
    readonly ResultType: "result_type";
    readonly EvaluationStage: "evaluation_stage";
    readonly GuardrailStage: "guardrail_stage";
    readonly EvaluatorStage: "evaluator_stage";
    readonly GuardrailAction: "guardrail_action";
    readonly ResultLabel: "result_label";
};
export type GroupBy = ClosedEnum<typeof GroupBy>;
export type QueryReportRequest = {
    /**
     * Catalogue metric to query.
     */
    metric: Metric;
    /**
     * Inclusive lower bound for the report window (RFC 3339, UTC).
     */
    from: Date;
    /**
     * Exclusive upper bound for the report window (RFC 3339, UTC).
     */
    to: Date;
    /**
     * Requested bucket grain. Use `auto` or omit the field to let the server choose based on the requested range.
     */
    grain?: Grain | undefined;
    /**
     * Reporting dimensions to break down by. Valid dimensions depend on the selected metric.
     */
    groupBy?: Array<GroupBy> | undefined;
    /**
     * Up to 20 allowlisted predicates combined with AND.
     */
    filters?: Array<Filter> | undefined;
    /**
     * Maximum bucket rows returned. Defaults to 1000 and is capped at
     *
     * @remarks
     *  5000.
     */
    limit?: number | undefined;
    /**
     * IANA time zone applied to bucket boundaries, for example
     *
     * @remarks
     *  `America/New_York`. Response timestamps remain UTC. Empty means UTC.
     */
    timeZone?: string | undefined;
    /**
     * When true, include a `totals` block aggregated across the full
     *
     * @remarks
     *  report window.
     */
    includeTotals?: boolean | undefined;
};
/** @internal */
export declare const Metric$inboundSchema: z.ZodNativeEnum<typeof Metric>;
/** @internal */
export declare const Metric$outboundSchema: z.ZodNativeEnum<typeof Metric>;
/** @internal */
export declare const Grain$inboundSchema: z.ZodNativeEnum<typeof Grain>;
/** @internal */
export declare const Grain$outboundSchema: z.ZodNativeEnum<typeof Grain>;
/** @internal */
export declare const GroupBy$inboundSchema: z.ZodNativeEnum<typeof GroupBy>;
/** @internal */
export declare const GroupBy$outboundSchema: z.ZodNativeEnum<typeof GroupBy>;
/** @internal */
export declare const QueryReportRequest$inboundSchema: z.ZodType<QueryReportRequest, z.ZodTypeDef, unknown>;
/** @internal */
export type QueryReportRequest$Outbound = {
    metric: string;
    from: string;
    to: string;
    grain?: string | undefined;
    group_by?: Array<string> | undefined;
    filters?: Array<Filter$Outbound> | undefined;
    limit?: number | undefined;
    time_zone?: string | undefined;
    include_totals?: boolean | undefined;
};
/** @internal */
export declare const QueryReportRequest$outboundSchema: z.ZodType<QueryReportRequest$Outbound, z.ZodTypeDef, QueryReportRequest>;
export declare function queryReportRequestToJSON(queryReportRequest: QueryReportRequest): string;
export declare function queryReportRequestFromJSON(jsonString: string): SafeParseResult<QueryReportRequest, SDKValidationError>;
//# sourceMappingURL=queryreportrequest.d.ts.map