import { FetchResult, QueryOptions } from '@apollo/client';
import { ResultOf, VariablesOf } from '@graphql-typed-document-node/core';
import { Attachment, DeleteAttachmentDocument, GetPostDescriptionAttachmentUrlDocument, UploadAttachmentDocument, UploadAttachmentMutation } from '../API';
import { CRUDService, ServiceMutationOptions, ServiceQueryHookOptions } from '../core';
import { Documents } from '../types';
type CreateReturnType = (variables: VariablesOf<typeof UploadAttachmentDocument>, options?: Omit<ServiceMutationOptions<typeof UploadAttachmentDocument>, 'variables' | 'context'>) => Promise<FetchResult<UploadAttachmentMutation>>;
export declare class AttachmentService extends CRUDService<Attachment> {
    get create(): CreateReturnType;
    get delete(): (id: string, options?: Omit<ServiceMutationOptions<typeof DeleteAttachmentDocument>, 'mutation'>) => Promise<FetchResult<import("../API").DeleteAttachmentMutation>>;
    get useList(): (options: import("../core").CacheUpdateOptions<ServiceQueryHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").AttachmentListQuery, import("../API").Exact<{
        filter: import("../API").AttachmentFilter;
        paging?: import("../API").CursorPaging;
        sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
    }>>>>) => {
        isLoading: boolean;
        isRefetching: boolean;
        hasMore: any;
        refetching: boolean;
        client: import("@apollo/client").ApolloClient<any>;
        observable: import("@apollo/client").ObservableQuery<import("../API").AttachmentListQuery, import("../API").Exact<{
            filter: import("../API").AttachmentFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
        }>>;
        data: import("../API").AttachmentListQuery;
        previousData?: import("../API").AttachmentListQuery;
        error?: import("@apollo/client").ApolloError;
        loading: boolean;
        networkStatus: import("@apollo/client").NetworkStatus;
        called: boolean;
        variables: import("../API").Exact<{
            filter: import("../API").AttachmentFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
        }>;
        startPolling: (pollInterval: number) => void;
        stopPolling: () => void;
        subscribeToMore: <TSubscriptionData = import("../API").AttachmentListQuery, TSubscriptionVariables = import("../API").Exact<{
            filter: import("../API").AttachmentFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
        }>>(options: import("@apollo/client").SubscribeToMoreOptions<import("../API").AttachmentListQuery, TSubscriptionVariables, TSubscriptionData>) => () => void;
        updateQuery: <TVars = import("../API").Exact<{
            filter: import("../API").AttachmentFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
        }>>(mapFn: (previousQueryResult: import("../API").AttachmentListQuery, options: Pick<import("@apollo/client").WatchQueryOptions<TVars, import("../API").AttachmentListQuery>, "variables">) => import("../API").AttachmentListQuery) => void;
        refetch: (variables?: Partial<import("../API").Exact<{
            filter: import("../API").AttachmentFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
        }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").AttachmentListQuery>>;
        reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<import("../API").Exact<{
            filter: import("../API").AttachmentFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
        }>, import("../API").AttachmentListQuery>>, newNetworkStatus?: import("@apollo/client").NetworkStatus) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").AttachmentListQuery>>;
        fetchMore: <TFetchData = import("../API").AttachmentListQuery, TFetchVars = import("../API").Exact<{
            filter: import("../API").AttachmentFilter;
            paging?: import("../API").CursorPaging;
            sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
        }>>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
            updateQuery?: (previousQueryResult: import("../API").AttachmentListQuery, options: {
                fetchMoreResult: TFetchData;
                variables: TFetchVars;
            }) => import("../API").AttachmentListQuery;
        }) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
    };
    get list(): (input: import("../API").Exact<{
        filter: import("../API").AttachmentFilter;
        paging?: import("../API").CursorPaging;
        sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
    }>, options?: import("../core").ServiceQueryOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").AttachmentListQuery, import("../API").Exact<{
        filter: import("../API").AttachmentFilter;
        paging?: import("../API").CursorPaging;
        sorting?: import("../API").AttachmentSort | import("../API").AttachmentSort[];
    }>>>) => Promise<{
        __typename?: "AttachmentConnection";
        totalCount: number;
        pageInfo: {
            __typename?: "PageInfo";
            endCursor?: any;
            hasNextPage?: boolean;
            hasPreviousPage?: boolean;
            startCursor?: any;
        };
        edges: {
            __typename?: "AttachmentEdge";
            cursor: any;
            node: {
                __typename?: "Attachment";
                id: string;
                name?: string;
                description: string;
                size?: number;
                mimeType: string;
                signedUrl: string;
                created_at: any;
            };
        }[];
    }>;
    getAttachmentUrl(variables: VariablesOf<typeof GetPostDescriptionAttachmentUrlDocument>, options?: Omit<Parameters<typeof this.client.get>[0], 'variables' | 'query'>): Promise<import("@apollo/client").ApolloQueryResult<import("../API").GetPostDescriptionAttachmentUrlQuery>>;
    serializeDescription(description: string): string;
    deserializeDescription(description: string): string;
    createUpdateWrapper<Fn extends (input: {
        description?: string;
        id?: string;
    } | {
        description: string;
        id: string;
    }, options: unknown) => Promise<{
        description: string;
    }>>(fn: Fn): Fn;
    useGetDescriptionWrapper<T extends Documents.Get, O extends ServiceQueryHookOptions<T>, H extends (options: O) => any>(hook: H): H;
    getDescriptionWrapper<T extends Documents.Get, Fn extends (id: string, options: Omit<QueryOptions<VariablesOf<T>, ResultOf<T>>, 'query'>) => Promise<ResultOf<T>['get']>>(fn: Fn): Fn;
    useUpdateDescriptionWrapper<H extends ReturnType<CRUDService<{
        description: string;
        id: string;
    }>['_useUpdate']>, O extends Parameters<H>[0]>(hook: H): H;
}
export {};
