import * as z from "zod/v3";
import { BudgetLimits, BudgetLimits$Outbound } from "./budgetlimits.js";
import { BudgetMatch, BudgetMatch$Outbound } from "./budgetmatch.js";
import { BudgetScope, BudgetScope$Outbound } from "./budgetscope.js";
import { RateLimit, RateLimit$Outbound } from "./ratelimit.js";
export type CreateBudgetRequest = {
    /**
     * Structured scope. Mutually exclusive with `match`: provide a scope
     *
     * @remarks
     *  for the six canonical kinds (the server derives the matching CEL),
     *  or provide `match` for a dynamic budget. Exactly one of the two
     *  must be set; the handler enforces that invariant.
     */
    scope?: BudgetScope | undefined;
    /**
     * Raw CEL matching expression for dynamic budgets (e.g.
     *
     * @remarks
     *  `metadata.team == "ml" && provider == "openai"`). Validated via
     *  CEL parse at write time. Mutually exclusive with `scope`.
     */
    match?: BudgetMatch | undefined;
    /**
     * At least one of amount / token_limit / rate_limit.requests_per_minute
     *
     * @remarks
     *  must be provided on the budget; the handler enforces that invariant.
     */
    limits?: BudgetLimits | undefined;
    /**
     * Optional rate limit.
     */
    rateLimit?: RateLimit | undefined;
    /**
     * Whether the budget should be active immediately. Defaults to true
     *
     * @remarks
     *  when omitted (handler enforces).
     */
    isActive?: boolean | undefined;
    /**
     * Optional expiration. When set in combination with is_active=true,
     *
     * @remarks
     *  the value MUST be in the future; the handler rejects past values.
     */
    expiresAt?: Date | undefined;
};
/** @internal */
export type CreateBudgetRequest$Outbound = {
    scope?: BudgetScope$Outbound | undefined;
    match?: BudgetMatch$Outbound | undefined;
    limits?: BudgetLimits$Outbound | undefined;
    rate_limit?: RateLimit$Outbound | undefined;
    is_active?: boolean | undefined;
    expires_at?: string | undefined;
};
/** @internal */
export declare const CreateBudgetRequest$outboundSchema: z.ZodType<CreateBudgetRequest$Outbound, z.ZodTypeDef, CreateBudgetRequest>;
export declare function createBudgetRequestToJSON(createBudgetRequest: CreateBudgetRequest): string;
//# sourceMappingURL=createbudgetrequest.d.ts.map