/**
 * External Issue Fetcher Port Interface
 *
 * Output port for fetching issues/tickets from external systems (GitHub, Jira).
 * Returns a normalized ExternalIssue that can be appended to feature context.
 *
 * Following Clean Architecture:
 * - Application layer depends on this interface
 * - Infrastructure layer provides concrete implementations
 */
/**
 * Normalized issue representation from any external source.
 */
export interface ExternalIssue {
    title: string;
    description: string;
    labels: string[];
    url: string;
    source: 'github' | 'jira';
}
/**
 * Service interface for fetching issues from external systems.
 */
export interface IExternalIssueFetcher {
    /**
     * Fetch a GitHub issue by reference.
     * Supports formats: owner/repo#123 or #123 (uses current repo).
     *
     * @param ref - GitHub issue reference (e.g., "owner/repo#42" or "#42")
     * @returns Normalized external issue
     * @throws IssueNotFoundError if issue doesn't exist
     * @throws IssueServiceUnavailableError if gh CLI is not installed
     */
    fetchGitHubIssue(ref: string): Promise<ExternalIssue>;
    /**
     * Fetch a Jira ticket by key.
     *
     * @param key - Jira ticket key (e.g., "PROJ-123")
     * @returns Normalized external issue
     * @throws IssueNotFoundError if ticket doesn't exist
     * @throws IssueAuthenticationError if credentials are invalid
     */
    fetchJiraTicket(key: string): Promise<ExternalIssue>;
}
/**
 * Base error for issue fetcher failures.
 */
export declare class IssueFetcherError extends Error {
    constructor(message: string);
}
/**
 * Thrown when the requested issue/ticket is not found.
 */
export declare class IssueNotFoundError extends IssueFetcherError {
    constructor(message: string);
}
/**
 * Thrown when authentication to the external service fails.
 */
export declare class IssueAuthenticationError extends IssueFetcherError {
    constructor(message: string);
}
/**
 * Thrown when the external service is unavailable (e.g., gh CLI not installed).
 */
export declare class IssueServiceUnavailableError extends IssueFetcherError {
    constructor(message: string);
}
//# sourceMappingURL=external-issue-fetcher.interface.d.ts.map