import type { BoardRegistry } from '../../boards/index.js'; import type { IntakeStorage } from '../../storage/domains/intake/base.js'; import type { FactoryProjectsStorage } from '../../storage/domains/projects/base.js'; import type { SourceControlStorageHandle } from '../../storage/domains/source-control/base.js'; import type { WorkItemsStorage } from '../../storage/domains/work-items/base.js'; import type { IntegrationContext } from '../base.js'; import type { GitLabEventRules } from './default-rules.js'; import type { ParsedGitLabWebhook } from './webhook.js'; type IngressStatus = 'ignored' | 'committed' | 'replayed' | 'missing'; export interface GitLabRulesIntegration { readonly rules: GitLabEventRules; resolveActiveConnectionForHost?(storedConnectionId: string, host: string): Promise; getProjectMemberAccessLevel(connectionId: string, projectId: string, username: string): Promise; getWorkItemAuthorUsername(connectionId: string, projectId: string, kind: 'issue' | 'merge_request', iid: number): Promise; } interface GitLabRulesOptions { gitlab: GitLabRulesIntegration; sourceControl: SourceControlStorageHandle; projects: FactoryProjectsStorage; storage: WorkItemsStorage; intake: IntakeStorage; configVersion: string; boards: BoardRegistry; } export declare class GitLabRules { #private; private readonly options; constructor(options: GitLabRulesOptions); ingest(parsed: ParsedGitLabWebhook): Promise<{ status: IngressStatus; }>; } export declare function attachGitLabRules(gitlab: GitLabRulesIntegration, context: IntegrationContext): ((event: ParsedGitLabWebhook) => Promise) | undefined; export {}; //# sourceMappingURL=rules.d.ts.map