/**
 * External Items Dashboard - Type Definitions
 *
 * OPTIMIZED FOR SCALE: Supports 1000+ items across projects
 *
 * Three-tier architecture:
 * 1. COUNTS - For status/progress (super fast, 30min cache)
 * 2. SUMMARY - By project breakdown (medium, 15min cache)
 * 3. DETAILS - Paginated items on-demand (filtered, no cache)
 */
export type ExternalProvider = 'github' | 'jira' | 'ado';
export interface ProviderCounts {
    configured: boolean;
    total: number;
    error?: string;
}
export interface ExternalItemsCounts {
    github: ProviderCounts;
    jira: ProviderCounts;
    ado: ProviderCounts;
    grandTotal: number;
    lastUpdated: string;
}
export interface ProjectCounts {
    github: number;
    jira: number;
    ado: number;
    total: number;
}
export interface ExternalItemsSummary {
    github: ProviderCounts;
    jira: ProviderCounts;
    ado: ProviderCounts;
    byProject: Record<string, ProjectCounts>;
    grandTotal: number;
    lastUpdated: string;
}
export interface ExternalItem {
    id: string;
    title: string;
    url: string;
    createdAt: string;
    age: number;
    labels: string[];
    provider: ExternalProvider;
    project?: string;
    board?: string;
    state: string;
    isStale: boolean;
}
export interface PaginatedItemsResult {
    items: ExternalItem[];
    total: number;
    page: number;
    pageSize: number;
    totalPages: number;
    hasMore: boolean;
}
export interface ItemsFilter {
    provider?: ExternalProvider;
    project?: string;
    board?: string;
    staleOnly?: boolean;
    limit?: number;
    offset?: number;
}
export interface ExternalItemsProvider {
    getProviderName(): ExternalProvider;
    isConfigured(): Promise<boolean>;
    getOpenCount(): Promise<number>;
    getOpenItems(filter?: ItemsFilter): Promise<PaginatedItemsResult>;
}
export declare const STALE_THRESHOLD_DAYS = 7;
export declare const COUNTS_CACHE_TTL_MS: number;
export declare const SUMMARY_CACHE_TTL_MS: number;
export declare const DEFAULT_PAGE_SIZE = 20;
export declare const MAX_PAGE_SIZE = 100;
export declare const MS_PER_DAY: number;
/**
 * Calculate age in days from a date string
 */
export declare function calculateAgeDays(createdAt: string): number;
/**
 * Create an empty paginated result
 */
export declare function emptyPaginatedResult(page: number, pageSize: number): PaginatedItemsResult;
/**
 * Filter items by stale status if requested
 */
export declare function filterByStale(items: ExternalItem[], staleOnly?: boolean): ExternalItem[];
//# sourceMappingURL=types.d.ts.map