export type AIProvider = "gemini" | "chatgpt" | "claude"; export type TonePreference = "auto" | "casual" | "professional" | "witty" | "empathetic"; export type StructurePreference = "one_liner" | "paragraph" | "question" | "list" | "story_arc"; export type VoiceProfileStatus = "not_configured" | "analyzing" | "ready" | "error"; export type PostStatus = "draft" | "scheduled" | "processing" | "posted" | "failed"; export type PostAngle = "one_liner" | "list" | "question" | "story_arc" | "paragraph" | "my_voice"; export type BatchCategory = "for_you" | "trending"; export interface UserPreferences { tone?: TonePreference; include_emoji?: boolean | null; structure?: StructurePreference; } export interface CustomRule { id: number; title: string; content: string; active: boolean; created_at: string; updated_at: string; } export interface CustomRulesResponse { custom_rules: CustomRule[]; } export interface CustomRuleResponse { custom_rule: CustomRule; } export type Platform = "twitter" | "linkedin" | "youtube" | "threads" | "instagram" | "bluesky" | "mastodon" | "discord" | "slack" | "telegram" | "facebook" | "google_business" | "tumblr"; export type ContentType = "text" | "single_image" | "multi_image" | "video" | "document" | "poll"; export interface SocialAccount { id: number; platform: Platform; uid: string; username: string; email: string | null; primary: boolean; connected_at: string; } export interface PostContentMetadata { asset_urn?: string; asset_urns?: string[]; image_url?: string; r2_key?: string; title?: string; privacy_status?: string; category_id?: string; tags?: string[]; thumbnail_url?: string; document_urn?: string; question?: string; options?: string[]; duration?: string; linkedin_org_id?: string; } export interface PostContent { platform: Platform; body: string; content_type: ContentType; metadata?: PostContentMetadata; } export interface PostAccount { id: number; social_account_id: number; platform: string; username: string; platform_status: string; platform_post_id: string | null; platform_error: string | null; } export interface Post { id: number; body: string; status: PostStatus; scheduled_at: string | null; auto_rt_hours: number | null; auto_rt_posted_at: string | null; created_at: string; post_accounts: PostAccount[]; post_contents: PostContent[]; } export interface PostsResponse { posts: Post[]; } export interface PostResponse { post: Post; } export interface PostGenerateResponse { body?: string; variants?: Array<{ platform: string; body: string; }>; } export interface PostBatchGenerateResponse { posts: string[]; } export interface VoiceProfile { id: string; platform_managed: boolean; voice_preset_id?: string | null; voice_preset_name?: string | null; analyzed_at: string; tweet_count: number; writing_style: Record; } export interface VoiceProfileResponse { voice_profile: VoiceProfile; summary?: string; } export interface PostingSlot { id: number; day_of_week: number; time_of_day: string; enabled: boolean; source: string; } export interface PostingSchedule { id: number; social_account_id: number; timezone: string; min_gap_minutes: number; max_posts_per_day: number; paused: boolean; jitter_enabled: boolean; anti_duplicate_enabled: boolean; min_gap_enabled: boolean; max_per_day_enabled: boolean; posting_slots: PostingSlot[]; created_at: string; updated_at: string; } export interface APIError { message: string; code: string; details?: unknown; } export type SubscriptionTier = "free" | "starter" | "pro" | "team"; export interface QuotaInfo { tier: SubscriptionTier | null; daily_limit?: number | null; replies_used_today?: number; replies_remaining_today?: number; resets_at?: string; message?: string; requires_subscription?: boolean; } export interface Subscription { id: number; status: string; current_period_start: string; current_period_end: string; cancel_at_period_end: boolean; canceled_at?: string; days_until_renewal: number; } export interface SubscriptionStatus { subscription: Subscription | null; tier: SubscriptionTier; quota: QuotaInfo; max_schedule_days: number | null; } //# sourceMappingURL=types.d.ts.map