import { access, ontology, Synnax } from '@synnaxlabs/client';
import { policy } from './policy/aether';
import { role } from './role/aether';
import { Flux } from '../flux';
export interface PermissionsQuery {
    subject?: ontology.ID;
    objects: ontology.ID | ontology.ID[];
    action: access.Action;
}
export interface FluxSubStore extends role.FluxSubStore, policy.FluxSubStore {
}
export interface IsGrantedParams {
    store: FluxSubStore;
    client: Synnax | null;
    query: PermissionsQuery;
}
export declare const isGranted: ({ store, client, query: { subject, objects, action }, }: IsGrantedParams) => boolean;
export interface IsGrantedExtensionParams extends Omit<IsGrantedParams, "query"> {
}
export declare const useGranted: (query: PermissionsQuery) => boolean;
export declare const useRetrieveGranted: (id: ontology.ID | ontology.ID[]) => boolean;
export declare const useUpdateGranted: (id: ontology.ID | ontology.ID[]) => boolean;
export declare const useDeleteGranted: (id: ontology.ID | ontology.ID[]) => boolean;
export declare const useCreateGranted: (id: ontology.ID | ontology.ID[]) => boolean;
export interface GrantedParams extends Omit<IsGrantedParams, "query"> {
    id: ontology.ID | ontology.ID[];
}
export declare const viewGranted: ({ id, ...rest }: GrantedParams) => boolean;
export declare const updateGranted: ({ id, ...rest }: GrantedParams) => boolean;
export declare const deleteGranted: ({ id, ...rest }: GrantedParams) => boolean;
export declare const createGranted: ({ id, ...rest }: GrantedParams) => boolean;
export interface LoadPermissionsQuery {
    subject?: ontology.ID;
}
export declare const useLoadPermissions: Flux.UseRetrieve<LoadPermissionsQuery, import('@synnaxlabs/client/dist/src/access/policy/payload').Policy[]>;
//# sourceMappingURL=queries.d.ts.map