import * as z from "zod/v3";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { ApiKeyBudgetScope, ApiKeyBudgetScope$Outbound } from "./apikeybudgetscope.js";
import { IdentityBudgetScope, IdentityBudgetScope$Outbound } from "./identitybudgetscope.js";
import { ModelBudgetScope, ModelBudgetScope$Outbound } from "./modelbudgetscope.js";
import { ProjectBudgetScope, ProjectBudgetScope$Outbound } from "./projectbudgetscope.js";
import { ProviderBudgetScope, ProviderBudgetScope$Outbound } from "./providerbudgetscope.js";
import { WorkspaceBudgetScope, WorkspaceBudgetScope$Outbound } from "./workspacebudgetscope.js";
/**
 * BudgetScope is a closed oneof. Exactly one variant must be set. The
 *
 * @remarks
 *  six variants are ordered by enforcement precedence (most specific to
 *  most general) and mirror the BudgetScopeKind filter enum.
 */
export type BudgetScope = {
    /**
     * Workspace-wide ceiling. The implicit target is the caller's workspace.
     */
    workspace?: WorkspaceBudgetScope | undefined;
    /**
     * Per-project cap.
     */
    project?: ProjectBudgetScope | undefined;
    /**
     * Per-identity cap. Keyed by the contact's external_id (not the
     *
     * @remarks
     *  internal Mongo `_id`) so the scope is stable across imports.
     */
    identity?: IdentityBudgetScope | undefined;
    /**
     * Per-api-key cap. Replaces the legacy embedded `constraints.budget`
     *
     * @remarks
     *  on auth.apiKeys.
     */
    apiKey?: ApiKeyBudgetScope | undefined;
    /**
     * Per-provider cap. The value is the provider enum string (e.g.
     *
     * @remarks
     *  "openai", "anthropic") drawn from ModelIntegrationIdentifier.
     */
    provider?: ProviderBudgetScope | undefined;
    /**
     * Per-model cap. The value is the FULL model reference as callers send
     *
     * @remarks
     *  it ("openai/gpt-4o", or "workspaceKey@openai/gpt-4o" for private
     *  models) — NOT the Mongo `_id` of the model master-data document.
     */
    model?: ModelBudgetScope | undefined;
};
/** @internal */
export declare const BudgetScope$inboundSchema: z.ZodType<BudgetScope, z.ZodTypeDef, unknown>;
/** @internal */
export type BudgetScope$Outbound = {
    workspace?: WorkspaceBudgetScope$Outbound | undefined;
    project?: ProjectBudgetScope$Outbound | undefined;
    identity?: IdentityBudgetScope$Outbound | undefined;
    api_key?: ApiKeyBudgetScope$Outbound | undefined;
    provider?: ProviderBudgetScope$Outbound | undefined;
    model?: ModelBudgetScope$Outbound | undefined;
};
/** @internal */
export declare const BudgetScope$outboundSchema: z.ZodType<BudgetScope$Outbound, z.ZodTypeDef, BudgetScope>;
export declare function budgetScopeToJSON(budgetScope: BudgetScope): string;
export declare function budgetScopeFromJSON(jsonString: string): SafeParseResult<BudgetScope, SDKValidationError>;
//# sourceMappingURL=budgetscope.d.ts.map