import { CaptureRegionErrorReason, HostCapability } from '../../glic_api/glic_api.js';
import type { ActivateTabOptions, AdditionalContext, CaptureRegionParams, CaptureRegionResult, ChromeVersion, ClientCapabilities, ClientErrorDialogType, ConversationInfo, CounterAbuseVerdict, CreateSkillRequest, CreateTabOptions, FocusedTabData, FormFactor, GeminiEnterpriseSettings, GetPinCandidatesOptions, GlicBrowserHost, GlicBrowserHostMetrics, GlicHostRegistry, GlicWebClient, ImageBytesResult, MicrophoneStatus, Observable, ObservableValue, OpenSettingsOptions, PageMetadata, PanelState, PinCandidate, PinTabsOptions, Platform, ResizeWindowOptions, ResumeActorTaskResult, Screenshot, SelectAutofillSuggestionsDialogRequest, Skill, SkillPreview, SkillsWebClientEvent, TabContextOptions, TabContextResult, TabData, UnpinTabsOptions, UpdateSkillRequest, UserProfileInfo, WebClientMode, ZeroStateSuggestions, ZeroStateSuggestionsOptions, ZeroStateSuggestionsV2 } from '../../glic_api/glic_api.js';
import { ObservableValue as ObservableValueImpl, Subject } from '../../observable.js';
import { GlicBrowserHostActor } from '../actor/actor_client.js';
import type { PostMessageRemote, PostMessageRouter } from '../transport/post_message_transport.js';
import type { GlicException, PinCandidatePrivate, ResumeActorTaskResultPrivate, TabContextResultPrivate, TabDataPrivate, WebClientHost, WebClientTabDataObserver, WebClientTabFaviconObserver } from './../request_types.js';
import { ObservableSetByTabId } from './observable_set_by_tab_id.js';
export declare class GlicHostRegistryImpl implements GlicHostRegistry {
    private windowProxy;
    private host;
    constructor(windowProxy: WindowProxy);
    registerWebClient(webClient: GlicWebClient): Promise<void>;
}
declare const GlicBrowserHostImpl_base: {
    new (...args: any[]): {
        annotationSender?: PostMessageRemote<import("./../request_types.js").AnnotationHost>;
        annotationReceiver?: import("../transport/post_message_transport.js").PendingReceiver<import("./../request_types.js").AnnotationHost>;
        mainClientRemote?: PostMessageRemote<WebClientHost>;
        initializeAnnotation(initialState: import("./../request_types.js").WebClientInitialStatePrivate, router: PostMessageRouter, clientRemote: PostMessageRemote<WebClientHost>): void;
        scrollTo?(params: import("../../glic_api/glic_api.js").ScrollToParams): Promise<void>;
        dropScrollToHighlight?(): void;
        ensureAnnotationHandlerCreated(): void;
    };
} & typeof GlicBrowserHostActor;
export declare class GlicBrowserHostImpl extends GlicBrowserHostImpl_base implements GlicBrowserHost {
    webClient: GlicWebClient;
    readonly router: PostMessageRouter;
    readonly clientRemote: PostMessageRemote<WebClientHost>;
    private webClientMessageHandler;
    private chromeVersion?;
    private platform?;
    private formFactor?;
    private panelState;
    canAttachPanelValue: ObservableValueImpl<boolean>;
    private focusedTabStateV2;
    private geminiEnterpriseSettings;
    private zoomLevel;
    private permissionStateMicrophone;
    private permissionStateLocation;
    private permissionStateTabContext;
    defaultTabContextPermission: ObservableValueImpl<boolean>;
    private enableDefaultTabContextSettingFeature;
    private permissionStateOsLocation;
    closedCaptioningState: ObservableValueImpl<boolean>;
    actuationOnWebState: ObservableValueImpl<boolean>;
    private osHotkeyState;
    onboardingCompleted: ObservableValueImpl<boolean>;
    panelActiveValue: ObservableValueImpl<boolean>;
    isBrowserOpenValue: ObservableValueImpl<boolean>;
    private metrics;
    private manuallyResizing;
    private cachedUserProfile?;
    private enableCachedGetUserProfileInfo?;
    pinnedTabs: ObservableValueImpl<TabData[]>;
    skillPreviews: ObservableValueImpl<SkillPreview[]>;
    skillToInvoke: ObservableValueImpl<Skill>;
    pinCandidates: PinCandidatesObservable | undefined;
    captureRegionObservable?: CaptureRegionObservable;
    private currentZeroStateSuggestionOptions;
    currentZeroStateObserver: ObservableValueImpl<ZeroStateSuggestionsV2>;
    private hostCapabilities;
    readonly additionalContextSubject: Subject<AdditionalContext>;
    pageMetadataObservers: Map<string, ObservableValueImpl<PageMetadata>>;
    getTabByIdObservableSet: ObservableSetByTabId<TabData, WebClientTabDataObserver>;
    getTabFaviconByIdObservableSet: ObservableSetByTabId<Blob | undefined, WebClientTabFaviconObserver>;
    notifyPanelWillOpenCompleted: PromiseWithResolvers<void>;
    constructor(webClient: GlicWebClient, windowProxy: WindowProxy);
    destroy(): void;
    webClientCreated(clientCapabilities: Set<ClientCapabilities>): Promise<void>;
    webClientInitialized(success: boolean, exception: GlicException | undefined): void;
    getChromeVersion(): Promise<ChromeVersion>;
    getPlatform(): Platform;
    getFormFactor(): FormFactor;
    createTab(url: string, options: CreateTabOptions): Promise<TabData>;
    activateTabWithUrl(exactUrl: string, options?: ActivateTabOptions): Promise<TabData>;
    openGlicSettingsPage(options?: OpenSettingsOptions): void;
    openPasswordManagerSettingsPage?(): void;
    reportClientTransientError(abslStatus: number): void;
    processCounterAbuseVerdict?(tabId: string, verdict: CounterAbuseVerdict): void;
    closePanel(): Promise<void>;
    closePanelAndShutdown(): void;
    attachPanel?(): void;
    detachPanel?(): void;
    showProfilePicker(): void;
    getModelQualityClientId?(): Promise<string>;
    getGeminiEnterpriseSettings?(): ObservableValueImpl<GeminiEnterpriseSettings | undefined>;
    switchConversation(info?: ConversationInfo): Promise<void>;
    registerConversation(info: ConversationInfo): Promise<void>;
    getContextFromFocusedTab(options: TabContextOptions): Promise<TabContextResult>;
    setMaximumNumberOfPinnedTabs?(requestedMax: number): Promise<number>;
    getContextFromTab?(tabId: string, options: TabContextOptions): Promise<TabContextResult>;
    getImageBytesFromTab?(tabId: string, documentId: string, domNodeId: number): Promise<ImageBytesResult>;
    getTabById?(tabId: string): ObservableValueImpl<TabData>;
    getTabFaviconById?(tabId: string): ObservableValueImpl<Blob | undefined>;
    activateTab?(tabId: string): void;
    onModeChange?(newMode: WebClientMode): void;
    onMicrophoneStatusChange?(status: MicrophoneStatus): void;
    setErrorDialogState?(shownDialogType?: ClientErrorDialogType): void;
    resizeWindow(width: number, height: number, options?: ResizeWindowOptions): Promise<void>;
    enableDragResize?(enabled: boolean): Promise<void>;
    captureScreenshot(): Promise<Screenshot>;
    captureRegion?(params?: CaptureRegionParams): ObservableValue<CaptureRegionResult>;
    deleteCapturedRegion?(tabId: string, regionId: string): void;
    setMinimumWidgetSize(width: number, height: number): Promise<void>;
    getPanelState?(): ObservableValueImpl<PanelState>;
    panelActive(): ObservableValueImpl<boolean>;
    canAttachPanel?(): ObservableValue<boolean>;
    isBrowserOpen(): ObservableValue<boolean>;
    getFocusedTabStateV2(): ObservableValueImpl<FocusedTabData>;
    getZoomLevel(): ObservableValueImpl<number>;
    getMicrophonePermissionState(): ObservableValueImpl<boolean>;
    getLocationPermissionState(): ObservableValueImpl<boolean>;
    getTabContextPermissionState(): ObservableValueImpl<boolean>;
    getDefaultTabContextPermissionState?(): ObservableValueImpl<boolean>;
    getOsLocationPermissionState(): ObservableValueImpl<boolean>;
    getClosedCaptioningSetting?(): ObservableValueImpl<boolean>;
    getActuationOnWebSetting?(): ObservableValueImpl<boolean>;
    setMicrophonePermissionState(enabled: boolean): Promise<void>;
    setLocationPermissionState(enabled: boolean): Promise<void>;
    setTabContextPermissionState(enabled: boolean): Promise<void>;
    setClosedCaptioningSetting?(enabled: boolean): Promise<void>;
    setContextAccessIndicator(show: boolean): void;
    setActuationOnWebSetting?(enabled: boolean): Promise<void>;
    getUserProfileInfo?(): Promise<UserProfileInfo>;
    private fetchUserProfileDirect;
    private fetchUserProfileCached;
    refreshSignInCookies(): Promise<void>;
    setAudioDucking?(enabled: boolean): void;
    getMetrics(): GlicBrowserHostMetrics;
    setSyntheticExperimentState(trialName: string, groupName: string): void;
    openOsPermissionSettingsMenu?(permission: string): void;
    getOsMicrophonePermissionStatus(): Promise<boolean>;
    isManuallyResizing(): ObservableValueImpl<boolean>;
    getOsHotkeyState(): ObservableValueImpl<{
        hotkey: string;
    }>;
    getPinnedTabs?(): ObservableValueImpl<TabData[]>;
    pinTabs?(tabIds: string[], options?: PinTabsOptions): Promise<boolean>;
    unpinTabs?(tabIds: string[], options?: UnpinTabsOptions): Promise<boolean>;
    createSkill?(request: CreateSkillRequest): Promise<void>;
    updateSkill?(request: UpdateSkillRequest): Promise<void>;
    showManageSkillsUi?(): void;
    showBrowseSkillsUi?(): void;
    getSkill?(id: string): Promise<Skill>;
    recordSkillsWebClientEvent?(event: SkillsWebClientEvent): void;
    getSkillPreviews?(): ObservableValue<SkillPreview[]>;
    getSkillToInvoke?(): ObservableValue<Skill>;
    unpinAllTabs?(options?: UnpinTabsOptions): void;
    getPinCandidates?(options: GetPinCandidatesOptions): ObservableValue<PinCandidate[]>;
    getZeroStateSuggestionsForFocusedTab?(isFirstRun?: boolean): Promise<ZeroStateSuggestions>;
    private zeroStateActiveSubscriptionStateChanged;
    getZeroStateSuggestions?(options?: ZeroStateSuggestionsOptions): ObservableValueImpl<ZeroStateSuggestionsV2>;
    maybeRefreshUserStatus?(): void;
    getAdditionalContext?(): Observable<AdditionalContext>;
    getHostCapabilities(): Set<HostCapability>;
    getPageMetadata?(tabId: string, names: string[]): ObservableValueImpl<PageMetadata>;
    selectAutofillSuggestionsDialogRequestHandler?(): Observable<SelectAutofillSuggestionsDialogRequest>;
    setOnboardingCompleted?(): void;
    isOnboardingCompleted?(): ObservableValue<boolean>;
}
export declare class CaptureRegionObservable extends ObservableValueImpl<CaptureRegionResult> {
    private remote;
    private router;
    private params?;
    private receiver?;
    constructor(remote: PostMessageRemote<WebClientHost>, router: PostMessageRouter, params?: CaptureRegionParams | undefined);
    private close;
    activeSubscriptionChanged(hasActiveSubscription: boolean): void;
    error(e: Error): void;
    complete(): void;
    processUpdate(result: CaptureRegionResult): void;
    processError(reason: CaptureRegionErrorReason): void;
}
declare class PinCandidatesObservable extends ObservableValueImpl<PinCandidate[]> {
    private remote;
    private router;
    private options;
    private isObsolete;
    private receiver?;
    constructor(remote: PostMessageRemote<WebClientHost>, router: PostMessageRouter, options: GetPinCandidatesOptions);
    activeSubscriptionChanged(hasActiveSubscription: boolean): void;
    processUpdate(candidates: PinCandidatePrivate[]): void;
    setObsolete(): void;
}
export declare function convertTabDataFromPrivate(data: TabDataPrivate): TabData;
export declare function convertTabDataFromPrivate(data: TabDataPrivate | undefined): TabData | undefined;
export declare function convertTabContextResultFromPrivate(data: ResumeActorTaskResultPrivate): ResumeActorTaskResult;
export declare function convertTabContextResultFromPrivate(data: TabContextResultPrivate): TabContextResult;
export {};
