@sentio/sdk 2.6.0-rc.1 → 2.6.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/lib/move/abstract-codegen.d.ts +2 -0
  2. package/lib/move/abstract-codegen.js +72 -6
  3. package/lib/move/abstract-codegen.js.map +1 -1
  4. package/lib/move/abstract-move-coder.js +0 -2
  5. package/lib/move/abstract-move-coder.js.map +1 -1
  6. package/lib/move/index.d.ts +0 -1
  7. package/lib/move/index.js +0 -1
  8. package/lib/move/index.js.map +1 -1
  9. package/lib/move/utils.d.ts +2 -0
  10. package/lib/move/utils.js +3 -0
  11. package/lib/move/utils.js.map +1 -1
  12. package/lib/sui/builtin/0x1.d.ts +3 -16
  13. package/lib/sui/builtin/0x1.js +0 -25
  14. package/lib/sui/builtin/0x1.js.map +1 -1
  15. package/lib/sui/builtin/0x2.d.ts +68 -85
  16. package/lib/sui/builtin/0x2.js +1 -29
  17. package/lib/sui/builtin/0x2.js.map +1 -1
  18. package/lib/sui/codegen/codegen.js +21 -1
  19. package/lib/sui/codegen/codegen.js.map +1 -1
  20. package/lib/sui/move-coder.d.ts +1 -0
  21. package/lib/sui/move-coder.js +11 -0
  22. package/lib/sui/move-coder.js.map +1 -1
  23. package/lib/sui/sui-processor.js +1 -0
  24. package/lib/sui/sui-processor.js.map +1 -1
  25. package/package.json +4 -4
  26. package/src/move/abstract-codegen.ts +81 -6
  27. package/src/move/abstract-move-coder.ts +0 -2
  28. package/src/move/index.ts +0 -1
  29. package/src/move/utils.ts +6 -0
  30. package/src/sui/builtin/0x1.ts +3 -39
  31. package/src/sui/builtin/0x2.ts +69 -108
  32. package/src/sui/codegen/codegen.ts +23 -1
  33. package/src/sui/move-coder.ts +12 -0
  34. package/src/sui/sui-processor.ts +1 -0
  35. package/lib/move/ts-type.d.ts +0 -2
  36. package/lib/move/ts-type.js +0 -77
  37. package/lib/move/ts-type.js.map +0 -1
  38. package/src/move/ts-type.ts +0 -86
@@ -73,7 +73,7 @@ export class bcs extends SuiBaseProcessor {
73
73
  export namespace bcs {
74
74
  export class BCS {
75
75
  static TYPE_QNAME = "0x2::bcs::BCS";
76
- bytes: string;
76
+ bytes: number[];
77
77
  }
78
78
 
79
79
  export interface BCSInstance extends TypedEventInstance<BCS> {
@@ -227,11 +227,7 @@ export class coin extends SuiBaseProcessor {
227
227
  }
228
228
 
229
229
  export namespace coin {
230
- export class Coin<T0> {
231
- static TYPE_QNAME = "0x2::coin::Coin";
232
- id: object_.UID;
233
- balance: balance.Balance<T0>;
234
- }
230
+ export type Coin<T> = string;
235
231
 
236
232
  export class CoinMetadata<T0> {
237
233
  static TYPE_QNAME = "0x2::coin::CoinMetadata";
@@ -390,7 +386,7 @@ export namespace devnet_nft {
390
386
 
391
387
  export class MintNFTEvent {
392
388
  static TYPE_QNAME = "0x2::devnet_nft::MintNFTEvent";
393
- object_id: string;
389
+ object_id: object_.ID;
394
390
  creator: SuiAddress;
395
391
  name: string;
396
392
  }
@@ -407,8 +403,8 @@ export namespace devnet_nft {
407
403
  }
408
404
 
409
405
  export interface MintPayload
410
- extends TypedFunctionPayload<[string, string, string]> {
411
- arguments_decoded: [string, string, string];
406
+ extends TypedFunctionPayload<[number[], number[], number[]]> {
407
+ arguments_decoded: [number[], number[], number[]];
412
408
  type_arguments: [];
413
409
  }
414
410
 
@@ -450,7 +446,7 @@ export class digest extends SuiBaseProcessor {
450
446
  export namespace digest {
451
447
  export class Sha3256Digest {
452
448
  static TYPE_QNAME = "0x2::digest::Sha3256Digest";
453
- digest: string;
449
+ digest: number[];
454
450
  }
455
451
 
456
452
  export interface Sha3256DigestInstance
@@ -570,7 +566,7 @@ export class elliptic_curve extends SuiBaseProcessor {
570
566
  export namespace elliptic_curve {
571
567
  export class RistrettoPoint {
572
568
  static TYPE_QNAME = "0x2::elliptic_curve::RistrettoPoint";
573
- value: string;
569
+ value: number[];
574
570
  }
575
571
 
576
572
  export interface RistrettoPointInstance
@@ -581,7 +577,7 @@ export namespace elliptic_curve {
581
577
 
582
578
  export class Scalar {
583
579
  static TYPE_QNAME = "0x2::elliptic_curve::Scalar";
584
- value: string;
580
+ value: number[];
585
581
  }
586
582
 
587
583
  export interface ScalarInstance extends TypedEventInstance<Scalar> {
@@ -677,10 +673,10 @@ export class groth16 extends SuiBaseProcessor {
677
673
  export namespace groth16 {
678
674
  export class PreparedVerifyingKey {
679
675
  static TYPE_QNAME = "0x2::groth16::PreparedVerifyingKey";
680
- vk_gamma_abc_g1_bytes: string;
681
- alpha_g1_beta_g2_bytes: string;
682
- gamma_g2_neg_pc_bytes: string;
683
- delta_g2_neg_pc_bytes: string;
676
+ vk_gamma_abc_g1_bytes: number[];
677
+ alpha_g1_beta_g2_bytes: number[];
678
+ gamma_g2_neg_pc_bytes: number[];
679
+ delta_g2_neg_pc_bytes: number[];
684
680
  }
685
681
 
686
682
  export interface PreparedVerifyingKeyInstance
@@ -691,7 +687,7 @@ export namespace groth16 {
691
687
 
692
688
  export class ProofPoints {
693
689
  static TYPE_QNAME = "0x2::groth16::ProofPoints";
694
- bytes: string;
690
+ bytes: number[];
695
691
  }
696
692
 
697
693
  export interface ProofPointsInstance extends TypedEventInstance<ProofPoints> {
@@ -701,7 +697,7 @@ export namespace groth16 {
701
697
 
702
698
  export class PublicProofInputs {
703
699
  static TYPE_QNAME = "0x2::groth16::PublicProofInputs";
704
- bytes: string;
700
+ bytes: number[];
705
701
  }
706
702
 
707
703
  export interface PublicProofInputsInstance
@@ -838,8 +834,8 @@ export namespace locked_coin {
838
834
  }
839
835
 
840
836
  export interface LockCoinPayload<T0 = any>
841
- extends TypedFunctionPayload<[string, SuiAddress, bigint]> {
842
- arguments_decoded: [string, SuiAddress, bigint];
837
+ extends TypedFunctionPayload<[coin.Coin<T0>, SuiAddress, bigint]> {
838
+ arguments_decoded: [coin.Coin<T0>, SuiAddress, bigint];
843
839
  type_arguments: [string];
844
840
  }
845
841
 
@@ -852,48 +848,12 @@ export namespace locked_coin {
852
848
 
853
849
  export namespace math {}
854
850
 
855
- export class object_ extends SuiBaseProcessor {
856
- constructor(options: SuiBindOptions) {
857
- super("object", options);
858
- }
859
- static DEFAULT_OPTIONS: SuiBindOptions = {
860
- address: "0x2",
861
- network: SuiNetwork.MAIN_NET,
862
- };
863
-
864
- static bind(options: Partial<SuiBindOptions> = {}): object_ {
865
- return new object_({ ...object_.DEFAULT_OPTIONS, ...options });
866
- }
867
-
868
- onEventID(
869
- func: (event: object_.IDInstance, ctx: SuiContext) => void,
870
- fetchConfig?: MoveFetchConfig
871
- ): object_ {
872
- this.onMoveEvent(
873
- func,
874
- {
875
- type: "object::ID",
876
- },
877
- fetchConfig
878
- );
879
- return this;
880
- }
881
- }
882
-
883
851
  export namespace object_ {
884
- export class ID {
885
- static TYPE_QNAME = "0x2::object::ID";
886
- bytes: SuiAddress;
887
- }
888
-
889
- export interface IDInstance extends TypedEventInstance<ID> {
890
- fields_decoded: ID;
891
- type_arguments: [];
892
- }
852
+ export type ID = string;
893
853
 
894
854
  export class UID {
895
855
  static TYPE_QNAME = "0x2::object::UID";
896
- id: string;
856
+ id: object_.ID;
897
857
  }
898
858
  }
899
859
 
@@ -1059,8 +1019,8 @@ export namespace pay {
1059
1019
  }
1060
1020
 
1061
1021
  export interface JoinVecAndTransferPayload<T0 = any>
1062
- extends TypedFunctionPayload<[string[]]> {
1063
- arguments_decoded: [string[]];
1022
+ extends TypedFunctionPayload<[coin.Coin<T0>[]]> {
1023
+ arguments_decoded: [coin.Coin<T0>[]];
1064
1024
  type_arguments: [string];
1065
1025
  }
1066
1026
 
@@ -1222,26 +1182,26 @@ export namespace safe {
1222
1182
  export class OwnerCapability<T0> {
1223
1183
  static TYPE_QNAME = "0x2::safe::OwnerCapability";
1224
1184
  id: object_.UID;
1225
- safe_id: string;
1185
+ safe_id: object_.ID;
1226
1186
  }
1227
1187
 
1228
1188
  export class Safe<T0> {
1229
1189
  static TYPE_QNAME = "0x2::safe::Safe";
1230
1190
  id: object_.UID;
1231
1191
  balance: balance.Balance<T0>;
1232
- allowed_safes: vec_set.VecSet<string>;
1192
+ allowed_safes: vec_set.VecSet<object_.ID>;
1233
1193
  }
1234
1194
 
1235
1195
  export class TransferCapability<T0> {
1236
1196
  static TYPE_QNAME = "0x2::safe::TransferCapability";
1237
1197
  id: object_.UID;
1238
- safe_id: string;
1198
+ safe_id: object_.ID;
1239
1199
  amount: bigint;
1240
1200
  }
1241
1201
 
1242
1202
  export interface CreatePayload<T0 = any>
1243
- extends TypedFunctionPayload<[string]> {
1244
- arguments_decoded: [string];
1203
+ extends TypedFunctionPayload<[coin.Coin<T0>]> {
1204
+ arguments_decoded: [coin.Coin<T0>];
1245
1205
  type_arguments: [string];
1246
1206
  }
1247
1207
 
@@ -1421,7 +1381,7 @@ export namespace staking_pool {
1421
1381
  export class Delegation {
1422
1382
  static TYPE_QNAME = "0x2::staking_pool::Delegation";
1423
1383
  id: object_.UID;
1424
- staked_sui_id: string;
1384
+ staked_sui_id: object_.ID;
1425
1385
  pool_tokens: balance.Balance<staking_pool.DelegationToken>;
1426
1386
  principal_sui_amount: bigint;
1427
1387
  }
@@ -1480,7 +1440,7 @@ export namespace staking_pool {
1480
1440
  rewards_pool: balance.Balance<sui.SUI>;
1481
1441
  delegation_token_supply: balance.Supply<staking_pool.DelegationToken>;
1482
1442
  pending_delegations: linked_table.LinkedTable<
1483
- string,
1443
+ object_.ID,
1484
1444
  staking_pool.PendingDelegationEntry
1485
1445
  >;
1486
1446
  pending_withdraws: table_vec.TableVec<staking_pool.PendingWithdrawEntry>;
@@ -1547,8 +1507,9 @@ export namespace sui {
1547
1507
  dummy_field: Boolean;
1548
1508
  }
1549
1509
 
1550
- export interface TransferPayload extends TypedFunctionPayload<[string]> {
1551
- arguments_decoded: [string];
1510
+ export interface TransferPayload
1511
+ extends TypedFunctionPayload<[coin.Coin<sui.SUI>]> {
1512
+ arguments_decoded: [coin.Coin<sui.SUI>];
1552
1513
  type_arguments: [];
1553
1514
  }
1554
1515
  }
@@ -1991,18 +1952,18 @@ export namespace sui_system {
1991
1952
  }
1992
1953
 
1993
1954
  export interface RequestAddDelegationPayload
1994
- extends TypedFunctionPayload<[SuiAddress, string, SuiAddress]> {
1995
- arguments_decoded: [SuiAddress, string, SuiAddress];
1955
+ extends TypedFunctionPayload<[SuiAddress, coin.Coin<sui.SUI>, SuiAddress]> {
1956
+ arguments_decoded: [SuiAddress, coin.Coin<sui.SUI>, SuiAddress];
1996
1957
  type_arguments: [];
1997
1958
  }
1998
1959
 
1999
1960
  export interface RequestAddDelegationMulCoinPayload
2000
1961
  extends TypedFunctionPayload<
2001
- [SuiAddress, string[], _0x1.option.Option<bigint>, SuiAddress]
1962
+ [SuiAddress, coin.Coin<sui.SUI>[], _0x1.option.Option<bigint>, SuiAddress]
2002
1963
  > {
2003
1964
  arguments_decoded: [
2004
1965
  SuiAddress,
2005
- string[],
1966
+ coin.Coin<sui.SUI>[],
2006
1967
  _0x1.option.Option<bigint>,
2007
1968
  SuiAddress
2008
1969
  ];
@@ -2040,8 +2001,8 @@ export namespace sui_system {
2040
2001
  }
2041
2002
 
2042
2003
  export interface RequestAddStakePayload
2043
- extends TypedFunctionPayload<[SuiAddress, string]> {
2044
- arguments_decoded: [SuiAddress, string];
2004
+ extends TypedFunctionPayload<[SuiAddress, coin.Coin<sui.SUI>]> {
2005
+ arguments_decoded: [SuiAddress, coin.Coin<sui.SUI>];
2045
2006
  type_arguments: [];
2046
2007
  }
2047
2008
 
@@ -2057,36 +2018,36 @@ export namespace sui_system {
2057
2018
  extends TypedFunctionPayload<
2058
2019
  [
2059
2020
  SuiAddress,
2060
- string,
2061
- string,
2062
- string,
2063
- string,
2064
- string,
2065
- string,
2066
- string,
2067
- string,
2068
- string,
2069
- string,
2070
- string,
2071
- string,
2021
+ number[],
2022
+ number[],
2023
+ number[],
2024
+ number[],
2025
+ number[],
2026
+ number[],
2027
+ number[],
2028
+ number[],
2029
+ number[],
2030
+ number[],
2031
+ number[],
2032
+ coin.Coin<sui.SUI>,
2072
2033
  bigint,
2073
2034
  bigint
2074
2035
  ]
2075
2036
  > {
2076
2037
  arguments_decoded: [
2077
2038
  SuiAddress,
2078
- string,
2079
- string,
2080
- string,
2081
- string,
2082
- string,
2083
- string,
2084
- string,
2085
- string,
2086
- string,
2087
- string,
2088
- string,
2089
- string,
2039
+ number[],
2040
+ number[],
2041
+ number[],
2042
+ number[],
2043
+ number[],
2044
+ number[],
2045
+ number[],
2046
+ number[],
2047
+ number[],
2048
+ number[],
2049
+ number[],
2050
+ coin.Coin<sui.SUI>,
2090
2051
  bigint,
2091
2052
  bigint
2092
2053
  ];
@@ -2170,7 +2131,7 @@ export namespace tx_context {
2170
2131
  export class TxContext {
2171
2132
  static TYPE_QNAME = "0x2::tx_context::TxContext";
2172
2133
  sender: SuiAddress;
2173
- tx_hash: string;
2134
+ tx_hash: number[];
2174
2135
  epoch: bigint;
2175
2136
  ids_created: bigint;
2176
2137
  }
@@ -2207,7 +2168,7 @@ export class typed_id extends SuiBaseProcessor {
2207
2168
  export namespace typed_id {
2208
2169
  export class TypedID<T0> {
2209
2170
  static TYPE_QNAME = "0x2::typed_id::TypedID";
2210
- id: string;
2171
+ id: object_.ID;
2211
2172
  }
2212
2173
 
2213
2174
  export interface TypedIDInstance extends TypedEventInstance<TypedID<any>> {
@@ -2302,17 +2263,17 @@ export namespace validator {
2302
2263
  export class ValidatorMetadata {
2303
2264
  static TYPE_QNAME = "0x2::validator::ValidatorMetadata";
2304
2265
  sui_address: SuiAddress;
2305
- pubkey_bytes: string;
2306
- network_pubkey_bytes: string;
2307
- worker_pubkey_bytes: string;
2308
- proof_of_possession: string;
2266
+ pubkey_bytes: number[];
2267
+ network_pubkey_bytes: number[];
2268
+ worker_pubkey_bytes: number[];
2269
+ proof_of_possession: number[];
2309
2270
  name: string;
2310
2271
  description: string;
2311
2272
  image_url: url.Url;
2312
2273
  project_url: url.Url;
2313
- net_address: string;
2314
- consensus_address: string;
2315
- worker_address: string;
2274
+ net_address: number[];
2275
+ consensus_address: number[];
2276
+ worker_address: number[];
2316
2277
  next_epoch_stake: bigint;
2317
2278
  next_epoch_delegation: bigint;
2318
2279
  next_epoch_gas_price: bigint;
@@ -5,7 +5,7 @@ import { InternalMoveModule, InternalMoveStruct } from '../../move/internal-mode
5
5
  import { AbstractCodegen } from '../../move/abstract-codegen.js'
6
6
  import { JsonRpcProvider, SuiMoveNormalizedModules } from '@mysten/sui.js'
7
7
  import { toInternalModule } from '../move-types.js'
8
- import { moduleQname, SPLITTER, TypeDescriptor } from '../../move/index.js'
8
+ import { moduleQname, SPLITTER, structQname, TypeDescriptor } from '../../move/index.js'
9
9
  import { getMeaningfulFunctionParams } from '../utils.js'
10
10
 
11
11
  export async function codegen(abisDir: string, outDir = 'src/types/sui') {
@@ -69,4 +69,26 @@ class SuiCodegen extends AbstractCodegen<SuiMoveNormalizedModules, SuiNetwork> {
69
69
  }
70
70
  return res
71
71
  }
72
+
73
+ generateStructs(module: InternalMoveModule, struct: InternalMoveStruct, events: Set<string>): string {
74
+ switch (structQname(module, struct)) {
75
+ case '0x2::object::ID':
76
+ return `export type ${struct.name} = string`
77
+ case '0x2::coin::Coin':
78
+ return `export type ${struct.name}<T> = string`
79
+ case '0x1::option::Option':
80
+ return `export type Option<T> = T | undefined`
81
+ }
82
+ return super.generateStructs(module, struct, events)
83
+ }
84
+
85
+ generateOnEvents(module: InternalMoveModule, struct: InternalMoveStruct): string {
86
+ switch (structQname(module, struct)) {
87
+ case '0x2::object::ID':
88
+ case '0x2::coin::Coin':
89
+ case '0x1::option::Option':
90
+ return ''
91
+ }
92
+ return super.generateOnEvents(module, struct)
93
+ }
72
94
  }
@@ -13,6 +13,18 @@ export class MoveCoder extends AbstractMoveCoder<MoveEvent> {
13
13
  this.loadInternal(toInternalModule(module))
14
14
  }
15
15
 
16
+ decode(data: any, type: TypeDescriptor): any {
17
+ switch (type.qname) {
18
+ case '0x2::object::ID':
19
+ case '0x2::coin::Coin':
20
+ return data
21
+ case '0x1::option::Option':
22
+ return this.decode(data, type.typeArgs[0])
23
+ default:
24
+ return super.decode(data, type)
25
+ }
26
+ }
27
+
16
28
  decodeEvent<T>(event: MoveEvent): TypedEventInstance<T> | undefined {
17
29
  const res = this.decodedInternal<T>({ ...event, data: event.fields })
18
30
  return { ...event, fields_decoded: res?.data_decoded as T, type_arguments: res?.type_arguments || [] }
@@ -32,6 +32,7 @@ export class SuiBaseProcessor {
32
32
  callHandlers: CallHandler<Data_SuiCall>[] = []
33
33
 
34
34
  constructor(name: string, options: SuiBindOptions) {
35
+ this.moduleName = name
35
36
  this.config = configure(options)
36
37
  SuiProcessorState.INSTANCE.addValue(this)
37
38
  }
@@ -1,2 +0,0 @@
1
- import { TypeDescriptor } from './types.js';
2
- export declare function generateTypeForDescriptor(type: TypeDescriptor, currentAddress: string, addressType: string): string;
@@ -1,77 +0,0 @@
1
- import { normalizeToJSName, SPLITTER, VECTOR_STR } from './utils.js';
2
- export function generateTypeForDescriptor(type, currentAddress, addressType) {
3
- if (type.qname.startsWith('&')) {
4
- throw Error('Unexpected &');
5
- }
6
- if (type.reference) {
7
- return addressType;
8
- }
9
- switch (type.qname) {
10
- case 'signer': // TODO check this
11
- case 'address':
12
- case 'Address':
13
- return addressType;
14
- case '0x2::object::ID':
15
- case '0x2::coin::Coin':
16
- return 'string';
17
- case '0x1::string::String':
18
- return 'string';
19
- case 'bool':
20
- case 'Bool':
21
- return 'Boolean';
22
- case 'u8':
23
- case 'U8':
24
- case 'u16':
25
- case 'U16':
26
- case 'u32':
27
- case 'U32':
28
- return 'number';
29
- case 'u64':
30
- case 'U64':
31
- case 'u128':
32
- case 'U128':
33
- case 'u256':
34
- case 'U256':
35
- return 'bigint';
36
- }
37
- if (type.qname.toLowerCase() === VECTOR_STR) {
38
- // vector<u8> as hex string
39
- const elementTypeQname = type.typeArgs[0].qname;
40
- if (elementTypeQname === 'u8' || elementTypeQname === 'U8') {
41
- return 'string';
42
- }
43
- if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {
44
- return `${elementTypeQname}[] | string`;
45
- }
46
- return generateTypeForDescriptor(type.typeArgs[0], currentAddress, addressType) + '[]';
47
- }
48
- const simpleName = generateSimpleType(type.qname, currentAddress);
49
- if (simpleName.length === 0) {
50
- console.error('unexpected error');
51
- }
52
- if (simpleName.toLowerCase() === VECTOR_STR || simpleName.toLowerCase().startsWith(VECTOR_STR + SPLITTER)) {
53
- console.error('unexpected vector type error');
54
- }
55
- if (type.typeArgs.length > 0) {
56
- // return simpleName
57
- return (simpleName +
58
- '<' +
59
- type.typeArgs.map((t) => generateTypeForDescriptor(t, currentAddress, addressType)).join(',') +
60
- '>');
61
- }
62
- return simpleName;
63
- }
64
- function generateSimpleType(type, currentAddress) {
65
- const parts = type.split(SPLITTER);
66
- for (let i = 0; i < parts.length; i++) {
67
- parts[i] = normalizeToJSName(parts[i]);
68
- }
69
- if (parts.length < 2) {
70
- return parts[0];
71
- }
72
- if (parts[0] === currentAddress) {
73
- return parts.slice(1).join('.');
74
- }
75
- return '_' + parts.join('.');
76
- }
77
- //# sourceMappingURL=ts-type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ts-type.js","sourceRoot":"","sources":["../../src/move/ts-type.ts"],"names":[],"mappings":"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","sourcesContent":["import { TypeDescriptor } from './types.js'\nimport { normalizeToJSName, SPLITTER, VECTOR_STR } from './utils.js'\n\nexport function generateTypeForDescriptor(type: TypeDescriptor, currentAddress: string, addressType: string): string {\n if (type.qname.startsWith('&')) {\n throw Error('Unexpected &')\n }\n if (type.reference) {\n return addressType\n }\n\n switch (type.qname) {\n case 'signer': // TODO check this\n case 'address':\n case 'Address':\n return addressType\n case '0x2::object::ID':\n case '0x2::coin::Coin':\n return 'string'\n case '0x1::string::String':\n return 'string'\n case 'bool':\n case 'Bool':\n return 'Boolean'\n case 'u8':\n case 'U8':\n case 'u16':\n case 'U16':\n case 'u32':\n case 'U32':\n return 'number'\n case 'u64':\n case 'U64':\n case 'u128':\n case 'U128':\n case 'u256':\n case 'U256':\n return 'bigint'\n }\n\n if (type.qname.toLowerCase() === VECTOR_STR) {\n // vector<u8> as hex string\n const elementTypeQname = type.typeArgs[0].qname\n if (elementTypeQname === 'u8' || elementTypeQname === 'U8') {\n return 'string'\n }\n if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {\n return `${elementTypeQname}[] | string`\n }\n return generateTypeForDescriptor(type.typeArgs[0], currentAddress, addressType) + '[]'\n }\n\n const simpleName = generateSimpleType(type.qname, currentAddress)\n if (simpleName.length === 0) {\n console.error('unexpected error')\n }\n if (simpleName.toLowerCase() === VECTOR_STR || simpleName.toLowerCase().startsWith(VECTOR_STR + SPLITTER)) {\n console.error('unexpected vector type error')\n }\n if (type.typeArgs.length > 0) {\n // return simpleName\n return (\n simpleName +\n '<' +\n type.typeArgs.map((t) => generateTypeForDescriptor(t, currentAddress, addressType)).join(',') +\n '>'\n )\n }\n return simpleName\n}\n\nfunction generateSimpleType(type: string, currentAddress: string): string {\n const parts = type.split(SPLITTER)\n\n for (let i = 0; i < parts.length; i++) {\n parts[i] = normalizeToJSName(parts[i])\n }\n\n if (parts.length < 2) {\n return parts[0]\n }\n if (parts[0] === currentAddress) {\n return parts.slice(1).join('.')\n }\n return '_' + parts.join('.')\n}\n"]}
@@ -1,86 +0,0 @@
1
- import { TypeDescriptor } from './types.js'
2
- import { normalizeToJSName, SPLITTER, VECTOR_STR } from './utils.js'
3
-
4
- export function generateTypeForDescriptor(type: TypeDescriptor, currentAddress: string, addressType: string): string {
5
- if (type.qname.startsWith('&')) {
6
- throw Error('Unexpected &')
7
- }
8
- if (type.reference) {
9
- return addressType
10
- }
11
-
12
- switch (type.qname) {
13
- case 'signer': // TODO check this
14
- case 'address':
15
- case 'Address':
16
- return addressType
17
- case '0x2::object::ID':
18
- case '0x2::coin::Coin':
19
- return 'string'
20
- case '0x1::string::String':
21
- return 'string'
22
- case 'bool':
23
- case 'Bool':
24
- return 'Boolean'
25
- case 'u8':
26
- case 'U8':
27
- case 'u16':
28
- case 'U16':
29
- case 'u32':
30
- case 'U32':
31
- return 'number'
32
- case 'u64':
33
- case 'U64':
34
- case 'u128':
35
- case 'U128':
36
- case 'u256':
37
- case 'U256':
38
- return 'bigint'
39
- }
40
-
41
- if (type.qname.toLowerCase() === VECTOR_STR) {
42
- // vector<u8> as hex string
43
- const elementTypeQname = type.typeArgs[0].qname
44
- if (elementTypeQname === 'u8' || elementTypeQname === 'U8') {
45
- return 'string'
46
- }
47
- if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {
48
- return `${elementTypeQname}[] | string`
49
- }
50
- return generateTypeForDescriptor(type.typeArgs[0], currentAddress, addressType) + '[]'
51
- }
52
-
53
- const simpleName = generateSimpleType(type.qname, currentAddress)
54
- if (simpleName.length === 0) {
55
- console.error('unexpected error')
56
- }
57
- if (simpleName.toLowerCase() === VECTOR_STR || simpleName.toLowerCase().startsWith(VECTOR_STR + SPLITTER)) {
58
- console.error('unexpected vector type error')
59
- }
60
- if (type.typeArgs.length > 0) {
61
- // return simpleName
62
- return (
63
- simpleName +
64
- '<' +
65
- type.typeArgs.map((t) => generateTypeForDescriptor(t, currentAddress, addressType)).join(',') +
66
- '>'
67
- )
68
- }
69
- return simpleName
70
- }
71
-
72
- function generateSimpleType(type: string, currentAddress: string): string {
73
- const parts = type.split(SPLITTER)
74
-
75
- for (let i = 0; i < parts.length; i++) {
76
- parts[i] = normalizeToJSName(parts[i])
77
- }
78
-
79
- if (parts.length < 2) {
80
- return parts[0]
81
- }
82
- if (parts[0] === currentAddress) {
83
- return parts.slice(1).join('.')
84
- }
85
- return '_' + parts.join('.')
86
- }