import type { Db } from "@rudderhq/db";
import { instanceSettingsService } from "./instance-settings.js";
type IssueCommentAttachmentMethodContext = {
    db: Db;
    instanceSettings: ReturnType<typeof instanceSettingsService>;
    redactIssueComment: <T extends {
        body: string;
    }>(comment: T, censorUsernameInLogs: boolean) => T;
};
export declare function createIssueCommentAttachmentMethods(ctx: IssueCommentAttachmentMethodContext): {
    findMentionedAgents: (orgId: string, body: string) => Promise<string[]>;
    findMentionedProjectIds: (issueId: string) => Promise<string[]>;
    listComments: (issueId: string, opts?: {
        afterCommentId?: string | null;
        order?: "asc" | "desc";
        limit?: number | null;
    }) => Promise<{
        createdAt: Date;
        body: string;
        id: string;
        updatedAt: Date;
        orgId: string;
        issueId: string;
        authorAgentId: string | null;
        authorUserId: string | null;
    }[]>;
    getCommentCursor: (issueId: string) => Promise<{
        totalComments: number;
        latestCommentId: string;
        latestCommentAt: Date;
    }>;
    getComment: (commentId: string) => Promise<{
        createdAt: Date;
        body: string;
        id: string;
        updatedAt: Date;
        orgId: string;
        issueId: string;
        authorAgentId: string | null;
        authorUserId: string | null;
    } | null>;
    addComment: (issueId: string, body: string, actor: {
        agentId?: string;
        userId?: string;
    }) => Promise<{
        createdAt: Date;
        body: string;
        id: string;
        updatedAt: Date;
        orgId: string;
        issueId: string;
        authorAgentId: string | null;
        authorUserId: string | null;
    }>;
    createAttachment: (input: {
        issueId: string;
        issueCommentId?: string | null;
        usage?: string;
        provider: string;
        objectKey: string;
        contentType: string;
        byteSize: number;
        sha256: string;
        originalFilename?: string | null;
        createdByAgentId?: string | null;
        createdByUserId?: string | null;
    }) => Promise<{
        id: string;
        orgId: string;
        issueId: string;
        issueCommentId: string | null;
        assetId: string;
        usage: string;
        provider: string;
        objectKey: string;
        contentType: string;
        byteSize: number;
        sha256: string;
        originalFilename: string | null;
        createdByAgentId: string | null;
        createdByUserId: string | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    listAttachments: (issueId: string) => Promise<{
        id: string;
        orgId: string;
        issueId: string;
        issueCommentId: string | null;
        assetId: string;
        usage: string;
        provider: string;
        objectKey: string;
        contentType: string;
        byteSize: number;
        sha256: string;
        originalFilename: string | null;
        createdByAgentId: string | null;
        createdByUserId: string | null;
        createdAt: Date;
        updatedAt: Date;
    }[]>;
    getAttachmentById: (id: string) => Promise<{
        id: string;
        orgId: string;
        issueId: string;
        issueCommentId: string | null;
        assetId: string;
        usage: string;
        provider: string;
        objectKey: string;
        contentType: string;
        byteSize: number;
        sha256: string;
        originalFilename: string | null;
        createdByAgentId: string | null;
        createdByUserId: string | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    removeAttachment: (id: string) => Promise<{
        id: string;
        orgId: string;
        issueId: string;
        issueCommentId: string | null;
        assetId: string;
        usage: string;
        provider: string;
        objectKey: string;
        contentType: string;
        byteSize: number;
        sha256: string;
        originalFilename: string | null;
        createdByAgentId: string | null;
        createdByUserId: string | null;
        createdAt: Date;
        updatedAt: Date;
    } | null>;
};
export {};
//# sourceMappingURL=issues.comments-attachments.d.ts.map