import { Folder, FolderType } from '../API';
import { ApolloClientService, CRUDService, ICrudService } from '../core';
import { DesiredOutcomeService } from './desired-outcome.service';
import { SurveyService } from './survey.service';
import { JourneyService } from './journey.service';
import { PlaybookService } from './playbook.service';
import { SegmentService } from './segment.service';
type LowercaseFirstLetter<T extends string> = T extends `${infer FirstLetter}${infer Rest}` ? `${Lowercase<FirstLetter>}${Rest}` : T;
type FolderServices = {
    desiredOutcomeService: DesiredOutcomeService;
    journeyService: JourneyService;
    playbookService: PlaybookService;
    segmentService: SegmentService;
    surveyService: SurveyService;
};
export declare class FolderService extends CRUDService<Folder> {
    protected services: FolderServices;
    protected hasOneModels: ICrudService<Folder>['hasOneModels'];
    constructor(client: ApolloClientService, services: FolderServices);
    generateOtherFolderData(type: FolderType): Parameters<typeof this.create>[0];
    validateName: (name: string, type?: FolderType) => Promise<boolean>;
    get create(): (input: Partial<Record<"segments" | "desiredOutcomes" | "surveys" | "journeys" | "playbooks", import("../../..").ModelWithId[]> & Record<"organization", import("../../..").ModelWithId>> & Omit<import("../API").FolderInput, "segments" | "organization" | "desiredOutcomes" | "surveys" | "journeys" | "playbooks">, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderCreateOneMutation, import("../API").Exact<{
        input: import("../API").FolderInput;
    }>>>) => Promise<{
        __typename?: "folder";
        organizationID: string;
        id: string;
        name: string;
        type?: FolderType;
        itemCount: number;
        created_at: any;
        updated_at: any;
    }>;
    get useCreate(): (options?: import("../core").CacheUpdateOptions<import("../core").ServiceMutationHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderCreateOneMutation, import("../API").Exact<{
        input: import("../API").FolderInput;
    }>>>>) => [(payload: import("../core").InputAndRelations<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderCreateOneMutation, import("../API").Exact<{
        input: import("../API").FolderInput;
    }>>, Folder>) => Promise<{
        __typename?: "folder";
        organizationID: string;
        id: string;
        name: string;
        type?: FolderType;
        itemCount: number;
        created_at: any;
        updated_at: any;
    }>, import("@apollo/client").MutationResult<{
        createOne: import("../../..").ModelWithId;
    }>];
    get update(): (input: Partial<Record<"segments" | "desiredOutcomes" | "surveys" | "journeys" | "playbooks", import("../../..").ModelWithId[]> & Record<"organization", import("../../..").ModelWithId>> & Omit<import("../API").FolderUpdateInput, "segments" | "organization" | "desiredOutcomes" | "surveys" | "journeys" | "playbooks"> & {
        id: string;
    }, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderUpdateOneMutation, import("../API").Exact<{
        input: import("../API").UpdateOneFolderInput;
    }>>>) => Promise<{
        __typename?: "folder";
        organizationID: string;
        id: string;
        name: string;
        type?: FolderType;
        itemCount: number;
        created_at: any;
        updated_at: any;
    }>;
    get useUpdate(): (mainOptions?: import("../core").CacheUpdateOptions<import("../core").ServiceMutationHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderUpdateOneMutation, import("../API").Exact<{
        input: import("../API").UpdateOneFolderInput;
    }>>>>) => [({ id, ...input }: Partial<Record<"segments" | "desiredOutcomes" | "surveys" | "journeys" | "playbooks", import("../../..").ModelWithId[]> & Record<"organization", import("../../..").ModelWithId>> & import("../API").FolderUpdateInput & {
        id: string;
    }, options?: import("../core").CacheUpdateOptions<import("../core").ServiceMutationHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderUpdateOneMutation, import("../API").Exact<{
        input: import("../API").UpdateOneFolderInput;
    }>>>>) => Promise<Record<string, unknown>>, import("@apollo/client").MutationResult<{
        updateOne: Record<string, unknown>;
    }>];
    get delete(): (id: string, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderDeleteOneMutation, import("../API").Exact<{
        input: import("../API").DeleteOneFolderInput;
    }>>>) => Promise<{
        __typename?: "FolderDeleteResponse";
        id?: string;
    }>;
    get useDelete(): (options?: import("../core").ServiceMutationHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderDeleteOneMutation, import("../API").Exact<{
        input: import("../API").DeleteOneFolderInput;
    }>>>) => [(id?: string) => Promise<{
        __typename?: "FolderDeleteResponse";
        id?: string;
    }>, import("@apollo/client").MutationResult<import("../API").FolderDeleteOneMutation>];
    get list(): (input: import("../API").Exact<{
        filter?: import("../API").FolderFilter;
        paging?: import("../API").CursorPaging;
        sorting?: import("../API").FolderSort | import("../API").FolderSort[];
    }>, options?: import("../core").ServiceQueryOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderListQuery, import("../API").Exact<{
        filter?: import("../API").FolderFilter;
        paging?: import("../API").CursorPaging;
        sorting?: import("../API").FolderSort | import("../API").FolderSort[];
    }>>>) => Promise<{
        __typename?: "FolderConnection";
        totalCount: number;
        edges: {
            __typename?: "folderEdge";
            cursor: any;
            node: {
                __typename?: "folder";
                organizationID: string;
                id: string;
                name: string;
                type?: FolderType;
                itemCount: number;
                created_at: any;
                updated_at: any;
            };
        }[];
        pageInfo: {
            __typename?: "PageInfo";
            endCursor?: any;
            startCursor?: any;
            hasNextPage?: boolean;
            hasPreviousPage?: boolean;
        };
    }>;
    get useList(): (options: import("../core").CacheUpdateOptions<import("../core").ServiceQueryHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderListQuery, import("../API").Exact<{
        filter?: import("../API").FolderFilter;
        paging?: import("../API").CursorPaging;
        sorting?: import("../API").FolderSort | import("../API").FolderSort[];
    }>>>>) => {
        isLoading: boolean;
        isRefetching: boolean;
        hasMore: any;
        refetching: boolean;
        client: import("@apollo/client").ApolloClient<any>;
        observable: import("@apollo/client").ObservableQuery<import("../API").FolderListQuery, import("../API").Exact<{
            filter?: import("../API").FolderFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").FolderSort | import("../API").FolderSort[];
        }>>;
        data: import("../API").FolderListQuery;
        previousData?: import("../API").FolderListQuery;
        error?: import("@apollo/client").ApolloError;
        errors?: readonly import("graphql").GraphQLFormattedError[];
        loading: boolean;
        networkStatus: import("@apollo/client").NetworkStatus;
        called: boolean;
        startPolling: (pollInterval: number) => void;
        stopPolling: () => void;
        subscribeToMore: <TSubscriptionData = import("../API").FolderListQuery, TSubscriptionVariables extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            filter?: import("../API").FolderFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").FolderSort | import("../API").FolderSort[];
        }>>(options: import("@apollo/client").SubscribeToMoreOptions<import("../API").FolderListQuery, TSubscriptionVariables, TSubscriptionData>) => () => void;
        updateQuery: <TVars extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            filter?: import("../API").FolderFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").FolderSort | import("../API").FolderSort[];
        }>>(mapFn: (previousQueryResult: import("../API").FolderListQuery, options: Pick<import("@apollo/client").WatchQueryOptions<TVars, import("../API").FolderListQuery>, "variables">) => import("../API").FolderListQuery) => void;
        refetch: (variables?: Partial<import("../API").Exact<{
            filter?: import("../API").FolderFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").FolderSort | import("../API").FolderSort[];
        }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").FolderListQuery>>;
        reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<import("../API").Exact<{
            filter?: import("../API").FolderFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").FolderSort | import("../API").FolderSort[];
        }>, import("../API").FolderListQuery>>, newNetworkStatus?: import("@apollo/client").NetworkStatus) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").FolderListQuery>>;
        variables: import("../API").Exact<{
            filter?: import("../API").FolderFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").FolderSort | import("../API").FolderSort[];
        }>;
        fetchMore: <TFetchData = import("../API").FolderListQuery, TFetchVars extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            filter?: import("../API").FolderFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").FolderSort | import("../API").FolderSort[];
        }>>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
            updateQuery?: (previousQueryResult: import("../API").FolderListQuery, options: {
                fetchMoreResult: TFetchData;
                variables: TFetchVars;
            }) => import("../API").FolderListQuery;
        }) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
    };
    get useGetLazy(): (options?: import("../core").CacheUpdateOptions<import("../core").ServiceLazyQueryHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").FolderListQuery, import("../API").Exact<{
        filter?: import("../API").FolderFilter;
        paging?: import("../API").CursorPaging;
        sorting?: import("../API").FolderSort | import("../API").FolderSort[];
    }>>>>) => import("@apollo/client").LazyQueryResultTuple<import("../API").FolderListQuery, import("../API").Exact<{
        filter?: import("../API").FolderFilter;
        paging?: import("../API").CursorPaging;
        sorting?: import("../API").FolderSort | import("../API").FolderSort[];
    }>>;
    get get(): (id: string, options?: Omit<import("@apollo/client").QueryOptions<import("../API").Exact<{
        id: string;
    }>, import("../API").GetFolderQuery>, "query">) => Promise<{
        __typename?: "folder";
        organizationID: string;
        id: string;
        name: string;
        type?: FolderType;
        itemCount: number;
        created_at: any;
        updated_at: any;
    }>;
    get useGet(): (options: import("../core").ServiceQueryHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").GetFolderQuery, 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").GetFolderQuery, import("../API").Exact<{
            id: string;
        }>>;
        data: import("../API").GetFolderQuery;
        previousData?: import("../API").GetFolderQuery;
        error?: import("@apollo/client").ApolloError;
        errors?: readonly import("graphql").GraphQLFormattedError[];
        loading: boolean;
        networkStatus: import("@apollo/client").NetworkStatus;
        called: boolean;
        startPolling: (pollInterval: number) => void;
        stopPolling: () => void;
        subscribeToMore: <TSubscriptionData = import("../API").GetFolderQuery, TSubscriptionVariables extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            id: string;
        }>>(options: import("@apollo/client").SubscribeToMoreOptions<import("../API").GetFolderQuery, TSubscriptionVariables, TSubscriptionData>) => () => void;
        updateQuery: <TVars extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            id: string;
        }>>(mapFn: (previousQueryResult: import("../API").GetFolderQuery, options: Pick<import("@apollo/client").WatchQueryOptions<TVars, import("../API").GetFolderQuery>, "variables">) => import("../API").GetFolderQuery) => void;
        refetch: (variables?: Partial<import("../API").Exact<{
            id: string;
        }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").GetFolderQuery>>;
        reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<import("../API").Exact<{
            id: string;
        }>, import("../API").GetFolderQuery>>, newNetworkStatus?: import("@apollo/client").NetworkStatus) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").GetFolderQuery>>;
        variables: import("../API").Exact<{
            id: string;
        }>;
        fetchMore: <TFetchData = import("../API").GetFolderQuery, TFetchVars extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            id: string;
        }>>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
            updateQuery?: (previousQueryResult: import("../API").GetFolderQuery, options: {
                fetchMoreResult: TFetchData;
                variables: TFetchVars;
            }) => import("../API").GetFolderQuery;
        }) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
    };
    getRelatedService<T extends FolderType>(type: T): FolderServices[`${LowercaseFirstLetter<T>}Service`];
}
export {};
