///
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;
}