import type { TikTokPublishRequest, TikTokVideoSettings } from './types.js'; export interface PlanVideoPostInput { sourceFilePath: string; videoUrl: string; customThumbnailUrl?: string; caption?: string; isBrandOrganic?: boolean; isBrandedContent?: boolean; disableComment?: boolean; disableDuet?: boolean; disableStitch?: boolean; thumbnailOffsetMs?: number; isAiGenerated?: boolean; ffmpegPath?: string; } interface VideoFacts { sizeBytes: number; width: number; height: number; durationSec: number; fps: number; format?: string; codec?: string; } export interface TikTokPostPlan { planId: string; createdAt: string; expiresAt: string; openId: string; contentHash: string; sourceFilePath: string; videoFacts: VideoFacts; request: TikTokPublishRequest; settings: TikTokVideoSettings; warnings: string[]; } export type AuditState = 'pending' | 'published' | 'failed' | 'unknown'; export interface TikTokPublishAudit { planId: string; contentHash: string; openId: string; publishId?: string; state: AuditState; createdAt: string; updatedAt: string; caption?: string; videoUrl: string; requestId?: string; providerStatus?: Record; error?: string; } declare function safeUrl(value: string): string; declare function countMentions(caption: string): number; declare function assertCaption(caption: string): void; declare function fpsValue(value: unknown): number; declare function assertVideoFacts(facts: VideoFacts, settings: TikTokVideoSettings): void; declare function assertThumbnailOffset(thumbnailOffsetMs: number | undefined, durationSec: number): void; declare function acquirePublishLock(openId: string, contentHash: string, lockDir?: string): void; declare function releasePublishLock(openId: string, contentHash: string, lockDir?: string): void; export declare function planVideoPost(input: PlanVideoPostInput): Promise; export declare function loadPostPlan(planId: string): TikTokPostPlan; export declare function publishPlannedVideo(planId: string, confirmPublish: boolean): Promise<{ publishId: string; state: string; planId: string; audit: TikTokPublishAudit; }>; declare function statusState(status: Record): AuditState | null; declare function shouldReleasePublishLock(previous: AuditState, next: AuditState): boolean; export declare function checkPublishStatus(publishId: string): Promise<{ publishId: string; status: Record; audit: { state: AuditState; updatedAt: string; providerStatus: Record; planId: string; contentHash: string; openId: string; publishId?: string; createdAt: string; caption?: string; videoUrl: string; requestId?: string; error?: string; }; } | { publishId: string; status: Record; audit: null; }>; export declare function listPublishAudits(limit?: number): TikTokPublishAudit[]; export declare const __testing: { assertCaption: typeof assertCaption; assertThumbnailOffset: typeof assertThumbnailOffset; assertVideoFacts: typeof assertVideoFacts; acquirePublishLock: typeof acquirePublishLock; countMentions: typeof countMentions; fpsValue: typeof fpsValue; releasePublishLock: typeof releasePublishLock; safeUrl: typeof safeUrl; shouldReleasePublishLock: typeof shouldReleasePublishLock; statusState: typeof statusState; }; export {};