Variable: bcs
const
bcs:object
Type declaration
u8()
Creates a BcsType that can be used to read and write an 8-bit unsigned integer.
Parameters
• options?: BcsTypeOptions
<number
, number
>
Returns
BcsType
<number
, number
>
Example
bcs.u8().serialize(255).toBytes() // Uint8Array [ 255 ]
u16()
Creates a BcsType that can be used to read and write a 16-bit unsigned integer.
Parameters
• options?: BcsTypeOptions
<number
, number
>
Returns
BcsType
<number
, number
>
Example
bcs.u16().serialize(65535).toBytes() // Uint8Array [ 255, 255 ]
u32()
Creates a BcsType that can be used to read and write a 32-bit unsigned integer.
Parameters
• options?: BcsTypeOptions
<number
, number
>
Returns
BcsType
<number
, number
>
Example
bcs.u32().serialize(4294967295).toBytes() // Uint8Array [ 255, 255, 255, 255 ]
u64()
Creates a BcsType that can be used to read and write a 64-bit unsigned integer.
Parameters
• options?: BcsTypeOptions
<string
, string
| number
| bigint
>
Returns
BcsType
<string
, string
| number
| bigint
>
Example
bcs.u64().serialize(1).toBytes() // Uint8Array [ 1, 0, 0, 0, 0, 0, 0, 0 ]
u128()
Creates a BcsType that can be used to read and write a 128-bit unsigned integer.
Parameters
• options?: BcsTypeOptions
<string
, string
| number
| bigint
>
Returns
BcsType
<string
, string
| number
| bigint
>
Example
bcs.u128().serialize(1).toBytes() // Uint8Array [ 1, ..., 0 ]
u256()
Creates a BcsType that can be used to read and write a 256-bit unsigned integer.
Parameters
• options?: BcsTypeOptions
<string
, string
| number
| bigint
>
Returns
BcsType
<string
, string
| number
| bigint
>
Example
bcs.u256().serialize(1).toBytes() // Uint8Array [ 1, ..., 0 ]
bool()
Creates a BcsType that can be used to read and write boolean values.
Parameters
• options?: BcsTypeOptions
<boolean
, boolean
>
Returns
BcsType
<boolean
, boolean
>
Example
bcs.bool().serialize(true).toBytes() // Uint8Array [ 1 ]
uleb128()
Creates a BcsType that can be used to read and write unsigned LEB encoded integers
Parameters
• options?: BcsTypeOptions
<number
, number
>
Returns
BcsType
<number
, number
>
Example
bytes()
Creates a BcsType representing a fixed length byte array
Type Parameters
• T extends number
Parameters
• size: T
The number of bytes this types represents
• options?: BcsTypeOptions
<Uint8Array
, Iterable
<number
, any
, any
>>
Returns
BcsType
<Uint8Array
, Uint8Array
>
Example
bcs.bytes(3).serialize(new Uint8Array([1, 2, 3])).toBytes() // Uint8Array [1, 2, 3]
byteVector()
Creates a BcsType representing a variable length byte array
Parameters
• options?: BcsTypeOptions
<Uint8Array
, Iterable
<number
, any
, any
>>
Returns
BcsType
<Uint8Array
, Iterable
<number
, any
, any
>>
Example
bcs.byteVector().serialize([1, 2, 3]).toBytes() // Uint8Array [3, 1, 2, 3]
string()
Creates a BcsType that can ser/de string values. Strings will be UTF-8 encoded
Parameters
• options?: BcsTypeOptions
<string
, string
>
Returns
BcsType
<string
, string
>
Example
bcs.string().serialize('a').toBytes() // Uint8Array [ 1, 97 ]
fixedArray()
Creates a BcsType that represents a fixed length array of a given type
Type Parameters
• T
• Input
Parameters
• size: number
The number of elements in the array
• type: BcsType
<T
, Input
>
The BcsType of each element in the array
• options?: BcsTypeOptions
<T
[], Iterable
<Input
, any
, any
> & object
>
Returns
BcsType
<T
[], Iterable
<Input
, any
, any
> & object
>
Example
bcs.fixedArray(3, bcs.u8()).serialize([1, 2, 3]).toBytes() // Uint8Array [ 1, 2, 3 ]
option()
Creates a BcsType representing an optional value
Type Parameters
• T
• Input
Parameters
• type: BcsType
<T
, Input
>
The BcsType of the optional value
Returns
BcsType
<null
| T
, undefined
| null
| Input
>
Example
bcs.option(bcs.u8()).serialize(null).toBytes() // Uint8Array [ 0 ]
bcs.option(bcs.u8()).serialize(1).toBytes() // Uint8Array [ 1, 1 ]
vector()
Creates a BcsType representing a variable length vector of a given type
Type Parameters
• T
• Input
Parameters
• type: BcsType
<T
, Input
>
The BcsType of each element in the vector
• options?: BcsTypeOptions
<T
[], Iterable
<Input
, any
, any
> & object
>
Returns
BcsType
<T
[], Iterable
<Input
, any
, any
> & object
>
Example
bcs.vector(bcs.u8()).toBytes([1, 2, 3]) // Uint8Array [ 3, 1, 2, 3 ]
tuple()
Creates a BcsType representing a tuple of a given set of types
Type Parameters
• Types extends readonly BcsType
<any
, any
>[]
Parameters
• types: Types
The BcsTypes for each element in the tuple
• options?: BcsTypeOptions
<{ -readonly [K in string | number | symbol]: Types[K<K>] extends BcsType<T, any> ? T : never }, { [K in string | number | symbol]: Types[K<K>] extends BcsType<any, T> ? T : never }>
Returns
BcsType
<{ -readonly [K in string | number | symbol]: Types[K<K>] extends BcsType<T, any> ? T : never }, { [K_1 in string | number | symbol]: Types[K_1<K_1>] extends BcsType<any, T_1> ? T_1 : never }>
Example
const tuple = bcs.tuple([bcs.u8(), bcs.string(), bcs.bool()])
tuple.serialize([1, 'a', true]).toBytes() // Uint8Array [ 1, 1, 97, 1 ]
struct()
Creates a BcsType representing a struct of a given set of fields
Type Parameters
• T extends Record
<string
, BcsType
<any
, any
>>
Parameters
• name: string
The name of the struct
• fields: T
The fields of the struct. The order of the fields affects how data is serialized and deserialized
• options?: Omit
<BcsTypeOptions
<{ [K in string | number | symbol]: T[K] extends BcsType<U, any> ? U : never }, { [K in string | number | symbol]: T[K] extends BcsType<any, U> ? U : never }>, "name"
>
Returns
BcsType
<{ [K in string | number | symbol]: T[K] extends BcsType<U, any> ? U : never }, { [K_1 in string | number | symbol]: T[K_1] extends BcsType<any, U_1> ? U_1 : never }>
Example
const struct = bcs.struct('MyStruct', {
a: bcs.u8(),
b: bcs.string(),
})
struct.serialize({ a: 1, b: 'a' }).toBytes() // Uint8Array [ 1, 1, 97 ]
enum()
Creates a BcsType representing an enum of a given set of options
Type Parameters
• T extends Record
<string
, null
| BcsType
<any
, any
>>
Parameters
• name: string
The name of the enum
• values: T
The values of the enum. The order of the values affects how data is serialized and deserialized. null can be used to represent a variant with no data.
• options?: Omit
<BcsTypeOptions
<EnumOutputShape
<{ [K in string | number | symbol]: T[K] extends BcsType<U, any> ? U : true }>, EnumInputShape
<{ [K in string | number | symbol]: T[K] extends BcsType<any, U> ? U : null | boolean | object }>>, "name"
>
Returns
BcsType
<EnumOutputShape
<{ [K in string | number | symbol]: T[K] extends BcsType<U, any> ? U : true }>, EnumInputShape
<{ [K_1 in string | number | symbol]: T[K_1] extends BcsType<any, U_1> ? U_1 : null | boolean | object }>>
Example
const enum = bcs.enum('MyEnum', {
A: bcs.u8(),
B: bcs.string(),
C: null,
})
enum.serialize({ A: 1 }).toBytes() // Uint8Array [ 0, 1 ]
enum.serialize({ B: 'a' }).toBytes() // Uint8Array [ 1, 1, 97 ]
enum.serialize({ C: true }).toBytes() // Uint8Array [ 2 ]
map()
Creates a BcsType representing a map of a given key and value type
Type Parameters
• K
• V
• InputK = K
• InputV = V
Parameters
• keyType: BcsType
<K
, InputK
>
The BcsType of the key
• valueType: BcsType
<V
, InputV
>
The BcsType of the value
Returns
BcsType
<Map
<K
, V
>, Map
<InputK
, InputV
>>
Example
const map = bcs.map(bcs.u8(), bcs.string())
map.serialize(new Map([[2, 'a']])).toBytes() // Uint8Array [ 1, 2, 1, 97 ]
lazy()
Creates a BcsType that wraps another BcsType which is lazily evaluated. This is useful for creating recursive types.
Type Parameters
• T extends BcsType
<any
, any
>
Parameters
• cb
A callback that returns the BcsType
Returns
T
U8
U8:
BcsType
<number
,number
>
U16
U16:
BcsType
<number
,number
>
U32
U32:
BcsType
<number
,number
>
U64
U64:
BcsType
<string
,string
|number
|bigint
>
U128
U128:
BcsType
<string
,string
|number
|bigint
>
U256
U256:
BcsType
<string
,string
|number
|bigint
>
ULEB128
ULEB128:
BcsType
<number
,number
>
Bool
Bool:
BcsType
<boolean
,boolean
>
String
String:
BcsType
<string
,string
>
Address
Address:
BcsType
<string
,string
|Uint8Array
>
AppId
AppId:
BcsType
<object
,object
>
Type declaration
$kind
$kind:
"Iota"
Iota
Iota:
true
=null
Argument
Argument:
BcsType
<EnumOutputShapeWithKeys
<object
,"GasCoin"
|"Input"
|"Result"
|"NestedResult"
>,EnumInputShape
<object
>>
CallArg
CallArg:
BcsType
<EnumOutputShapeWithKeys
<object
,"Pure"
|"Object"
>,EnumInputShape
<object
>>
CompressedSignature
CompressedSignature:
BcsType
<EnumOutputShapeWithKeys
<object
,"ED25519"
|"Secp256k1"
|"Secp256r1"
>,EnumInputShape
<object
>>