/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
/// <reference types="node" />
import type { editor } from "monaco-editor";
import type { PreferenceDescriptors } from "./preference-descriptors.injectable";
export interface KubeconfigSyncEntry extends KubeconfigSyncValue {
    filePath: string;
}
export interface KubeconfigSyncValue {
}
export interface TerminalConfig {
    fontSize: number;
    fontFamily: string;
}
export declare const defaultTerminalConfig: TerminalConfig;
export interface BaseEditorConfiguration extends Required<Pick<editor.IStandaloneEditorConstructionOptions, "minimap" | "tabSize" | "fontSize" | "fontFamily">> {
    lineNumbers: NonNullable<Exclude<editor.IStandaloneEditorConstructionOptions["lineNumbers"], Function>>;
}
export type EditorConfiguration = Required<BaseEditorConfiguration>;
export declare const defaultEditorConfig: EditorConfiguration;
export type StoreType<P> = P extends PreferenceDescription<unknown, infer Store> ? Store : never;
export interface PreferenceDescription<T, R = T> {
    fromStore(val: T | undefined): R;
    toStore(val: R): T | undefined;
}
export declare const getPreferenceDescriptor: <T, R = T>(desc: PreferenceDescription<T, R>) => PreferenceDescription<T, R>;
export interface DownloadMirror {
    url: string;
    label: string;
    platforms: Set<NodeJS.Platform>;
}
export declare const defaultPackageMirror = "default";
export declare const packageMirrors: Map<string, DownloadMirror>;
export type ExtensionRegistryLocation = "default" | "npmrc" | "custom";
export type ExtensionRegistry = {
    location: "default" | "npmrc";
    customUrl?: undefined;
} | {
    location: "custom";
    customUrl: string;
};
export declare const defaultExtensionRegistryUrlLocation = "default";
export declare const defaultExtensionRegistryUrl = "https://registry.npmjs.org";
type PreferencesModelType<field extends keyof PreferenceDescriptors> = PreferenceDescriptors[field] extends PreferenceDescription<infer T, any> ? T : never;
type UserStoreModelType<field extends keyof PreferenceDescriptors> = PreferenceDescriptors[field] extends PreferenceDescription<any, infer T> ? T : never;
export type UserStoreFlatModel = {
    [field in keyof PreferenceDescriptors]: UserStoreModelType<field>;
};
export type UserPreferencesModel = {
    [field in keyof PreferenceDescriptors]?: PreferencesModelType<field>;
} & {
    updateChannel: string;
};
export {};
