export interface AccessUser {
    id: string;
    userId: string;
    email: string;
    firstName: string;
    lastName: string;
    canManage: boolean;
}
export interface AccessRole {
    id: string;
    roleId: string;
    roleName: string;
    canManage: boolean;
}
export interface AccessApplication {
    id: string;
    applicationId: string;
    applicationCode: string;
    applicationLabel: string;
    applicationIcon: string | null;
    contextId: string;
    contextLabel: string;
}
export interface AccessModule {
    id: string;
    moduleId: string;
    moduleCode: string;
    moduleLabel: string;
    moduleIcon: string | null;
    applicationId: string;
    applicationLabel: string;
    contextId: string;
}
export interface AccessContext {
    id: string;
    contextId: string;
    contextCode: string;
    contextLabel: string;
    contextIcon: string | null;
}
export interface UseInstanceAccessReturn {
    users: AccessUser[];
    roles: AccessRole[];
    applications: AccessApplication[];
    modules: AccessModule[];
    contexts: AccessContext[];
    showAddUserModal: boolean;
    showAddRoleModal: boolean;
    showAddApplicationModal: boolean;
    showAddModuleModal: boolean;
    showAddContextModal: boolean;
    openAddUserModal: () => void;
    closeAddUserModal: () => void;
    openAddRoleModal: () => void;
    closeAddRoleModal: () => void;
    openAddApplicationModal: () => void;
    closeAddApplicationModal: () => void;
    openAddModuleModal: () => void;
    closeAddModuleModal: () => void;
    openAddContextModal: () => void;
    closeAddContextModal: () => void;
    addUser: (instanceId: string, userId: string, canManage?: boolean) => Promise<void>;
    removeUser: (instanceId: string, userId: string) => Promise<void>;
    addRole: (instanceId: string, roleId: string, canManage?: boolean) => Promise<void>;
    removeRole: (instanceId: string, roleId: string) => Promise<void>;
    addApplication: (instanceId: string, applicationId: string) => Promise<void>;
    removeApplication: (instanceId: string, applicationId: string) => Promise<void>;
    addModule: (instanceId: string, moduleId: string) => Promise<void>;
    removeModule: (instanceId: string, moduleId: string) => Promise<void>;
    addContext: (instanceId: string, contextId: string) => Promise<void>;
    removeContext: (instanceId: string, contextId: string) => Promise<void>;
    loadAccessData: (users?: AccessUser[], roles?: AccessRole[], applications?: AccessApplication[], modules?: AccessModule[], contexts?: AccessContext[]) => void;
}
export declare function useInstanceAccess(): UseInstanceAccessReturn;
//# sourceMappingURL=useInstanceAccess.d.ts.map