/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
import { IProductService } from '../../product/common/productService.mjs';
import {
	IRemoteAuthorityResolverService,
	IRemoteConnectionData,
	ResolvedAuthority,
	ResolverResult,
} from '../common/remoteAuthorityResolver.mjs';
export declare class RemoteAuthorityResolverService extends Disposable implements IRemoteAuthorityResolverService {
	readonly _serviceBrand: undefined;
	private readonly _onDidChangeConnectionData;
	readonly onDidChangeConnectionData: import('@sussudio/base/common/event.mjs').Event<void>;
	private readonly _promiseCache;
	private readonly _cache;
	private readonly _connectionToken;
	private readonly _connectionTokens;
	constructor(
		productService: IProductService,
		connectionToken: Promise<string> | string | undefined,
		resourceUriProvider: ((uri: URI) => URI) | undefined,
	);
	resolveAuthority(authority: string): Promise<ResolverResult>;
	getCanonicalURI(uri: URI): Promise<URI>;
	getConnectionData(authority: string): IRemoteConnectionData | null;
	private _doResolveAuthority;
	_clearResolvedAuthority(authority: string): void;
	_setResolvedAuthority(resolvedAuthority: ResolvedAuthority): void;
	_setResolvedAuthorityError(authority: string, err: any): void;
	_setAuthorityConnectionToken(authority: string, connectionToken: string): void;
	_setCanonicalURIProvider(provider: (uri: URI) => Promise<URI>): void;
}
