import type { PolicySubject, ProjectPolicySnapshot, ProjectRoleBindingRecord, } from '../domain/projectPolicy'; export interface AppendProjectRoleBindingCommand { expectedCurrentVersion: number; binding: ProjectRoleBindingRecord; } export interface AppendProjectRoleBindingResult { status: 'inserted' | 'existing'; binding: Readonly; } export interface ProjectPolicyRepository { resolve( projectId: string, subject: Readonly, ): Promise | null>; append( command: AppendProjectRoleBindingCommand, ): Promise; }