import { BaseSocialMediaAction, SocialPost, SocialAnalytics, MediaFile } from '../../base/base-social.action.js';
import { AxiosInstance } from 'axios';
/**
 * TikTok video information
 */
export interface TikTokVideo {
    id: string;
    share_url: string;
    title: string;
    description: string;
    duration: number;
    cover_image_url: string;
    share_count: number;
    view_count: number;
    like_count: number;
    comment_count: number;
    create_time: number;
}
/**
 * TikTok user information
 */
export interface TikTokUser {
    open_id: string;
    union_id: string;
    avatar_url: string;
    display_name: string;
    bio_description: string;
    profile_deep_link: string;
    is_verified: boolean;
    follower_count: number;
    following_count: number;
    likes_count: number;
}
/**
 * Base class for all TikTok social media actions.
 * Handles TikTok-specific authentication and API interaction patterns.
 */
export declare abstract class TikTokBaseAction extends BaseSocialMediaAction {
    protected get platformName(): string;
    protected get apiBaseUrl(): string;
    private axiosInstance;
    /**
     * Initialize axios instance with interceptors
     */
    protected getAxiosInstance(): AxiosInstance;
    /**
     * Make authenticated TikTok API request
     */
    protected makeTikTokRequest<T>(endpoint: string, method?: 'GET' | 'POST' | 'PUT' | 'DELETE', data?: any, params?: any): Promise<T>;
    /**
     * Refresh TikTok access token
     */
    protected refreshAccessToken(): Promise<void>;
    /**
     * Upload media to TikTok (requires special approval)
     */
    protected uploadSingleMedia(file: MediaFile): Promise<string>;
    /**
     * Search posts (videos) - TikTok only allows searching user's own videos
     */
    protected searchPosts(params: any): Promise<SocialPost[]>;
    /**
     * Get user's videos
     */
    protected getUserVideos(): Promise<TikTokVideo[]>;
    /**
     * Convert TikTok video to common post format
     */
    protected normalizePost(video: TikTokVideo): SocialPost;
    /**
     * Normalize TikTok analytics to common format
     */
    protected normalizeAnalytics(platformData: any): SocialAnalytics;
    /**
     * Extract hashtags from video description
     */
    protected extractHashtags(description: string): string[];
    /**
     * Get current user info
     */
    protected getCurrentUser(): Promise<TikTokUser>;
    /**
     * Validate TikTok-specific media requirements
     */
    protected validateMediaFile(file: MediaFile): void;
}
//# sourceMappingURL=tiktok-base.action.d.ts.map