import { BaseSocialMediaAction, MediaFile, SocialPost, SearchParams } from '../../base/base-social.action';
import { AxiosInstance, AxiosError } from 'axios';
/**
 * Base class for all HootSuite actions.
 * Handles HootSuite-specific authentication, API interactions, and rate limiting.
 */
export declare abstract class HootSuiteBaseAction extends BaseSocialMediaAction {
    protected get platformName(): string;
    protected get apiBaseUrl(): string;
    /**
     * Axios instance for making HTTP requests
     */
    private _axiosInstance;
    /**
     * Get or create axios instance with interceptors
     */
    protected get axiosInstance(): AxiosInstance;
    /**
     * Refresh the access token using the refresh token
     */
    protected refreshAccessToken(): Promise<void>;
    /**
     * Upload media to HootSuite
     */
    protected uploadSingleMedia(file: MediaFile): Promise<string>;
    /**
     * Wait for media to finish processing
     */
    private waitForMediaProcessing;
    /**
     * Get social profiles for the authenticated user
     */
    protected getSocialProfiles(): Promise<HootSuiteProfile[]>;
    /**
     * Make a paginated request to HootSuite API
     */
    protected makePaginatedRequest<T>(endpoint: string, params?: Record<string, any>): Promise<T[]>;
    /**
     * Format date for HootSuite API (ISO 8601)
     */
    protected formatHootSuiteDate(date: Date | string): string;
    /**
     * Parse HootSuite date string
     */
    protected parseHootSuiteDate(dateString: string): Date;
    /**
     * Convert HootSuite post to common format
     */
    protected normalizePost(hootsuitePost: HootSuitePost): SocialPost;
    /**
     * Search for posts - implemented in search action
     */
    protected searchPosts(params: SearchParams): Promise<SocialPost[]>;
    /**
     * Handle HootSuite-specific errors
     */
    protected handleHootSuiteError(error: AxiosError): never;
}
/**
 * HootSuite-specific interfaces
 */
export interface HootSuiteProfile {
    id: string;
    socialNetworkId: string;
    socialNetworkUserId: string;
    avatarUrl: string;
    displayName: string;
    type: string;
    ownerId: string;
}
export interface HootSuitePost {
    id: string;
    socialProfileIds: string[];
    text: string;
    scheduledTime?: string;
    createdTime: string;
    state: 'SCHEDULED' | 'PUBLISHED' | 'FAILED' | 'DRAFT';
    mediaIds?: string[];
    tags?: string[];
    location?: {
        latitude: number;
        longitude: number;
    };
}
export interface HootSuiteAnalytics {
    postId: string;
    metrics: {
        likes: number;
        comments: number;
        shares: number;
        clicks: number;
        impressions: number;
        engagements: number;
        reach: number;
    };
    period: {
        start: string;
        end: string;
    };
}
//# sourceMappingURL=hootsuite-base.action.d.ts.map