/** * @license * Copyright 2025 Vybestack LLC * SPDX-License-Identifier: Apache-2.0 */ import { z } from 'zod'; /** * Schema for a single rate limit window from Codex usage endpoint */ export declare const CodexRateLimitWindowSchema: z.ZodObject<{ used_percent: z.ZodNumber; limit_window_seconds: z.ZodNumber; reset_after_seconds: z.ZodNumber; reset_at: z.ZodNumber; }, "strip", z.ZodTypeAny, { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; }, { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; }>; /** * Schema for rate limit details */ export declare const CodexRateLimitDetailsSchema: z.ZodObject<{ allowed: z.ZodBoolean; limit_reached: z.ZodBoolean; primary_window: z.ZodOptional>>; secondary_window: z.ZodOptional>>; }, "strip", z.ZodTypeAny, { allowed: boolean; limit_reached: boolean; primary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; secondary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; }, { allowed: boolean; limit_reached: boolean; primary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; secondary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; }>; /** * Schema for credits information */ export declare const CodexCreditsSchema: z.ZodObject<{ has_credits: z.ZodBoolean; unlimited: z.ZodBoolean; balance: z.ZodOptional>; }, "strip", z.ZodTypeAny, { has_credits: boolean; unlimited: boolean; balance?: string | null | undefined; }, { has_credits: boolean; unlimited: boolean; balance?: string | null | undefined; }>; /** * Schema for Codex usage response * Based on https://api.openai.com/api/codex/usage endpoint */ export declare const CodexUsageInfoSchema: z.ZodObject<{ plan_type: z.ZodString; rate_limit: z.ZodOptional>>; secondary_window: z.ZodOptional>>; }, "strip", z.ZodTypeAny, { allowed: boolean; limit_reached: boolean; primary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; secondary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; }, { allowed: boolean; limit_reached: boolean; primary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; secondary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; }>>>; credits: z.ZodOptional>; }, "strip", z.ZodTypeAny, { has_credits: boolean; unlimited: boolean; balance?: string | null | undefined; }, { has_credits: boolean; unlimited: boolean; balance?: string | null | undefined; }>>>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ plan_type: z.ZodString; rate_limit: z.ZodOptional>>; secondary_window: z.ZodOptional>>; }, "strip", z.ZodTypeAny, { allowed: boolean; limit_reached: boolean; primary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; secondary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; }, { allowed: boolean; limit_reached: boolean; primary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; secondary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; }>>>; credits: z.ZodOptional>; }, "strip", z.ZodTypeAny, { has_credits: boolean; unlimited: boolean; balance?: string | null | undefined; }, { has_credits: boolean; unlimited: boolean; balance?: string | null | undefined; }>>>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ plan_type: z.ZodString; rate_limit: z.ZodOptional>>; secondary_window: z.ZodOptional>>; }, "strip", z.ZodTypeAny, { allowed: boolean; limit_reached: boolean; primary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; secondary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; }, { allowed: boolean; limit_reached: boolean; primary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; secondary_window?: { used_percent: number; limit_window_seconds: number; reset_after_seconds: number; reset_at: number; } | null | undefined; }>>>; credits: z.ZodOptional>; }, "strip", z.ZodTypeAny, { has_credits: boolean; unlimited: boolean; balance?: string | null | undefined; }, { has_credits: boolean; unlimited: boolean; balance?: string | null | undefined; }>>>; }, z.ZodTypeAny, "passthrough">>; /** * Single rate limit window information (may be null) */ export type CodexRateLimitWindow = z.infer | null; /** * Credits information */ export type CodexCredits = z.infer | null; /** * Codex usage information from API endpoint */ export type CodexUsageInfo = z.infer; /** * Fetch usage information from Codex usage endpoint * Requires an OAuth access token and account_id from Codex authentication * * @param accessToken - OAuth access token * @param accountId - Account ID for ChatGPT-Account-Id header * @param baseUrl - Optional Codex base URL for ChatGPT path-style usage endpoint * @returns Usage info if available, null on error */ export declare function fetchCodexUsage(accessToken: string, accountId: string, baseUrl?: string): Promise; /** * Format a rate limit window for display */ export declare function formatCodexRateLimitWindow(window: CodexRateLimitWindow, label: string): string | null; /** * Format all available Codex usage information for display */ export declare function formatCodexUsage(usage: CodexUsageInfo): string[];