/**
 * LinkedInPublisher ; LinkedIn API v2 UGC Posts publisher.
 *
 * Auth: Bearer token (OAuth 2.0 user token) via LINKEDIN_ACCESS_TOKEN env var.
 * Author URN: LINKEDIN_AUTHOR_URN env var (e.g. "urn:li:person:abc123").
 * Endpoint: POST https://api.linkedin.com/v2/ugcPosts
 * Limit: 3000 chars per post (LinkedIn platform limit).
 *
 * HTTP contract:
 *   - 401 : throws auth error, no retry
 *   - 429 : exponential backoff, max 3 retries
 *   - 5xx : throws with HTTP body
 *   - 2xx : returns posted_url + posted_id from the X-RestLi-Id response header
 *
 * @public
 */
import type { PublisherPort, PublishInput, PublishResult } from "../../ports/publisher.js";
export interface LinkedInPublisherConfig {
    /** Bearer token for LinkedIn OAuth 2.0. Falls back to LINKEDIN_ACCESS_TOKEN env var. */
    readonly accessToken?: string;
    /** Author URN (urn:li:person:<id>). Falls back to LINKEDIN_AUTHOR_URN env var. */
    readonly authorUrn?: string;
}
export interface LinkedInPublisherOptions {
    /** Override for tests ; defaults to native setTimeout-based sleep. */
    readonly sleep?: (ms: number) => Promise<void>;
    /** Override for tests ; returns [0, 1). Defaults to Math.random. */
    readonly random?: () => number;
}
export declare class LinkedInPublisher implements PublisherPort {
    readonly channel: "linkedin";
    private readonly cfg;
    private readonly sleep;
    private readonly random;
    constructor(cfg?: LinkedInPublisherConfig, options?: LinkedInPublisherOptions);
    private resolveToken;
    private resolveAuthorUrn;
    isConfigured(): Promise<boolean>;
    publish(input: PublishInput): Promise<PublishResult>;
}
//# sourceMappingURL=linkedin.d.ts.map