UNPKG

@stoar/sdk

Version:

JavaScript/TypeScript SDK for STOAR - Decentralized file storage on Arweave

129 lines 3.11 kB
interface StoarClientInterface { uploadFile(data: Buffer | Uint8Array | string, metadata: { name: string; size: number; contentType: string; }, options?: { contentType?: string; tags?: Record<string, string>; }): Promise<{ id: string; url: string; size: number; contentType: string; tags: Record<string, string>; timestamp: number; }>; getFile(txId: string): Promise<Uint8Array>; } /** * Arweave manifest structure according to spec */ export interface ArweaveManifest { manifest: 'arweave/paths'; version: '0.2.0'; index: { path: string; id: string; }; paths: Record<string, { id: string; }>; fallback?: { id: string; }; } /** * Bucket metadata structure */ export interface BucketMetadata { type: 'stoar-bucket'; version: '1.0'; name: string; created: string; modified: string; manifestVersion: number; previousManifest: string | null; objectCount: number; totalSize: number; visibility: 'public' | 'private'; owner: string; changelog: { operation: string; key?: string; timestamp: string; actor: string; }; } /** * Manifest update operation */ export interface ManifestUpdate { operation: 'add' | 'update' | 'remove'; key: string; txId?: string; size?: number; } /** * Manages Arweave manifests for S3-compatible buckets */ export declare class ManifestManager { private stoarClient; constructor(stoarClient: StoarClientInterface); /** * Create a new manifest structure */ createManifest(params: { indexHtmlId: string; metadataId: string; versionsId: string; files?: Record<string, string>; }): ArweaveManifest; /** * Create initial bucket metadata */ createBucketMetadata(params: { bucketName: string; owner: string; visibility?: 'public' | 'private'; }): BucketMetadata; /** * Parse and validate a manifest */ parseManifest(data: any): ArweaveManifest; /** * Upload a manifest to Arweave */ uploadManifest(manifest: ArweaveManifest, bucketName: string): Promise<string>; /** * Get manifest from transaction ID */ getManifest(txId: string): Promise<ArweaveManifest>; /** * Get metadata from manifest */ getMetadata(manifest: ArweaveManifest): Promise<BucketMetadata>; /** * Update manifest with new files */ updateManifest(params: { currentManifestId: string; bucketName: string; updates: ManifestUpdate[]; actor: string; }): Promise<{ manifestId: string; manifest: ArweaveManifest; metadata: BucketMetadata; }>; /** * Get manifest version from metadata */ private getManifestVersion; /** * Validate manifest size */ validateManifestSize(manifest: ArweaveManifest): void; } export {}; //# sourceMappingURL=manifest-manager.d.ts.map