import { Auth, Connect, CredentialManager, Message, MessageBuilder, Session } from '@genesislcap/foundation-comms';
import { Binding, FASTElement } from '@microsoft/fast-element';
import { Container } from '@microsoft/fast-foundation';
import { FieldConfigMap, LoginConfig, Routes } from '../main/config';
/**
 * @internal
 */
export declare const defaultOnBackMS = 3000;
/**
 * @internal
 */
export type ConfigHost = {
    config: LoginConfig;
};
/**
 * @internal
 * @privateRemarks
 * For services / constructor injection, using @optional(LoginConfig) config = defaultLoginConfig; works as expected.
 * However, for elements, the @optional decorator isn't viable. This base element provides an alternative approach.
 */
export declare class ConfigHostElement extends FASTElement implements ConfigHost {
    container: Container;
    config: LoginConfig;
    connectedCallback(): void;
}
/**
 * @internal
 */
export declare class BaseRoute extends ConfigHostElement {
    auth: Auth;
    connect: Connect;
    session: Session;
    messageBuilder: MessageBuilder;
    credentialManager: CredentialManager;
    host: string;
    organisation: string;
    username: string;
    email: string;
    password: string;
    password2: string;
    showPasswords: boolean;
    message: string;
    hasErrors: boolean;
    isSubmitting: boolean;
    connectedCallback(): void;
    onSubmit(): Promise<void>;
    ensureConnection(): Promise<boolean>;
    setError(message: string): void;
    clearError(): void;
    get orgUsername(): string;
    onBack: () => Promise<void>;
    onNavigate: (routeName: Routes, params?: {}) => Promise<void>;
    queueOnBack(delay?: number): void;
    autofill(): Promise<boolean>;
    storeCredentials(password?: string): void;
    sendMessage<T = any>(message: Message<T>, successFeedback?: string, successCallback?: (result: any) => void): Promise<void>;
}
/**
 * @internal
 * @privateRemarks
 * Potential optimisation ahead of workflow / statemachine based smart forms integration, but needs tagFor.
 * Feels a bit at odds with the declarative nature we're aiming for, but will await review.
 */
export declare const configurableTextField: <T extends ConfigHost>(name: keyof FieldConfigMap | [name: keyof FieldConfigMap, valueKey: string], type: string, autofocus?: boolean, autocomplete?: string, className?: string, labelOverride?: string, testIdOverride?: string, required?: boolean) => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 */
export declare const organisationField: <T extends BaseRoute>() => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 */
export declare const usernameField: <T extends BaseRoute>() => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 */
export declare const emailField: <T extends BaseRoute>() => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 */
export declare const passwordField: <T extends BaseRoute>(label?: string) => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 */
export declare const password2Field: <T extends BaseRoute>(type: 'new' | 'confirmation') => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 * @privateRemarks
 * Temp optimisation. How we handle images like this needs a broader review.
 */
export declare class BackgroundElement extends ConfigHostElement {
    connectedCallback(): void;
}
/**
 * @internal
 */
export declare class LogoElement extends ConfigHostElement {
}
/**
 * @internal
 */
export declare const backButton: <T extends ConfigHost>(binding: Binding) => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 */
export declare const submitButton: <T extends ConfigHost>(label: string, dataTestId?: string, disabled?: boolean) => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 */
export declare const showPasswordsCheckbox: <T extends BaseRoute>() => import("@microsoft/fast-element").ViewTemplate<T, any>;
/**
 * @internal
 * @privateRemarks
 * Temp optimisation. How we handle images like this needs a broader review.
 */
export declare class MessageElement extends FASTElement {
    classNames: string;
    message: string;
    nonError: boolean;
    nonErrorChanged(): void;
}
/**
 * @internal
 */
export declare class SubmittingIndicator extends FASTElement {
    isSubmitting: boolean;
}
//# sourceMappingURL=base.d.ts.map