import { ClientConfig } from './client'; import { ContainerID } from '../types'; /** * Container attribute structure */ export interface ContainerAttribute { key: string; value: string; } /** * Placement policy replica structure */ export interface PlacementReplica { count: number; selector: string; } /** * Placement policy selector structure */ export interface PlacementSelector { name: string; count: number; clause: number; attribute: string; filter: string; } /** * Placement policy filter structure */ export interface PlacementFilter { name: string; key: string; op: number; value: string; filters: PlacementFilter[]; } /** * Initial placement rules (NeoFS API v2.22+). See netmap.PlacementPolicy.initial. */ export interface PlacementPolicyInitial { replicaLimits: number[]; maxReplicas?: number; preferLocal?: boolean; } /** * Placement policy structure */ export interface PlacementPolicy { replicas: PlacementReplica[]; containerBackupFactor: number; selectors: PlacementSelector[]; filters: PlacementFilter[]; /** Optional initial placement policy (API v2.22+ netmap.PlacementPolicy.initial). */ initial?: PlacementPolicyInitial; } /** * Container structure */ export interface Container { version: { major: number; minor: number; }; ownerId?: Uint8Array; nonce: Uint8Array; basicAcl: number; attributes: ContainerAttribute[]; placementPolicy: PlacementPolicy; } /** * Container ID structure */ /** * Parameters for creating a container */ export interface ContainerPutParams { container: Container; } /** * Parameters for getting a container */ export interface ContainerGetParams { containerId: ContainerID; } /** * Parameters for listing containers */ export interface ContainerListParams { ownerId?: Uint8Array; } /** * Parameters for deleting a container */ export interface ContainerDeleteParams { containerId: ContainerID; } /** * Client for interacting with NeoFS Container service. */ export declare class ContainerClient { private config; private client; constructor(config: ClientConfig); /** * Generate a proper NeoFS account ID from an ECDSA public key. * This implements the same logic as the C# SDK's PublicKeyToAddress. */ private generateNeoFSAccountId; /** * Creates signature redeem script from compressed public key. */ private createSignatureRedeemScript; /** * Calculates script hash using SHA256 + RIPEMD160. */ private calculateScriptHash; /** * Creates address with version byte + script hash + checksum. */ private createAddress; /** * Base58 encoding implementation. */ private base58Encode; /** * Base58 decoding implementation. */ private base58Decode; /** * Extract raw private key bytes from the signer. * The core ECDSASignerRFC6979 stores an elliptic KeyPair; fromPrivateKeyBytes expects bytes. */ private getPrivateKeyBytes; /** * Calculate container signature using RFC6979. * The signature should be calculated over the entire marshalled container. */ private calculateContainerSignature; /** * Create a new container. */ put(params: ContainerPutParams): Promise; /** * Get a container by ID. */ get(params: ContainerGetParams): Promise; /** * List containers owned by a specific owner. */ list(params?: ContainerListParams): Promise; /** * Delete a container by ID. */ delete(params: ContainerDeleteParams): Promise; }