import { TypedDocumentNode } from '@apollo/client';
import { IMethods } from './methods';
export declare namespace IBaseService {
    type ResultOf<T> = import('@graphql-typed-document-node/core').ResultOf<T>;
    type VariablesOf<T> = import('@graphql-typed-document-node/core').VariablesOf<T>;
    type MutationHookOption<T extends TypedDocumentNode> = import('@apollo/client').MutationHookOptions<ResultOf<T>, VariablesOf<T>>;
    type MutationOptions<T extends TypedDocumentNode> = import('@apollo/client').MutationOptions<ResultOf<T>, VariablesOf<T>>;
    type MutationOptionsWithoutMutation<T extends TypedDocumentNode> = Omit<MutationOptions<T>, 'mutation'>;
    type QueryHookOption<T extends TypedDocumentNode> = import('@apollo/client').QueryHookOptions<ResultOf<T>, VariablesOf<T>>;
    type CanBeMovedCallback<T = unknown> = (data?: {
        newModel?: T;
        oldModel?: T;
    }) => void | boolean;
    type CacheUpdateOptions<T> = T & {
        cacheUpdateOptions?: {
            canBeMoved?: CanBeMovedCallback<unknown>;
            enabled?: boolean;
        };
    };
    type QueryOptions<T extends TypedDocumentNode> = import('@apollo/client').QueryOptions<VariablesOf<T>, ResultOf<T>>;
    type QueryOptionsWithoutQuery<T extends TypedDocumentNode> = Omit<QueryOptions<T>, 'query'>;
    type Relationship<HasManyModels extends IMethods.Relationship.HasManyModels> = {
        hasMany?: {
            documents: Partial<Record<keyof HasManyModels, IMethods.Relationship.HasManyDocumentNode>>;
        };
        hasOne?: {
            keys: Readonly<string[]>;
        };
    };
}
