/**
 * Renders the budget tile as an HTML string.
 *
 * @param {BudgetStatusViewModel} viewModel
 * @returns {string}
 */
export function renderBudgetTile(viewModel: BudgetStatusViewModel): string;
/**
 * Parses a WebSocket "budget-status" message into a view model.
 * Returns null if the message is not of the expected shape.
 *
 * @param {unknown} message
 * @returns {BudgetStatusViewModel | null}
 */
export function parseBudgetStatusMessage(message: unknown): BudgetStatusViewModel | null;
/**
 * Parses a WebSocket "budget-exceeded" message into a toast payload.
 * Returns null if the message is not of the expected shape.
 *
 * @param {unknown} message
 * @returns {BudgetExceededPayload | null}
 */
export function parseBudgetExceededMessage(message: unknown): BudgetExceededPayload | null;
/**
 * Fetches the raw budget config.
 *
 * @param {typeof fetch} [fetchImpl]
 * @returns {Promise<BudgetConfigViewModel>}
 */
export function fetchBudget(fetchImpl?: typeof fetch): Promise<BudgetConfigViewModel>;
/**
 * Fetches the budget status view model.
 *
 * @param {typeof fetch} [fetchImpl]
 * @returns {Promise<BudgetStatusViewModel>}
 */
export function fetchBudgetStatus(fetchImpl?: typeof fetch): Promise<BudgetStatusViewModel>;
/**
 * Submits a new budget limit. The server enforces the 0-600 range.
 *
 * @param {number} limitUsd
 * @param {typeof fetch} [fetchImpl]
 * @returns {Promise<SubmitBudgetResult>}
 */
export function submitBudget(limitUsd: number, fetchImpl?: typeof fetch): Promise<SubmitBudgetResult>;
export type BudgetStatusViewModel = {
    limitUsdFormatted: string;
    consumedUsdFormatted: string;
    remainingUsdFormatted: string;
    percentUsedFormatted: string;
    gaugeWidthPercent: number;
    exceeded: boolean;
    periodStart: string;
};
export type BudgetExceededPayload = {
    mrNumber: number;
    platform: "gitlab" | "github";
    projectPath: string;
    limitUsd: number;
    consumedUsd: number;
};
export type BudgetConfigViewModel = {
    limitUsd: number;
};
export type SubmitBudgetResult = {
    success: boolean;
    limitUsd?: number | undefined;
    error?: string | undefined;
};
//# sourceMappingURL=budgetSettings.d.ts.map