@sentio/sdk 2.4.0 → 2.5.0-rc.2

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 (170) hide show
  1. package/lib/aptos/aptos-processor.d.ts +1 -1
  2. package/lib/aptos/aptos-processor.js +1 -1
  3. package/lib/aptos/aptos-processor.js.map +1 -1
  4. package/lib/aptos/builtin/0x1.d.ts +16 -177
  5. package/lib/aptos/builtin/0x1.js +56 -538
  6. package/lib/aptos/builtin/0x1.js.map +1 -1
  7. package/lib/aptos/builtin/0x3.d.ts +2 -13
  8. package/lib/aptos/builtin/0x3.js +20 -48
  9. package/lib/aptos/builtin/0x3.js.map +1 -1
  10. package/lib/aptos/codegen/codegen.d.ts +0 -20
  11. package/lib/aptos/codegen/codegen.js +37 -357
  12. package/lib/aptos/codegen/codegen.js.map +1 -1
  13. package/lib/aptos/{types.test.d.ts → codegen/types.test.d.ts} +0 -0
  14. package/lib/aptos/codegen/types.test.js.map +1 -0
  15. package/lib/aptos/models.d.ts +0 -8
  16. package/lib/aptos/models.js.map +1 -1
  17. package/lib/aptos/move-coder.d.ts +4 -13
  18. package/lib/aptos/move-coder.js +13 -124
  19. package/lib/aptos/move-coder.js.map +1 -1
  20. package/lib/aptos/move-types.d.ts +6 -0
  21. package/lib/aptos/move-types.js +52 -1
  22. package/lib/aptos/move-types.js.map +1 -1
  23. package/lib/aptos/tests/souffl3.js +1 -1
  24. package/lib/aptos/tests/souffl3.js.map +1 -1
  25. package/lib/aptos/tests/types/reserved.d.ts +2 -8
  26. package/lib/aptos/tests/types/reserved.js +11 -24
  27. package/lib/aptos/tests/types/reserved.js.map +1 -1
  28. package/lib/aptos/tests/types/soffl3.d.ts +2 -14
  29. package/lib/aptos/tests/types/soffl3.js +15 -48
  30. package/lib/aptos/tests/types/soffl3.js.map +1 -1
  31. package/lib/aptos/tests/types/souffle.d.ts +2 -8
  32. package/lib/aptos/tests/types/souffle.js +11 -24
  33. package/lib/aptos/tests/types/souffle.js.map +1 -1
  34. package/lib/aptos/utils.d.ts +2 -7
  35. package/lib/aptos/utils.js +2 -15
  36. package/lib/aptos/utils.js.map +1 -1
  37. package/lib/eth/bind-options.js +6 -0
  38. package/lib/eth/bind-options.js.map +1 -1
  39. package/lib/eth/tests/codegen.test.js.map +1 -1
  40. package/lib/eth/tests/erc20.js +1 -1
  41. package/lib/eth/tests/erc20.js.map +1 -1
  42. package/lib/eth/tests/logger.test.js.map +1 -1
  43. package/lib/move/abstract-codegen.d.ts +44 -0
  44. package/lib/move/abstract-codegen.js +341 -0
  45. package/lib/move/abstract-codegen.js.map +1 -0
  46. package/lib/move/abstract-move-coder.d.ts +24 -0
  47. package/lib/move/abstract-move-coder.js +141 -0
  48. package/lib/move/abstract-move-coder.js.map +1 -0
  49. package/lib/move/account.d.ts +18 -0
  50. package/lib/{aptos/codegen/typegen.js → move/account.js} +20 -82
  51. package/lib/move/account.js.map +1 -0
  52. package/lib/move/filter.d.ts +25 -0
  53. package/lib/move/filter.js +11 -0
  54. package/lib/move/filter.js.map +1 -0
  55. package/lib/move/index.d.ts +5 -25
  56. package/lib/move/index.js +5 -10
  57. package/lib/move/index.js.map +1 -1
  58. package/lib/move/neutral-models.d.ts +34 -0
  59. package/lib/move/neutral-models.js +7 -0
  60. package/lib/move/neutral-models.js.map +1 -0
  61. package/lib/move/ts-type.d.ts +2 -0
  62. package/lib/move/ts-type.js +77 -0
  63. package/lib/move/ts-type.js.map +1 -0
  64. package/lib/{aptos/codegen/typegen.test.d.ts → move/ts-type.test.d.ts} +0 -0
  65. package/lib/move/ts-type.test.js.map +1 -0
  66. package/lib/{aptos → move}/types.d.ts +1 -0
  67. package/lib/{aptos → move}/types.js +26 -3
  68. package/lib/move/types.js.map +1 -0
  69. package/lib/move/utils.d.ts +9 -0
  70. package/lib/move/utils.js +20 -0
  71. package/lib/move/utils.js.map +1 -0
  72. package/lib/sui/builtin/0x1.d.ts +114 -0
  73. package/lib/sui/builtin/0x1.js +174 -0
  74. package/lib/sui/builtin/0x1.js.map +1 -0
  75. package/lib/sui/builtin/0x2.d.ts +1047 -0
  76. package/lib/sui/builtin/0x2.js +1295 -0
  77. package/lib/sui/builtin/0x2.js.map +1 -0
  78. package/lib/sui/builtin/index.d.ts +2 -0
  79. package/lib/sui/builtin/index.js +6 -0
  80. package/lib/sui/builtin/index.js.map +1 -0
  81. package/lib/sui/codegen/codegen.d.ts +1 -0
  82. package/lib/sui/codegen/codegen.js +61 -0
  83. package/lib/sui/codegen/codegen.js.map +1 -0
  84. package/lib/sui/codegen/index.d.ts +1 -0
  85. package/lib/sui/codegen/index.js +2 -0
  86. package/lib/sui/codegen/index.js.map +1 -0
  87. package/lib/sui/codegen/run.d.ts +1 -0
  88. package/lib/sui/codegen/run.js +12 -0
  89. package/lib/sui/codegen/run.js.map +1 -0
  90. package/lib/sui/index.d.ts +2 -0
  91. package/lib/sui/index.js +1 -0
  92. package/lib/sui/index.js.map +1 -1
  93. package/lib/sui/models.d.ts +7 -1
  94. package/lib/sui/models.js +0 -23
  95. package/lib/sui/models.js.map +1 -1
  96. package/lib/sui/move-coder.d.ts +11 -0
  97. package/lib/sui/move-coder.js +53 -0
  98. package/lib/sui/move-coder.js.map +1 -0
  99. package/lib/sui/move-types.d.ts +9 -0
  100. package/lib/sui/move-types.js +81 -0
  101. package/lib/sui/move-types.js.map +1 -0
  102. package/lib/sui/sui-processor.js +3 -3
  103. package/lib/sui/sui-processor.js.map +1 -1
  104. package/lib/sui/tests/sui.test.js.map +1 -1
  105. package/lib/sui/tests/types/index.d.ts +1 -0
  106. package/lib/sui/tests/types/index.js +5 -0
  107. package/lib/sui/tests/types/index.js.map +1 -0
  108. package/lib/sui/tests/types/testnet/index.d.ts +1 -0
  109. package/lib/sui/tests/types/testnet/index.js +5 -0
  110. package/lib/sui/tests/types/testnet/index.js.map +1 -0
  111. package/lib/sui/tests/types/testnet/swap.d.ts +249 -0
  112. package/lib/sui/tests/types/testnet/swap.js +310 -0
  113. package/lib/sui/tests/types/testnet/swap.js.map +1 -0
  114. package/lib/testing/aptos-facet.js +1 -1
  115. package/lib/testing/aptos-facet.js.map +1 -1
  116. package/lib/testing/sui-facet.js +3 -2
  117. package/lib/testing/sui-facet.js.map +1 -1
  118. package/package.json +8 -5
  119. package/src/aptos/aptos-processor.ts +1 -1
  120. package/src/aptos/builtin/0x1.ts +70 -652
  121. package/src/aptos/builtin/0x3.ts +24 -59
  122. package/src/aptos/codegen/codegen.ts +35 -421
  123. package/src/aptos/models.ts +0 -10
  124. package/src/aptos/move-coder.ts +16 -150
  125. package/src/aptos/move-types.ts +62 -0
  126. package/src/aptos/tests/souffl3.ts +1 -1
  127. package/src/aptos/tests/types/reserved.ts +15 -30
  128. package/src/aptos/tests/types/soffl3.ts +19 -58
  129. package/src/aptos/tests/types/souffle.ts +15 -30
  130. package/src/aptos/utils.ts +3 -21
  131. package/src/eth/bind-options.ts +6 -0
  132. package/src/eth/tests/erc20.ts +1 -1
  133. package/src/move/abstract-codegen.ts +426 -0
  134. package/src/move/abstract-move-coder.ts +170 -0
  135. package/src/move/account.ts +96 -0
  136. package/src/move/filter.ts +33 -0
  137. package/src/move/index.ts +5 -33
  138. package/src/move/neutral-models.ts +45 -0
  139. package/src/move/ts-type.ts +86 -0
  140. package/src/{aptos → move}/types.ts +28 -3
  141. package/src/move/utils.ts +25 -0
  142. package/src/sui/abis/0x1.json +1729 -1733
  143. package/src/sui/abis/0x2.json +13279 -13283
  144. package/src/sui/builtin/0x1.ts +307 -0
  145. package/src/sui/builtin/0x2.ts +2578 -0
  146. package/src/sui/builtin/index.ts +5 -0
  147. package/src/sui/codegen/codegen.ts +71 -0
  148. package/src/sui/codegen/index.ts +1 -0
  149. package/src/sui/codegen/run.ts +13 -0
  150. package/src/sui/index.ts +4 -0
  151. package/src/sui/models.ts +7 -28
  152. package/src/sui/move-coder.ts +63 -0
  153. package/src/sui/move-types.ts +109 -0
  154. package/src/sui/sui-processor.ts +3 -3
  155. package/src/sui/tests/abis/testnet/swap.json +1752 -0
  156. package/src/sui/tests/types/index.ts +3 -0
  157. package/src/sui/tests/types/testnet/index.ts +4 -0
  158. package/src/sui/tests/types/testnet/swap.ts +698 -0
  159. package/src/testing/aptos-facet.ts +1 -1
  160. package/src/testing/sui-facet.ts +3 -2
  161. package/lib/aptos/codegen/typegen.d.ts +0 -18
  162. package/lib/aptos/codegen/typegen.js.map +0 -1
  163. package/lib/aptos/codegen/typegen.test.js.map +0 -1
  164. package/lib/aptos/types.js.map +0 -1
  165. package/lib/aptos/types.test.js.map +0 -1
  166. package/lib/jest.config.d.ts +0 -9
  167. package/lib/jest.config.js +0 -9
  168. package/lib/jest.config.js.map +0 -1
  169. package/src/aptos/codegen/typegen.ts +0 -165
  170. package/src/jest.config.ts +0 -8
@@ -0,0 +1,96 @@
1
+ import { parseMoveType, TypeDescriptor } from './types.js'
2
+ import { moduleQname, moduleQnameForType } from './utils.js'
3
+ import { NeutralMoveModule } from './neutral-models.js'
4
+
5
+ export class AccountModulesImportInfo {
6
+ // account to module
7
+ imports: Map<string, Set<string>>
8
+ account: string
9
+ moduleName: string
10
+
11
+ constructor(account: string, tsModuleName: string) {
12
+ this.account = account
13
+ this.moduleName = tsModuleName
14
+ this.imports = new Map<string, Set<string>>()
15
+ }
16
+
17
+ addImport(account: string, module: string) {
18
+ if (account === this.account) {
19
+ return
20
+ }
21
+ let accountModules = this.imports.get(account)
22
+ if (!accountModules) {
23
+ accountModules = new Set<string>()
24
+ this.imports.set(account, accountModules)
25
+ }
26
+ accountModules.add(module)
27
+ }
28
+ }
29
+
30
+ export class AccountRegister {
31
+ accountImports = new Map<string, AccountModulesImportInfo>()
32
+ pendingAccounts = new Set<string>()
33
+
34
+ // loadedAccount = new Set<string>()
35
+ typeDescriptors = new Map<string, TypeDescriptor>()
36
+
37
+ protected loadTypeDescriptor(type: string) {
38
+ let descriptor = this.typeDescriptors.get(type)
39
+
40
+ // const descriptparseMoveType(type)
41
+ if (!descriptor) {
42
+ descriptor = parseMoveType(type)
43
+ this.typeDescriptors.set(type, descriptor)
44
+ }
45
+ return descriptor
46
+ }
47
+
48
+ register(module: NeutralMoveModule, tsModuleName: string): AccountModulesImportInfo {
49
+ const currentModuleFqn = moduleQname(module)
50
+
51
+ let accountModuleImports = this.accountImports.get(module.address)
52
+ if (!accountModuleImports) {
53
+ accountModuleImports = new AccountModulesImportInfo(module.address, tsModuleName)
54
+ this.accountImports.set(module.address, accountModuleImports)
55
+ // the account has already be processed, delete pending task
56
+ this.pendingAccounts.delete(module.address)
57
+ }
58
+
59
+ this.registerStruct(module, accountModuleImports)
60
+ this.registerFunctions(module, accountModuleImports)
61
+
62
+ this.accountImports.set(currentModuleFqn, accountModuleImports)
63
+ return accountModuleImports
64
+ }
65
+
66
+ registerFunctions(module: NeutralMoveModule, accountModuleImports: AccountModulesImportInfo): void {
67
+ for (const func of module.exposed_functions) {
68
+ if (!func.is_entry) {
69
+ continue
70
+ }
71
+ for (const param of func.params) {
72
+ for (const type of param.dependedTypes()) {
73
+ const [account, module] = moduleQnameForType(type)
74
+ accountModuleImports.addImport(account, module)
75
+ if (!this.accountImports.has(account)) {
76
+ this.pendingAccounts.add(account)
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+
83
+ registerStruct(module: NeutralMoveModule, accountModuleImports: AccountModulesImportInfo): void {
84
+ for (const struct of module.structs) {
85
+ for (const field of struct.fields) {
86
+ for (const type of field.type.dependedTypes()) {
87
+ const [account, module] = moduleQnameForType(type)
88
+ accountModuleImports.addImport(account, module)
89
+ if (!this.accountImports.has(account)) {
90
+ this.pendingAccounts.add(account)
91
+ }
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
@@ -0,0 +1,33 @@
1
+ // TODO extends ArgumentsFilter
2
+ import { MoveFetchConfig, ProcessResult } from '@sentio/protos'
3
+
4
+ export interface EventFilter {
5
+ type: string
6
+ account?: string
7
+ }
8
+
9
+ export interface FunctionNameAndCallFilter extends CallFilter {
10
+ function: string
11
+ }
12
+
13
+ // TODO extends ArgumentsFilter
14
+ export interface CallFilter {
15
+ includeFailed?: boolean
16
+ typeArguments?: string[]
17
+ }
18
+
19
+ export interface ArgumentsFilter {
20
+ arguments?: string[]
21
+ }
22
+
23
+ export class EventHandler<T> {
24
+ filters: EventFilter[]
25
+ handler: (event: T) => Promise<ProcessResult>
26
+ fetchConfig: MoveFetchConfig
27
+ }
28
+
29
+ export class CallHandler<T> {
30
+ filters: FunctionNameAndCallFilter[]
31
+ handler: (call: T) => Promise<ProcessResult>
32
+ fetchConfig: MoveFetchConfig
33
+ }
package/src/move/index.ts CHANGED
@@ -1,33 +1,5 @@
1
- // TODO extends ArgumentsFilter
2
- import { Data_AptCall, Data_AptEvent, MoveFetchConfig, ProcessResult } from '@sentio/protos'
3
-
4
- export interface EventFilter {
5
- type: string
6
- account?: string
7
- }
8
-
9
- export interface FunctionNameAndCallFilter extends CallFilter {
10
- function: string
11
- }
12
-
13
- // TODO extends ArgumentsFilter
14
- export interface CallFilter {
15
- includeFailed?: boolean
16
- typeArguments?: string[]
17
- }
18
-
19
- export interface ArgumentsFilter {
20
- arguments?: string[]
21
- }
22
-
23
- export class EventHandler<T> {
24
- filters: EventFilter[]
25
- handler: (event: T) => Promise<ProcessResult>
26
- fetchConfig: MoveFetchConfig
27
- }
28
-
29
- export class CallHandler<T> {
30
- filters: FunctionNameAndCallFilter[]
31
- handler: (call: T) => Promise<ProcessResult>
32
- fetchConfig: MoveFetchConfig
33
- }
1
+ export * from './filter.js'
2
+ export * from './types.js'
3
+ export * from './ts-type.js'
4
+ export * from './utils.js'
5
+ export * from './account.js'
@@ -0,0 +1,45 @@
1
+ import { TypeDescriptor } from './types.js'
2
+
3
+ export interface NeutralMoveModule {
4
+ address: string
5
+ name: string
6
+
7
+ exposed_functions: Array<NeutralMoveFunction>
8
+ structs: Array<NeutralMoveStruct>
9
+ }
10
+
11
+ export interface NeutralMoveFunction {
12
+ name: string
13
+ visibility: NeutralMoveFunctionVisibility
14
+ is_entry: boolean
15
+ generic_type_params: Array<NeutralMoveGenericTypeParam>
16
+ params: Array<TypeDescriptor>
17
+ return: Array<TypeDescriptor>
18
+ }
19
+
20
+ export interface NeutralMoveStruct {
21
+ name: string
22
+
23
+ is_native: boolean
24
+
25
+ abilities: Array<string>
26
+
27
+ generic_type_params: Array<NeutralMoveGenericTypeParam>
28
+
29
+ fields: Array<NeutralMoveStructField>
30
+ }
31
+
32
+ export interface NeutralMoveStructField {
33
+ name: string
34
+ type: TypeDescriptor
35
+ }
36
+
37
+ export enum NeutralMoveFunctionVisibility {
38
+ PRIVATE = 'private',
39
+ PUBLIC = 'public',
40
+ FRIEND = 'friend',
41
+ }
42
+
43
+ export type NeutralMoveGenericTypeParam = {
44
+ constraints: Array<string>
45
+ }
@@ -0,0 +1,86 @@
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
+ // TODO &signer is defintely an address, but what if &OTHER_TYPE?
6
+ if (type.qname.startsWith('&')) {
7
+ console.error('Unexpected &')
8
+ return addressType
9
+ }
10
+ if (type.reference) {
11
+ return addressType
12
+ }
13
+
14
+ switch (type.qname) {
15
+ case 'signer': // TODO check this
16
+ case 'address':
17
+ case 'Address':
18
+ return addressType
19
+ case '0x2::object::ID':
20
+ case '0x2::coin::Coin':
21
+ return 'string'
22
+ case '0x1::string::String':
23
+ return 'string'
24
+ case 'bool':
25
+ case 'Bool':
26
+ return 'Boolean'
27
+ case 'u8':
28
+ case 'U8':
29
+ case 'u16':
30
+ case 'U16':
31
+ case 'u32':
32
+ case 'U32':
33
+ return 'number'
34
+ case 'u64':
35
+ case 'U64':
36
+ case 'u128':
37
+ case 'U128':
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().includes(VECTOR_STR)) {
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
+ }
@@ -3,8 +3,11 @@ import { SPLITTER, VECTOR_STR } from './utils.js'
3
3
  export class TypeDescriptor {
4
4
  // type: string
5
5
 
6
+ // TODO add reference flag
7
+
6
8
  // qualified name without type parameters
7
9
  qname: string
10
+ reference: boolean
8
11
  // account?: string
9
12
  // module?: string
10
13
 
@@ -47,18 +50,29 @@ export class TypeDescriptor {
47
50
  // all depended types including itself, not include system type
48
51
  dependedTypes(): string[] {
49
52
  if (this.qname.startsWith('&')) {
53
+ console.error('Not expected &')
54
+ return []
55
+ }
56
+ if (this.reference) {
50
57
  return []
51
58
  }
52
59
  switch (this.qname) {
53
60
  case 'signer':
54
61
  case 'address':
62
+ case 'Address':
55
63
  case '0x1::string::String':
56
64
  case 'bool':
65
+ case 'Bool':
57
66
  case 'u8':
67
+ case 'U8':
58
68
  case 'u16':
69
+ case 'U16':
59
70
  case 'u32':
71
+ case 'U32':
60
72
  case 'u64':
73
+ case 'U64':
61
74
  case 'u128':
75
+ case 'U128':
62
76
  return []
63
77
  }
64
78
 
@@ -103,30 +117,33 @@ export function parseMoveType(type: string): TypeDescriptor {
103
117
  const symbol = buffer.join('')
104
118
  buffer = []
105
119
  stack[stack.length - 1].qname = symbol
120
+ adjustType(stack[stack.length - 1])
106
121
  stack.push(new TypeDescriptor(''))
107
122
  continue
108
123
  }
109
124
  if (ch === '>') {
110
125
  const typeParam = stack.pop()
111
126
  if (!typeParam) {
112
- throw Error('Uxpectecd stack size')
127
+ throw Error('Unexpected stack size')
113
128
  }
114
129
  if (buffer.length > 0) {
115
130
  typeParam.qname = buffer.join('')
116
131
  buffer = []
117
132
  }
133
+ adjustType(typeParam)
118
134
  stack[stack.length - 1].typeArgs.push(typeParam)
119
135
  continue
120
136
  }
121
137
  if (ch === ',') {
122
138
  const typeParam = stack.pop()
123
139
  if (!typeParam) {
124
- throw Error('Uxpectecd stack size')
140
+ throw Error('Unexpected stack size')
125
141
  }
126
142
  if (buffer.length > 0) {
127
143
  typeParam.qname = buffer.join('')
128
144
  buffer = []
129
145
  }
146
+ adjustType(typeParam)
130
147
 
131
148
  stack[stack.length - 1].typeArgs.push(typeParam)
132
149
  // continue parse next param
@@ -140,10 +157,18 @@ export function parseMoveType(type: string): TypeDescriptor {
140
157
  if (buffer.length > 0) {
141
158
  stack[stack.length - 1].qname = buffer.join('')
142
159
  }
160
+ adjustType(stack[stack.length - 1])
143
161
 
144
162
  const res = stack.pop()
145
163
  if (!res || stack.length > 0) {
146
- throw Error('Uxpectecd stack size')
164
+ throw Error('Unexpected stack size')
147
165
  }
148
166
  return res
149
167
  }
168
+
169
+ function adjustType(type: TypeDescriptor) {
170
+ if (type.qname.startsWith('&')) {
171
+ type.reference = true
172
+ type.qname = type.qname.slice(1)
173
+ }
174
+ }
@@ -0,0 +1,25 @@
1
+ export const SPLITTER = '::'
2
+
3
+ export const VECTOR_STR = 'vector'
4
+
5
+ export function isFrameworkAccount(account: string) {
6
+ return account === '0x1' || account === '0x2' || account === '0x3'
7
+ }
8
+
9
+ const KEYWORDS = new Set(['package', 'namespace', 'volatile', 'object', 'string', 'number', 'bigint'])
10
+
11
+ export function normalizeToJSName(name: string) {
12
+ if (KEYWORDS.has(name)) {
13
+ return name + '_'
14
+ }
15
+ return name
16
+ }
17
+
18
+ export function moduleQnameForType(type: string): [string, string] {
19
+ const parts = type.split(SPLITTER).slice(0, 2)
20
+ return [parts[0], parts[1]]
21
+ }
22
+
23
+ export function moduleQname(module: { address: string; name: string }): string {
24
+ return module.address.toLowerCase() + SPLITTER + module.name
25
+ }