/// <reference types="react" />
/// <reference types="react-redux" />
import * as React from "react";
import * as ReactRedux from "react-redux";
export interface Status {
    errors: {
        login: string;
    };
    processing: {
        login: boolean;
    };
    completed: {
        login: boolean;
    };
}
export interface ExtraProps {
    email?: string;
    password?: string;
    submit?: (event: React.FormEvent<HTMLElement>) => void;
    updateEmail?: (event: React.FormEvent<HTMLInputElement>) => void;
    updatePassword?: (event: React.FormEvent<HTMLInputElement>) => void;
    validInput?: boolean;
    error?: string;
    processing?: boolean;
    completed?: boolean;
}
export interface LoginOptions {
    validator?: (state: LoginState) => boolean;
}
export interface LoginProps {
    readonly _status: Status;
    readonly dispatch?: ReactRedux.Dispatch<{}>;
}
export interface LoginState {
    readonly email?: string;
    readonly password?: string;
}
export default function (options?: LoginOptions): <P>(WrappedComponent: React.ComponentType<P>) => React.ComponentClass<Pick<LoginProps & P, ({
    [P in keyof (LoginProps & P)]: P;
} & {
    _status: never;
    dispatch: never;
} & {
    [x: string]: never;
})[keyof (LoginProps & P)]> & P>;
