import { FetchError, NoProviderError, Success } from './discovery';
export interface SSOProviderOriginal {
    id: string;
    name: string;
    auth_flow: string;
    auth_endpoint: string;
    token_endpoint?: string;
    well_known_discovery_uri?: string;
    params: {
        client_id: string;
        redirect_uri: string;
        response_type: string;
        scope: string;
    };
    auth_params?: Record<string, string>;
    token_params?: Record<string, string>;
    config?: {
        implicit_flow_requires_nonce?: boolean;
        principal?: string;
        token_type_principal?: string;
        token_type_authentication?: string;
        code_challenge_method?: string;
    };
    visible: boolean;
}
export type SSOProvider4dot4Format = Omit<SSOProviderOriginal, 'params'> & {
    redirect_uri: string;
    params: {
        client_id: string;
        response_type: string;
        scope: string;
    };
};
export interface InitialisationParameters {
    sso_redirect?: string;
    auth_flow_step?: string;
    idp_id?: string;
    token_type?: string;
    access_token?: string;
    id_token?: string;
    error_description?: string;
    code?: string;
    state?: string;
    session_state?: string;
    error?: string;
}
export interface Credentials {
    username: string;
    password: string;
}
export interface AuthRequestParams {
    state: string;
    nonce?: string;
    code_challenge_method?: string;
    code_challenge?: string;
}
export interface DiscoveryResult {
    status: DiscoveryResultStatus;
    message: string;
    SSOProviders: SSOProviderOriginal[];
    otherDataDiscovered: Record<string, unknown>;
}
export type DiscoveryResultStatus = typeof Success | typeof FetchError | typeof NoProviderError;
