import { BaseSocialMediaAction, MediaFile, SocialPost, SearchParams, SocialAnalytics } from '../../base/base-social.action';
import { AxiosInstance, AxiosError } from 'axios';
/**
 * Base class for all LinkedIn actions.
 * Handles LinkedIn-specific authentication, API interactions, and rate limiting.
 * Uses LinkedIn Marketing Developer Platform API v2.
 */
export declare abstract class LinkedInBaseAction 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>;
    /**
     * Get the authenticated user's profile URN
     */
    protected getCurrentUserUrn(): Promise<string>;
    /**
     * Get organizations the user has admin access to
     */
    protected getAdminOrganizations(): Promise<LinkedInOrganization[]>;
    /**
     * Upload media to LinkedIn
     */
    protected uploadSingleMedia(file: MediaFile): Promise<string>;
    /**
     * Validate media file meets LinkedIn requirements
     */
    protected validateMediaFile(file: MediaFile): void;
    /**
     * Create a share (post) on LinkedIn
     */
    protected createShare(shareData: LinkedInShareData): Promise<string>;
    /**
     * Get shares for a specific author (person or organization)
     */
    protected getShares(authorUrn: string, count?: number, start?: number): Promise<LinkedInShare[]>;
    /**
     * Convert LinkedIn share to common format
     */
    protected normalizePost(linkedInShare: LinkedInShare): SocialPost;
    /**
     * Normalize LinkedIn analytics to common format
     */
    protected normalizeAnalytics(linkedInAnalytics: LinkedInAnalytics): SocialAnalytics;
    /**
     * Search for posts - implemented in search action
     */
    protected searchPosts(params: SearchParams): Promise<SocialPost[]>;
    /**
     * Handle LinkedIn-specific errors
     */
    protected handleLinkedInError(error: AxiosError): never;
    /**
     * Parse LinkedIn-specific rate limit headers
     */
    protected parseRateLimitHeaders(headers: any): {
        remaining: number;
        reset: Date;
        limit: number;
    } | null;
}
/**
 * LinkedIn-specific interfaces
 */
export interface LinkedInOrganization {
    urn: string;
    name: string;
    id: string;
}
export interface LinkedInShareData {
    author: string;
    lifecycleState: 'PUBLISHED' | 'DRAFT';
    specificContent: {
        'com.linkedin.ugc.ShareContent': {
            shareCommentary: {
                text: string;
            };
            shareMediaCategory: 'NONE' | 'ARTICLE' | 'IMAGE' | 'VIDEO' | 'RICH';
            media?: Array<{
                status: 'READY';
                media: string;
                title?: {
                    text: string;
                };
                description?: {
                    text: string;
                };
            }>;
        };
    };
    visibility: {
        'com.linkedin.ugc.MemberNetworkVisibility': 'PUBLIC' | 'CONNECTIONS' | 'LOGGED_IN' | 'CONTAINER';
    };
    distribution?: {
        linkedInDistributionTarget?: {
            visibleToGuest?: boolean;
        };
    };
}
export interface LinkedInShare {
    id: string;
    author: string;
    created: {
        actor: string;
        time: number;
    };
    firstPublishedAt?: number;
    lastModified?: {
        actor: string;
        time: number;
    };
    lifecycleState: string;
    specificContent: {
        'com.linkedin.ugc.ShareContent': {
            shareCommentary: {
                text: string;
            };
            shareMediaCategory: string;
            media?: Array<{
                media: string;
                title?: {
                    text: string;
                };
            }>;
        };
    };
    visibility: {
        'com.linkedin.ugc.MemberNetworkVisibility': string;
    };
    distribution?: any;
}
export interface LinkedInAnalytics {
    totalShareStatistics?: {
        impressionCount: number;
        clickCount: number;
        engagement: number;
        likeCount: number;
        commentCount: number;
        shareCount: number;
        uniqueImpressionsCount: number;
    };
    timeRange?: {
        start: number;
        end: number;
    };
}
export interface LinkedInArticle {
    author: string;
    publishedAt: number;
    coverImage?: string;
    title: string;
    description?: string;
    content: string;
    visibility: string;
}
//# sourceMappingURL=linkedin-base.action.d.ts.map