export type SpecRole = 'developer' | 'tech_lead' | 'qa' | 'product_owner' | 'admin';
export type WorkflowSpecStatus = 'draft' | 'review' | 'approved' | 'implementing' | 'done' | 'discarded';
export type WorkflowTransition = `${WorkflowSpecStatus}->${WorkflowSpecStatus}`;
export interface CheckpointPolicy {
    id: string;
    transition: WorkflowTransition;
    requiredRole: SpecRole;
    autoApproveAfterHours?: number;
    description: string;
}
export interface CheckpointPolicyPreset {
    name: 'strict' | 'balanced' | 'relaxed';
    description: string;
    policies: Omit<CheckpointPolicy, 'id'>[];
}
export interface WorkflowCheckpoint {
    id: string;
    specId: string;
    projectId: string;
    policyId: string;
    blockingTransition: WorkflowTransition;
    requiredRole: SpecRole;
    requestedBy: string;
    requestedAt: string;
    status: 'pending' | 'approved' | 'rejected';
    resolvedBy?: string;
    resolvedAt?: string;
    rejectionReason?: string;
    autoApproveAt?: string;
}
export interface WorkflowCheckpointConfig {
    policies: CheckpointPolicy[];
    activePreset?: 'strict' | 'balanced' | 'relaxed' | 'custom';
}
export interface ConfigureCheckpointPolicyInput {
    projectPath: string;
    preset?: 'strict' | 'balanced' | 'relaxed';
    policies?: {
        transition: string;
        requiredRole: string;
        description: string;
        autoApproveAfterHours?: number;
    }[];
}
export interface RequireCheckpointInput {
    projectPath: string;
    specId: string;
    transition: string;
    requestedBy?: string;
}
export interface ApproveCheckpointInput {
    projectPath: string;
    checkpointId: string;
    approvedBy?: string;
}
export interface RejectCheckpointInput {
    projectPath: string;
    checkpointId: string;
    rejectedBy?: string;
    reason: string;
}
export interface ListPendingCheckpointsInput {
    projectPath: string;
    role?: string;
}
//# sourceMappingURL=workflow-checkpoint.d.ts.map