@stoar/sdk
Version:
JavaScript/TypeScript SDK for STOAR - Decentralized file storage on Arweave
129 lines • 3.11 kB
TypeScript
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