import { CompatibilityTool as CompatibilityTool } from './App';
import { JsPbMessage, OperationResponse, Unregisterable } from './shared';
export interface Settings {
    AddClientBeta(name: string, password: string): void;
    /**
     * Clears HTTP cache located in `<STEAMPATH>/appcache/httpcache`.
     */
    ClearAllHTTPCaches(): void;
    /**
     * Clears download cache and logs you out.
     */
    ClearDownloadCache(): void;
    GetAccountSettings(): Promise<AccountSettings>;
    GetAppUsesP2PVoice(appId: number): Promise<boolean>;
    GetAvailableLanguages(): Promise<Language[]>;
    GetAvailableTimeZones(): Promise<TimeZone[]>;
    GetCurrentLanguage(): Promise<string>;
    GetGlobalCompatTools(): Promise<CompatibilityTool[]>;
    /**
     * @returns a ProtoBuf message. If deserialized, returns {@link MsgMonitorInfo}.
     */
    GetMonitorInfo(): Promise<ArrayBuffer>;
    GetOOBETestMode(): Promise<boolean>;
    GetRegisteredSteamDeck(): Promise<RegisteredSteamDeck>;
    GetTimeZone(): Promise<string>;
    GetWindowed(): Promise<boolean>;
    IgnoreSteamDeckRewards(): void;
    /**
     * Opens the Windows microphones dialog.
     */
    OpenWindowsMicSettings(): void;
    RegisterForMicVolumeUpdates: Unregisterable;
    /**
     * If `data` is deserialized, returns {@link MsgClientSettings}.
     * @returns an object that can be used to unregister the callback.
     */
    RegisterForSettingsArrayChanges(callback: (data: ArrayBuffer) => void): Unregisterable;
    RegisterForSettingsChanges(callback: (settings: SteamSettings) => void): Unregisterable;
    RegisterForTimeZoneChange(callback: (timezoneId: string) => void): Unregisterable;
    ReinitMicSettings(): void;
    RenderHotkey(event: KeyCaptureEvent): Promise<string>;
    RequestDeviceAuthInfo(): void;
    SelectClientBeta(nBetaID: number): void;
    SetCurrentLanguage(strShortName: string): void;
    SetEnableSoftProcessKill(value: boolean): void;
    SetHostname(hostname: string): void;
    SetMicTestMode(value: boolean): void;
    SetOOBETestMode(value: boolean): void;
    SetPreferredMonitor(monitor: string): void;
    SetRegisteredSteamDeck(steam64Id: string, serialNumber: string): void;
    /**
     * Sets the "Don't save account credentials on this computer" option.
     * @param value Whether to save account credentials.
     */
    SetSaveAccountCredentials(value: boolean): void;
    /**
     * @param base64 Serialized base64 message from `CMsgClientSettings`.
     * @returns a boolean indicating whether the operation was successful.
     */
    SetSetting(base64: string): Promise<boolean>;
    /**
     * You can get valid timezoneIds from {@link GetAvailableTimeZones}.
     */
    SetTimeZone(timezoneId: string): void;
    SetUseNintendoButtonLayout(controllerIndex: number, value: boolean): void;
    SetUseUniversalFaceButtonGlyphs(nControllerIndex: number, value: boolean): void;
    SetWindowed(value: boolean): void;
    SpecifyGlobalCompatTool(strToolName: string): void;
    ToggleSteamInstall(): Promise<OperationResponse>;
}
export interface AccountSettings {
    strEmail: string;
    bEmailValidated: boolean;
    bHasAnyVACBans: boolean;
    bHasTwoFactor: boolean;
    eSteamGuardState: ESteamGuardState;
    rtSteamGuardEnableTime: number;
    bSaveAccountCredentials: boolean;
}
/**
 * @todo unconfirmed, taken from localization strings
 */
export declare enum ESteamGuardState {
    EmailUnverified = 0,
    Protected = 1,
    Disabled = 2,
    Offline = 3,
    NotEnabled = 4
}
export interface KeyCaptureEvent {
    alt_key: boolean;
    ctrl_key: boolean;
    display_name: string;
    meta_key: boolean;
    shift_key: boolean;
}
export interface Language {
    language: ELanguage;
    strShortName: string;
}
export declare enum ELanguage {
    None = -1,
    English = 0,
    German = 1,
    French = 2,
    Italian = 3,
    Korean = 4,
    Spanish = 5,
    SimplifiedChinese = 6,
    TraditionalChinese = 7,
    Russian = 8,
    Thai = 9,
    Japanese = 10,
    Portuguese = 11,
    Polish = 12,
    Danish = 13,
    Dutch = 14,
    Finnish = 15,
    Norwegian = 16,
    Swedish = 17,
    Hungarian = 18,
    Czech = 19,
    Romanian = 20,
    Turkish = 21,
    Brazilian = 22,
    Bulgarian = 23,
    Greek = 24,
    Arabic = 25,
    Ukrainian = 26,
    LatamSpanish = 27,
    Vietnamese = 28,
    SteamChina_SChinese = 29,
    Max = 30
}
export interface RegisteredSteamDeck {
    bRegistered: boolean;
    bIgnoreRegistrationPrompt: boolean;
    strSteamID: string;
    strSerialNumber: string;
}
export interface TimeZone {
    utcOffset: number;
    timezoneID: string;
    timezoneLocalizationToken: string;
    regionsLocalizationToken: string;
}
interface Region {
    nRegionID: number;
    strRegionName: string;
}
interface Hour {
    nHour: number;
    strDisplay: string;
}
interface AvailableClientBeta {
    nBetaID: number;
    strName: string;
}
interface SteamSettings {
    bIsInClientBeta: boolean;
    bIsSteamSideload: boolean;
    eClientBetaState: EClientBetaState;
    strSelectedBetaName: string;
    nAvailableBetas: number;
    bChangeBetaEnabled: boolean;
    nSelectedBetaID: number;
    vecAvailableClientBetas: AvailableClientBeta[];
    bIsValveEmail: boolean;
    bIsInDesktopUIBeta: boolean;
    bEnableSoftProcessKill: boolean;
    vecValidDownloadRegions: Region[];
    vecValidAutoUpdateRestrictHours: Hour[];
    bCompatEnabled: boolean;
    bCompatEnabledForOtherTitles: boolean;
    strCompatTool: string;
    strDisplayName: string;
    bDisplayIsExternal: boolean;
    flAutoDisplayScaleFactor: number;
    flCurrentDisplayScaleFactor: number;
    bDisplayIsUsingAutoScale: boolean;
    flMinDisplayScaleFactor: number;
    flMaxDisplayScaleFactor: number;
    flCurrentUnderscanLevel: number;
    bUnderscanEnabled: boolean;
    vecNightModeScheduledHours: Hour[];
}
export declare enum EClientBetaState {
    None = 0,
    NoneChosen = 1,
    NoneChosenNonAdmin = 2,
    InBeta = 3,
    InBetaNonAdmin = 4
}
/**
 * CMsgMonitorInfo
 */
export interface MsgMonitorInfo extends JsPbMessage {
    monitors(): Monitor[];
    selected_display_name(): string;
    add_monitors(param0: any, param1: any): any;
    set_monitors(param0: any): any;
    set_selected_display_name(param0: any): any;
}
/**
 * @todo Doesn't work on Linux ?
 */
export interface Monitor {
    monitor_device_name: string;
    monitor_display_name: string;
}
/**
 * CMsgClientSettings
 */
export interface MsgClientSettings extends JsPbMessage {
    always_show_user_chooser(): boolean;
    always_use_gamepadui_overlay(): boolean;
    auto_scale_factor(): number;
    bigpicture_windowed(): boolean;
    broadcast_bitrate(): number;
    broadcast_chat_corner(): number;
    broadcast_encoding_option(): EBroadcastEncoderSetting;
    broadcast_output_height(): number;
    broadcast_output_width(): number;
    broadcast_permissions(): EBroadcastPermission;
    broadcast_record_all_audio(): boolean;
    broadcast_record_all_video(): boolean;
    broadcast_record_microphone(): boolean;
    broadcast_show_live_reminder(): boolean;
    broadcast_show_upload_stats(): boolean;
    cef_remote_debugging_enabled(): boolean;
    cloud_enabled(): boolean;
    controller_combine_nintendo_joycons(): boolean;
    controller_enable_chord(): boolean;
    controller_generic_support(): boolean;
    controller_guide_button_focus_steam(): boolean;
    controller_poll_rate(): boolean;
    controller_power_off_timeout(): number;
    controller_ps_support(): number;
    controller_switch_support(): boolean;
    controller_xbox_driver(): boolean;
    controller_xbox_support(): boolean;
    default_ping_rate(): number;
    disable_all_toasts(): boolean;
    disable_toasts_in_game(): boolean;
    display_name(): string;
    download_peer_content(): number;
    download_rate_bits_per_s(): boolean;
    download_region(): number;
    download_throttle_rate(): number;
    download_throttle_while_streaming(): boolean;
    download_while_app_running(): boolean;
    enable_avif_screenshots(): boolean;
    enable_dpi_scaling(): boolean;
    enable_gpu_accelerated_webviews(): boolean;
    enable_hardware_video_decoding(): boolean;
    enable_marketing_messages(): boolean;
    enable_overlay(): boolean;
    enable_screenshot_notification(): boolean;
    enable_screenshot_sound(): boolean;
    enable_shader_background_processing(): boolean;
    enable_shader_precache(): boolean;
    enable_ui_sounds(): boolean;
    force_deck_perf_tab(): boolean;
    force_fake_mandatory_update(): boolean;
    force_oobe(): boolean;
    g_background_audio(): EGRAudio;
    g_background_a_m(): number;
    g_background_a_s(): boolean;
    g_background_path(): string;
    g_background_max_keep(): string;
    g_background_mode(): EGRMode;
    g_background_time_resolution(): number;
    g_background_mk(): CMsgHotkey;
    g_background_tg(): CMsgHotkey;
    g_max_fps(): number;
    gamerecording_automatic_gain_control(): boolean;
    gamerecording_export_codec(): EExportCodec;
    gamerecording_export_directory(): number;
    gamerecording_export_limit_bitrate(): number;
    gamerecording_export_limit_frame_rate(): number;
    gamerecording_export_limit_height(): number;
    gamerecording_export_limit_size_mb(): number;
    gamerecording_export_limit_width(): number;
    gamerecording_export_limit_type(): EGRExportLimitType;
    gamerecording_force_mic_mono(): boolean;
    gamerecording_hotkey_ic(): CMsgHotkey;
    gamerecording_ic_seconds(): number;
    gamerecording_video_bitrate(): string;
    gamerecording_video_maxheight(): number;
    game_notes_enable_spellcheck(): boolean;
    gamescope_allow_tearing(): boolean;
    gamescope_app_target_framerate(): number;
    gamescope_composite_debug(): boolean;
    gamescope_disable_framelimit(): boolean;
    gamescope_disable_mura_correction(): boolean;
    gamescope_display_refresh_rate(): number;
    gamescope_enable_app_target_framerate(): boolean;
    gamescope_force_composite(): boolean;
    gamescope_hdr_visualization(): EHDRVisualization;
    gamescope_include_steamui_in_screenshots(): boolean;
    gamescope_use_game_refresh_rate_in_steam(): boolean;
    gamestream_enable_video_h265(): boolean;
    gamestream_hardware_video_encode(): boolean;
    hdr_compat_testing(): boolean;
    in_client_beta(): boolean;
    is_external_display(): boolean;
    is_steam_sideloaded(): boolean;
    jumplist_flags(): number;
    library_disable_community_content(): boolean;
    library_display_icon_in_game_list(): boolean;
    library_display_size(): number;
    library_low_bandwidth_mode(): boolean;
    library_low_perf_mode(): boolean;
    library_whats_new_show_only_product_updates(): boolean;
    max_scale_factor(): number;
    min_scale_factor(): number;
    music_download_high_quality(): boolean;
    music_pause_on_app_start(): boolean;
    music_pause_on_voice_chat(): boolean;
    music_playlist_notification(): boolean;
    music_volume(): number;
    needs_steam_service_repair(): boolean;
    no_save_personal_info(): boolean;
    oobe_test_mode_enabled(): boolean;
    os_version_unsupported(): boolean;
    overlay_fps_counter_corner(): number;
    overlay_fps_counter_high_contrast(): boolean;
    overlay_key(): CMsgHotkey;
    overlay_restore_browser_tabs(): boolean;
    overlay_scale_interface(): boolean;
    overlay_tabs(): string;
    overlay_toolbar_list_view(): boolean;
    override_browser_composer_mode(): number;
    play_sound_on_toast(): boolean;
    preferred_monitor(): string;
    ready_to_play_includes_streaming(): boolean;
    restrict_auto_updates(): boolean;
    restrict_auto_updates_end(): number;
    restrict_auto_updates_start(): number;
    run_at_startup(): boolean;
    save_uncompressed_screenshots(): boolean;
    screenshot_items_per_row(): number;
    screenshot_key(): CMsgHotkey;
    screenshots_path(): string;
    server_ping_rate(): number;
    setting_validation_bool(): boolean;
    setting_validation_enum(): EHDRVisualization;
    setting_validation_int32(): number;
    setting_validation_uint32(): number;
    setting_validation_uint64(): number;
    setting_validation_float(): number;
    setting_validation_string(): string;
    shader_precached_size(): string;
    show_copy_count_in_library(): boolean;
    show_family_sharing_notifications(): boolean;
    show_screenshot_manager(): boolean;
    show_steam_deck_info(): boolean;
    show_store_content_on_home(): boolean;
    show_timestamps_in_console(): boolean;
    skip_steamvr_install_dialog(): boolean;
    small_mode(): boolean;
    smooth_scroll_webviews(): boolean;
    start_in_big_picture_mode(): boolean;
    start_page(): string;
    startup_movie_id(): string;
    startup_movie_local_path(): string;
    startup_movie_shuffle(): boolean;
    startup_movie_used_for_resume(): boolean;
    steam_cef_gpu_blocklist_disabled(): boolean;
    steam_input_configurator_error_msg_enable(): boolean;
    steam_networking_share_ip(): number;
    steam_os_underscan_enabled(): boolean;
    steam_os_underscan_level(): number;
    steamos_cec_enabled(): boolean;
    steamos_cec_wake_on_resume(): boolean;
    steamos_magnifier_scale(): number;
    steamos_status_led_brightness(): number;
    steamos_tdp_limit(): number;
    steamos_tdp_limit_enabled(): boolean;
    steamos_wifi_debug(): boolean;
    steamos_wifi_force_wpa_supplicant(): boolean;
    system_bluetooth_enabled(): boolean;
    turn_off_controller_on_exit(): boolean;
    voice_mic_device_name(): string;
    voice_mic_input_gain(): number;
    voice_push_to_talk_key(): CMsgHotkey;
    voice_push_to_talk_setting(): number;
    voice_speaker_output_gain(): number;
    web_browser_home(): string;
}
export interface CMsgHotkey extends JsPbMessage {
    key_code(): number;
    alt_key(): boolean;
    shift_key(): boolean;
    ctrl_key(): boolean;
    meta_key(): boolean;
    display_name(): string;
}
export declare enum EBroadcastEncoderSetting {
    BestQuality = 0,
    BestPerformance = 1
}
export declare enum EBroadcastPermission {
    Disabled = 0,
    FriendsApprove = 1,
    FriendsAllowed = 2,
    Public = 3,
    Subscribers = 4
}
export declare enum EExportCodec {
    Default = 0,
    H264 = 1,
    H265 = 2
}
export declare enum EGRAudio {
    Game = 0,
    System = 1,
    Select = 2
}
export declare enum EGRExportLimitType {
    Native = 0,
    FileSize = 1,
    Advanced = 2
}
export declare enum EGRMode {
    Never = 0,
    Always = 1,
    Manual = 2
}
export declare enum EHDRVisualization {
    None = 0,
    Heatmap = 1,
    Analysis = 2,
    HeatmapExtended = 3,
    HeatmapClassic = 4
}
export {};
