import type { BoardRegistry } from '../../boards/index.js'; import type { FactoryProjectsStorage } from '../../storage/domains/projects/base.js'; import type { WorkItemsStorage } from '../../storage/domains/work-items/base.js'; import type { IntegrationContext } from '../base.js'; import type { JiraEventRules } from './default-rules.js'; export interface JiraIssueIngress { /** Stable issue reference — direct Jira id or the Platform-encoded issue reference. */ id: string; identifier: string; title: string; url: string; state: string; stateType: string; priorityLabel: string; assignee: string | null; /** Display name of the Jira reporter, when available. */ author: string | null; /** Jira project key the issue belongs to, when available. */ project: string | null; /** Jira site host the issue was read from, when available. */ site: string | null; labels: string[]; createdAt: string; updatedAt: string; /** Jira source the issue was read from; resolves the bound board via `intakeBoards`. */ sourceId?: string | null; } export interface JiraRulesOptions { projects: Pick; storage: WorkItemsStorage; configVersion: string; boards: BoardRegistry; jiraRules: JiraEventRules; } export interface JiraRulesIngress { orgId: string; userId: string; factoryProjectId: string; issues: JiraIssueIngress[]; /** Board id per bound Jira source id, from the project's intake bindings. */ intakeBoards?: Readonly>; } type IngressStatus = 'committed' | 'replayed' | 'missing'; export declare class JiraRules { #private; private readonly options; constructor(options: JiraRulesOptions); ingest(input: JiraRulesIngress): Promise<{ status: IngressStatus; ingested: number; }>; } export declare function attachJiraRules(jira: { readonly rules: JiraEventRules; }, context: IntegrationContext): ((input: JiraRulesIngress) => Promise) | undefined; export {}; //# sourceMappingURL=rules.d.ts.map