Supported Types

The following types can be used in dubhe.config.ts for resource field and key definitions.

Primitive types

dubhe.config.tsMove typeTypeScript (client)
"bool"boolboolean
"u8"u8number
"u16"u16number
"u32"u32number
"u64"u64bigint
"u128"u128bigint
"u256"u256bigint
"address"addressstring
"String"std::ascii::Stringstring

Vector types

dubhe.config.tsMove typeTypeScript (client)
"vector<u8>"vector<u8>number[]
"vector<u16>"vector<u16>number[]
"vector<u32>"vector<u32>number[]
"vector<u64>"vector<u64>bigint[]
"vector<u128>"vector<u128>bigint[]
"vector<u256>"vector<u256>bigint[]
"vector<address>"vector<address>string[]
"vector<bool>"vector<bool>boolean[]
"vector<String>"vector<String>string[]
"vector<vector<u8>>"vector<vector<u8>>number[][]

Enum types

Any enum defined in the enums section of dubhe.config.ts can be used as a field or key type by its name string.

enums: {
  Direction: ['North', 'East', 'South', 'West'],
  Status:    ['Idle', 'Fighting', 'Dead']
},
resources: {
  facing:  'Direction',                                         // enum as single value
  unit:    { fields: { pos: 'address', status: 'Status' } },   // enum as field
  combat:  { fields: { attacker: 'address', dir: 'Direction' }, keys: ['attacker'] } // enum as key
}

Enum variants are encoded as u8 indices via BCS. Each enum gets its own Move module with:

  • new_<variant>() constructors
  • is_<variant>() predicates
  • encode(v) / decode(bcs) for BCS serialization

Type notes

  • u64, u128, u256 are represented as bigint in TypeScript clients to avoid precision loss.
  • String refers to std::ascii::String in Move. Non-ASCII characters are not supported; use vector<u8> for arbitrary bytes.
  • address is a 32-byte Sui address. When used as a resource_account parameter, it is passed as a hex-encoded ASCII string (e.g. "0x000...00a").
  • vector<u16> is supported in codegen but note that Sui’s BCS does not have a native peel_u16; the codegen handles this via manual byte parsing.