import { BaseSocialMediaAction, MediaFile } from '../../base/base-social.action';
import { AxiosInstance, AxiosError } from 'axios';
/**
 * Base class for all Instagram actions.
 * Handles Instagram Graph API and Basic Display API authentication and common functionality.
 * Instagram uses Facebook's Graph API infrastructure.
 */
export declare abstract class InstagramBaseAction extends BaseSocialMediaAction {
    protected get platformName(): string;
    protected get apiBaseUrl(): string;
    /**
     * Instagram Business Account ID (stored in CustomAttribute1)
     */
    protected get instagramBusinessAccountId(): string;
    /**
     * Facebook Page ID (stored in CustomAttribute2) - required for Instagram Business API
     */
    protected get facebookPageId(): string;
    /**
     * Axios instance for API calls
     */
    private _axiosInstance;
    /**
     * Get or create axios instance with authentication
     */
    protected get axios(): AxiosInstance;
    /**
     * Refresh the Instagram/Facebook access token
     */
    protected refreshAccessToken(): Promise<void>;
    /**
     * Make an Instagram Graph API request
     */
    protected makeInstagramRequest<T = any>(endpoint: string, method?: 'GET' | 'POST' | 'DELETE', data?: any, params?: any): Promise<T>;
    /**
     * Handle Instagram-specific errors
     */
    protected handleInstagramError(error: AxiosError): void;
    /**
     * Parse Facebook's app usage header to determine rate limit status
     */
    private parseAppUsage;
    /**
     * Upload media to Instagram (returns container ID)
     */
    protected uploadSingleMedia(file: MediaFile): Promise<string>;
    /**
     * Upload media to a CDN (placeholder - implement based on your CDN)
     */
    private uploadMediaToCDN;
    /**
     * Publish a media container
     */
    protected publishMediaContainer(containerId: string): Promise<string>;
    /**
     * Get insights for a media object or account
     */
    protected getInsights(objectId: string, metrics: string[], period?: 'lifetime' | 'day' | 'week' | 'days_28'): Promise<any>;
    /**
     * Search for posts (limited to business account's own posts)
     */
    protected searchPosts(params: any): Promise<any[]>;
    /**
     * Normalize Instagram post to common format
     */
    protected normalizePost(instagramPost: any): any;
    /**
     * Check if media container is ready for publishing
     */
    protected isMediaContainerReady(containerId: string): Promise<boolean>;
    /**
     * Wait for media container to be ready
     */
    protected waitForMediaContainer(containerId: string, maxWaitTime?: number): Promise<void>;
}
//# sourceMappingURL=instagram-base.action.d.ts.map