import { TypedDocumentNode, DocumentNode, InMemoryCacheConfig } from '@apollo/client';
import { ApolloClient } from '@apollo/client-integration-nextjs';

interface FieldProps {
    placeholder?: string;
    options?: any;
    shapevalue?: boolean;
    [other: string]: any;
}
interface Field {
    key: string;
    type: string;
    kind: "input" | "select" | "checkbox" | "textarea" | "hidden" | "tags" | "switch" | "markdown" | "uploader" | "date";
    label: string;
    input?: string;
    props?: FieldProps;
    private?: boolean;
    required?: boolean;
    description?: string;
    validation?: any;
    autogenerated?: {
        style: "slug";
        basedOn: string;
    };
}
interface Enum {
    [id: string]: string[];
}
interface Auth {
    create?: boolean | string;
    update?: boolean | string;
    delete?: boolean | string;
    get?: boolean | string;
    frictionlessUser?: boolean;
    addOwner?: boolean;
}
interface HeaderLinkField {
    label: string;
    field: string;
    href: (path: string) => void;
    icon?: string;
}
interface Kind {
    key: string;
    type: string;
    label: string;
    collection: string;
    fields: Field[];
    fieldIdentifier?: string;
    enums?: Enum;
    auth?: Auth;
    headerLinksFields?: HeaderLinkField[];
    deleteIf?: string | [string, string];
}
interface Respn {
    types: any;
    utils: any;
}
type UserType = {
    __typename: "User";
    id: string;
    email: string;
    roles: string[];
    name: string;
    extra: {};
};

type LoginMutation = {
    login: {
        token: string;
        refreshToken: string;
        user: UserType;
        errorsMessage: string;
    };
};
type LoginMutationVariables = {
    email: string;
    password: string;
};
declare const LOGIN: TypedDocumentNode<LoginMutation, LoginMutationVariables>;
type SignupMutation = {
    signup: {
        token: string;
        refreshToken: string;
        user: UserType;
        errorsMessage: string;
    };
};
type SignupMutationVariables = {
    input: {
        email: string;
        name: string;
        password?: string;
        passwordConfirmation?: string;
        extra?: {};
    };
};
declare const SIGNUP: TypedDocumentNode<SignupMutation, SignupMutationVariables>;
type CheckMagicLinkMutation = {
    checkMagicLink: {
        token: string;
        refreshToken: string;
        user: UserType;
        errorsMessage: string;
    };
};
type CheckMagicLinkMutationVariables = {
    token: string;
};
declare const CHECK_MAGIC_LINK: TypedDocumentNode<CheckMagicLinkMutation, CheckMagicLinkMutationVariables>;
type ForgotPasswordMutation = {
    forgotPassword: {
        ok: string;
        message: string;
    };
};
type ForgotPasswordMutationVariables = {
    email: string;
    magicLink?: boolean;
};
declare const FORGOT_PASSWORD: TypedDocumentNode<ForgotPasswordMutation, ForgotPasswordMutationVariables>;
type ResetPassword = {
    resetPassword: {
        ok: string;
        message: string;
    };
};
type ResetPasswordVariables = {
    token: string;
    password: string;
    passwordConfirmation?: string;
};
declare const RESET_PASSWORD: TypedDocumentNode<ResetPassword, ResetPasswordVariables>;

declare const AUTH_MUTATIONS_CHECK_MAGIC_LINK: typeof CHECK_MAGIC_LINK;
type AUTH_MUTATIONS_CheckMagicLinkMutation = CheckMagicLinkMutation;
declare const AUTH_MUTATIONS_FORGOT_PASSWORD: typeof FORGOT_PASSWORD;
declare const AUTH_MUTATIONS_LOGIN: typeof LOGIN;
declare const AUTH_MUTATIONS_RESET_PASSWORD: typeof RESET_PASSWORD;
declare const AUTH_MUTATIONS_SIGNUP: typeof SIGNUP;
type AUTH_MUTATIONS_SignupMutation = SignupMutation;
declare namespace AUTH_MUTATIONS {
  export { AUTH_MUTATIONS_CHECK_MAGIC_LINK as CHECK_MAGIC_LINK, AUTH_MUTATIONS_FORGOT_PASSWORD as FORGOT_PASSWORD, AUTH_MUTATIONS_LOGIN as LOGIN, AUTH_MUTATIONS_RESET_PASSWORD as RESET_PASSWORD, AUTH_MUTATIONS_SIGNUP as SIGNUP };
  export type { AUTH_MUTATIONS_CheckMagicLinkMutation as CheckMagicLinkMutation, AUTH_MUTATIONS_SignupMutation as SignupMutation };
}

type GeneratedMutations = {
    [K in `${"CREATE_" | "UPDATE_" | "DELETE_"}${string}`]: DocumentNode;
};

type CurrentUserQuery = {
    currentUser: {
        __typename: "User";
        id: string;
        email: string;
        roles: string[];
        name: string;
        extra: {
            [x: string]: any;
        };
    };
};
declare const CURRENT_USER: TypedDocumentNode<CurrentUserQuery>;

declare const AUTH_QUERIES_CURRENT_USER: typeof CURRENT_USER;
type AUTH_QUERIES_CurrentUserQuery = CurrentUserQuery;
declare namespace AUTH_QUERIES {
  export { AUTH_QUERIES_CURRENT_USER as CURRENT_USER };
  export type { AUTH_QUERIES_CurrentUserQuery as CurrentUserQuery };
}

type GeneratedQueries = {
    [K in `${"GET_ALL_" | "GET_SINGLE_"}${string}`]: DocumentNode;
};

declare function makeClient(cacheOpts?: InMemoryCacheConfig): ApolloClient;

type GeneratedQueriesType = GeneratedQueries & typeof AUTH_QUERIES;
declare function generateQueries<const Kinds extends Kind[]>(kinds: Kinds): GeneratedQueriesType;
type GeneratedMutationsType = GeneratedMutations & typeof AUTH_MUTATIONS;
declare function generateMutations<const Kinds extends Kind[]>(kinds: Kinds): GeneratedMutationsType;

export { generateMutations, generateQueries, makeClient };
export type { Auth, Enum, Field, FieldProps, GeneratedMutationsType, GeneratedQueriesType, HeaderLinkField, Kind, Respn, UserType };
//# sourceMappingURL=index.d.cts.map
