@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
135 lines (128 loc) • 4.57 kB
text/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
}