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 { LinearEventRules } from './default-rules.js'; export interface LinearIssueIngress { id: string; identifier: string; title: string; url: string; state: string; stateType: string; priorityLabel: string; assignee: string | null; /** Display name of the Linear user who created the issue, when available. */ creator: string | null; team: string | null; labels: string[]; createdAt: string; updatedAt: string; /** Linear project the issue was read from; resolves the bound board via `intakeBoards`. */ sourceId?: string | null; } export interface LinearRulesOptions { projects: Pick; storage: WorkItemsStorage; configVersion: string; boards: BoardRegistry; linearRules: LinearEventRules; } export interface LinearRulesIngress { orgId: string; userId: string; factoryProjectId: string; issues: LinearIssueIngress[]; /** Board id per bound Linear source id, from the project's intake bindings. */ intakeBoards?: Readonly>; } type IngressStatus = 'committed' | 'replayed' | 'missing'; export declare class LinearRules { #private; private readonly options; constructor(options: LinearRulesOptions); ingest(input: LinearRulesIngress): Promise<{ status: IngressStatus; ingested: number; }>; } export declare function attachLinearRules(linear: { readonly rules: LinearEventRules; }, context: IntegrationContext): ((input: LinearRulesIngress) => Promise) | undefined; export {}; //# sourceMappingURL=rules.d.ts.map