/// import { Credential, CredentialHintOptions, PrimaryClientConfiguration } from '../protocol/data'; import { DisplayOptions } from '../protocol/rpc_messages'; export interface ProviderConfiguration { clientAuthDomain: string; clientNonce: string; window: WindowLike; delegateToBrowser: boolean; affiliationProvider: AffiliationProvider; clientConfigurationProvider: ClientConfigurationProvider; credentialDataProvider: CredentialDataProvider; interactionProvider: InteractionProvider; localStateProvider: LocalStateProvider; allowDirectAuth: boolean; } export interface WindowLike extends EventTarget { parent: WindowLike; opener: WindowLike | null; close(): void; postMessage(data: any, targetOrigin: string, transfer?: MessagePort[]): void; } export interface AffiliationProvider { getEquivalentDomains(authDomain: string): Promise; } export interface ClientConfigurationProvider { getConfiguration(authDomain: string): Promise; } export interface CredentialDataProvider { getAllHints(options: CredentialHintOptions): Promise; getAllCredentials(authDomains: string[], options: CredentialRequestOptions): Promise; upsertCredential(credential: Credential, original?: Credential): Promise; deleteCredential(credential: Credential): Promise; } export interface DisplayCallbacks { requestDisplayOptions(options: DisplayOptions): void; } export interface InteractionProvider { showCredentialPicker(credentials: Credential[], options: CredentialRequestOptions, displayCallbacks: DisplayCallbacks): Promise; showHintPicker(hints: Credential[], options: CredentialHintOptions, displayCallbacks: DisplayCallbacks): Promise; showSaveConfirmation(credential: Credential, displayCallbacks: DisplayCallbacks): Promise; dispose(): void; } export interface LocalStateProvider { isAutoSignInEnabled(authDomain: string): Promise; setAutoSignInEnabled(authDomain: string, enabled: boolean): Promise; retainCredentialForSession(authDomain: string, credential: Credential): Promise; getRetainedCredential(authDomain: string): Promise; }