import { ModelWithId } from '@parlor/components/select';
import { Artifact, Attachment } from '../API';
import { ApolloClientService, CRUDService, ICrudService } from '../core';
import { AttachmentService } from './attachment.service';
import { NeedsAndArtifactsCacheService } from './needs-and-artifacts';
export declare class ArtifactService extends CRUDService<Artifact> {
    private attachmentService;
    private needsAndArtifactsCacheService;
    constructor(client: ApolloClientService, attachmentService: AttachmentService, needsAndArtifactsCacheService: NeedsAndArtifactsCacheService);
    protected hasOneModels: ICrudService<Artifact>['hasOneModels'];
    protected hasManyModels?: ICrudService<Artifact>['hasManyModels'];
    get create(): (input: Partial<Record<"tasks" | "attachments" | "needs" | "histories", ModelWithId[]> & Record<import("../core").HasOneRelationsOf<Artifact>, ModelWithId>> & Omit<import("../API").ArtifactInput, "tasks" | "attachments" | "needs" | "histories" | import("../core").HasOneRelationsOf<Artifact>>, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").ArtifactCreateOneMutation, import("../API").Exact<{
        input: import("../API").ArtifactInput;
    }>>>) => Promise<{
        __typename?: "artifact";
        id: string;
        organizationID: string;
        description: string;
        inboxID?: string;
        userID?: string;
        name: string;
        accountID?: string;
        email?: string;
        objectSource: import("../API").SourceOfData;
        isProcessed?: boolean;
        seen: boolean;
        needsCount: number;
        openNeedsCount: number;
        created_at: any;
        updated_at: any;
        attachments?: {
            __typename?: "Attachment";
            id: string;
            mimeType: string;
            description: string;
            signedUrl: string;
            artifactID?: string;
        }[];
        needs?: {
            __typename?: "Need";
            id: string;
        }[];
        adminAuthor: {
            __typename?: "Admin";
            id: string;
            firstName?: string;
            lastName?: string;
            email: string;
            avatar?: string;
            role: import("../API").AdminRole;
            team?: import("../API").AdminTeams;
            isCurrentMember?: boolean;
            title?: string;
            location?: string;
            bio?: string;
            created_at: any;
            updated_at: any;
        };
        adminAssigned?: {
            __typename?: "Admin";
            id: string;
            firstName?: string;
            lastName?: string;
            email: string;
            avatar?: string;
            role: import("../API").AdminRole;
            team?: import("../API").AdminTeams;
            isCurrentMember?: boolean;
            title?: string;
            location?: string;
            bio?: string;
            created_at: any;
            updated_at: any;
        };
        user?: {
            __typename?: "User";
            userDetails?: string;
            created_at: any;
            updated_at: any;
            id: string;
            vip?: boolean;
            email?: string;
            firstName?: string;
            lastName?: string;
            fullName?: string;
            objectSource?: import("../API").SourceOfData;
            accounts?: {
                __typename?: "Account";
                id: string;
                displayName?: string;
                vip?: boolean;
            }[];
            externalIDs?: {
                __typename?: "ExternalID";
                accountID?: string;
                email?: string;
                externalID: string;
                id: string;
                needID?: string;
                objectSource: string;
                objectType: string;
                opportunityID?: string;
                organizationID: string;
                userID?: string;
            }[];
        };
        account?: {
            __typename?: "Account";
            nrr?: number;
            atRisk?: boolean;
            opportunitiesCount?: number;
            needsCount?: number;
            openCurrentRevenue?: number;
            openPotentialRevenue?: number;
            accountType?: string;
            vipNeedsCount?: number;
            created_at: any;
            totalClosedLostRevenue?: number;
            totalCurrentRevenue?: number;
            totalPotentialRevenue?: number;
            id: string;
            vip?: boolean;
            displayName?: string;
            objectSource?: import("../API").SourceOfData;
            needs: {
                __typename?: "Need";
                id: string;
                isResolved?: boolean;
                isArchived?: boolean;
                isDeleted?: boolean;
            }[];
        };
        inbox?: {
            __typename?: "Inbox";
            id: string;
            name: string;
            key: string;
        };
    }>;
    get update(): (input: Partial<Record<"tasks" | "attachments" | "needs" | "histories", ModelWithId[]> & Record<import("../core").HasOneRelationsOf<Artifact>, ModelWithId>> & Omit<import("../API").ArtifactUpdateInput, "tasks" | "attachments" | "needs" | "histories" | import("../core").HasOneRelationsOf<Artifact>> & {
        id: string;
    }, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").ArtifactUpdateOneMutation, import("../API").Exact<{
        input: import("../API").UpdateOneArtifactInput;
    }>>>) => Promise<{
        __typename?: "artifact";
        id: string;
        organizationID: string;
        description: string;
        inboxID?: string;
        userID?: string;
        name: string;
        accountID?: string;
        email?: string;
        objectSource: import("../API").SourceOfData;
        isProcessed?: boolean;
        seen: boolean;
        needsCount: number;
        openNeedsCount: number;
        created_at: any;
        updated_at: any;
        attachments?: {
            __typename?: "Attachment";
            id: string;
            mimeType: string;
            description: string;
            signedUrl: string;
            artifactID?: string;
        }[];
        needs?: {
            __typename?: "Need";
            id: string;
        }[];
        adminAuthor: {
            __typename?: "Admin";
            id: string;
            firstName?: string;
            lastName?: string;
            email: string;
            avatar?: string;
            role: import("../API").AdminRole;
            team?: import("../API").AdminTeams;
            isCurrentMember?: boolean;
            title?: string;
            location?: string;
            bio?: string;
            created_at: any;
            updated_at: any;
        };
        adminAssigned?: {
            __typename?: "Admin";
            id: string;
            firstName?: string;
            lastName?: string;
            email: string;
            avatar?: string;
            role: import("../API").AdminRole;
            team?: import("../API").AdminTeams;
            isCurrentMember?: boolean;
            title?: string;
            location?: string;
            bio?: string;
            created_at: any;
            updated_at: any;
        };
        user?: {
            __typename?: "User";
            userDetails?: string;
            created_at: any;
            updated_at: any;
            id: string;
            vip?: boolean;
            email?: string;
            firstName?: string;
            lastName?: string;
            fullName?: string;
            objectSource?: import("../API").SourceOfData;
            accounts?: {
                __typename?: "Account";
                id: string;
                displayName?: string;
                vip?: boolean;
            }[];
            externalIDs?: {
                __typename?: "ExternalID";
                accountID?: string;
                email?: string;
                externalID: string;
                id: string;
                needID?: string;
                objectSource: string;
                objectType: string;
                opportunityID?: string;
                organizationID: string;
                userID?: string;
            }[];
        };
        account?: {
            __typename?: "Account";
            nrr?: number;
            atRisk?: boolean;
            opportunitiesCount?: number;
            needsCount?: number;
            openCurrentRevenue?: number;
            openPotentialRevenue?: number;
            accountType?: string;
            vipNeedsCount?: number;
            created_at: any;
            totalClosedLostRevenue?: number;
            totalCurrentRevenue?: number;
            totalPotentialRevenue?: number;
            id: string;
            vip?: boolean;
            displayName?: string;
            objectSource?: import("../API").SourceOfData;
            needs: {
                __typename?: "Need";
                id: string;
                isResolved?: boolean;
                isArchived?: boolean;
                isDeleted?: boolean;
            }[];
        };
        inbox?: {
            __typename?: "Inbox";
            id: string;
            name: string;
            key: string;
        };
    }>;
    get delete(): (id: string, options?: import("../core").MutationOptionsWithoutMutation<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").ArtifactDeleteOneMutation, import("../API").Exact<{
        input: import("../API").DeleteOneArtifactInput;
    }>>>) => Promise<{
        __typename?: "ArtifactDeleteResponse";
        id?: string;
    }>;
    get get(): (id: string, options?: Omit<import("@apollo/client").QueryOptions<import("../API").Exact<{
        id: string;
    }>, import("../API").ArtifactGetQuery>, "query">) => Promise<{
        __typename?: "artifact";
        id: string;
        organizationID: string;
        description: string;
        inboxID?: string;
        userID?: string;
        name: string;
        accountID?: string;
        email?: string;
        objectSource: import("../API").SourceOfData;
        isProcessed?: boolean;
        seen: boolean;
        needsCount: number;
        openNeedsCount: number;
        created_at: any;
        updated_at: any;
        attachments?: {
            __typename?: "Attachment";
            id: string;
            mimeType: string;
            description: string;
            signedUrl: string;
            artifactID?: string;
        }[];
        needs?: {
            __typename?: "Need";
            id: string;
        }[];
        adminAuthor: {
            __typename?: "Admin";
            id: string;
            firstName?: string;
            lastName?: string;
            email: string;
            avatar?: string;
            role: import("../API").AdminRole;
            team?: import("../API").AdminTeams;
            isCurrentMember?: boolean;
            title?: string;
            location?: string;
            bio?: string;
            created_at: any;
            updated_at: any;
        };
        adminAssigned?: {
            __typename?: "Admin";
            id: string;
            firstName?: string;
            lastName?: string;
            email: string;
            avatar?: string;
            role: import("../API").AdminRole;
            team?: import("../API").AdminTeams;
            isCurrentMember?: boolean;
            title?: string;
            location?: string;
            bio?: string;
            created_at: any;
            updated_at: any;
        };
        user?: {
            __typename?: "User";
            userDetails?: string;
            created_at: any;
            updated_at: any;
            id: string;
            vip?: boolean;
            email?: string;
            firstName?: string;
            lastName?: string;
            fullName?: string;
            objectSource?: import("../API").SourceOfData;
            accounts?: {
                __typename?: "Account";
                id: string;
                displayName?: string;
                vip?: boolean;
            }[];
            externalIDs?: {
                __typename?: "ExternalID";
                accountID?: string;
                email?: string;
                externalID: string;
                id: string;
                needID?: string;
                objectSource: string;
                objectType: string;
                opportunityID?: string;
                organizationID: string;
                userID?: string;
            }[];
        };
        account?: {
            __typename?: "Account";
            nrr?: number;
            atRisk?: boolean;
            opportunitiesCount?: number;
            needsCount?: number;
            openCurrentRevenue?: number;
            openPotentialRevenue?: number;
            accountType?: string;
            vipNeedsCount?: number;
            created_at: any;
            totalClosedLostRevenue?: number;
            totalCurrentRevenue?: number;
            totalPotentialRevenue?: number;
            id: string;
            vip?: boolean;
            displayName?: string;
            objectSource?: import("../API").SourceOfData;
            needs: {
                __typename?: "Need";
                id: string;
                isResolved?: boolean;
                isArchived?: boolean;
                isDeleted?: boolean;
            }[];
        };
        inbox?: {
            __typename?: "Inbox";
            id: string;
            name: string;
            key: string;
        };
    }>;
    get list(): (input: import("../API").Exact<{
        filter?: import("../API").ArtifactFilter;
        sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
        paging?: import("../API").CursorPaging;
    }>, options?: import("../core").ServiceQueryOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").ArtifactListQuery, import("../API").Exact<{
        filter?: import("../API").ArtifactFilter;
        sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
        paging?: import("../API").CursorPaging;
    }>>>) => Promise<{
        __typename?: "ArtifactConnection";
        totalCount: number;
        edges: {
            __typename?: "artifactEdge";
            cursor: any;
            node: {
                __typename?: "artifact";
                id: string;
                organizationID: string;
                description: string;
                name: string;
                email?: string;
                objectSource: import("../API").SourceOfData;
                isProcessed?: boolean;
                seen: boolean;
                needsCount: number;
                openNeedsCount: number;
                created_at: any;
                updated_at: any;
                needs?: {
                    __typename?: "Need";
                    id: string;
                }[];
                adminAuthor: {
                    __typename?: "Admin";
                    id: string;
                    firstName?: string;
                    lastName?: string;
                    email: string;
                    avatar?: string;
                    role: import("../API").AdminRole;
                    team?: import("../API").AdminTeams;
                    isCurrentMember?: boolean;
                    title?: string;
                    location?: string;
                    bio?: string;
                    created_at: any;
                    updated_at: any;
                };
                adminAssigned?: {
                    __typename?: "Admin";
                    id: string;
                    firstName?: string;
                    lastName?: string;
                    email: string;
                    avatar?: string;
                    role: import("../API").AdminRole;
                    team?: import("../API").AdminTeams;
                    isCurrentMember?: boolean;
                    title?: string;
                    location?: string;
                    bio?: string;
                    created_at: any;
                    updated_at: any;
                };
                user?: {
                    __typename?: "User";
                    id: string;
                    fullName?: string;
                    firstName?: string;
                    lastName?: string;
                    email?: string;
                };
                account?: {
                    __typename?: "Account";
                    id: string;
                    displayName?: string;
                };
                inbox?: {
                    __typename?: "Inbox";
                    id: string;
                    name: string;
                    key: string;
                };
            };
        }[];
        pageInfo: {
            __typename?: "PageInfo";
            endCursor?: any;
            hasNextPage?: boolean;
            hasPreviousPage?: boolean;
            startCursor?: any;
        };
    }>;
    get useList(): (options: import("../core").CacheUpdateOptions<import("../core").ServiceQueryHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").ArtifactListQuery, import("../API").Exact<{
        filter?: import("../API").ArtifactFilter;
        sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
        paging?: import("../API").CursorPaging;
    }>>>>) => {
        isLoading: boolean;
        isRefetching: boolean;
        hasMore: any;
        refetching: boolean;
        client: import("@apollo/client").ApolloClient<any>;
        observable: import("@apollo/client").ObservableQuery<import("../API").ArtifactListQuery, import("../API").Exact<{
            filter?: import("../API").ArtifactFilter;
            sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
            paging?: import("../API").CursorPaging;
        }>>;
        data: import("../API").ArtifactListQuery;
        previousData?: import("../API").ArtifactListQuery;
        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").ArtifactListQuery, TSubscriptionVariables extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            filter?: import("../API").ArtifactFilter;
            sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
            paging?: import("../API").CursorPaging;
        }>>(options: import("@apollo/client").SubscribeToMoreOptions<import("../API").ArtifactListQuery, TSubscriptionVariables, TSubscriptionData>) => () => void;
        updateQuery: <TVars extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            filter?: import("../API").ArtifactFilter;
            sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
            paging?: import("../API").CursorPaging;
        }>>(mapFn: (previousQueryResult: import("../API").ArtifactListQuery, options: Pick<import("@apollo/client").WatchQueryOptions<TVars, import("../API").ArtifactListQuery>, "variables">) => import("../API").ArtifactListQuery) => void;
        refetch: (variables?: Partial<import("../API").Exact<{
            filter?: import("../API").ArtifactFilter;
            sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
            paging?: import("../API").CursorPaging;
        }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").ArtifactListQuery>>;
        reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<import("../API").Exact<{
            filter?: import("../API").ArtifactFilter;
            sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
            paging?: import("../API").CursorPaging;
        }>, import("../API").ArtifactListQuery>>, newNetworkStatus?: import("@apollo/client").NetworkStatus) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").ArtifactListQuery>>;
        variables: import("../API").Exact<{
            filter?: import("../API").ArtifactFilter;
            sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
            paging?: import("../API").CursorPaging;
        }>;
        fetchMore: <TFetchData = import("../API").ArtifactListQuery, TFetchVars extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            filter?: import("../API").ArtifactFilter;
            sorting?: import("../API").ArtifactSort | import("../API").ArtifactSort[];
            paging?: import("../API").CursorPaging;
        }>>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
            updateQuery?: (previousQueryResult: import("../API").ArtifactListQuery, options: {
                fetchMoreResult: TFetchData;
                variables: TFetchVars;
            }) => import("../API").ArtifactListQuery;
        }) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
    };
    get useGet(): (options: import("../core").ServiceQueryHookOptions<import("@graphql-typed-document-node/core").TypedDocumentNode<import("../API").ArtifactGetQuery, 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").ArtifactGetQuery, import("../API").Exact<{
            id: string;
        }>>;
        data: import("../API").ArtifactGetQuery;
        previousData?: import("../API").ArtifactGetQuery;
        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").ArtifactGetQuery, TSubscriptionVariables extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            id: string;
        }>>(options: import("@apollo/client").SubscribeToMoreOptions<import("../API").ArtifactGetQuery, TSubscriptionVariables, TSubscriptionData>) => () => void;
        updateQuery: <TVars extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            id: string;
        }>>(mapFn: (previousQueryResult: import("../API").ArtifactGetQuery, options: Pick<import("@apollo/client").WatchQueryOptions<TVars, import("../API").ArtifactGetQuery>, "variables">) => import("../API").ArtifactGetQuery) => void;
        refetch: (variables?: Partial<import("../API").Exact<{
            id: string;
        }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").ArtifactGetQuery>>;
        reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<import("../API").Exact<{
            id: string;
        }>, import("../API").ArtifactGetQuery>>, newNetworkStatus?: import("@apollo/client").NetworkStatus) => Promise<import("@apollo/client").ApolloQueryResult<import("../API").ArtifactGetQuery>>;
        variables: import("../API").Exact<{
            id: string;
        }>;
        fetchMore: <TFetchData = import("../API").ArtifactGetQuery, TFetchVars extends import("@apollo/client").OperationVariables = import("../API").Exact<{
            id: string;
        }>>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
            updateQuery?: (previousQueryResult: import("../API").ArtifactGetQuery, options: {
                fetchMoreResult: TFetchData;
                variables: TFetchVars;
            }) => import("../API").ArtifactGetQuery;
        }) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
    };
    protected updateAttachments(artifactId: string, attachmentsAndFiles: ModelWithId[]): Promise<Attachment[]>;
}
