import { type IssueEnvelope, type NormalizedIssueEnvelope } from './types.js';
export interface LinearAdapterConfig {
    apiKey?: string;
    team?: string;
    apiUrl?: string;
}
/**
 * Normalize a raw Linear API issue node into a canonical IssueEnvelope.
 */
export declare function normalizeLinearIssue(rawIssue: unknown): IssueEnvelope;
/**
 * Normalize a raw Linear issue into a PMO-ready NormalizedIssueEnvelope.
 */
export declare function normalizeLinearIssueToEnvelope(rawIssue: unknown): NormalizedIssueEnvelope;
/**
 * Build a PMO ticket description from a NormalizedIssueEnvelope.
 */
export declare function buildLinearTicketDescription(envelope: NormalizedIssueEnvelope): string;
/**
 * Build ticket metadata from a NormalizedIssueEnvelope for traceability.
 */
export declare function buildLinearMetadata(envelope: NormalizedIssueEnvelope): Record<string, string>;
/**
 * Build a spawn context message from a NormalizedIssueEnvelope.
 */
export declare function buildLinearSpawnContextMessage(envelope: NormalizedIssueEnvelope, additionalMessage?: string): string;
/**
 * Build a CLI command string for selecting a specific Linear issue.
 */
export declare function buildLinearIssueChoiceCommand(issueIdentifier: string, projectId?: string): string;
/**
 * Fetch a single Linear issue by identifier (for example, ENG-123) and normalize it.
 */
export declare function getLinearIssueByIdentifier(configInput: LinearAdapterConfig, identifier: string, options?: {
    fetchImpl?: typeof fetch;
}): Promise<NormalizedIssueEnvelope | null>;
/**
 * Fetch and normalize Linear issues into NormalizedIssueEnvelopes.
 */
export declare function listLinearIssues(configInput: LinearAdapterConfig, options?: {
    limit?: number;
    fetchImpl?: typeof fetch;
}): Promise<NormalizedIssueEnvelope[]>;
