@zerochain/sdk
Version:
The Züs JS SDK is a JavaScript client library that provides a convenient interface for interacting with the Züs Network. It allows developers to perform various operations such as creating and managing allocations, uploading and downloading files, executi
130 lines (129 loc) • 4.87 kB
TypeScript
import type { Terms } from '@/types/blobber';
export type Allocation = {
/** ID is the unique identifier of the allocation. */
id: string;
/** Tx is the transaction hash of the latest transaction related to the allocation. */
tx: string;
/** DataShards is the number of data shards. */
data_shards: number;
/** ParityShards is the number of parity shards. */
parity_shards: number;
/** Size is the size of the allocation. */
size: number;
/** Expiration is the expiration date of the allocation. */
expiration_date: number;
/** Owner is the id of the owner of the allocation. */
owner_id: string;
/** OwnerPublicKey is the public key of the owner of the allocation. */
owner_public_key: string;
/** Payer is the id of the payer of the allocation. */
payer_id: string;
/** Blobbers is the list of blobbers that store the data of the allocation. */
blobbers: StorageNode[];
/** Stats contains the statistics of the allocation. */
stats: AllocationStats;
/** TimeUnit is the time unit of the allocation. */
time_unit: number;
/** WritePool is the write pool of the allocation. */
write_pool: number;
/**
* BlobberDetails contains real terms used for the allocation.
*
* If the allocation has updated, then terms are calculated using weighted average values.
*/
blobber_details: BlobberDetails[];
/** ReadPriceRange is requested reading prices range. */
read_price_range: PriceRange;
/** WritePriceRange is requested writing prices range. */
write_price_range: PriceRange;
/** MinLockDemand is the minimum lock demand of the allocation. */
min_lock_demand: number;
/** ChallengeCompletionTime is the time taken to complete a challenge. */
challenge_completion_time: number;
/** StartTime is the start time of the allocation. */
start_time: number;
/** Finalized is the flag to indicate if the allocation is finalized. */
finalized?: boolean;
/** Cancelled is the flag to indicate if the allocation is cancelled. */
canceled?: boolean;
/** MovedToChallenge is the amount moved to challenge pool related to the allocation. */
moved_to_challenge?: number;
/** MovedBack is the amount moved back from the challenge pool related to the allocation. */
moved_back?: number;
/** MovedToValidators is the amount moved to validators related to the allocation. */
moved_to_validators?: number;
/** Owner ECDSA public key */
owner_signing_public_key: string;
/**
* setThirdPartyExtendable is a flag that determines whether third-parties are allowed to update the allocation's size and expiration property.
*
* When set to `true`, third-parties / a non-owner client (e.g., 0box) can update or modify the allocation
*/
third_party_extendable: boolean;
/**
* FileOptions is a bitmask of file options, which represents the permissions of the allocation.
*
* Default value is `00000000`, suggesting that owner has abilities to perform all crud operations like upload, delete, update, move, copy, rename
* Bitmask options are:
* - `00000001` - 1 - upload
* - `00000010` - 2 - delete
* - `00000100` - 4 - update
* - `00001000` - 8 - move
* - `00010000` - 16 - copy
* - `00100000` - 32 - rename
*/
file_options: number;
/** IsEnterprise is a flag to indicate if the allocation is an enterprise allocation. */
is_enterprise: boolean;
/** StorageVersion is the storage version of the allocation. */
storage_version: number;
};
/** StorageNode represents a storage node (blobber) */
type StorageNode = {
id: string;
url: string;
LatestWM: WriteMarker | null;
};
type WriteMarker = {
allocation_root: string;
prev_allocation_root: string;
file_meta_root: string;
allocation_id: string;
size: number;
chain_size: number;
chain_hash: string;
chain_length: number;
blobber_id: string;
timestamp: number;
client_id: string;
signature: string;
};
type AllocationStats = {
used_size: number;
num_of_writes: number;
num_of_reads: number;
total_challenges: number;
num_open_challenges: number;
num_success_challenges: number;
num_failed_challenges: number;
latest_closed_challenge: string;
};
/** BlobberAllocation represents the blobber in the context of an allocation */
type BlobberDetails = {
blobber_id: string;
size: number;
terms: Terms;
min_lock_demand: number;
spent: number;
penalty: number;
read_reward: number;
returned: number;
challenge_reward: number;
final_reward: number;
};
/** PriceRange represents a price range allowed by user to filter blobbers. */
type PriceRange = {
min: number;
max: number;
};
export {};