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";
/**
 * Workspace budget type
 */
export declare const CreateBudgetRequestBodyBudgetsType: {
    readonly Workspace: "workspace";
};
/**
 * Workspace budget type
 */
export type CreateBudgetRequestBodyBudgetsType = ClosedEnum<typeof CreateBudgetRequestBodyBudgetsType>;
/**
 * Budget period type
 */
export declare const RequestBodyPeriod: {
    readonly Daily: "daily";
    readonly Weekly: "weekly";
    readonly Monthly: "monthly";
    readonly Yearly: "yearly";
};
/**
 * Budget period type
 */
export type RequestBodyPeriod = ClosedEnum<typeof RequestBodyPeriod>;
/**
 * Budget configuration for the entire workspace
 */
export type WorkspaceBudget = {
    /**
     * Workspace budget type
     */
    type: CreateBudgetRequestBodyBudgetsType;
    /**
     * Budget period type
     */
    period: RequestBodyPeriod;
    /**
     * Budget amount in USD for the specified period
     */
    amount: number;
};
/**
 * Contact budget type
 */
export declare const CreateBudgetRequestBodyType: {
    readonly Contact: "contact";
};
/**
 * Contact budget type
 */
export type CreateBudgetRequestBodyType = ClosedEnum<typeof CreateBudgetRequestBodyType>;
/**
 * Budget period type
 */
export declare const CreateBudgetRequestBodyPeriod: {
    readonly Daily: "daily";
    readonly Weekly: "weekly";
    readonly Monthly: "monthly";
    readonly Yearly: "yearly";
};
/**
 * Budget period type
 */
export type CreateBudgetRequestBodyPeriod = ClosedEnum<typeof CreateBudgetRequestBodyPeriod>;
/**
 * Budget configuration for a specific contact
 */
export type ContactBudget = {
    /**
     * Contact budget type
     */
    type: CreateBudgetRequestBodyType;
    /**
     * Contact external ID
     */
    entityId: string;
    /**
     * Budget period type
     */
    period: CreateBudgetRequestBodyPeriod;
    /**
     * Budget amount in USD for the specified period
     */
    amount: number;
};
/**
 * Create budget configuration for contact or workspace
 */
export type CreateBudgetRequestBody = ContactBudget | WorkspaceBudget;
/**
 * Budget entity type
 */
export declare const CreateBudgetType: {
    readonly ApiKey: "api_key";
    readonly Contact: "contact";
    readonly Workspace: "workspace";
};
/**
 * Budget entity type
 */
export type CreateBudgetType = ClosedEnum<typeof CreateBudgetType>;
/**
 * Budget period type
 */
export declare const CreateBudgetPeriod: {
    readonly Daily: "daily";
    readonly Weekly: "weekly";
    readonly Monthly: "monthly";
    readonly Yearly: "yearly";
};
/**
 * Budget period type
 */
export type CreateBudgetPeriod = ClosedEnum<typeof CreateBudgetPeriod>;
/**
 * Budget configuration
 */
export type CreateBudgetBudget = {
    /**
     * Budget period type
     */
    period: CreateBudgetPeriod;
    /**
     * Budget amount in USD for the specified period
     */
    amount: number;
};
export type Consumption = {
    /**
     * 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 CreateBudgetResponseBody = {
    /**
     * Unique ULID for the budget configuration
     */
    id: string;
    /**
     * Workspace identifier that owns this budget configuration
     */
    workspaceId: string;
    /**
     * Budget entity type
     */
    type: CreateBudgetType;
    /**
     * Contact external identifier (present when type is "contact")
     */
    contactId?: string | undefined;
    /**
     * Budget configuration
     */
    budget: CreateBudgetBudget;
    /**
     * Whether this budget configuration is currently active
     */
    isActive: boolean;
    consumption?: Consumption | 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 CreateBudgetRequestBodyBudgetsType$inboundSchema: z.ZodNativeEnum<typeof CreateBudgetRequestBodyBudgetsType>;
/** @internal */
export declare const CreateBudgetRequestBodyBudgetsType$outboundSchema: z.ZodNativeEnum<typeof CreateBudgetRequestBodyBudgetsType>;
/** @internal */
export declare const RequestBodyPeriod$inboundSchema: z.ZodNativeEnum<typeof RequestBodyPeriod>;
/** @internal */
export declare const RequestBodyPeriod$outboundSchema: z.ZodNativeEnum<typeof RequestBodyPeriod>;
/** @internal */
export declare const WorkspaceBudget$inboundSchema: z.ZodType<WorkspaceBudget, z.ZodTypeDef, unknown>;
/** @internal */
export type WorkspaceBudget$Outbound = {
    type: string;
    period: string;
    amount: number;
};
/** @internal */
export declare const WorkspaceBudget$outboundSchema: z.ZodType<WorkspaceBudget$Outbound, z.ZodTypeDef, WorkspaceBudget>;
export declare function workspaceBudgetToJSON(workspaceBudget: WorkspaceBudget): string;
export declare function workspaceBudgetFromJSON(jsonString: string): SafeParseResult<WorkspaceBudget, SDKValidationError>;
/** @internal */
export declare const CreateBudgetRequestBodyType$inboundSchema: z.ZodNativeEnum<typeof CreateBudgetRequestBodyType>;
/** @internal */
export declare const CreateBudgetRequestBodyType$outboundSchema: z.ZodNativeEnum<typeof CreateBudgetRequestBodyType>;
/** @internal */
export declare const CreateBudgetRequestBodyPeriod$inboundSchema: z.ZodNativeEnum<typeof CreateBudgetRequestBodyPeriod>;
/** @internal */
export declare const CreateBudgetRequestBodyPeriod$outboundSchema: z.ZodNativeEnum<typeof CreateBudgetRequestBodyPeriod>;
/** @internal */
export declare const ContactBudget$inboundSchema: z.ZodType<ContactBudget, z.ZodTypeDef, unknown>;
/** @internal */
export type ContactBudget$Outbound = {
    type: string;
    entity_id: string;
    period: string;
    amount: number;
};
/** @internal */
export declare const ContactBudget$outboundSchema: z.ZodType<ContactBudget$Outbound, z.ZodTypeDef, ContactBudget>;
export declare function contactBudgetToJSON(contactBudget: ContactBudget): string;
export declare function contactBudgetFromJSON(jsonString: string): SafeParseResult<ContactBudget, SDKValidationError>;
/** @internal */
export declare const CreateBudgetRequestBody$inboundSchema: z.ZodType<CreateBudgetRequestBody, z.ZodTypeDef, unknown>;
/** @internal */
export type CreateBudgetRequestBody$Outbound = ContactBudget$Outbound | WorkspaceBudget$Outbound;
/** @internal */
export declare const CreateBudgetRequestBody$outboundSchema: z.ZodType<CreateBudgetRequestBody$Outbound, z.ZodTypeDef, CreateBudgetRequestBody>;
export declare function createBudgetRequestBodyToJSON(createBudgetRequestBody: CreateBudgetRequestBody): string;
export declare function createBudgetRequestBodyFromJSON(jsonString: string): SafeParseResult<CreateBudgetRequestBody, SDKValidationError>;
/** @internal */
export declare const CreateBudgetType$inboundSchema: z.ZodNativeEnum<typeof CreateBudgetType>;
/** @internal */
export declare const CreateBudgetType$outboundSchema: z.ZodNativeEnum<typeof CreateBudgetType>;
/** @internal */
export declare const CreateBudgetPeriod$inboundSchema: z.ZodNativeEnum<typeof CreateBudgetPeriod>;
/** @internal */
export declare const CreateBudgetPeriod$outboundSchema: z.ZodNativeEnum<typeof CreateBudgetPeriod>;
/** @internal */
export declare const CreateBudgetBudget$inboundSchema: z.ZodType<CreateBudgetBudget, z.ZodTypeDef, unknown>;
/** @internal */
export type CreateBudgetBudget$Outbound = {
    period: string;
    amount: number;
};
/** @internal */
export declare const CreateBudgetBudget$outboundSchema: z.ZodType<CreateBudgetBudget$Outbound, z.ZodTypeDef, CreateBudgetBudget>;
export declare function createBudgetBudgetToJSON(createBudgetBudget: CreateBudgetBudget): string;
export declare function createBudgetBudgetFromJSON(jsonString: string): SafeParseResult<CreateBudgetBudget, SDKValidationError>;
/** @internal */
export declare const Consumption$inboundSchema: z.ZodType<Consumption, z.ZodTypeDef, unknown>;
/** @internal */
export type Consumption$Outbound = {
    current_amount: number;
    remaining_amount: number;
    period_start: string | null;
    period_end: string | null;
};
/** @internal */
export declare const Consumption$outboundSchema: z.ZodType<Consumption$Outbound, z.ZodTypeDef, Consumption>;
export declare function consumptionToJSON(consumption: Consumption): string;
export declare function consumptionFromJSON(jsonString: string): SafeParseResult<Consumption, SDKValidationError>;
/** @internal */
export declare const CreateBudgetResponseBody$inboundSchema: z.ZodType<CreateBudgetResponseBody, z.ZodTypeDef, unknown>;
/** @internal */
export type CreateBudgetResponseBody$Outbound = {
    _id: string;
    workspace_id: string;
    type: string;
    contact_id?: string | undefined;
    budget: CreateBudgetBudget$Outbound;
    is_active: boolean;
    consumption?: Consumption$Outbound | undefined;
    created?: string | undefined;
    updated: string;
};
/** @internal */
export declare const CreateBudgetResponseBody$outboundSchema: z.ZodType<CreateBudgetResponseBody$Outbound, z.ZodTypeDef, CreateBudgetResponseBody>;
export declare function createBudgetResponseBodyToJSON(createBudgetResponseBody: CreateBudgetResponseBody): string;
export declare function createBudgetResponseBodyFromJSON(jsonString: string): SafeParseResult<CreateBudgetResponseBody, SDKValidationError>;
//# sourceMappingURL=createbudget.d.ts.map