import type { InternetIdentityConfig, NFIDConfig, Provider, SignInOptions } from '../types/auth';
/**
 * Options for signing in with an authentication provider.
 * @interface AuthProviderSignInOptions
 */
export interface AuthProviderSignInOptions {
    /**
     * The URL of the identity provider - commonly Internet Identity.
     */
    identityProvider: string;
    /**
     * Optional features for the window opener.
     */
    windowOpenerFeatures?: string;
}
/**
 * Common traits for all authentication providers
 * @interface AuthProvider
 */
export interface AuthProvider {
    /**
     * The unique identifier of the provider.
     */
    readonly id: Provider;
    /**
     * Method to get the sign-in options for the provider.
     * @param options - The sign-in options.
     * @returns The sign-in options for the provider that can be use to effectively perform a sign-in.
     */
    signInOptions: (options: Pick<SignInOptions, 'windowed'>) => AuthProviderSignInOptions;
}
/**
 * Internet Identity authentication provider.
 * @class InternetIdentityProvider
 * @implements {AuthProvider}
 */
export declare class InternetIdentityProvider implements AuthProvider {
    #private;
    /**
     * Creates an instance of InternetIdentityProvider.
     * @param {InternetIdentityConfig} config - The configuration for Internet Identity.
     */
    constructor({ domain }: InternetIdentityConfig);
    /**
     * Gets the identifier of the provider.
     * @returns {Provider} The identifier of the provider - `internet_identity`.
     */
    get id(): Provider;
    /**
     * Gets the sign-in options for Internet Identity.
     * @param {Pick<SignInOptions, 'windowed'>} options - The sign-in options.
     * @returns {AuthProviderSignInOptions} The sign-in options for Internet Identity.
     */
    signInOptions({ windowed }: Pick<SignInOptions, 'windowed'>): AuthProviderSignInOptions;
}
/**
 * NFID authentication provider.
 * @class NFIDProvider
 * @implements {AuthProvider}
 */
export declare class NFIDProvider implements AuthProvider {
    #private;
    /**
     * Creates an instance of NFIDProvider.
     * @param {NFIDConfig} config - The configuration for NFID.
     */
    constructor({ appName, logoUrl }: NFIDConfig);
    /**
     * Gets the identifier of the provider.
     * @returns {Provider} The identifier of the provider- nfid.
     */
    get id(): Provider;
    /**
     * Gets the sign-in options for NFID.
     * @param {Pick<SignInOptions, 'windowed'>} options - The sign-in options.
     * @returns {AuthProviderSignInOptions} The sign-in options to effectively sign-in with NFID.
     */
    signInOptions({ windowed }: Pick<SignInOptions, 'windowed'>): AuthProviderSignInOptions;
}
