import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { RFCDate } from "../../types/rfcdate.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
/**
 * Budget period type
 */
export declare const Period: {
    readonly Daily: "daily";
    readonly Weekly: "weekly";
    readonly Monthly: "monthly";
    readonly Yearly: "yearly";
};
/**
 * Budget period type
 */
export type Period = ClosedEnum<typeof Period>;
/**
 * Budget configuration to update
 */
export type Budget = {
    /**
     * Budget period type
     */
    period?: Period | undefined;
    /**
     * Budget amount in USD for the specified period
     */
    amount?: number | undefined;
};
export type UpdateBudgetRequestBody = {
    /**
     * Budget configuration to update
     */
    budget?: Budget | undefined;
    /**
     * Whether this budget configuration is currently active
     */
    isActive?: boolean | undefined;
};
export type UpdateBudgetRequest = {
    /**
     * Budget ID
     */
    id: string;
    requestBody: UpdateBudgetRequestBody;
};
/**
 * Budget entity type
 */
export declare const UpdateBudgetType: {
    readonly ApiKey: "api_key";
    readonly Contact: "contact";
    readonly Workspace: "workspace";
};
/**
 * Budget entity type
 */
export type UpdateBudgetType = ClosedEnum<typeof UpdateBudgetType>;
/**
 * Budget period type
 */
export declare const UpdateBudgetPeriod: {
    readonly Daily: "daily";
    readonly Weekly: "weekly";
    readonly Monthly: "monthly";
    readonly Yearly: "yearly";
};
/**
 * Budget period type
 */
export type UpdateBudgetPeriod = ClosedEnum<typeof UpdateBudgetPeriod>;
/**
 * Budget configuration
 */
export type UpdateBudgetBudget = {
    /**
     * Budget period type
     */
    period: UpdateBudgetPeriod;
    /**
     * Budget amount in USD for the specified period
     */
    amount: number;
};
export type UpdateBudgetConsumption = {
    /**
     * Current period consumption in USD
     */
    currentAmount: number;
    /**
     * Remaining budget (amount - current_amount)
     */
    remainingAmount: number;
    /**
     * When the current period started
     */
    periodStart: RFCDate | null;
    /**
     * When the current period will reset
     */
    periodEnd: RFCDate | null;
};
/**
 * Budget configuration details
 */
export type UpdateBudgetResponseBody = {
    /**
     * Unique ULID for the budget configuration
     */
    id: string;
    /**
     * Workspace identifier that owns this budget configuration
     */
    workspaceId: string;
    /**
     * Budget entity type
     */
    type: UpdateBudgetType;
    /**
     * Contact external identifier (present when type is "contact")
     */
    contactId?: string | undefined;
    /**
     * Budget configuration
     */
    budget: UpdateBudgetBudget;
    /**
     * Whether this budget configuration is currently active
     */
    isActive: boolean;
    consumption?: UpdateBudgetConsumption | undefined;
    /**
     * The date and time the resource was created
     */
    created?: Date | undefined;
    /**
     * The date and time the resource was last updated
     */
    updated?: Date | undefined;
};
/** @internal */
export declare const Period$inboundSchema: z.ZodNativeEnum<typeof Period>;
/** @internal */
export declare const Period$outboundSchema: z.ZodNativeEnum<typeof Period>;
/** @internal */
export declare const Budget$inboundSchema: z.ZodType<Budget, z.ZodTypeDef, unknown>;
/** @internal */
export type Budget$Outbound = {
    period?: string | undefined;
    amount?: number | undefined;
};
/** @internal */
export declare const Budget$outboundSchema: z.ZodType<Budget$Outbound, z.ZodTypeDef, Budget>;
export declare function budgetToJSON(budget: Budget): string;
export declare function budgetFromJSON(jsonString: string): SafeParseResult<Budget, SDKValidationError>;
/** @internal */
export declare const UpdateBudgetRequestBody$inboundSchema: z.ZodType<UpdateBudgetRequestBody, z.ZodTypeDef, unknown>;
/** @internal */
export type UpdateBudgetRequestBody$Outbound = {
    budget?: Budget$Outbound | undefined;
    is_active?: boolean | undefined;
};
/** @internal */
export declare const UpdateBudgetRequestBody$outboundSchema: z.ZodType<UpdateBudgetRequestBody$Outbound, z.ZodTypeDef, UpdateBudgetRequestBody>;
export declare function updateBudgetRequestBodyToJSON(updateBudgetRequestBody: UpdateBudgetRequestBody): string;
export declare function updateBudgetRequestBodyFromJSON(jsonString: string): SafeParseResult<UpdateBudgetRequestBody, SDKValidationError>;
/** @internal */
export declare const UpdateBudgetRequest$inboundSchema: z.ZodType<UpdateBudgetRequest, z.ZodTypeDef, unknown>;
/** @internal */
export type UpdateBudgetRequest$Outbound = {
    id: string;
    RequestBody: UpdateBudgetRequestBody$Outbound;
};
/** @internal */
export declare const UpdateBudgetRequest$outboundSchema: z.ZodType<UpdateBudgetRequest$Outbound, z.ZodTypeDef, UpdateBudgetRequest>;
export declare function updateBudgetRequestToJSON(updateBudgetRequest: UpdateBudgetRequest): string;
export declare function updateBudgetRequestFromJSON(jsonString: string): SafeParseResult<UpdateBudgetRequest, SDKValidationError>;
/** @internal */
export declare const UpdateBudgetType$inboundSchema: z.ZodNativeEnum<typeof UpdateBudgetType>;
/** @internal */
export declare const UpdateBudgetType$outboundSchema: z.ZodNativeEnum<typeof UpdateBudgetType>;
/** @internal */
export declare const UpdateBudgetPeriod$inboundSchema: z.ZodNativeEnum<typeof UpdateBudgetPeriod>;
/** @internal */
export declare const UpdateBudgetPeriod$outboundSchema: z.ZodNativeEnum<typeof UpdateBudgetPeriod>;
/** @internal */
export declare const UpdateBudgetBudget$inboundSchema: z.ZodType<UpdateBudgetBudget, z.ZodTypeDef, unknown>;
/** @internal */
export type UpdateBudgetBudget$Outbound = {
    period: string;
    amount: number;
};
/** @internal */
export declare const UpdateBudgetBudget$outboundSchema: z.ZodType<UpdateBudgetBudget$Outbound, z.ZodTypeDef, UpdateBudgetBudget>;
export declare function updateBudgetBudgetToJSON(updateBudgetBudget: UpdateBudgetBudget): string;
export declare function updateBudgetBudgetFromJSON(jsonString: string): SafeParseResult<UpdateBudgetBudget, SDKValidationError>;
/** @internal */
export declare const UpdateBudgetConsumption$inboundSchema: z.ZodType<UpdateBudgetConsumption, z.ZodTypeDef, unknown>;
/** @internal */
export type UpdateBudgetConsumption$Outbound = {
    current_amount: number;
    remaining_amount: number;
    period_start: string | null;
    period_end: string | null;
};
/** @internal */
export declare const UpdateBudgetConsumption$outboundSchema: z.ZodType<UpdateBudgetConsumption$Outbound, z.ZodTypeDef, UpdateBudgetConsumption>;
export declare function updateBudgetConsumptionToJSON(updateBudgetConsumption: UpdateBudgetConsumption): string;
export declare function updateBudgetConsumptionFromJSON(jsonString: string): SafeParseResult<UpdateBudgetConsumption, SDKValidationError>;
/** @internal */
export declare const UpdateBudgetResponseBody$inboundSchema: z.ZodType<UpdateBudgetResponseBody, z.ZodTypeDef, unknown>;
/** @internal */
export type UpdateBudgetResponseBody$Outbound = {
    _id: string;
    workspace_id: string;
    type: string;
    contact_id?: string | undefined;
    budget: UpdateBudgetBudget$Outbound;
    is_active: boolean;
    consumption?: UpdateBudgetConsumption$Outbound | undefined;
    created?: string | undefined;
    updated: string;
};
/** @internal */
export declare const UpdateBudgetResponseBody$outboundSchema: z.ZodType<UpdateBudgetResponseBody$Outbound, z.ZodTypeDef, UpdateBudgetResponseBody>;
export declare function updateBudgetResponseBodyToJSON(updateBudgetResponseBody: UpdateBudgetResponseBody): string;
export declare function updateBudgetResponseBodyFromJSON(jsonString: string): SafeParseResult<UpdateBudgetResponseBody, SDKValidationError>;
//# sourceMappingURL=updatebudget.d.ts.map