import type { AuthoredPostPage, BlueskySession, BlueskySessionCredentials, PublishedPost, PublishPostInput, RemotePostRef, SocialDeletionDriver, SocialIdentityCredentials, SocialPublishingDriver, TimelineQuery, TimelineResult } from '../types'; /** * Split `at:////` into its parts. Deletes are keyed by * repo + collection + rkey, not by the AT-URI itself. */ export declare function parseAtUri(uri: string): { repo: string, collection: string, rkey: string }; /** * Find link/hashtag/mention spans in post text with UTF-8 byte offsets * (ATProto facet ranges are byte-indexed, not character-indexed). * Mentions still need their DID resolved before they become facets. */ export declare function detectFacetCandidates(text: string): FacetCandidate[]; export declare interface BlueskyDriverOptions { service?: string } declare interface FacetCandidate { byteStart: number byteEnd: number type: 'link' | 'tag' | 'mention' value: string } export declare class BlueskyApiError extends Error { public status: number; public body: string; constructor(message: string, status: number, body: string); get isAuthError(): boolean; } export declare class BlueskyPublishingDriver implements SocialPublishingDriver, SocialDeletionDriver { readonly provider: 'bluesky'; characterLimit: number; protected service: string; constructor(options?: BlueskyDriverOptions); createSession(credentials: BlueskySessionCredentials): Promise; refreshSession(refreshToken: string): Promise; publish(identity: SocialIdentityCredentials, post: PublishPostInput): Promise; postMetrics(identity: SocialIdentityCredentials, uris: string[]): Promise>; timeline(identity: SocialIdentityCredentials, query?: TimelineQuery): Promise; getProfile(identity: SocialIdentityCredentials): Promise<{ did: string, handle: string, displayName?: string }>; protected buildFacets(text: string): Promise>>; protected resolveHandle(handle: string): Promise; uploadBlob(identity: SocialIdentityCredentials, bytes: Uint8Array, mimeType: string): Promise; listAuthoredPosts(identity: SocialIdentityCredentials, query?: TimelineQuery): Promise; deletePost(identity: SocialIdentityCredentials, ref: RemotePostRef): Promise; protected post(path: string, body?: unknown, headers?: Record): Promise; protected request(url: URL, init: RequestInit): Promise; protected toPostUrl(handle: string, uri: string): string; }