import kysely from "@calcom/kysely";
import { RoleType } from '../../../prisma/enums';
import type { PermissionString } from "../types/permission-registry";
export declare class RoleRepository {
    findRoleByName(name: string, teamId?: number): Promise<{
        name: string;
        id: string;
        type: "CUSTOM" | "SYSTEM";
        description: string | null;
        teamId: number | null;
        createdAt: Date;
        updatedAt: Date;
    } | undefined>;
    createRole(data: {
        name: string;
        description?: string;
        teamId?: number;
        type: RoleType;
    }): Promise<{
        name: string;
        id: string;
        type: import('../../../prisma-client').$Enums.RoleType;
        description: string | null;
        teamId: number | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    createRolePermissions(roleId: string, permissions: PermissionString[]): Promise<import('../../../prisma-client/runtime/library').GetBatchResult>;
    findRoleWithPermissions(roleId: string): Promise<{
        id: string;
        name: string;
        type: "CUSTOM" | "SYSTEM";
        description: string | null;
        teamId: number | null;
        createdAt: Date;
        updatedAt: Date;
        permissions: {
            id: string;
            action: string;
            resource: string;
        }[];
    } | undefined>;
    findTeamRoles(teamId: number): Promise<{
        id: string;
        name: string;
        type: "CUSTOM" | "SYSTEM";
        description: string | null;
        teamId: number | null;
        createdAt: Date;
        updatedAt: Date;
        permissions: {
            id: string;
            action: string;
            resource: string;
        }[];
    }[]>;
    deleteRolePermissions(roleId: string): Promise<import("kysely").DeleteResult[]>;
    deleteRole(roleId: string): Promise<{
        name: string;
        id: string;
        type: "CUSTOM" | "SYSTEM";
        description: string | null;
        teamId: number | null;
        createdAt: Date;
        updatedAt: Date;
    } | undefined>;
    updateMembershipRole(membershipId: number, roleId: string | null): Promise<{
        id: number;
        role: import("@calcom/kysely/types").MembershipRole;
        userId: number;
        teamId: number;
        createdAt: Date | null;
        updatedAt: Date | null;
        disableImpersonation: boolean;
        accepted: boolean;
        customRoleId: string | null;
    }>;
    transaction<T>(callback: (trx: typeof kysely) => Promise<T>): Promise<T>;
}
//# sourceMappingURL=role.repository.d.ts.map