export interface Repository {
    name: string;
    implementation_status: 'not_started' | 'in_progress' | 'completed' | 'blocked';
    branch?: string;
    pr_url?: string;
    notes?: string;
}
export interface ProductRequirement {
    id: string;
    name: string;
    type: 'functional' | 'non-functional' | 'business' | 'technical' | 'user-interface' | 'security' | 'performance';
    description: string;
    acceptance_criteria?: string[];
    priority?: 'low' | 'medium' | 'high' | 'critical';
    status?: 'draft' | 'approved' | 'in_development' | 'implemented' | 'deprecated';
    repositories?: Repository[];
    related_stories?: string[];
    tags?: string[];
    created_at: string;
    updated_at: string;
    created_by?: string;
    approved_by?: string;
    approved_at?: string;
    version?: number;
    parent_requirement_id?: string;
    child_requirement_ids?: string[];
    dependencies?: string[];
    business_value?: string;
    technical_notes?: string;
    test_criteria?: string[];
    compliance_requirements?: string[];
    estimated_effort?: string;
    actual_effort?: string;
    target_release?: string;
    documentation_links?: string[];
}
export interface CreateRequirementOptions {
    name: string;
    type: ProductRequirement['type'];
    description: string;
    acceptance_criteria?: string[];
    priority?: ProductRequirement['priority'];
    status?: ProductRequirement['status'];
    repositories?: Repository[];
    related_stories?: string[];
    tags?: string[];
    business_value?: string;
    technical_notes?: string;
    test_criteria?: string[];
    compliance_requirements?: string[];
    estimated_effort?: string;
    target_release?: string;
    parent_requirement_id?: string;
}
export interface UpdateRequirementOptions {
    id: string;
    name?: string;
    type?: ProductRequirement['type'];
    description?: string;
    acceptance_criteria?: string[];
    priority?: ProductRequirement['priority'];
    status?: ProductRequirement['status'];
    repositories?: Repository[];
    tags?: string[];
    business_value?: string;
    technical_notes?: string;
    test_criteria?: string[];
    compliance_requirements?: string[];
    estimated_effort?: string;
    actual_effort?: string;
    target_release?: string;
    documentation_links?: string[];
}
export interface RequirementFilter {
    type?: ProductRequirement['type'];
    status?: ProductRequirement['status'];
    priority?: ProductRequirement['priority'];
    repository?: string;
    tag?: string;
    parent_id?: string;
    has_stories?: boolean;
    implementation_status?: Repository['implementation_status'];
}
export interface RequirementSearchOptions {
    query: string;
    search_in?: ('name' | 'description' | 'acceptance_criteria' | 'tags')[];
    filter?: RequirementFilter;
    limit?: number;
    offset?: number;
}
export interface RequirementStoryLink {
    requirement_id: string;
    story_id: string;
    link_type?: 'implements' | 'relates_to' | 'depends_on';
    notes?: string;
    created_at: string;
}
export interface RequirementsReport {
    summary: {
        total_requirements: number;
        by_type: Record<ProductRequirement['type'], number>;
        by_status: Record<ProductRequirement['status'], number>;
        by_priority: Record<ProductRequirement['priority'], number>;
        implementation_progress: {
            not_started: number;
            in_progress: number;
            completed: number;
            blocked: number;
        };
    };
    requirements: ProductRequirement[];
    generated_at: string;
    format: 'json' | 'markdown' | 'html';
}
export interface ImplementationStatusUpdate {
    requirement_id: string;
    repository_name: string;
    status: Repository['implementation_status'];
    branch?: string;
    pr_url?: string;
    notes?: string;
}
export interface RequirementValidation {
    is_valid: boolean;
    errors: string[];
    warnings: string[];
}
export interface RequirementDependencyGraph {
    nodes: Array<{
        id: string;
        name: string;
        type: ProductRequirement['type'];
        status: ProductRequirement['status'];
    }>;
    edges: Array<{
        from: string;
        to: string;
        type: 'parent_child' | 'dependency' | 'related';
    }>;
}
export interface RequirementChange {
    requirement_id: string;
    field: string;
    old_value: any;
    new_value: any;
    changed_by: string;
    changed_at: string;
    reason?: string;
}
export interface RequirementMetrics {
    requirement_id: string;
    coverage_percentage: number;
    story_count: number;
    implementation_percentage: number;
    days_in_current_status: number;
    average_implementation_time?: number;
    blocker_count: number;
    change_frequency: number;
}
export interface BulkOperationResult {
    successful: string[];
    failed: Array<{
        id: string;
        error: string;
    }>;
    total: number;
}
export interface RequirementTemplate {
    id: string;
    name: string;
    type: ProductRequirement['type'];
    description_template: string;
    acceptance_criteria_template: string[];
    test_criteria_template: string[];
    tags: string[];
}
//# sourceMappingURL=types.d.ts.map