import type { ImpersonationScope, CamelizeKeys, DbRow, SupportedAdminRole } from '@riverbankcms/db';
export type AdminProfileRole = CamelizeKeys<DbRow<'profile_roles'>>;
export type StartImpersonationRequest = {
    targetUserId: string;
    tenantId?: string | null;
    scope?: ImpersonationScope;
    reason?: string | null;
    metadata?: Record<string, unknown> | null;
};
export type StartImpersonationResponse = {
    sessionId: string;
    scope: ImpersonationScope;
    targetUserId: string;
    tenantId: string | null;
    expiresAt: string;
};
export type StopImpersonationRequest = {
    sessionId?: string | null;
    reason?: string | null;
};
export type StopImpersonationResponse = {
    ok: boolean;
};
export type UpsertAdminRoleRequest = {
    userId: string;
    role: SupportedAdminRole;
    tenantId?: string | null;
    reason?: string | null;
};
export type RevokeAdminRoleRequest = {
    userId: string;
    role: DbRow<'profile_roles'>['role'];
    tenantId?: string | null;
    reason?: string | null;
};
export type AdminRoleMutationResponse = {
    roles: AdminProfileRole[];
};
