import type { CreateGroupParams, CreateRoleParams, CreateUserParams, GetProfileParams, Group, GroupKey, LoginParams, LoginResult, ModifyProfileParams, Role, RoleKey, User, UserKey, UserWithProfile } from '@enonic-types/lib-auth';
import type { Server } from '../implementation/Server';
export declare class LibAuth {
    readonly server: Server;
    constructor({ server }: {
        server: Server;
    });
    addMembers(principalKey: GroupKey | RoleKey, members: (UserKey | GroupKey)[]): void;
    createGroup(params: CreateGroupParams): Group;
    getMembers(principalKey: GroupKey | RoleKey): (User | Group)[];
    getMemberships(principalKey: UserKey | GroupKey, transitive?: boolean): (Group | Role)[];
    createRole(params: CreateRoleParams): Role;
    createUser(params: CreateUserParams): User;
    getPrincipal(userKey: UserKey): User | null;
    getPrincipal(groupKey: GroupKey): Group | null;
    getPrincipal(roleKey: RoleKey): Role | null;
    getProfile<Profile extends Record<string, unknown> = Record<string, unknown>>(params: GetProfileParams): Profile | null;
    getUser(params?: {
        includeProfile?: false;
    }): User | null;
    getUser<Profile extends Record<string, unknown> = Record<string, unknown>>(params: {
        includeProfile: true;
    }): UserWithProfile<Profile> | null;
    login(params: LoginParams): LoginResult;
    logout(): void;
    modifyProfile<Profile extends Record<string, unknown> = Record<string, unknown>>(params: ModifyProfileParams<Profile>): Profile | null;
    removeMembers(principalKey: GroupKey | RoleKey, members: (UserKey | GroupKey)[]): void;
}
