import { Event } from "../../../../base/common/event.js"; import { IDisposable } from "../../../../base/common/lifecycle.js"; import { IAuthorizationServerMetadata, IAuthorizationProtectedResourceMetadata } from "../../../../base/common/oauth.js"; import { URI } from "../../../../base/common/uri.js"; import { AuthenticationProviderInformation, AuthenticationSessionsChangeEvent, IAuthenticationProvider, AuthenticationSessionAccount, IAuthenticationWwwAuthenticateRequest, IAuthenticationGetSessionsOptions, AuthenticationSession, IAuthenticationCreateSessionOptions, IAuthenticationProviderHostDelegate } from "./authentication.js"; export declare const IAuthenticationService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier; export interface IAuthenticationService { readonly _serviceBrand: undefined; /** * Fires when an authentication provider has been registered */ readonly onDidRegisterAuthenticationProvider: Event; /** * Fires when an authentication provider has been unregistered */ readonly onDidUnregisterAuthenticationProvider: Event; /** * Fires when the list of sessions for a provider has been added, removed or changed */ readonly onDidChangeSessions: Event<{ providerId: string; label: string; event: AuthenticationSessionsChangeEvent; }>; /** * Fires when the list of declaredProviders has changed */ readonly onDidChangeDeclaredProviders: Event; /** * All providers that have been statically declared by extensions. These may not actually be registered or active yet. */ readonly declaredProviders: AuthenticationProviderInformation[]; /** * Registers that an extension has declared an authentication provider in their package.json * @param provider The provider information to register */ registerDeclaredAuthenticationProvider(provider: AuthenticationProviderInformation): void; /** * Unregisters a declared authentication provider * @param id The id of the provider to unregister */ unregisterDeclaredAuthenticationProvider(id: string): void; /** * Checks if an authentication provider has been registered * @param id The id of the provider to check */ isAuthenticationProviderRegistered(id: string): boolean; /** * Checks if an authentication provider is dynamic * @param id The id of the provider to check */ isDynamicAuthenticationProvider(id: string): boolean; /** * Registers an authentication provider * @param id The id of the provider * @param provider The implementation of the provider */ registerAuthenticationProvider(id: string, provider: IAuthenticationProvider): void; /** * Unregisters an authentication provider * @param id The id of the provider to unregister */ unregisterAuthenticationProvider(id: string): void; /** * Gets the provider ids of all registered authentication providers */ getProviderIds(): string[]; /** * Gets the provider with the given id. * @param id The id of the provider to get * @throws if the provider is not registered */ getProvider(id: string): IAuthenticationProvider; /** * Gets all accounts that are currently logged in across all sessions * @param id The id of the provider to ask for accounts * @returns A promise that resolves to an array of accounts */ getAccounts(id: string): Promise>; /** * Gets all sessions that satisfy the given scopes from the provider with the given id * @param id The id of the provider to ask for a session * @param scopes The scopes for the session * @param options Additional options for getting sessions * @param activateImmediate If true, the provider should activate immediately if it is not already */ getSessions(id: string, scopeListOrRequest?: ReadonlyArray | IAuthenticationWwwAuthenticateRequest, options?: IAuthenticationGetSessionsOptions, activateImmediate?: boolean): Promise>; /** * Creates an AuthenticationSession with the given provider and scopes * @param providerId The id of the provider * @param scopes The scopes to request * @param options Additional options for creating the session */ createSession(providerId: string, scopeListOrRequest: ReadonlyArray | IAuthenticationWwwAuthenticateRequest, options?: IAuthenticationCreateSessionOptions): Promise; /** * Removes the session with the given id from the provider with the given id * @param providerId The id of the provider * @param sessionId The id of the session to remove */ removeSession(providerId: string, sessionId: string): Promise; /** * Gets a provider id for a specified authorization server * @param authorizationServer The authorization server url that this provider is responsible for * @param resourceServer The resource server URI that should match the provider's resourceServer (if defined) */ getOrActivateProviderIdForServer(authorizationServer: URI, resourceServer?: URI): Promise; /** * Allows the ability register a delegate that will be used to start authentication providers * @param delegate The delegate to register */ registerAuthenticationProviderHostDelegate(delegate: IAuthenticationProviderHostDelegate): IDisposable; /** * Creates a dynamic authentication provider for the given server metadata * @param serverMetadata The metadata for the server that is being authenticated against */ createDynamicAuthenticationProvider(authorizationServer: URI, serverMetadata: IAuthorizationServerMetadata, resourceMetadata: IAuthorizationProtectedResourceMetadata | undefined): Promise; } export declare const IAuthenticationExtensionsService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier; export interface IAuthenticationExtensionsService { readonly _serviceBrand: undefined; /** * Fires when an account preference for a specific provider has changed for the specified extensions. Does not fire when: * * An account preference is removed * * A session preference is changed (because it's deprecated) * * A session preference is removed (because it's deprecated) */ readonly onDidChangeAccountPreference: Event<{ extensionIds: string[]; providerId: string; }>; /** * Returns the accountName (also known as account.label) to pair with `IAuthenticationAccessService` to get the account preference * @param providerId The authentication provider id * @param extensionId The extension id to get the preference for * @returns The accountName of the preference, or undefined if there is no preference set */ getAccountPreference(extensionId: string, providerId: string): string | undefined; /** * Sets the account preference for the given provider and extension * @param providerId The authentication provider id * @param extensionId The extension id to set the preference for * @param account The account to set the preference to */ updateAccountPreference(extensionId: string, providerId: string, account: AuthenticationSessionAccount): void; /** * Removes the account preference for the given provider and extension * @param providerId The authentication provider id * @param extensionId The extension id to remove the preference for */ removeAccountPreference(extensionId: string, providerId: string): void; /** * @deprecated Sets the session preference for the given provider and extension * @param providerId * @param extensionId * @param session */ updateSessionPreference(providerId: string, extensionId: string, session: AuthenticationSession): void; /** * @deprecated Gets the session preference for the given provider and extension * @param providerId * @param extensionId * @param scopes */ getSessionPreference(providerId: string, extensionId: string, scopes: string[]): string | undefined; /** * @deprecated Removes the session preference for the given provider and extension * @param providerId * @param extensionId * @param scopes */ removeSessionPreference(providerId: string, extensionId: string, scopes: string[]): void; selectSession(providerId: string, extensionId: string, extensionName: string, scopeListOrRequest: ReadonlyArray | IAuthenticationWwwAuthenticateRequest, possibleSessions: readonly AuthenticationSession[]): Promise; requestSessionAccess(providerId: string, extensionId: string, extensionName: string, scopeListOrRequest: ReadonlyArray | IAuthenticationWwwAuthenticateRequest, possibleSessions: readonly AuthenticationSession[]): void; requestNewSession(providerId: string, scopeListOrRequest: ReadonlyArray | IAuthenticationWwwAuthenticateRequest, extensionId: string, extensionName: string): Promise; updateNewSessionRequests(providerId: string, addedSessions: readonly AuthenticationSession[]): void; }