import { ApolloClient, NormalizedCacheObject, InMemoryCache as _InMemoryCache1 } from "@apollo/client/core";
import { ApolloClient as _ApolloClient1, InMemoryCache, NormalizedCacheObject as _NormalizedCacheObject1 } from "@apollo/client";
import { NormalizedCacheObject as _NormalizedCacheObject2, InMemoryCache as _InMemoryCache2 } from "@apollo/client/cache";
import React from "react";
type CurrentUserQuery = {
    __typename?: 'Query';
    current_user: {
        __typename?: 'UserModel';
        id: string;
        username: string;
    };
};
declare class AuthenticationQueries {
    client: ApolloClient<NormalizedCacheObject>;
    constructor(client: ApolloClient<NormalizedCacheObject>);
    currentUser(): Promise<import("@apollo/client/core").ApolloQueryResult<CurrentUserQuery>>;
}
interface IAuthenticationAPI {
    application_short_name: string;
    client: _ApolloClient1<_NormalizedCacheObject1>;
    cache: InMemoryCache;
}
interface ILoginArgs {
    email: string;
    password: string;
}
interface IRegisterArgs {
    email: string;
    password: string;
    username: string;
    repeat_password: string;
    application_id?: string;
    redirect_url?: string;
    two_factor_authentication?: boolean;
}
interface ITwoFactorLogin {
    two_factor_id: string;
    email: string;
}
interface IForgotPasswordArgs {
    email: string;
    redirect_url: string;
}
interface IDeleteUserArgs {
    email: string;
}
interface IChangePasswordArgs {
    email: string;
    password: string;
}
declare class AuthenticationMutations {
    client: ApolloClient<NormalizedCacheObject>;
    cache: _InMemoryCache1;
    application_short_name: string;
    constructor({ client, cache, application_short_name }: IAuthenticationAPI);
    login(args: ILoginArgs): Promise<import("@apollo/client/core").FetchResult<import("generated/graphql").LoginMutation, Record<string, any>, Record<string, any>>>;
    register(args: IRegisterArgs): Promise<import("@apollo/client/core").FetchResult<import("generated/graphql").RegistrationMutation, Record<string, any>, Record<string, any>>>;
    two_factor_login(args: ITwoFactorLogin): Promise<import("@apollo/client/core").FetchResult<import("generated/graphql").TwoFactorLoginMutation, Record<string, any>, Record<string, any>>>;
    forgot_password(args: IForgotPasswordArgs): Promise<import("@apollo/client/core").FetchResult<import("generated/graphql").ForgotPasswordMutation, Record<string, any>, Record<string, any>>>;
    change_password(args: IChangePasswordArgs): Promise<import("@apollo/client/core").FetchResult<import("generated/graphql").ChangePasswordMutation, Record<string, any>, Record<string, any>>>;
    delete_user(args: IDeleteUserArgs): Promise<import("@apollo/client/core").FetchResult<import("generated/graphql").DeleteUserMutation, Record<string, any>, Record<string, any>>>;
}
export class AuthenticationAPI {
    client: ApolloClient<_NormalizedCacheObject2>;
    cache: _InMemoryCache2;
    application_short_name: string;
    queries: AuthenticationQueries;
    mutations: AuthenticationMutations;
    constructor(uri: string, application_short_name: string, cache?: _InMemoryCache2, token_name?: string);
}
interface IBinaryStashProvider {
    children?: React.ReactNode;
    client: AuthenticationAPI;
}
export interface IAuthenticationProvider {
    mutations: AuthenticationMutations;
}
export const AuthenticationAPIProvider: React.Context<{}>;
export const BinaryStashProvider: React.FC<IBinaryStashProvider>;

//# sourceMappingURL=index.d.ts.map
