import type { Transport } from "@earendil-works/pi-ai/compat";
export interface CompactionSettings {
    enabled?: boolean;
    reserveTokens?: number;
    compression_ratio?: number;
    preserve_recent?: number;
    query?: string;
}
export interface BranchSummarySettings {
    reserveTokens?: number;
    skipPrompt?: boolean;
}
export interface ProviderRetrySettings {
    timeoutMs?: number;
    maxRetries?: number;
    maxRetryDelayMs?: number;
}
export interface RetrySettings {
    enabled?: boolean;
    maxRetries?: number;
    baseDelayMs?: number;
    provider?: ProviderRetrySettings;
}
export interface TerminalSettings {
    showImages?: boolean;
    imageWidthCells?: number;
    clearOnShrink?: boolean;
    showTerminalProgress?: boolean;
}
export interface ImageSettings {
    autoResize?: boolean;
    blockImages?: boolean;
}
export interface SearchSettings {
    contextBefore?: number;
    contextAfter?: number;
}
export interface ThinkingBudgetsSettings {
    minimal?: number;
    low?: number;
    medium?: number;
    high?: number;
}
export interface MarkdownSettings {
    codeBlockIndent?: string;
}
export interface WarningSettings {
    anthropicExtraUsage?: boolean;
}
export interface CodexFastModeSettings {
    chat?: boolean;
    workflow?: boolean;
}
export type DefaultProjectTrust = "ask" | "always" | "never";
export type TransportSetting = Transport;
export type ContextWindowSetting = number | string;
export type ModelContextWindowSettings = Record<string, ContextWindowSetting>;
/**
 * Package source for npm/git packages.
 * - String form: load all resources from the package
 * - Object form: filter which resources to load
 */
export type PackageSource = string | {
    source: string;
    extensions?: string[];
    skills?: string[];
    prompts?: string[];
    themes?: string[];
    workflows?: string[];
};
export interface BashInterceptorSettings {
    enabled?: boolean;
}
export interface Settings {
    lastChangelogVersion?: string;
    firstRunOnboardingStartedVersion?: string;
    onboardedVersion?: string;
    defaultProvider?: string;
    defaultModel?: string;
    defaultThinkingLevel?: "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
    fallbackModels?: string[];
    defaultContextWindow?: ContextWindowSetting;
    defaultContextWindows?: ModelContextWindowSettings;
    transport?: TransportSetting;
    steeringMode?: "all" | "one-at-a-time";
    followUpMode?: "all" | "one-at-a-time";
    theme?: string;
    compaction?: CompactionSettings;
    branchSummary?: BranchSummarySettings;
    retry?: RetrySettings;
    hideThinkingBlock?: boolean;
    externalEditor?: string;
    shellPath?: string;
    quietStartup?: boolean;
    defaultProjectTrust?: DefaultProjectTrust;
    shellCommandPrefix?: string;
    bashInterceptor?: BashInterceptorSettings;
    search?: SearchSettings;
    npmCommand?: string[];
    collapseChangelog?: boolean;
    enableInstallTelemetry?: boolean;
    packages?: PackageSource[];
    extensions?: string[];
    skills?: string[];
    prompts?: string[];
    themes?: string[];
    workflows?: string[];
    enableSkillCommands?: boolean;
    terminal?: TerminalSettings;
    images?: ImageSettings;
    enabledModels?: string[];
    doubleEscapeAction?: "fork" | "tree" | "none";
    treeFilterMode?: "default" | "no-tools" | "user-only" | "labeled-only" | "all";
    thinkingBudgets?: ThinkingBudgetsSettings;
    editorPaddingX?: number;
    outputPad?: 0 | 1;
    autocompleteMaxVisible?: number;
    showHardwareCursor?: boolean;
    markdown?: MarkdownSettings;
    warnings?: WarningSettings;
    codexFastMode?: CodexFastModeSettings;
    sessionDir?: string;
    httpIdleTimeoutMs?: number;
    websocketConnectTimeoutMs?: number;
}
export type SettingsScope = "global" | "project";
export interface SettingsManagerCreateOptions {
    projectTrusted?: boolean;
}
export interface SettingsStorage {
    withLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;
}
export interface SettingsError {
    scope: SettingsScope;
    error: Error;
}
//# sourceMappingURL=settings-types.d.ts.map