import { NeoFSClient } from './client'; import { ContainerID, ObjectID, Address, ObjectGetResult } from '../types'; import { ObjectGetParams } from './object'; export interface ObjectHeader { containerId: ContainerID; ownerId: Uint8Array; objectType?: number; payloadLength?: number; payloadHash?: { type: number; sum: Uint8Array; }; homomorphicHash?: { type: number; sum: Uint8Array; }; attributes?: Array<{ key: string; value: string; }>; signature?: { key: Uint8Array; sign: Uint8Array; scheme?: number; }; version?: { major: number; minor: number; }; } export interface ObjectPutParams { header: ObjectHeader; payload?: Uint8Array; copiesNumber?: number; } export interface ObjectHeadParams { address: Address; raw?: boolean; } export interface ObjectDeleteParams { address: Address; } export interface ObjectSearchParams { containerId: ContainerID; filters?: Array<{ key: string; value: string; matchType: number; }>; limit?: number; offset?: number; } export interface ObjectSearchV2Params { containerId: ContainerID; filters?: Array<{ key: string; value: string; matchType: number; }>; limit?: number; cursor?: string; } export interface ObjectSearchResult { id: ObjectID; attributes: Array<{ key: string; value: string; }>; } export interface ObjectSearchV2Result { result: ObjectSearchResult[]; cursor: string; } export declare class ObjectClient { private client; private signer; private endpoint; private sessionClient; private sessionToken; private neofsClient; constructor(neofsClient: NeoFSClient, config: { signer: any; endpoint: string; }); /** * Initialize session token for object operations. */ initializeSession(): Promise; /** * Reset the session token to force a new session on next operation */ resetSession(): void; private sha256; private getVersion; private signRequest; /** * Download an object from NeoFS using streaming. * NO session tokens - uses verification headers. * Note: get() is a SERVER STREAMING call - request goes in, stream comes out. */ get(params: ObjectGetParams): Promise; /** * Read a byte range of an object payload (ObjectService/GetRange). */ getRange(params: { address: Address; range: { offset: bigint; length: bigint; }; raw?: boolean; }): Promise; /** * Upload an object to NeoFS using streaming. * Based on the React Native client implementation - NO session tokens needed. */ put(params: ObjectPutParams): Promise; /** * Create verification header with proper signatures (like React Native client). */ private createVerificationHeader; /** * Get object metadata without downloading payload. * NO session tokens - uses verification headers. */ head(params: ObjectHeadParams): Promise; /** * Delete an object from NeoFS. * NO session tokens - uses verification headers. */ delete(params: ObjectDeleteParams): Promise
; /** * Search for objects in a container. * NO session tokens - uses verification headers like React Native client. * * @deprecated NeoFS protocol marks `ObjectService/Search` as deprecated. Use `searchV2()` instead. */ search(params: ObjectSearchParams): Promise; /** * Search for objects in a container (v2). * NO session tokens - uses verification headers. */ searchV2(params: ObjectSearchV2Params): Promise; }