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";
/**
 * Filter by budget entity type (contact or workspace)
 */
export declare const QueryParamType: {
    readonly Contact: "contact";
    readonly Workspace: "workspace";
};
/**
 * Filter by budget entity type (contact or workspace)
 */
export type QueryParamType = ClosedEnum<typeof QueryParamType>;
export type ListBudgetsRequest = {
    /**
     * A limit on the number of objects to be returned. Limit can range between 1 and 50, and the default is 10
     */
    limit?: number | undefined;
    /**
     * A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with `01JJ1HDHN79XAS7A01WB3HYSDB`, your subsequent call can include `after=01JJ1HDHN79XAS7A01WB3HYSDB` in order to fetch the next page of the list.
     */
    startingAfter?: string | undefined;
    /**
     * A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with `01JJ1HDHN79XAS7A01WB3HYSDB`, your subsequent call can include `before=01JJ1HDHN79XAS7A01WB3HYSDB` in order to fetch the previous page of the list.
     */
    endingBefore?: string | undefined;
    /**
     * Filter by budget entity type (contact or workspace)
     */
    type?: QueryParamType | undefined;
    /**
     * Filter by specific entity ID
     */
    entityId?: string | undefined;
    /**
     * Filter by active status
     */
    isActive?: boolean | null | undefined;
};
export declare const ListBudgetsObject: {
    readonly List: "list";
};
export type ListBudgetsObject = ClosedEnum<typeof ListBudgetsObject>;
/**
 * Budget entity type
 */
export declare const ListBudgetsType: {
    readonly ApiKey: "api_key";
    readonly Contact: "contact";
    readonly Workspace: "workspace";
};
/**
 * Budget entity type
 */
export type ListBudgetsType = ClosedEnum<typeof ListBudgetsType>;
/**
 * Budget period type
 */
export declare const ListBudgetsPeriod: {
    readonly Daily: "daily";
    readonly Weekly: "weekly";
    readonly Monthly: "monthly";
    readonly Yearly: "yearly";
};
/**
 * Budget period type
 */
export type ListBudgetsPeriod = ClosedEnum<typeof ListBudgetsPeriod>;
/**
 * Budget configuration
 */
export type ListBudgetsBudget = {
    /**
     * Budget period type
     */
    period: ListBudgetsPeriod;
    /**
     * Budget amount in USD for the specified period
     */
    amount: number;
};
export type ListBudgetsConsumption = {
    /**
     * 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 (public API response)
 */
export type ListBudgetsData = {
    /**
     * Unique ULID for the budget configuration
     */
    id: string;
    /**
     * Budget entity type
     */
    type: ListBudgetsType;
    /**
     * Contact external identifier (present when type is "contact")
     */
    contactId?: string | undefined;
    /**
     * Budget configuration
     */
    budget: ListBudgetsBudget;
    /**
     * Whether this budget configuration is currently active
     */
    isActive: boolean;
    consumption?: ListBudgetsConsumption | undefined;
    /**
     * The date and time the resource was created
     */
    created?: Date | undefined;
    /**
     * The date and time the resource was last updated
     */
    updated?: Date | undefined;
};
/**
 * List of budget configurations
 */
export type ListBudgetsResponseBody = {
    object: ListBudgetsObject;
    data: Array<ListBudgetsData>;
    hasMore: boolean;
};
/** @internal */
export declare const QueryParamType$inboundSchema: z.ZodNativeEnum<typeof QueryParamType>;
/** @internal */
export declare const QueryParamType$outboundSchema: z.ZodNativeEnum<typeof QueryParamType>;
/** @internal */
export declare const ListBudgetsRequest$inboundSchema: z.ZodType<ListBudgetsRequest, z.ZodTypeDef, unknown>;
/** @internal */
export type ListBudgetsRequest$Outbound = {
    limit: number;
    starting_after?: string | undefined;
    ending_before?: string | undefined;
    type?: string | undefined;
    entity_id?: string | undefined;
    is_active?: boolean | null | undefined;
};
/** @internal */
export declare const ListBudgetsRequest$outboundSchema: z.ZodType<ListBudgetsRequest$Outbound, z.ZodTypeDef, ListBudgetsRequest>;
export declare function listBudgetsRequestToJSON(listBudgetsRequest: ListBudgetsRequest): string;
export declare function listBudgetsRequestFromJSON(jsonString: string): SafeParseResult<ListBudgetsRequest, SDKValidationError>;
/** @internal */
export declare const ListBudgetsObject$inboundSchema: z.ZodNativeEnum<typeof ListBudgetsObject>;
/** @internal */
export declare const ListBudgetsObject$outboundSchema: z.ZodNativeEnum<typeof ListBudgetsObject>;
/** @internal */
export declare const ListBudgetsType$inboundSchema: z.ZodNativeEnum<typeof ListBudgetsType>;
/** @internal */
export declare const ListBudgetsType$outboundSchema: z.ZodNativeEnum<typeof ListBudgetsType>;
/** @internal */
export declare const ListBudgetsPeriod$inboundSchema: z.ZodNativeEnum<typeof ListBudgetsPeriod>;
/** @internal */
export declare const ListBudgetsPeriod$outboundSchema: z.ZodNativeEnum<typeof ListBudgetsPeriod>;
/** @internal */
export declare const ListBudgetsBudget$inboundSchema: z.ZodType<ListBudgetsBudget, z.ZodTypeDef, unknown>;
/** @internal */
export type ListBudgetsBudget$Outbound = {
    period: string;
    amount: number;
};
/** @internal */
export declare const ListBudgetsBudget$outboundSchema: z.ZodType<ListBudgetsBudget$Outbound, z.ZodTypeDef, ListBudgetsBudget>;
export declare function listBudgetsBudgetToJSON(listBudgetsBudget: ListBudgetsBudget): string;
export declare function listBudgetsBudgetFromJSON(jsonString: string): SafeParseResult<ListBudgetsBudget, SDKValidationError>;
/** @internal */
export declare const ListBudgetsConsumption$inboundSchema: z.ZodType<ListBudgetsConsumption, z.ZodTypeDef, unknown>;
/** @internal */
export type ListBudgetsConsumption$Outbound = {
    current_amount: number;
    remaining_amount: number;
    period_start: string | null;
    period_end: string | null;
};
/** @internal */
export declare const ListBudgetsConsumption$outboundSchema: z.ZodType<ListBudgetsConsumption$Outbound, z.ZodTypeDef, ListBudgetsConsumption>;
export declare function listBudgetsConsumptionToJSON(listBudgetsConsumption: ListBudgetsConsumption): string;
export declare function listBudgetsConsumptionFromJSON(jsonString: string): SafeParseResult<ListBudgetsConsumption, SDKValidationError>;
/** @internal */
export declare const ListBudgetsData$inboundSchema: z.ZodType<ListBudgetsData, z.ZodTypeDef, unknown>;
/** @internal */
export type ListBudgetsData$Outbound = {
    _id: string;
    type: string;
    contact_id?: string | undefined;
    budget: ListBudgetsBudget$Outbound;
    is_active: boolean;
    consumption?: ListBudgetsConsumption$Outbound | undefined;
    created?: string | undefined;
    updated: string;
};
/** @internal */
export declare const ListBudgetsData$outboundSchema: z.ZodType<ListBudgetsData$Outbound, z.ZodTypeDef, ListBudgetsData>;
export declare function listBudgetsDataToJSON(listBudgetsData: ListBudgetsData): string;
export declare function listBudgetsDataFromJSON(jsonString: string): SafeParseResult<ListBudgetsData, SDKValidationError>;
/** @internal */
export declare const ListBudgetsResponseBody$inboundSchema: z.ZodType<ListBudgetsResponseBody, z.ZodTypeDef, unknown>;
/** @internal */
export type ListBudgetsResponseBody$Outbound = {
    object: string;
    data: Array<ListBudgetsData$Outbound>;
    has_more: boolean;
};
/** @internal */
export declare const ListBudgetsResponseBody$outboundSchema: z.ZodType<ListBudgetsResponseBody$Outbound, z.ZodTypeDef, ListBudgetsResponseBody>;
export declare function listBudgetsResponseBodyToJSON(listBudgetsResponseBody: ListBudgetsResponseBody): string;
export declare function listBudgetsResponseBodyFromJSON(jsonString: string): SafeParseResult<ListBudgetsResponseBody, SDKValidationError>;
//# sourceMappingURL=listbudgets.d.ts.map