@typemove/sui 1.6.3 → 1.6.4

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 (88) hide show
  1. package/dist/cjs/builtin/0x1.d.ts +187 -131
  2. package/dist/cjs/builtin/0x1.d.ts.map +1 -1
  3. package/dist/cjs/builtin/0x1.js +696 -131
  4. package/dist/cjs/builtin/0x1.js.map +1 -1
  5. package/dist/cjs/builtin/0x2.d.ts +572 -572
  6. package/dist/cjs/builtin/0x2.d.ts.map +1 -1
  7. package/dist/cjs/builtin/0x2.js +569 -569
  8. package/dist/cjs/builtin/0x2.js.map +1 -1
  9. package/dist/cjs/builtin/0x3.d.ts +422 -242
  10. package/dist/cjs/builtin/0x3.d.ts.map +1 -1
  11. package/dist/cjs/builtin/0x3.js +639 -239
  12. package/dist/cjs/builtin/0x3.js.map +1 -1
  13. package/dist/cjs/codegen/codegen.d.ts +1 -1
  14. package/dist/cjs/codegen/codegen.d.ts.map +1 -1
  15. package/dist/cjs/codegen/codegen.js +7 -7
  16. package/dist/cjs/codegen/codegen.js.map +1 -1
  17. package/dist/cjs/models.d.ts +1 -1
  18. package/dist/cjs/models.d.ts.map +1 -1
  19. package/dist/cjs/move-coder.d.ts +5 -4
  20. package/dist/cjs/move-coder.d.ts.map +1 -1
  21. package/dist/cjs/move-coder.js +62 -23
  22. package/dist/cjs/move-coder.js.map +1 -1
  23. package/dist/cjs/move-coder.test.js.map +1 -1
  24. package/dist/cjs/sui-chain-adapter.d.ts +1 -1
  25. package/dist/cjs/sui-chain-adapter.d.ts.map +1 -1
  26. package/dist/cjs/sui-chain-adapter.js +1 -1
  27. package/dist/cjs/sui-chain-adapter.js.map +1 -1
  28. package/dist/cjs/to-internal.d.ts +1 -1
  29. package/dist/cjs/to-internal.d.ts.map +1 -1
  30. package/dist/cjs/to-internal.js +4 -4
  31. package/dist/cjs/transaction.d.ts +4 -4
  32. package/dist/cjs/transaction.d.ts.map +1 -1
  33. package/dist/cjs/transaction.js +2 -2
  34. package/dist/cjs/transaction.js.map +1 -1
  35. package/dist/esm/builtin/0x1.d.ts +187 -131
  36. package/dist/esm/builtin/0x1.d.ts.map +1 -1
  37. package/dist/esm/builtin/0x1.js +696 -131
  38. package/dist/esm/builtin/0x1.js.map +1 -1
  39. package/dist/esm/builtin/0x2.d.ts +572 -572
  40. package/dist/esm/builtin/0x2.d.ts.map +1 -1
  41. package/dist/esm/builtin/0x2.js +569 -569
  42. package/dist/esm/builtin/0x2.js.map +1 -1
  43. package/dist/esm/builtin/0x3.d.ts +422 -242
  44. package/dist/esm/builtin/0x3.d.ts.map +1 -1
  45. package/dist/esm/builtin/0x3.js +639 -239
  46. package/dist/esm/builtin/0x3.js.map +1 -1
  47. package/dist/esm/codegen/codegen.d.ts +1 -1
  48. package/dist/esm/codegen/codegen.d.ts.map +1 -1
  49. package/dist/esm/codegen/codegen.js +7 -7
  50. package/dist/esm/codegen/codegen.js.map +1 -1
  51. package/dist/esm/codegen/run.js +1 -1
  52. package/dist/esm/codegen/run.js.map +1 -1
  53. package/dist/esm/models.d.ts +1 -1
  54. package/dist/esm/models.d.ts.map +1 -1
  55. package/dist/esm/move-coder.d.ts +5 -4
  56. package/dist/esm/move-coder.d.ts.map +1 -1
  57. package/dist/esm/move-coder.js +62 -23
  58. package/dist/esm/move-coder.js.map +1 -1
  59. package/dist/esm/move-coder.test.js.map +1 -1
  60. package/dist/esm/sui-chain-adapter.d.ts +1 -1
  61. package/dist/esm/sui-chain-adapter.d.ts.map +1 -1
  62. package/dist/esm/sui-chain-adapter.js +1 -1
  63. package/dist/esm/sui-chain-adapter.js.map +1 -1
  64. package/dist/esm/to-internal.d.ts +1 -1
  65. package/dist/esm/to-internal.d.ts.map +1 -1
  66. package/dist/esm/to-internal.js +5 -5
  67. package/dist/esm/to-internal.js.map +1 -1
  68. package/dist/esm/transaction.d.ts +4 -4
  69. package/dist/esm/transaction.d.ts.map +1 -1
  70. package/dist/esm/transaction.js +2 -2
  71. package/dist/esm/transaction.js.map +1 -1
  72. package/package.json +3 -4
  73. package/src/abis/0x1.json +499 -0
  74. package/src/abis/0x3.json +900 -41
  75. package/src/builtin/0x1.ts +1058 -267
  76. package/src/builtin/0x2.ts +1141 -1165
  77. package/src/builtin/0x3.ts +1171 -485
  78. package/src/codegen/codegen.ts +7 -7
  79. package/src/codegen/run.ts +1 -1
  80. package/src/models.ts +1 -1
  81. package/src/move-coder.ts +60 -28
  82. package/src/sui-chain-adapter.ts +1 -1
  83. package/src/tests/types/testnet/0x1e2b124f746a339b3cf99b9f969393a96594519aafb1d06517aacfeeae20e7a5.ts +11 -11
  84. package/src/tests/types/testnet/0x6c4a21e3e7e6b6d51c4604021633e1d97e24e37a696f8c082cd48f37503e602a.ts +99 -99
  85. package/src/tests/types/testnet/0xdee9.ts +183 -183
  86. package/src/tests/types/testnet/0xebaa2ad3eacc230f309cd933958cc52684df0a41ae7ac214d186b80f830867d2.ts +313 -316
  87. package/src/to-internal.ts +7 -7
  88. package/src/transaction.ts +6 -6
@@ -1,4 +1,4 @@
1
- import { SuiMoveNormalizedModule, SuiEvent, SuiMoveObject, SuiClient } from '@mysten/sui.js/client'
1
+ import { SuiMoveNormalizedModule, SuiEvent, SuiMoveObject, SuiClient } from '@mysten/sui/client'
2
2
 
3
3
  import * as fs from 'fs'
4
4
  import chalk from 'chalk'
@@ -168,13 +168,13 @@ export class SuiCodegen extends AbstractCodegen<
168
168
  ${
169
169
  typeParamArg.length > 0 ? `typeArguments: [${typeParamArg}]` : ``
170
170
  } ): Promise<TypedDevInspectResults<${returnType}>> {
171
- const tx = new TransactionBlock()
171
+ const tx = new Transaction()
172
172
  builder.${camel(normalizeToJSName(func.name))}(tx, args ${typeParamArg.length > 0 ? `, typeArguments` : ''})
173
173
  const inspectRes = await client.devInspectTransactionBlock({
174
174
  transactionBlock: tx,
175
175
  sender: ZERO_ADDRESS
176
176
  })
177
-
177
+
178
178
  return (await getMoveCoder(client)).decodeDevInspectResult<${returnType}>(inspectRes)
179
179
  }`
180
180
  }
@@ -203,13 +203,13 @@ export class SuiCodegen extends AbstractCodegen<
203
203
  })
204
204
  .join(',')
205
205
 
206
- return `export function ${camel(normalizeToJSName(func.name))}${genericString}(tx: TransactionBlock,
206
+ return `export function ${camel(normalizeToJSName(func.name))}${genericString}(tx: Transaction,
207
207
  args: [${args.map((a) => a.paramType).join(',')}],
208
208
  ${typeParamArg.length > 0 ? `typeArguments: [${typeParamArg}]` : ``} ):
209
209
  TransactionArgument & [ ${'TransactionArgument,'.repeat(args.length)} ] {
210
210
  const _args: any[] = []
211
211
  ${args.map((a) => a.callValue).join('\n')}
212
-
212
+
213
213
  // @ts-ignore
214
214
  return tx.moveCall({
215
215
  target: "${address}::${module.name}::${func.name}",
@@ -223,8 +223,8 @@ export class SuiCodegen extends AbstractCodegen<
223
223
  return `
224
224
  ${super.generateImports()}
225
225
  import { ZERO_ADDRESS, TypedDevInspectResults, getMoveCoder } from '@typemove/sui'
226
- import { TransactionBlock, TransactionArgument, TransactionObjectArgument } from '@mysten/sui.js/transactions'
227
- import { SuiClient } from '@mysten/sui.js/client'
226
+ import { Transaction, TransactionArgument, TransactionObjectArgument } from '@mysten/sui/transactions'
227
+ import { SuiClient } from '@mysten/sui/client'
228
228
  import { transactionArgumentOrObject, transactionArgumentOrPure, transactionArgumentOrVec } from '@typemove/sui'
229
229
  `
230
230
  }
@@ -5,7 +5,7 @@ import { Command } from 'commander'
5
5
  import { createRequire } from 'module'
6
6
  import fs from 'fs'
7
7
  import path from 'path'
8
- import { SuiClient } from '@mysten/sui.js/client'
8
+ import { SuiClient } from '@mysten/sui/client'
9
9
  const require = createRequire(import.meta.url)
10
10
  let pkg = undefined
11
11
  try {
package/src/models.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { SuiEvent, MoveCallSuiTransaction, SuiMoveObject, DevInspectResults } from '@mysten/sui.js/client'
1
+ import type { SuiEvent, MoveCallSuiTransaction, SuiMoveObject, DevInspectResults } from '@mysten/sui/client'
2
2
  import { DecodedStruct } from '@typemove/move'
3
3
 
4
4
  export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000000'
package/src/move-coder.ts CHANGED
@@ -16,24 +16,22 @@ import {
16
16
  SuiMoveObject,
17
17
  DevInspectResults,
18
18
  SuiClient
19
- } from '@mysten/sui.js/client'
19
+ } from '@mysten/sui/client'
20
20
  import { toInternalModule } from './to-internal.js'
21
21
  import { SuiChainAdapter } from './sui-chain-adapter.js'
22
22
  import { dynamic_field } from './builtin/0x2.js'
23
- import { BCS, getSuiMoveConfig, StructTypeDefinition } from '@mysten/bcs'
23
+ import { BcsType, bcs } from '@mysten/sui/bcs'
24
24
 
25
25
  // import { Encoding } from '@mysten/bcs/types', this doesn't get exported correctly
26
26
  export type Encoding = 'base58' | 'base64' | 'hex'
27
27
 
28
- import { normalizeSuiObjectId, normalizeSuiAddress } from '@mysten/sui.js/utils'
28
+ import { normalizeSuiObjectId, normalizeSuiAddress } from '@mysten/sui/utils'
29
29
 
30
30
  export class MoveCoder extends AbstractMoveCoder<
31
31
  // SuiNetwork,
32
32
  SuiMoveNormalizedModule,
33
33
  SuiEvent | SuiMoveObject
34
34
  > {
35
- bcs = new BCS(getSuiMoveConfig())
36
-
37
35
  constructor(client: SuiClient) {
38
36
  super(new SuiChainAdapter(client))
39
37
  }
@@ -177,30 +175,62 @@ export class MoveCoder extends AbstractMoveCoder<
177
175
  } as TypedFunctionPayload<any>
178
176
  }
179
177
 
180
- private async _registerBCSType(qname: string): Promise<void> {
181
- if (this.bcs.hasType(qname)) {
182
- return
183
- }
184
- const moveStruct = await this.getMoveStruct(qname)
185
- const structDef: StructTypeDefinition = {}
178
+ private bcsRegistered = new Set<string>()
179
+ private bcsRegistry = new Map<string, BcsType<any>>()
186
180
 
187
- for (const field of moveStruct.fields) {
188
- structDef[field.name] = field.type.getNormalizedSignature()
181
+ private async getBCSTypeWithArgs(type: TypeDescriptor, args: BcsType<any>[] = []): Promise<BcsType<any>> {
182
+ const qname = type.qname
183
+ const sig = type.getNormalizedSignature()
184
+ const cached = this.bcsRegistry.get(sig)
185
+ if (cached) {
186
+ return cached
189
187
  }
190
- let typeName = qname
191
- const generics = moveStruct.typeParams.map((p, idx) => 'T' + idx).join(', ')
192
- if (generics) {
193
- typeName = typeName + '<' + generics + '>'
188
+ const lowerQname = qname.toLowerCase()
189
+ switch (lowerQname) {
190
+ case 'u8':
191
+ case 'u16':
192
+ case 'u32':
193
+ case 'u64':
194
+ case 'u128':
195
+ case 'u256':
196
+ case 'bool':
197
+ return bcs[lowerQname]()
198
+ case 'address':
199
+ return bcs.Address
200
+ case 'vector':
201
+ return bcs.vector(args[0])
202
+ default:
203
+ if (!qname.includes('::')) {
204
+ throw `Unimplemented builtin type ${qname}`
205
+ }
194
206
  }
195
-
196
- this.bcs.registerStructType(typeName, structDef)
197
-
207
+ let moveStruct
208
+ try {
209
+ moveStruct = await this.getMoveStruct(qname)
210
+ } catch (e) {
211
+ console.error('Invalid move address', qname)
212
+ throw e
213
+ }
214
+ const structDef: Record<string, any> = {}
198
215
  for (const field of moveStruct.fields) {
199
- await this.registerBCSTypes(field.type)
216
+ if (field.type.qname.startsWith('T') && args.length) {
217
+ const index = +field.type.qname.slice(1)
218
+ structDef[field.name] = args[index]
219
+ } else if (field.type.typeArgs.length && args.length) {
220
+ structDef[field.name] = await this.getBCSTypeWithArgs(field.type, args)
221
+ } else {
222
+ structDef[field.name] = await this.getBCSType(field.type)
223
+ }
200
224
  }
225
+ return bcs.struct(qname, structDef)
201
226
  }
202
227
 
203
- private bcsRegistered = new Set<string>()
228
+ async getBCSType(type: TypeDescriptor): Promise<BcsType<any>> {
229
+ const args = await Promise.all(type.typeArgs.map((x) => this.getBCSType(x)))
230
+ const bcsType = await this.getBCSTypeWithArgs(type, args)
231
+ this.bcsRegistry.set(type.getNormalizedSignature(), bcsType)
232
+ return bcsType
233
+ }
204
234
 
205
235
  async registerBCSTypes(type: TypeDescriptor): Promise<void> {
206
236
  const sig = type.getNormalizedSignature()
@@ -209,16 +239,18 @@ export class MoveCoder extends AbstractMoveCoder<
209
239
  }
210
240
  this.bcsRegistered.add(sig)
211
241
 
212
- await this._registerBCSType('0x1::string::String')
213
-
214
- for (const typeArg of type.dependedTypes()) {
215
- await this._registerBCSType(typeArg)
216
- }
242
+ const bcsType = await this.getBCSType(type)
243
+ this.bcsRegistry.set(type.getNormalizedSignature(), bcsType)
217
244
  }
218
245
 
219
246
  async decodeBCS(type: TypeDescriptor, data: Uint8Array | string, encoding?: Encoding): Promise<any> {
220
247
  await this.registerBCSTypes(type)
221
- return this.bcs.de(type.getNormalizedSignature(), data, encoding)
248
+ if (typeof data == 'string') {
249
+ const buf = Buffer.from(data, encoding as any)
250
+ data = new Uint8Array(buf, buf.byteOffset, buf.byteLength)
251
+ }
252
+ const bcsType = this.bcsRegistry.get(type.getNormalizedSignature())
253
+ return bcsType?.parse(data)
222
254
  }
223
255
 
224
256
  async decodeDevInspectResult<T extends any[]>(inspectRes: DevInspectResults): Promise<TypedDevInspectResults<T>> {
@@ -8,7 +8,7 @@ import {
8
8
  TypeDescriptor
9
9
  } from '@typemove/move'
10
10
 
11
- import { SuiMoveNormalizedModule, SuiEvent, SuiMoveObject, SuiClient } from '@mysten/sui.js/client'
11
+ import { SuiMoveNormalizedModule, SuiEvent, SuiMoveObject, SuiClient } from '@mysten/sui/client'
12
12
 
13
13
  export class SuiChainAdapter extends ChainAdapter<
14
14
  // SuiNetwork,
@@ -15,11 +15,11 @@ import {
15
15
  getMoveCoder,
16
16
  } from "@typemove/sui";
17
17
  import {
18
- TransactionBlock,
18
+ Transaction,
19
19
  TransactionArgument,
20
20
  TransactionObjectArgument,
21
- } from "@mysten/sui.js/transactions";
22
- import { SuiClient } from "@mysten/sui.js/client";
21
+ } from "@mysten/sui/transactions";
22
+ import { SuiClient } from "@mysten/sui/client";
23
23
  import {
24
24
  transactionArgumentOrObject,
25
25
  transactionArgumentOrPure,
@@ -95,7 +95,7 @@ export namespace oracle {
95
95
 
96
96
  export namespace builder {
97
97
  export function copyKey<T0 = any>(
98
- tx: TransactionBlock,
98
+ tx: Transaction,
99
99
  args: [
100
100
  string | TransactionObjectArgument | TransactionArgument,
101
101
  string | TransactionArgument,
@@ -119,7 +119,7 @@ export namespace oracle {
119
119
  });
120
120
  }
121
121
  export function getOracle<T0 = any>(
122
- tx: TransactionBlock,
122
+ tx: Transaction,
123
123
  args: [string | TransactionObjectArgument | TransactionArgument],
124
124
  typeArguments: [TypeDescriptor<T0> | string],
125
125
  ): TransactionArgument & [TransactionArgument] {
@@ -139,7 +139,7 @@ export namespace oracle {
139
139
  });
140
140
  }
141
141
  export function newOracle<T0 = any>(
142
- tx: TransactionBlock,
142
+ tx: Transaction,
143
143
  args: [bigint | TransactionArgument],
144
144
  typeArguments: [TypeDescriptor<T0> | string],
145
145
  ): TransactionArgument & [TransactionArgument] {
@@ -159,7 +159,7 @@ export namespace oracle {
159
159
  });
160
160
  }
161
161
  export function update<T0 = any>(
162
- tx: TransactionBlock,
162
+ tx: Transaction,
163
163
  args: [
164
164
  string | TransactionObjectArgument | TransactionArgument,
165
165
  string | TransactionObjectArgument | TransactionArgument,
@@ -205,7 +205,7 @@ export namespace oracle {
205
205
  ],
206
206
  typeArguments: [TypeDescriptor<T0> | string],
207
207
  ): Promise<TypedDevInspectResults<[]>> {
208
- const tx = new TransactionBlock();
208
+ const tx = new Transaction();
209
209
  builder.copyKey(tx, args, typeArguments);
210
210
  const inspectRes = await client.devInspectTransactionBlock({
211
211
  transactionBlock: tx,
@@ -221,7 +221,7 @@ export namespace oracle {
221
221
  args: [string | TransactionObjectArgument | TransactionArgument],
222
222
  typeArguments: [TypeDescriptor<T0> | string],
223
223
  ): Promise<TypedDevInspectResults<[bigint, bigint, bigint, bigint]>> {
224
- const tx = new TransactionBlock();
224
+ const tx = new Transaction();
225
225
  builder.getOracle(tx, args, typeArguments);
226
226
  const inspectRes = await client.devInspectTransactionBlock({
227
227
  transactionBlock: tx,
@@ -237,7 +237,7 @@ export namespace oracle {
237
237
  args: [bigint | TransactionArgument],
238
238
  typeArguments: [TypeDescriptor<T0> | string],
239
239
  ): Promise<TypedDevInspectResults<[]>> {
240
- const tx = new TransactionBlock();
240
+ const tx = new Transaction();
241
241
  builder.newOracle(tx, args, typeArguments);
242
242
  const inspectRes = await client.devInspectTransactionBlock({
243
243
  transactionBlock: tx,
@@ -259,7 +259,7 @@ export namespace oracle {
259
259
  ],
260
260
  typeArguments: [TypeDescriptor<T0> | string],
261
261
  ): Promise<TypedDevInspectResults<[]>> {
262
- const tx = new TransactionBlock();
262
+ const tx = new Transaction();
263
263
  builder.update(tx, args, typeArguments);
264
264
  const inspectRes = await client.devInspectTransactionBlock({
265
265
  transactionBlock: tx,