import type { Db } from "@rudderhq/db";
interface LinkActor {
    agentId?: string | null;
    userId?: string | null;
}
export declare function issueApprovalService(db: Db): {
    listApprovalsForIssue: (issueId: string) => Promise<{
        id: string;
        orgId: string;
        type: string;
        requestedByAgentId: string | null;
        requestedByUserId: string | null;
        status: string;
        payload: Record<string, unknown>;
        decisionNote: string | null;
        decidedByUserId: string | null;
        decidedAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
        link: {
            issueId: string;
            approvalId: string;
            linkedByAgentId: string | null;
            linkedByUserId: string | null;
            createdAt: Date;
        };
    }[]>;
    listIssuesForApproval: (approvalId: string) => Promise<{
        labels: {
            createdAt: Date;
            id: string;
            name: string;
            updatedAt: Date;
            orgId: string;
            color: string;
        }[];
        labelIds: string[];
        id: string;
        orgId: string;
        projectId: string | null;
        goalId: string | null;
        parentId: string | null;
        title: string;
        description: string | null;
        status: string;
        priority: string;
        assigneeAgentId: string | null;
        assigneeUserId: string | null;
        createdByAgentId: string | null;
        createdByUserId: string | null;
        issueNumber: number | null;
        identifier: string | null;
        requestDepth: number;
        billingCode: string | null;
        startedAt: Date | null;
        completedAt: Date | null;
        cancelledAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }[]>;
    link: (issueId: string, approvalId: string, actor?: LinkActor) => Promise<{
        createdAt: Date;
        orgId: string;
        issueId: string;
        approvalId: string;
        linkedByAgentId: string | null;
        linkedByUserId: string | null;
    }>;
    unlink: (issueId: string, approvalId: string) => Promise<void>;
    linkManyForApproval: (approvalId: string, issueIds: string[], actor?: LinkActor) => Promise<{
        createdAt: Date;
        orgId: string;
        issueId: string;
        approvalId: string;
        linkedByAgentId: string | null;
        linkedByUserId: string | null;
    }[]>;
};
export {};
//# sourceMappingURL=issue-approvals.d.ts.map