UNPKG

@opendatalabs/vana-sdk

Version:

A TypeScript library for interacting with Vana Network smart contracts.

67 lines (66 loc) 2.79 kB
/** * Storage API for Vana SDK * * Provides unified interface for different storage providers * to upload, download, and manage user data files. * * ## Storage Provider Decision Tree * * Choose your storage provider based on your needs: * * **Default backend hosted by ODL?** * - ✅ Use `VanaStorage` - storage.vana.org with Web3Signed auth. * * **Need full CRUD operations and metadata?** * - ✅ Use `PinataStorage` - Managed IPFS with listing, deletion, and rich metadata * * **Want to use your own IPFS infrastructure?** * - ✅ Use `IpfsStorage.forInfura()` - Connect to Infura IPFS service * - ✅ Use `IpfsStorage.forLocalNode()` - Connect to local IPFS node * - ✅ Use `new IpfsStorage()` - Connect to any IPFS-compatible service * * **Want flexible callback-based storage?** * - ✅ Use `CallbackStorage` - Implement storage via custom callbacks (HTTP, WebSocket, etc.) * * **Need Google Drive integration?** * - ✅ Use `GoogleDriveStorage` - Direct Google Drive API with folder management * * @example * ```typescript * // Managed IPFS with full features * const pinata = new PinataStorage({ jwt: "your-jwt" }); * * // Standard IPFS with Infura * const ipfs = IpfsStorage.forInfura({ projectId: "...", projectSecret: "..." }); * * // Callback-based storage (flexible) * const storage = new CallbackStorage({ * async upload(blob, filename) { * // Your custom upload logic * const response = await fetch('/api/upload', { method: 'POST', body: blob }); * const data = await response.json(); * return { url: data.url, size: blob.size, contentType: blob.type }; * }, * async download(identifier) { * // Your custom download logic * const response = await fetch(`/api/download/${identifier}`); * return response.blob(); * } * }); * ``` */ export type { StorageProvider, StorageUploadResult, StorageFile, StorageListOptions, StorageProviderConfig, } from "../types/storage"; export { StorageError } from "../types/storage"; export { createVanaStorageProvider } from "./default"; export type { VanaStorageProviderOptions } from "./default"; export { R2Storage } from "./providers/r2"; export type { R2Config } from "./providers/r2"; export { VanaStorage } from "./providers/vana-storage"; export type { VanaStorageConfig, VanaStorageSigner, } from "./providers/vana-storage"; export { GoogleDriveStorage } from "./providers/google-drive"; export { DropboxStorage } from "./providers/dropbox"; export { IpfsStorage } from "./providers/ipfs"; export { PinataStorage } from "./providers/pinata"; export { CallbackStorage } from "./providers/callback-storage"; export { StorageManager } from "./manager"; export type { StorageCallbacks, StorageDownloadOptions, StorageListResult, } from "../types/config";