import type { AppBskyEmbedExternal, AppBskyEmbedImages, AppBskyEmbedRecord, AppBskyEmbedRecordWithMedia, AppBskyEmbedVideo } from "@atcute/bluesky"; import type { Bot } from "../../../bot/Bot.js"; import type { FeedGenerator } from "../../FeedGenerator.js"; import type { Labeler } from "../../Labeler.js"; import type { List } from "../../List.js"; import type { StarterPack } from "../../StarterPack.js"; import type { Post } from "../Post.js"; import type { PostEmbed } from "./PostEmbed.js"; /** * Options for constructing a PostEmbed from an embed view. */ export interface PostEmbedFromViewOptions { /** The embed view. */ view: AppBskyEmbedImages.View | AppBskyEmbedVideo.View | AppBskyEmbedExternal.View | AppBskyEmbedRecord.View | AppBskyEmbedRecordWithMedia.View; /** The embed record. */ record?: AppBskyEmbedImages.Main | AppBskyEmbedVideo.Main | AppBskyEmbedExternal.Main | AppBskyEmbedRecord.Main | AppBskyEmbedRecordWithMedia.Main; /** The active Bot instance (needed to create Post instance for RecordEmbed and RecordWithMediaEmbed). */ bot?: Bot; } /** * Types of records that can be embedded in a post. */ export type EmbeddableRecord = Post | List | FeedGenerator | StarterPack | Labeler; /** * Constructs the appropriate embed type from an embed view and record. * @param options The options for constructing the embed. */ export declare function postEmbedFromView({ view, record, bot }: PostEmbedFromViewOptions): PostEmbed; /** * Determines if the provided value is an embed record. * @param embed The embed to check. */ export declare function isEmbedMainRecord(embed: unknown): embed is AppBskyEmbedImages.Main | AppBskyEmbedVideo.Main | AppBskyEmbedExternal.Main | AppBskyEmbedRecord.Main | AppBskyEmbedRecordWithMedia.Main; /** * Determines if the provided value is an embed view. * @param view The view to check. */ export declare function isEmbedView(view: unknown): view is AppBskyEmbedImages.View | AppBskyEmbedVideo.View | AppBskyEmbedExternal.View | AppBskyEmbedRecord.View | AppBskyEmbedRecordWithMedia.View; export declare function fetchMediaForBlob(url: string, mimeTypePrefix: string): Promise<{ type: string; data: Uint8Array; } | null>; export declare function fetchExternalEmbedData(this: Bot, url: string): Promise;