import type { GitHubPullRequestEvent } from '../../../../../modules/platform-integration/entities/github/githubPullRequestEvent.guard.js';
import type { GitLabMergeRequestEvent } from '../../../../../modules/platform-integration/entities/gitlab/gitlabMergeRequestEvent.guard.js';
import type { GitLabNoteEvent } from '../../../../../modules/platform-integration/entities/gitlab/gitlabNoteEvent.guard.js';
import type { GitHubIssueCommentEvent } from '../../../../../modules/platform-integration/entities/github/githubIssueCommentEvent.guard.js';
import type { GitHubPullRequestReviewEvent } from '../../../../../modules/platform-integration/entities/github/githubPullRequestReviewEvent.guard.js';
export type { GitHubPullRequestEvent, GitLabMergeRequestEvent };
export declare const REVIEW_TRIGGER_LABEL = "needs-review";
export type FilterResult = {
    shouldProcess: false;
    reason: string;
} | {
    shouldProcess: true;
    reason: string;
    mergeRequestNumber: number;
    projectPath: string;
    mergeRequestUrl: string;
    sourceBranch: string;
    targetBranch: string;
    isFollowup?: boolean;
};
export type NoteFilterResult = {
    shouldProcess: false;
    reason: string;
} | {
    shouldProcess: true;
    reason: string;
    mergeRequestNumber: number;
    projectPath: string;
    commentBody: string;
    authorUsername: string;
};
export declare function filterGitLabNoteEvent(event: GitLabNoteEvent): NoteFilterResult;
export declare function filterGitHubIssueCommentEvent(event: GitHubIssueCommentEvent): NoteFilterResult;
export type PullRequestReviewFilterResult = {
    shouldProcess: false;
    reason: string;
} | {
    shouldProcess: true;
    reason: string;
    mergeRequestNumber: number;
    projectPath: string;
    reviewId: number;
    reviewerLogin: string;
};
export declare function filterGitHubPullRequestReviewEvent(event: GitHubPullRequestReviewEvent): PullRequestReviewFilterResult;
export interface GitLabPushEvent {
    object_kind: 'push';
    ref: string;
    project: {
        id: number;
        path_with_namespace: string;
        web_url: string;
    };
    commits: Array<{
        id: string;
        message: string;
    }>;
}
/**
 * Filter GitLab MR events
 * Returns true if we should trigger a review
 */
export declare function filterGitLabEvent(event: GitLabMergeRequestEvent): FilterResult;
/**
 * Check if a GitLab MR event is an update that might need a followup review
 * This is called for MRs that are not initial review requests but may have new commits
 */
export declare function filterGitLabMrUpdate(event: GitLabMergeRequestEvent): FilterResult;
/**
 * Check if a GitLab MR was closed (not merged)
 * Returns info to clean up tracking
 */
export declare function filterGitLabMrClose(event: GitLabMergeRequestEvent): FilterResult;
/**
 * Check if a GitLab MR was merged
 * Returns info to update tracking status
 */
export declare function filterGitLabMrMerge(event: GitLabMergeRequestEvent): FilterResult;
/**
 * Check if a GitLab MR was approved
 * Returns info to update tracking status
 */
export declare function filterGitLabMrApprove(event: GitLabMergeRequestEvent): FilterResult;
/**
 * Filter GitHub PR events
 * Returns true if we should trigger a review
 */
export declare function filterGitHubEvent(event: GitHubPullRequestEvent): FilterResult;
/**
 * Check if a GitHub PR was closed (not merged)
 * Returns info to clean up tracking
 */
export declare function filterGitHubPrClose(event: GitHubPullRequestEvent): FilterResult;
/**
 * Check if a GitHub PR was updated by a push (synchronize) that might need a followup review
 * Mirrors filterGitLabMrUpdate for parity between platforms
 */
export declare function filterGitHubPrUpdate(event: GitHubPullRequestEvent): FilterResult;
/**
 * Filter GitHub PR label events
 * Returns true if the "needs-review" label was added
 */
export declare function filterGitHubLabelEvent(event: GitHubPullRequestEvent): FilterResult;
//# sourceMappingURL=eventFilter.d.ts.map