export type ADRStatus = 'proposed' | 'accepted' | 'rejected' | 'deprecated' | 'superseded';
export type ADRTemplate = 'nygard' | 'madr' | 'y-statement';
export interface Option {
    title: string;
    description: string;
    pros: string[];
    cons: string[];
}
export interface ProsCons {
    option: string;
    pros: string[];
    cons: string[];
}
export interface StatusChange {
    from: ADRStatus;
    to: ADRStatus;
    date: Date;
    changedBy: string;
    reason?: string;
}
export interface ADR {
    id: string;
    title: string;
    status: ADRStatus;
    date: Date;
    deciders: string[];
    template: ADRTemplate;
    context: string;
    decision: string;
    consequences: string;
    tags?: string[];
    decisionDrivers?: string[];
    consideredOptions?: Option[];
    prosAndCons?: ProsCons[];
    links?: string[];
    supersedes?: string[];
    supersededBy?: string;
    relatedTo?: string[];
    createdAt: Date;
    updatedAt: Date;
    statusHistory: StatusChange[];
}
export interface CreateADROptions {
    title: string;
    template: ADRTemplate;
    deciders: string[];
    context: string;
    decision: string;
    consequences: string;
    tags?: string[];
    decisionDrivers?: string[];
    consideredOptions?: Option[];
    prosAndCons?: ProsCons[];
    supersedes?: string[];
    relatedTo?: string[];
}
export interface UpdateADROptions {
    status?: ADRStatus;
    statusChangeReason?: string;
    statusChangedBy?: string;
    title?: string;
    consequences?: string;
    tags?: string[];
    supersedes?: string[];
    supersededBy?: string;
    relatedTo?: string[];
    decisionDrivers?: string[];
    consideredOptions?: Option[];
    prosAndCons?: ProsCons[];
}
export interface SearchADROptions {
    query?: string;
    status?: ADRStatus[];
    tags?: string[];
    template?: ADRTemplate;
    dateRange?: {
        from: Date;
        to: Date;
    };
    deciders?: string[];
}
export interface ADRMetrics {
    total: number;
    byStatus: Record<ADRStatus, number>;
    byTemplate: Record<ADRTemplate, number>;
    averageDecisionTime: number;
    mostActiveDeciders: Array<{
        name: string;
        count: number;
    }>;
    recentActivity: Array<{
        adrId: string;
        action: 'created' | 'updated' | 'status_changed';
        date: Date;
        actor?: string;
    }>;
}
export interface ADRRelationship {
    type: 'supersedes' | 'superseded-by' | 'related-to' | 'depends-on' | 'conflicts-with';
    from: string;
    to: string;
    description?: string;
}
export interface ADRIndex {
    lastUpdated: Date;
    totalADRs: number;
    adrs: Array<{
        id: string;
        title: string;
        status: ADRStatus;
        date?: Date;
        tags?: string[];
    }>;
}
export interface ADRValidationResult {
    valid: boolean;
    errors: string[];
}
export interface ADRReferenceError {
    adrId: string;
    type: string;
    targetId: string;
    error: string;
}
export interface ADRReferenceValidation {
    valid: boolean;
    errors: ADRReferenceError[];
}
export interface ADRTemplateDefinition {
    name: ADRTemplate;
    description: string;
    fields: string[];
    requiredFields: string[];
    optionalFields: string[];
    example?: Partial<ADR>;
}
//# sourceMappingURL=types.d.ts.map