import { Script, LockingScript } from "@bsv/sdk"; /** * B Protocol Prefix - the BitCom protocol address for B */ export declare const B_PREFIX = "19HxigV4QyBv3tHpQVcUEQyq1pzZVdoAut"; /** * Media types for B protocol */ export declare enum MediaType { TextPlain = "text/plain", TextMarkdown = "text/markdown", TextHTML = "text/html", ImagePNG = "image/png", ImageJPEG = "image/jpeg", ApplicationJSON = "application/json", ApplicationPDF = "application/pdf" } /** * Encoding types for B protocol */ export declare enum Encoding { UTF8 = "utf-8", Binary = "binary", Base64 = "base64", Hex = "hex" } /** * B protocol data structure * B PROTOCOL FORMAT: PREFIX DATA MEDIA_TYPE ENCODING FILENAME */ export interface BData { mediaType: MediaType | string; encoding: Encoding | string; data: number[]; filename?: string; } /** * B (Binary) Protocol Template * * The B protocol is used for storing arbitrary binary data on the blockchain. * It follows the format: PREFIX DATA MEDIA_TYPE ENCODING [FILENAME] * where FILENAME is optional. */ export default class B { /** * Creates a B protocol locking script * * @param data - The binary data to store * @param mediaType - The MIME type of the data * @param encoding - The encoding format * @param filename - Optional filename * @returns LockingScript - The B protocol locking script */ static lock(data: number[] | string | Uint8Array, mediaType?: MediaType | string, encoding?: Encoding | string, filename?: string): LockingScript; /** * Decodes B protocol data from script * * @param script - The script containing B protocol data * @returns BData - The decoded B protocol data, or null if invalid */ static decode(script: Script | LockingScript | number[]): BData | null; /** * Helper method to create text content * * @param text - The text content * @param mediaType - Optional media type (defaults to text/plain) * @param filename - Optional filename * @returns LockingScript - The B protocol locking script */ static text(text: string, mediaType?: MediaType | string, filename?: string): LockingScript; /** * Helper method to create binary content * * @param data - The binary data * @param mediaType - The media type * @param filename - Optional filename * @returns LockingScript - The B protocol locking script */ static binary(data: number[] | Uint8Array, mediaType: MediaType | string, filename?: string): LockingScript; /** * Helper method to create base64 encoded content * * @param base64Data - The base64 encoded data * @param mediaType - The media type * @param filename - Optional filename * @returns LockingScript - The B protocol locking script */ static base64(base64Data: string, mediaType: MediaType | string, filename?: string): LockingScript; /** * Helper method to create hex encoded content * * @param hexData - The hex encoded data * @param mediaType - The media type * @param filename - Optional filename * @returns LockingScript - The B protocol locking script */ static hex(hexData: string, mediaType: MediaType | string, filename?: string): LockingScript; }