import type { IAccessStore, IProjectRoleUsage, IRole, IRoleWithProject, IUserPermission, IUserRole, IUserWithProjectRoles } from '../../lib/types/stores/access-store.js';
import type { IPermission } from '../../lib/types/model.js';
import { type IRoleStore, type IUserAccessOverview } from '../../lib/types/index.js';
import type { PermissionRef } from '../../lib/services/access-service.js';
export type FakeAccessStoreConfig = Partial<{
    availablePermissions: IPermission[];
}>;
export declare class FakeAccessStore implements IAccessStore {
    fakeRolesStore: IRoleStore;
    userToRoleMap: Map<number, number>;
    rolePermissions: Map<number, IPermission[]>;
    availablePermissions: IPermission[];
    constructor(roleStore?: IRoleStore, config?: FakeAccessStoreConfig);
    getProjectUserAndGroupCountsForRole(_roleId: number): Promise<IProjectRoleUsage[]>;
    getAllProjectRolesForUser(_userId: number, _project: string): Promise<IRoleWithProject[]>;
    addAccessToProject(_roles: number[], _groups: number[], _users: number[], _projectId: string, _createdBy: string): Promise<void>;
    addGroupToRole(_groupId: number, _roleId: number, _created_by: string, _projectId?: string): Promise<void>;
    updateUserProjectRole(_userId: number, _roleId: number, _projectId: string): Promise<void>;
    removeUserFromRole(_userId: number, _roleId: number, _projectId: string): Promise<void>;
    wipePermissionsFromRole(_role_id: number): Promise<void>;
    unlinkUserRoles(_userId: number): Promise<void>;
    getRoleByName(_name: string): Promise<IRole>;
    getProjectUsersForRole(_roleId: number, _projectId?: string): Promise<IUserRole[]>;
    getProjectUsers(_projectId?: string): Promise<IUserWithProjectRoles[]>;
    getProjectRoles(): Promise<IRole[]>;
    addEnvironmentPermissionsToRole(_role_id: number, _permissions: PermissionRef[]): Promise<void>;
    getAvailablePermissions(): Promise<IPermission[]>;
    getPermissionsForUser(_userId: Number): Promise<IUserPermission[]>;
    getPermissionsForRole(roleId: number): Promise<IPermission[]>;
    getRoles(): Promise<IRole[]>;
    getRoleWithId(_id: number): Promise<IRole>;
    getRolesForProject(_projectId: string): Promise<IRole[]>;
    removeRolesForProject(_projectId: string): Promise<void>;
    getRolesForUserId(userId: number): Promise<IRoleWithProject[]>;
    getUserIdsForRole(_roleId: number, _projectId: string): Promise<number[]>;
    getGroupIdsForRole(_roleId: number, _projectId?: string): Promise<number[]>;
    addUserToRole(userId: number, roleId: number): Promise<void>;
    addPermissionsToRole(role_id: number, permissions: PermissionRef[], environment?: string): Promise<void>;
    removePermissionFromRole(_roleId: number, _permission: string, _projectId?: string): Promise<void>;
    getRootRoleForAllUsers(): Promise<IUserRole[]>;
    delete(_key: number): Promise<void>;
    deleteAll(): Promise<void>;
    destroy(): void;
    exists(_key: number): Promise<boolean>;
    get(_key: number): Promise<IRole>;
    getAll(): Promise<IRole[]>;
    getRootRoles(): Promise<IRole[]>;
    removeRolesOfTypeForUser(_userId: number, _roleTypes: string[]): Promise<void>;
    cloneEnvironmentPermissions(_sourceEnvironment: string, _destinationEnvironment: string): Promise<void>;
    clearUserPersonalAccessTokens(_userId: number): Promise<void>;
    unlinkUserGroups(_userId: number): Promise<void>;
    clearPublicSignupUserTokens(_userId: number): Promise<void>;
    getProjectRolesForGroup(_projectId: string, _groupId: number): Promise<number[]>;
    getProjectRolesForUser(_projectId: string, _userId: number): Promise<number[]>;
    setProjectRolesForGroup(_projectId: string, _groupId: number, _roles: number[], _createdBy: string): Promise<void>;
    setProjectRolesForUser(_projectId: string, _userId: number, _roles: number[]): Promise<void>;
    removeUserAccess(_projectId: string, _userId: number): Promise<void>;
    removeGroupAccess(_projectId: string, _groupId: number): Promise<void>;
    getUserAccessOverview(): Promise<IUserAccessOverview[]>;
    getRootRoleForUser(userId: number): Promise<IRole | undefined>;
}
export default FakeAccessStore;
//# sourceMappingURL=fake-access-store.d.ts.map