import { ontology } from '@synnaxlabs/client';
import { Flux } from '../flux';
import { List } from '../list';
import { FluxSubStore } from './aether/queries';
export declare const useResourceSetSynchronizer: (onSet: (resource: ontology.Resource) => void) => void;
export declare const useResourceDeleteSynchronizer: (onDelete: (id: ontology.ID) => void) => void;
export declare const useRelationshipSetSynchronizer: (onSet: (relationship: ontology.Relationship) => void) => void;
export declare const useRelationshipDeleteSynchronizer: (onDelete: (relationship: ontology.Relationship) => void) => void;
interface DependentQuery extends List.PagerParams {
    id?: ontology.ID;
}
export declare const createDependentsListHook: (direction: ontology.RelationshipDirection, name: string) => Flux.UseList<DependentQuery, string, ontology.Resource<import('node_modules/@synnaxlabs/x/dist/src/record/record').Unknown>>;
export declare const useListChildren: Flux.UseList<DependentQuery, string, ontology.Resource<import('node_modules/@synnaxlabs/x/dist/src/record/record').Unknown>>;
export interface ListQuery extends ontology.RetrieveRequest {
}
export declare const useResourceList: Flux.UseList<ListQuery, string, ontology.Resource<import('node_modules/@synnaxlabs/x/dist/src/record/record').Unknown>>;
export declare const retrieveCachedParentID: (store: FluxSubStore, id: ontology.ID) => ontology.ID | null;
export interface RetrieveParentIDQuery {
    id: ontology.ID;
}
export declare const retrieveParentID: ({ client, query: { id }, store, }: Flux.RetrieveParams<RetrieveParentIDQuery, FluxSubStore>) => Promise<ontology.ID>;
export declare const filterRelationshipsThatHaveIDs: (resources: ontology.ID[]) => (rel: ontology.Relationship) => boolean;
export interface MoveChildrenParams {
    source: ontology.ID;
    destination: ontology.ID;
    ids: ontology.ID[];
}
export declare const useMoveChildren: Flux.UseUpdate<MoveChildrenParams, MoveChildrenParams, import('zod').ZodNever>;
export declare const renameFluxResource: (store: FluxSubStore, id: ontology.ID, name: string) => import('@synnaxlabs/x').Destructor;
export interface RetrieveChildrenQuery {
    id: ontology.ID;
}
export declare const useRetrieveObservableChildren: Flux.UseRetrieveObservable<RetrieveChildrenQuery, ontology.Resource<import('node_modules/@synnaxlabs/x/dist/src/record/record').Unknown>[]>;
interface RetrieveResourceQuery {
    ids: ontology.ID[];
}
export declare const useRetrieveResource: Flux.UseRetrieve<RetrieveResourceQuery, ontology.Resource<import('node_modules/@synnaxlabs/x/dist/src/record/record').Unknown>[]>, useRetrieveObservableResource: Flux.UseRetrieveObservable<RetrieveResourceQuery, ontology.Resource<import('node_modules/@synnaxlabs/x/dist/src/record/record').Unknown>[]>;
export {};
//# sourceMappingURL=queries.d.ts.map