import type { TicketService } from '../services/interfaces/TicketService.js';
import type { GitService } from '../services/interfaces/GitService.js';
import type { ProjectAnalyzer } from '../services/interfaces/ProjectAnalyzer.js';
export interface Ticket {
    id: string;
    title: string;
    status: 'todo' | 'doing' | 'done';
    priority: 'low' | 'medium' | 'high' | 'critical';
    created: string;
    updated: string;
    started?: string;
    completed?: string;
    assignee?: string;
    labels: string[];
    description?: string;
    location?: {
        type: 'local' | 'github';
        path?: string;
        url?: string;
        apiUrl?: string;
    };
}
export interface CreateTicketOptions {
    priority?: 'low' | 'medium' | 'high' | 'critical';
    assignee?: string;
    labels?: string[];
    status?: 'todo' | 'doing' | 'done';
    description?: string;
    acceptanceCriteria?: string[];
    technicalRequirements?: string[];
}
export interface TicketConfig {
    backend: string;
    path: string;
    numbering: {
        format: string;
        increment: number;
        next: number;
    };
    templates: Record<string, string>;
    labels: {
        priority: string[];
        type: string[];
        status: string[];
    };
}
export interface CLIResult {
    success: boolean;
    message: string;
    data?: unknown;
    exitCode?: number;
}
export interface CreateTicketArgs {
    title: string;
    priority?: 'low' | 'medium' | 'high' | 'critical';
    assignee?: string;
    labels?: string[];
}
export interface Services {
    ticketService: TicketService;
    gitService?: GitService;
    projectAnalyzer?: ProjectAnalyzer;
}
export interface ListTicketsArgs {
    status?: 'todo' | 'doing' | 'done';
    priority?: 'low' | 'medium' | 'high' | 'critical';
    assignee?: string;
}
export interface ShowTicketArgs {
    id: string;
}
export interface StartTicketArgs {
    id: string;
}
export interface CompleteTicketArgs {
    id: string;
}
export interface UndoTicketArgs {
    id: string;
    dryRun?: boolean;
}
export interface DeleteTicketArgs {
    id: string;
    dryRun?: boolean;
}
export interface MigrateArgs {
    from: 'local' | 'github';
    to: 'local' | 'github';
    owner?: string;
    repo?: string;
    validate?: boolean;
    dryRun?: boolean;
    tickets?: string;
}
export interface BackendConfig {
    backend: 'local' | 'github';
    local?: {
        path: string;
    };
    github?: {
        owner: string;
        repo: string;
        useGhCli?: boolean;
        labels?: {
            todo?: string;
            doing?: string;
            done?: string;
        };
    };
}
