import type { TextSelection } from './StickyNoteNode.types';
export type StickyNoteMediaType = 'image' | 'video';
export type StickyNoteMedia = {
    kind: 'image';
    url: string;
    alt: string;
    fullWidth: boolean;
} | {
    kind: 'youtube';
    videoId: string;
    fullWidth: boolean;
} | {
    kind: 'publicVideo';
    url: string;
    fullWidth: boolean;
};
export type StickyNoteMediaError = 'invalid-url' | 'https-required' | 'invalid-youtube-url' | 'unsupported-video-url';
export type StickyNoteMediaParseResult = {
    ok: true;
    value: StickyNoteMedia;
} | {
    ok: false;
    error: StickyNoteMediaError;
};
export interface StickyNoteMediaToken {
    media: StickyNoteMedia;
    start: number;
    end: number;
}
export interface StickyNoteMediaMarker {
    kind: StickyNoteMedia['kind'];
    fullWidth: boolean;
}
export declare function parseStickyNoteMediaUrl(rawUrl: string, mediaType: StickyNoteMediaType, options?: {
    alt?: string;
    fullWidth?: boolean;
}): StickyNoteMediaParseResult;
export declare function serializeStickyNoteMedia(media: StickyNoteMedia): string;
export declare function parseStickyNoteMediaMarker(title?: string): StickyNoteMediaMarker | null;
export declare function parseStickyNoteMediaSource(source: string, alt?: string, title?: string): StickyNoteMedia | null;
export declare function insertStickyNoteMedia(currentValue: string, block: string, selection: TextSelection | null): TextSelection;
export declare function parseStickyNoteMediaTokens(content: string): StickyNoteMediaToken[];
export declare function findStickyNoteMediaAtSelection(content: string, selectionStart: number, selectionEnd: number): StickyNoteMediaToken | null;
export declare function replaceStickyNoteMedia(content: string, original: StickyNoteMediaToken, replacement: string): TextSelection | null;
//# sourceMappingURL=StickyNoteMedia.d.ts.map