import { Form, FormVisibility } from '../API';
import { ApolloClientService, CRUDService, ICrudService } from '../core';
import { FormPropertyService } from '.';
import { PropertyMapService } from './properties';
export declare class FormService extends CRUDService<Form> {
    protected hasOneModels: ICrudService<Form>['hasOneModels'];
    protected hasManyModels?: ICrudService<Form>['hasManyModels'];
    private propertyMapService;
    private formPropertyService;
    constructor(client: ApolloClientService, propertyMapService: PropertyMapService, formPropertyService: FormPropertyService);
    get create(): (props: Partial<Record<"formProperties" | "themes" | "menuButtons" | "pages", import("@parlor/components").ModelWithId[]> & Record<import("../core").HasOneRelationsOf<Form>, import("@parlor/components").ModelWithId>> & Omit<import("../API").CreateForm, "formProperties" | "themes" | "menuButtons" | "pages" | import("../core").HasOneRelationsOf<Form>>, visibility: FormVisibility, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").CreateOneFormMutation, import("../API").Exact<{
        input: import("../API").CreateForm;
    }>>>) => Promise<{
        __typename?: "Form";
        id: string;
        visibility: FormVisibility;
        name: string;
        created_at: any;
        formProperties?: {
            __typename?: "FormProperty";
            isActive?: boolean;
            autoAssignValue?: boolean;
            organizationID: string;
            placeholderValue?: string;
            sortIndex?: number;
            type: string;
            isRequired?: boolean;
            label?: string;
        }[];
    }>;
    get useCreate(): (options?: import("../core").CacheUpdateOptions<import("../core").ServiceMutationHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").CreateOneFormMutation, import("../API").Exact<{
        input: import("../API").CreateForm;
    }>>>>) => [(payload: import("../core").InputAndRelations<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").CreateOneFormMutation, import("../API").Exact<{
        input: import("../API").CreateForm;
    }>>, Form>) => Promise<{
        __typename?: "Form";
        id: string;
        visibility: FormVisibility;
        name: string;
        created_at: any;
        formProperties?: {
            __typename?: "FormProperty";
            isActive?: boolean;
            autoAssignValue?: boolean;
            organizationID: string;
            placeholderValue?: string;
            sortIndex?: number;
            type: string;
            isRequired?: boolean;
            label?: string;
        }[];
    }>, import("@apollo/client").MutationResult<any>];
    get get(): (id: string, options?: Omit<import("@apollo/client").QueryOptions<import("../API").Exact<{
        id: string;
    }>, import("../API").FormQuery>, "query">) => Promise<{
        __typename?: "Form";
        id: string;
        visibility: FormVisibility;
        name: string;
        inUse?: boolean;
        created_at: any;
        instructionDescription?: string;
        instructionsIncluded?: boolean;
        formProperties?: {
            __typename?: "FormProperty";
            id: string;
            formID: string;
            autoAssignValue?: boolean;
            internalProperty?: string;
            isActive?: boolean;
            isRequired?: boolean;
            label?: string;
            organizationID: string;
            placeholderValue?: string;
            sortIndex?: number;
            type: string;
            created_at: any;
            updated_at: any;
            formPropertyValues?: {
                __typename?: "FormPropertyValue";
                id: string;
                BooleanValue?: boolean;
                DateValue?: any;
                NumberValue?: number;
                TextValue?: string;
                updated_at: any;
                created_at: any;
            }[];
        }[];
        admin?: {
            __typename?: "Admin";
            id: string;
            avatar?: string;
            firstName?: string;
            lastName?: string;
            email: string;
        };
        inbox: {
            __typename?: "Inbox";
            name: string;
            key: string;
            sortIndex?: number;
            id: string;
        };
        themes?: {
            __typename?: "Theme";
            id: string;
            displayName: string;
        }[];
        formTopic?: {
            __typename?: "Topic";
            id: string;
            name: string;
            topicKey?: number;
            inbox?: {
                __typename?: "Inbox";
                key: string;
                id: string;
            };
        };
    }>;
    get useGet(): (options: import("../core").ServiceQueryHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FormQuery, import("../API").Exact<{
        id: string;
    }>>>) => {
        isLoading: boolean;
        isRefetching: boolean;
        hasMore: any;
        refetching: boolean;
        client: import("@apollo/client").ApolloClient<any>;
        observable: import("@apollo/client").ObservableQuery<import("../API").FormQuery, import("../API").Exact<{
            id: string;
        }>>;
        data: import("../API").FormQuery;
        previousData?: import("../API").FormQuery;
        error?: import("@apollo/client").ApolloError;
        loading: boolean;
        networkStatus: import("@apollo/client").NetworkStatus;
        called: boolean;
        variables: import("../API").Exact<{
            id: string;
        }>;
        startPolling: (pollInterval: number) => void;
        stopPolling: () => void;
        subscribeToMore: <TSubscriptionData = import("../API").FormQuery, TSubscriptionVariables = import("../API").Exact<{
            id: string;
        }>>(options: import("@apollo/client").SubscribeToMoreOptions<import("../API").FormQuery, TSubscriptionVariables, TSubscriptionData>) => () => void;
        updateQuery: <TVars = import("../API").Exact<{
            id: string;
        }>>(mapFn: (previousQueryResult: import("../API").FormQuery, options: Pick<import("@apollo/client").WatchQueryOptions<TVars, import("../API").FormQuery>, "variables">) => import("../API").FormQuery) => void;
        refetch: (variables?: Partial<import("../API").Exact<{
            id: string;
        }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").FormQuery>>;
        reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<import("../API").Exact<{
            id: string;
        }>, import("../API").FormQuery>>, newNetworkStatus?: import("@apollo/client").NetworkStatus) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").FormQuery>>;
        fetchMore: <TFetchData = import("../API").FormQuery, TFetchVars = import("../API").Exact<{
            id: string;
        }>>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
            updateQuery?: (previousQueryResult: import("../API").FormQuery, options: {
                fetchMoreResult: TFetchData;
                variables: TFetchVars;
            }) => import("../API").FormQuery;
        }) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
    };
    get list(): (input: import("../API").Exact<{
        filter: import("../API").FormFilter;
        paging: import("../API").CursorPaging;
        sorting: import("../API").FormSort | import("../API").FormSort[];
    }>, options?: import("../core").ServiceQueryOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FormListQuery, import("../API").Exact<{
        filter: import("../API").FormFilter;
        paging: import("../API").CursorPaging;
        sorting: import("../API").FormSort | import("../API").FormSort[];
    }>>>) => Promise<{
        __typename?: "FormConnection";
        edges: {
            __typename?: "FormEdge";
            cursor: any;
            node: {
                __typename?: "Form";
                id: string;
                visibility: FormVisibility;
                name: string;
                inUse?: boolean;
                created_at: any;
                instructionDescription?: string;
                instructionsIncluded?: boolean;
                formProperties?: {
                    __typename?: "FormProperty";
                    id: string;
                    formID: string;
                    autoAssignValue?: boolean;
                    internalProperty?: string;
                    isActive?: boolean;
                    isRequired?: boolean;
                    label?: string;
                    organizationID: string;
                    placeholderValue?: string;
                    sortIndex?: number;
                    type: string;
                    created_at: any;
                    updated_at: any;
                    formPropertyValues?: {
                        __typename?: "FormPropertyValue";
                        id: string;
                        BooleanValue?: boolean;
                        DateValue?: any;
                        NumberValue?: number;
                        TextValue?: string;
                        updated_at: any;
                        created_at: any;
                    }[];
                }[];
                admin?: {
                    __typename?: "Admin";
                    id: string;
                    avatar?: string;
                    firstName?: string;
                    lastName?: string;
                    email: string;
                };
                inbox: {
                    __typename?: "Inbox";
                    name: string;
                    key: string;
                    sortIndex?: number;
                    id: string;
                };
                themes?: {
                    __typename?: "Theme";
                    id: string;
                    displayName: string;
                }[];
                formTopic?: {
                    __typename?: "Topic";
                    id: string;
                    name: string;
                    topicKey?: number;
                    inbox?: {
                        __typename?: "Inbox";
                        key: string;
                        id: string;
                    };
                };
            };
        }[];
        pageInfo: {
            __typename?: "PageInfo";
            startCursor?: any;
            endCursor?: any;
            hasNextPage?: boolean;
            hasPreviousPage?: boolean;
        };
    }>;
    get useList(): (options: import("../core").CacheUpdateOptions<import("../core").ServiceQueryHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FormListQuery, import("../API").Exact<{
        filter: import("../API").FormFilter;
        paging: import("../API").CursorPaging;
        sorting: import("../API").FormSort | import("../API").FormSort[];
    }>>>>) => {
        isLoading: boolean;
        isRefetching: boolean;
        hasMore: any;
        refetching: boolean;
        client: import("@apollo/client").ApolloClient<any>;
        observable: import("@apollo/client").ObservableQuery<import("../API").FormListQuery, import("../API").Exact<{
            filter: import("../API").FormFilter;
            paging: import("../API").CursorPaging;
            sorting: import("../API").FormSort | import("../API").FormSort[];
        }>>;
        data: import("../API").FormListQuery;
        previousData?: import("../API").FormListQuery;
        error?: import("@apollo/client").ApolloError;
        loading: boolean;
        networkStatus: import("@apollo/client").NetworkStatus;
        called: boolean;
        variables: import("../API").Exact<{
            filter: import("../API").FormFilter;
            paging: import("../API").CursorPaging;
            sorting: import("../API").FormSort | import("../API").FormSort[];
        }>;
        startPolling: (pollInterval: number) => void;
        stopPolling: () => void;
        subscribeToMore: <TSubscriptionData = import("../API").FormListQuery, TSubscriptionVariables = import("../API").Exact<{
            filter: import("../API").FormFilter;
            paging: import("../API").CursorPaging;
            sorting: import("../API").FormSort | import("../API").FormSort[];
        }>>(options: import("@apollo/client").SubscribeToMoreOptions<import("../API").FormListQuery, TSubscriptionVariables, TSubscriptionData>) => () => void;
        updateQuery: <TVars = import("../API").Exact<{
            filter: import("../API").FormFilter;
            paging: import("../API").CursorPaging;
            sorting: import("../API").FormSort | import("../API").FormSort[];
        }>>(mapFn: (previousQueryResult: import("../API").FormListQuery, options: Pick<import("@apollo/client").WatchQueryOptions<TVars, import("../API").FormListQuery>, "variables">) => import("../API").FormListQuery) => void;
        refetch: (variables?: Partial<import("../API").Exact<{
            filter: import("../API").FormFilter;
            paging: import("../API").CursorPaging;
            sorting: import("../API").FormSort | import("../API").FormSort[];
        }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").FormListQuery>>;
        reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<import("../API").Exact<{
            filter: import("../API").FormFilter;
            paging: import("../API").CursorPaging;
            sorting: import("../API").FormSort | import("../API").FormSort[];
        }>, import("../API").FormListQuery>>, newNetworkStatus?: import("@apollo/client").NetworkStatus) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").FormListQuery>>;
        fetchMore: <TFetchData = import("../API").FormListQuery, TFetchVars = import("../API").Exact<{
            filter: import("../API").FormFilter;
            paging: import("../API").CursorPaging;
            sorting: import("../API").FormSort | import("../API").FormSort[];
        }>>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
            updateQuery?: (previousQueryResult: import("../API").FormListQuery, options: {
                fetchMoreResult: TFetchData;
                variables: TFetchVars;
            }) => import("../API").FormListQuery;
        }) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
    };
    get update(): (input: Partial<Record<"formProperties" | "themes" | "menuButtons" | "pages", import("@parlor/components").ModelWithId[]> & Record<import("../core").HasOneRelationsOf<Form>, import("@parlor/components").ModelWithId>> & Omit<import("../API").UpdateForm, "formProperties" | "themes" | "menuButtons" | "pages" | import("../core").HasOneRelationsOf<Form>> & {
        id: string;
    }, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").UpdateOneFormMutation, import("../API").Exact<{
        input: import("../API").UpdateOneFormInput;
    }>>>) => Promise<{
        __typename?: "Form";
        id: string;
        visibility: FormVisibility;
        name: string;
        inUse?: boolean;
        created_at: any;
        instructionDescription?: string;
        instructionsIncluded?: boolean;
        formProperties?: {
            __typename?: "FormProperty";
            id: string;
            formID: string;
            autoAssignValue?: boolean;
            internalProperty?: string;
            isActive?: boolean;
            isRequired?: boolean;
            label?: string;
            organizationID: string;
            placeholderValue?: string;
            sortIndex?: number;
            type: string;
            created_at: any;
            updated_at: any;
            formPropertyValues?: {
                __typename?: "FormPropertyValue";
                id: string;
                BooleanValue?: boolean;
                DateValue?: any;
                NumberValue?: number;
                TextValue?: string;
                updated_at: any;
                created_at: any;
            }[];
        }[];
        admin?: {
            __typename?: "Admin";
            id: string;
            avatar?: string;
            firstName?: string;
            lastName?: string;
            email: string;
        };
        inbox: {
            __typename?: "Inbox";
            name: string;
            key: string;
            sortIndex?: number;
            id: string;
        };
        themes?: {
            __typename?: "Theme";
            id: string;
            displayName: string;
        }[];
        formTopic?: {
            __typename?: "Topic";
            id: string;
            name: string;
            topicKey?: number;
            inbox?: {
                __typename?: "Inbox";
                key: string;
                id: string;
            };
        };
    }>;
    get useUpdate(): (mainOptions?: import("../core").CacheUpdateOptions<import("../core").ServiceMutationHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").UpdateOneFormMutation, import("../API").Exact<{
        input: import("../API").UpdateOneFormInput;
    }>>>>) => [({ id, ...input }: Partial<Record<"formProperties" | "themes" | "menuButtons" | "pages", import("@parlor/components").ModelWithId[]> & Record<import("../core").HasOneRelationsOf<Form>, import("@parlor/components").ModelWithId>> & import("../API").UpdateForm & {
        id: string;
    }, options?: import("../core").CacheUpdateOptions<import("../core").ServiceMutationHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").UpdateOneFormMutation, import("../API").Exact<{
        input: import("../API").UpdateOneFormInput;
    }>>>>) => Promise<any>, import("@apollo/client").MutationResult<any>];
    get delete(): (id: string, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").DeleteOneFormMutation, import("../API").Exact<{
        input: import("../API").DeleteOneFormInput;
    }>>>) => Promise<{
        __typename?: "FormDeleteResponse";
        id?: string;
    }>;
    get useDelete(): (options?: import("../core").ServiceMutationHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").DeleteOneFormMutation, import("../API").Exact<{
        input: import("../API").DeleteOneFormInput;
    }>>>) => [(id?: string) => Promise<{
        __typename?: "FormDeleteResponse";
        id?: string;
    }>, import("@apollo/client").MutationResult<import("../API").DeleteOneFormMutation>];
}
