import { SmrtObjectOptions, SmrtObject } from '@happyvertical/smrt-core'; import { ContentContributionAttachment } from './content-contribution-attachment'; import { ContentContributionChannel, ContentContributionIntakeDecision, ContentContributionStatus, ContentContributionTypeDefinition } from './content-contribution-config'; import { ContentContributionRevision } from './content-contribution-revision'; import { ContentContributor } from './content-contributor'; export interface ContentContributionAttachmentInput { filename: string; mimeType?: string | null; size?: number | null; fileKey?: string | null; sourceUri?: string | null; metadata?: Record; } export interface AppendContentContributionRevisionOptions { title?: string | null; description?: string | null; body?: string | null; channel?: ContentContributionChannel; sourceMessageId?: string | null; sourceThreadKey?: string | null; attachments?: ContentContributionAttachmentInput[]; metadata?: Record; } export interface ApproveContentContributionOptions { editorNote?: string | null; promote?: boolean; targetStatus?: 'draft' | 'review'; } export interface RejectContentContributionOptions { editorNote?: string | null; } export interface RequestChangesContentContributionOptions { editorNote?: string | null; } export interface WithdrawContentContributionOptions { reason?: string | null; } export interface PromoteContentContributionOptions { editorNote?: string | null; targetStatus?: 'draft' | 'review'; } export interface ContentContributionOptions extends SmrtObjectOptions { contributorId?: string; contributionTypeKey?: string; status?: ContentContributionStatus; intakeDecision?: ContentContributionIntakeDecision; channel?: ContentContributionChannel; title?: string | null; description?: string | null; body?: string | null; contributorEmail?: string | null; contributorName?: string | null; threadKey?: string | null; sourceMessageId?: string | null; editorNotes?: string | null; promotedContentId?: string | null; revisionCount?: number; approvedAt?: Date | null; promotedAt?: Date | null; rejectedAt?: Date | null; withdrawnAt?: Date | null; requestedChangesAt?: Date | null; metadata?: Record | string; tenantId?: string | null; createdAt?: Date; updatedAt?: Date; } export declare class ContentContribution extends SmrtObject { contributorId: string; contributionTypeKey: string; status: ContentContributionStatus; intakeDecision: ContentContributionIntakeDecision; channel: ContentContributionChannel; title: string; description: string; body: string; contributorEmail: string; contributorName: string; threadKey: string; sourceMessageId: string; editorNotes: string; promotedContentId: string; revisionCount: number; approvedAt: Date | null; promotedAt: Date | null; rejectedAt: Date | null; withdrawnAt: Date | null; requestedChangesAt: Date | null; metadata: string; tenantId: string | null; createdAt: Date; updatedAt: Date; constructor(options?: ContentContributionOptions); getMetadata(): Record; setMetadata(metadata: Record): void; protected transformJSON(json: Record): { description: string | null; body: string | null; contributorEmail: string | null; contributorName: string | null; threadKey: string | null; sourceMessageId: string | null; editorNotes: string | null; promotedContentId: string | null; metadata: Record; }; private getRevisionCollection; private getAttachmentCollection; private getContributorCollection; private getContentsCollection; private getAssetCollection; private getAssetStatusCollection; private getAssetTypeCollection; getContributor(): Promise; getRevisions(): Promise; getLatestRevision(): Promise; getAttachments(): Promise; resolveContributionType(): Promise; private ensureEditable; private createRevision; private createHeldAttachments; appendRevisionAction(options?: AppendContentContributionRevisionOptions): Promise<{ contribution: Record; revision: Record; attachments: Record[]; }>; requestChangesAction(options?: RequestChangesContentContributionOptions): Promise>; rejectAction(options?: RejectContentContributionOptions): Promise>; withdrawAction(options?: WithdrawContentContributionOptions): Promise>; approveAction(options?: ApproveContentContributionOptions): Promise<{ contribution: Record; content: Record | null; assets: { attachmentId: string | null | undefined; assetId: string; }[]; } | { contribution: Record; content: Record; assets: { attachmentId: string | null; assetId: string | null; }[]; }>; promoteAction(options?: PromoteContentContributionOptions): Promise<{ contribution: Record; content: Record | null; assets: { attachmentId: string | null | undefined; assetId: string; }[]; } | { contribution: Record; content: Record; assets: { attachmentId: string | null; assetId: string | null; }[]; }>; } //# sourceMappingURL=content-contribution.d.ts.map