import { TSession, VerdocsEndpoint, IAuthenticateResponse, IProfile } from '@verdocs/js-sdk';
import { EventEmitter } from '../../../stencil-public-runtime';
import { SDKError } from '../../../utils/errors';
export interface IAuthStatus {
    authenticated: boolean;
    session: TSession;
    profile: IProfile | null;
}
/**
 * Display an authentication dialog that allows the user to login or sign up. If the user is
 * already authenticated with a valid session, this component will hide itself and fire the
 * success callback immediately. It is up to the host application to render the next appropriate
 * view for the application.
 *
 * To simplify UI development, a visibility flag can force this component to never display. This
 * allows you to subscribe to notifications from client apps without calling the lower-level JS SDK.
 *
 * This embed is responsive / mobile-friendly, but the calling application should provide at
 * least a 300px wide container to allow sufficient space for the required forms.
 *
 * ```ts
 * <verdocs-auth
 *   onAuthenticated={({ detail }) => console.log('Authentication state:', detail) }
 *   onSdkError={({ detail }) => { console.log('SDK error', detail) }
 *   />
 * ```
 */
export declare class VerdocsAuth {
    /**
     * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.
     */
    endpoint: VerdocsEndpoint;
    /**
     * Normally, if the user has a valid session, this embed will be invisible, otherwise it will display
     * login / signup forms. If this is set to false, this embed will be invisible in both cases. Apps may
     * use this to verify if a user has a valid session without needing a separate call to Verdocs JS SDK.
     */
    visible: boolean;
    /**
     * By default, a Verdocs logo will be displayed above the login/signup forms. This may be used to
     * override its source. (Alternatively, you may simply hide it via CSS overrides.) Logos should be
     * in SVG format for best results.
     */
    logo: string;
    /**
     * The display mode to start in.
     */
    displayMode: 'login' | 'forgot' | 'reset' | 'signup' | 'verify';
    /**
     * Event fired when session authentication process has completed. Check the event
     * contents for completion status. This event will always be called at least once,
     * when the component is first rendered.
     */
    authenticated: EventEmitter<IAuthStatus>;
    /**
     * Event fired if an error occurs. The event details will contain information about the error. Most errors will
     * terminate the process, and the calling application should correct the condition and re-render the component.
     */
    sdkError: EventEmitter<SDKError>;
    org_name: string;
    first_name: string;
    last_name: string;
    email: string;
    verificationCode: string;
    newPassword: string;
    password: string;
    confirmpass: string;
    submitting: boolean;
    resendDisabled: boolean;
    session: TSession;
    profile: IProfile | null;
    resendDisabledTimer: any;
    tempAuthEndpoint: VerdocsEndpoint;
    componentWillLoad(): void;
    isPasswordComplex(password: string): boolean;
    handleSignup(): void;
    handleVerification(): Promise<void>;
    completeLogin(result: IAuthenticateResponse): void;
    loginAndCheckVerification(): Promise<void>;
    clearForms(): void;
    handleLogout(): void;
    handleResendVerification(): void;
    handleResendReset(): void;
    handleResetGetCode(): Promise<void>;
    handleResetPassword(): Promise<void>;
    handleReset(): Promise<void>;
    render(): any;
}
