@typemove/aptos 1.2.4-rc2 → 1.2.4-rc3

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 (140) hide show
  1. package/dist/cjs/account-resource-client.d.ts +35 -0
  2. package/dist/cjs/account-resource-client.d.ts.map +1 -0
  3. package/dist/cjs/account-resource-client.js +44 -0
  4. package/dist/cjs/account-resource-client.js.map +1 -0
  5. package/dist/cjs/account-resource-client.test.d.ts +2 -0
  6. package/dist/cjs/account-resource-client.test.d.ts.map +1 -0
  7. package/dist/cjs/account-resource-client.test.js.map +1 -0
  8. package/dist/cjs/aptos-chain-adapter.d.ts +16 -0
  9. package/dist/cjs/aptos-chain-adapter.d.ts.map +1 -0
  10. package/dist/cjs/aptos-chain-adapter.js +82 -0
  11. package/dist/cjs/aptos-chain-adapter.js.map +1 -0
  12. package/dist/cjs/builtin/0x1.d.ts +3796 -0
  13. package/dist/cjs/builtin/0x1.d.ts.map +1 -0
  14. package/dist/cjs/builtin/0x1.js +5019 -0
  15. package/dist/cjs/builtin/0x1.js.map +1 -0
  16. package/dist/cjs/builtin/0x3.d.ts +652 -0
  17. package/dist/cjs/builtin/0x3.d.ts.map +1 -0
  18. package/dist/cjs/builtin/0x3.js +584 -0
  19. package/dist/cjs/builtin/0x3.js.map +1 -0
  20. package/dist/cjs/builtin/index.d.ts +3 -0
  21. package/dist/cjs/builtin/index.d.ts.map +1 -0
  22. package/dist/cjs/builtin/index.js +10 -0
  23. package/dist/cjs/builtin/index.js.map +1 -0
  24. package/dist/cjs/client.test.d.ts +2 -0
  25. package/dist/cjs/client.test.d.ts.map +1 -0
  26. package/dist/cjs/client.test.js.map +1 -0
  27. package/dist/cjs/codegen/codegen.d.ts +14 -0
  28. package/dist/cjs/codegen/codegen.d.ts.map +1 -0
  29. package/dist/cjs/codegen/codegen.js +116 -0
  30. package/dist/cjs/codegen/codegen.js.map +1 -0
  31. package/dist/cjs/codegen/index.d.ts +2 -0
  32. package/dist/cjs/codegen/index.d.ts.map +1 -0
  33. package/dist/cjs/codegen/index.js +5 -0
  34. package/dist/cjs/codegen/index.js.map +1 -0
  35. package/dist/cjs/codegen/types.test.d.ts +2 -0
  36. package/dist/cjs/codegen/types.test.d.ts.map +1 -0
  37. package/dist/cjs/codegen/types.test.js.map +1 -0
  38. package/dist/cjs/index.d.ts +5 -0
  39. package/dist/cjs/index.d.ts.map +1 -0
  40. package/dist/cjs/index.js +12 -0
  41. package/dist/cjs/index.js.map +1 -0
  42. package/dist/cjs/models.d.ts +11 -0
  43. package/dist/cjs/models.d.ts.map +1 -0
  44. package/dist/cjs/models.js +3 -0
  45. package/dist/cjs/models.js.map +1 -0
  46. package/dist/cjs/move-coder.d.ts +15 -0
  47. package/dist/cjs/move-coder.d.ts.map +1 -0
  48. package/dist/cjs/move-coder.js +76 -0
  49. package/dist/cjs/move-coder.js.map +1 -0
  50. package/dist/cjs/move-types.d.ts +12 -0
  51. package/dist/cjs/move-types.d.ts.map +1 -0
  52. package/dist/cjs/move-types.js +3 -0
  53. package/dist/cjs/move-types.js.map +1 -0
  54. package/dist/cjs/to-internal.d.ts +7 -0
  55. package/dist/cjs/to-internal.d.ts.map +1 -0
  56. package/dist/cjs/to-internal.js +60 -0
  57. package/dist/cjs/to-internal.js.map +1 -0
  58. package/dist/esm/account-resource-client.d.ts +35 -0
  59. package/dist/esm/account-resource-client.d.ts.map +1 -0
  60. package/dist/esm/account-resource-client.js +40 -0
  61. package/dist/esm/account-resource-client.js.map +1 -0
  62. package/dist/esm/account-resource-client.test.d.ts +2 -0
  63. package/dist/esm/account-resource-client.test.d.ts.map +1 -0
  64. package/dist/esm/account-resource-client.test.js.map +1 -0
  65. package/dist/esm/aptos-chain-adapter.d.ts +16 -0
  66. package/dist/esm/aptos-chain-adapter.d.ts.map +1 -0
  67. package/dist/esm/aptos-chain-adapter.js +78 -0
  68. package/dist/esm/aptos-chain-adapter.js.map +1 -0
  69. package/dist/esm/builtin/0x1.d.ts +3796 -0
  70. package/dist/esm/builtin/0x1.d.ts.map +1 -0
  71. package/dist/esm/builtin/0x1.js +5014 -0
  72. package/dist/esm/builtin/0x1.js.map +1 -0
  73. package/dist/esm/builtin/0x3.d.ts +652 -0
  74. package/dist/esm/builtin/0x3.d.ts.map +1 -0
  75. package/dist/esm/builtin/0x3.js +579 -0
  76. package/dist/esm/builtin/0x3.js.map +1 -0
  77. package/dist/esm/builtin/index.d.ts +3 -0
  78. package/dist/esm/builtin/index.d.ts.map +1 -0
  79. package/dist/esm/builtin/index.js +6 -0
  80. package/dist/esm/builtin/index.js.map +1 -0
  81. package/dist/esm/client.test.d.ts +2 -0
  82. package/dist/esm/client.test.d.ts.map +1 -0
  83. package/dist/esm/client.test.js.map +1 -0
  84. package/dist/esm/codegen/codegen.d.ts +14 -0
  85. package/dist/esm/codegen/codegen.d.ts.map +1 -0
  86. package/dist/esm/codegen/codegen.js +110 -0
  87. package/dist/esm/codegen/codegen.js.map +1 -0
  88. package/dist/esm/codegen/index.d.ts +2 -0
  89. package/dist/esm/codegen/index.d.ts.map +1 -0
  90. package/dist/esm/codegen/index.js +2 -0
  91. package/dist/esm/codegen/index.js.map +1 -0
  92. package/dist/esm/codegen/run.d.ts +2 -0
  93. package/dist/esm/codegen/run.d.ts.map +1 -0
  94. package/dist/esm/codegen/run.js.map +1 -0
  95. package/dist/esm/codegen/types.test.d.ts +2 -0
  96. package/dist/esm/codegen/types.test.d.ts.map +1 -0
  97. package/dist/esm/codegen/types.test.js.map +1 -0
  98. package/dist/esm/index.d.ts +5 -0
  99. package/dist/esm/index.d.ts.map +1 -0
  100. package/dist/esm/index.js +5 -0
  101. package/dist/esm/index.js.map +1 -0
  102. package/dist/esm/models.d.ts +11 -0
  103. package/dist/esm/models.d.ts.map +1 -0
  104. package/dist/esm/models.js +2 -0
  105. package/dist/esm/models.js.map +1 -0
  106. package/dist/esm/move-coder.d.ts +15 -0
  107. package/dist/esm/move-coder.d.ts.map +1 -0
  108. package/dist/esm/move-coder.js +71 -0
  109. package/dist/esm/move-coder.js.map +1 -0
  110. package/dist/esm/move-types.d.ts +12 -0
  111. package/dist/esm/move-types.d.ts.map +1 -0
  112. package/dist/esm/move-types.js +2 -0
  113. package/dist/esm/move-types.js.map +1 -0
  114. package/dist/esm/to-internal.d.ts +7 -0
  115. package/dist/esm/to-internal.d.ts.map +1 -0
  116. package/dist/esm/to-internal.js +53 -0
  117. package/dist/esm/to-internal.js.map +1 -0
  118. package/package.json +3 -3
  119. package/src/abis/0x1.json +15625 -0
  120. package/src/abis/0x3.json +2262 -0
  121. package/src/account-resource-client.ts +58 -0
  122. package/src/aptos-chain-adapter.ts +102 -0
  123. package/src/builtin/0x1.ts +9847 -0
  124. package/src/builtin/0x3.ts +1366 -0
  125. package/src/builtin/index.ts +5 -0
  126. package/src/codegen/codegen.ts +132 -0
  127. package/src/codegen/index.ts +1 -0
  128. package/src/codegen/run.ts +33 -0
  129. package/src/index.ts +4 -0
  130. package/src/models.ts +18 -0
  131. package/src/move-coder.ts +85 -0
  132. package/src/move-types.ts +13 -0
  133. package/src/tests/abis/0x48271d39d0b05bd6efca2278f22277d6fcc375504f9839fd73f74ace240861af.json +3265 -0
  134. package/src/tests/abis/0x4dcae85fc5559071906cd5c76b7420fcbb4b0a92f00ab40ffc394aadbbff5ee9.json +637 -0
  135. package/src/tests/abis/0xbd35135844473187163ca197ca93b2ab014370587bb0ed3befff9e902d6bb541.json +3717 -0
  136. package/src/tests/types/0x48271d39d0b05bd6efca2278f22277d6fcc375504f9839fd73f74ace240861af.ts +2668 -0
  137. package/src/tests/types/0x4dcae85fc5559071906cd5c76b7420fcbb4b0a92f00ab40ffc394aadbbff5ee9.ts +89 -0
  138. package/src/tests/types/0xbd35135844473187163ca197ca93b2ab014370587bb0ed3befff9e902d6bb541.ts +2093 -0
  139. package/src/tests/types/index.ts +6 -0
  140. package/src/to-internal.ts +64 -0
@@ -0,0 +1,5 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export * as _0x1 from './0x1.js'
5
+ export * as _0x3 from './0x3.js'
@@ -0,0 +1,132 @@
1
+ import * as fs from 'fs'
2
+ import { Event, MoveModuleBytecode, MoveResource } from '../move-types.js'
3
+ import chalk from 'chalk'
4
+ import { join } from 'path'
5
+ import { AptosChainAdapter } from '../aptos-chain-adapter.js'
6
+ import { AbstractCodegen, camel, InternalMoveFunction, InternalMoveModule, normalizeToJSName } from '@typemove/move'
7
+ import { AptosClient } from 'aptos'
8
+
9
+ export async function codegen(
10
+ abisDir: string,
11
+ outDir = join('src', 'types', 'aptos'),
12
+ endpoint: string,
13
+ genExample = false,
14
+ builtin = false
15
+ ) {
16
+ if (!fs.existsSync(abisDir)) {
17
+ return
18
+ }
19
+ const gen = new AptosCodegen(endpoint)
20
+ const numFiles = await gen.generate(abisDir, outDir, builtin)
21
+ console.log(chalk.green(`Generated ${numFiles} for Aptos`))
22
+ }
23
+
24
+ export class AptosCodegen extends AbstractCodegen<MoveModuleBytecode, Event | MoveResource> {
25
+ ADDRESS_TYPE = 'Address'
26
+ PREFIX = 'Aptos'
27
+ SYSTEM_PACKAGE = '@typemove/aptos'
28
+
29
+ constructor(endpoint: string) {
30
+ super(new AptosChainAdapter(new AptosClient(endpoint)))
31
+ }
32
+
33
+ generateImports(): string {
34
+ return `
35
+ ${super.generateImports()}
36
+ import { AptosClient, AptosAccount, TransactionBuilderRemoteABI, Types, TxnBuilderTypes, OptionalTransactionArgs } from 'aptos'
37
+ `
38
+ }
39
+ protected generateExtra(module: InternalMoveModule) {
40
+ const funcs = module.exposedFunctions.map((f) => this.generateEntryForFunction(module, f))
41
+
42
+ const viewFuncs = module.exposedFunctions.map((f) => this.generateViewFunction(module, f))
43
+
44
+ return `
45
+ export namespace entry {
46
+ ${funcs.join('\n')}
47
+ }
48
+ export namespace view {
49
+ ${viewFuncs.join('\n')}
50
+ }
51
+ `
52
+ }
53
+
54
+ protected generateViewFunction(module: InternalMoveModule, func: InternalMoveFunction): string {
55
+ if (!func.isView) {
56
+ return ''
57
+ }
58
+ const genericString = this.generateFunctionTypeParameters(func)
59
+ const fields = this.chainAdapter.getMeaningfulFunctionParams(func.params).map((param) => {
60
+ return this.generateTypeForDescriptor(param, module.address)
61
+ })
62
+
63
+ const returns = func.return.map((param) => {
64
+ return this.generateTypeForDescriptor(param, module.address)
65
+ })
66
+
67
+ const typeParamArg = func.typeParams
68
+ .map((v, idx) => {
69
+ return `TypeDescriptor<T${idx}> | string`
70
+ })
71
+ .join(',')
72
+
73
+ // const args = this.generateArgs(module, func)
74
+ const allEmpty = func.typeParams.length === 0 && func.params.length === 0
75
+ const requestArg = allEmpty
76
+ ? ''
77
+ : `request: {
78
+ ${func.typeParams.length > 0 ? `type_arguments: [${func.typeParams.map((_) => 'string').join(', ')}],` : ''}
79
+ ${func.params.length > 0 ? `arguments: [${fields.join(',')}]` : ''}},`
80
+
81
+ return `export async function ${camel(normalizeToJSName(func.name))}${genericString}(
82
+ client: AptosClient,
83
+ ${requestArg}
84
+ version?: bigint): Promise<[${returns.join(',')}]> {
85
+ const coder = defaultMoveCoder(client.nodeUrl)
86
+ const data = {
87
+ type_arguments: ${func.typeParams.length > 0 ? 'request.type_arguments' : '[]'},
88
+ arguments: ${func.params.length > 0 ? 'coder.encodeArray(request.arguments)' : '[]'},
89
+ function: "${module.address}::${module.name}::${func.name}"
90
+ }
91
+ const res = await client.view(data, version?.toString())
92
+ const type = await coder.getMoveFunction("${module.address}::${module.name}::${func.name}")
93
+ return await coder.decodeArray(res, type.return) as any
94
+ }`
95
+ }
96
+
97
+ protected generateEntryForFunction(module: InternalMoveModule, func: InternalMoveFunction): string {
98
+ if (!func.isEntry) {
99
+ return ''
100
+ }
101
+ const genericString = this.generateFunctionTypeParameters(func)
102
+ const fields = this.chainAdapter.getMeaningfulFunctionParams(func.params).map((param) => {
103
+ return this.generateTypeForDescriptor(param, module.address)
104
+ })
105
+
106
+ // const typeParamArg = func.typeParams
107
+ // .map((v, idx) => {
108
+ // return `TypeDescriptor<T${idx}> | string`
109
+ // })
110
+ // .join(',')
111
+ //
112
+ // const args = this.generateArgs(module, func)
113
+
114
+ return `export async function ${camel(normalizeToJSName(func.name))}${genericString}(
115
+ client: AptosClient,
116
+ account: AptosAccount,
117
+ request: {
118
+ type_arguments: [${func.typeParams.map((_) => 'string').join(', ')}],
119
+ arguments: [${fields.join(',')}]
120
+ },
121
+ extraArgs?: OptionalTransactionArgs
122
+ ): Promise<Types.PendingTransaction> {
123
+ const coder = defaultMoveCoder(client.nodeUrl)
124
+ const builder = new TransactionBuilderRemoteABI(client, { sender: account.address(), ...extraArgs });
125
+ const txn = await builder.build("${module.address}::${module.name}::${
126
+ func.name
127
+ }", request.type_arguments, coder.encodeArray(request.arguments))
128
+ const bcsTxn = AptosClient.generateBCSTransaction(account, txn)
129
+ return await client.submitSignedBCSTransaction(bcsTxn)
130
+ }`
131
+ }
132
+ }
@@ -0,0 +1 @@
1
+ export * from './codegen.js'
@@ -0,0 +1,33 @@
1
+ // #!/usr/bin/env node
2
+
3
+ import { codegen } from './codegen.js'
4
+ import { AptosClient } from 'aptos'
5
+ import * as path from 'path'
6
+ import * as fs from 'fs'
7
+
8
+ if (process.argv.length > 3) {
9
+ let abisDir = process.argv[2]
10
+ const targetDir = process.argv[3]
11
+ let endpoint: string | undefined = process.argv[4]
12
+ if (!endpoint || endpoint == 'mainnet') {
13
+ endpoint = 'https://mainnet.aptoslabs.com/'
14
+ }
15
+ if (endpoint == 'testnet') {
16
+ endpoint = 'https://testnet.aptoslabs.com/'
17
+ }
18
+ const aptosClient = new AptosClient(endpoint)
19
+ if (abisDir.startsWith('0x')) {
20
+ const abiAddress = abisDir
21
+ const abi = await aptosClient.getAccountModules(abiAddress)
22
+ abisDir = path.join(targetDir, '..', 'abis')
23
+ if (!fs.existsSync(abisDir)) {
24
+ fs.mkdirSync(abisDir, { recursive: true })
25
+ }
26
+ fs.writeFileSync(path.join(abisDir, abiAddress + '.json'), JSON.stringify(abi, null, 2))
27
+ }
28
+
29
+ await codegen(abisDir, targetDir, endpoint, true)
30
+ } else {
31
+ console.error('Not enough argument')
32
+ process.exit(1)
33
+ }
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './models.js'
2
+ export * from './move-types.js'
3
+ export { MoveCoder, defaultMoveCoder } from './move-coder.js'
4
+ export { AccountResourceClient } from './account-resource-client.js'
package/src/models.ts ADDED
@@ -0,0 +1,18 @@
1
+ import {
2
+ Event,
3
+ MoveResource,
4
+ TransactionPayload_EntryFunctionPayload,
5
+ } from './move-types.js'
6
+ import { DecodedStruct } from '@typemove/move'
7
+
8
+ export type TypedEventInstance<T> = DecodedStruct<Event, T>
9
+ export type TypedMoveResource<T> = DecodedStruct<MoveResource, T>
10
+
11
+ // Don't use intermediate type to make IDE happier
12
+ export type TypedFunctionPayload<T extends Array<any>> =
13
+ TransactionPayload_EntryFunctionPayload & {
14
+ /**
15
+ * decoded argument data using ABI, undefined if there is decoding error, usually because the ABI/data mismatch
16
+ */
17
+ arguments_decoded: T
18
+ }
@@ -0,0 +1,85 @@
1
+ import { AbstractMoveCoder, InternalMoveModule, parseMoveType, TypeDescriptor } from '@typemove/move'
2
+ import { Event, MoveModuleBytecode, MoveResource, TransactionPayload_EntryFunctionPayload } from './move-types.js'
3
+ import { TypedEventInstance, TypedFunctionPayload, TypedMoveResource } from './models.js'
4
+ import { AptosChainAdapter } from './aptos-chain-adapter.js'
5
+ import { toInternalModule } from './to-internal.js'
6
+ import { AptosClient } from 'aptos'
7
+
8
+ export class MoveCoder extends AbstractMoveCoder<MoveModuleBytecode, Event | MoveResource> {
9
+ constructor(client: AptosClient) {
10
+ super(new AptosChainAdapter(client))
11
+ }
12
+
13
+ load(module: MoveModuleBytecode): InternalMoveModule {
14
+ if (!module.abi) {
15
+ throw Error('Module without abi')
16
+ }
17
+ let m = this.moduleMapping.get(module.abi.address + '::' + module.abi.name)
18
+ // if (this.contains(module.abi.address, module.abi.name)) {
19
+ // return
20
+ // }
21
+ if (m) {
22
+ return m
23
+ }
24
+ m = toInternalModule(module)
25
+ this.loadInternal(m)
26
+ return m
27
+ }
28
+
29
+ decodeEvent<T>(event: Event): Promise<TypedEventInstance<T> | undefined> {
30
+ return this.decodedStruct(event)
31
+ }
32
+ filterAndDecodeEvents<T>(type: string | TypeDescriptor<T>, resources: Event[]): Promise<TypedEventInstance<T>[]> {
33
+ if (typeof type === 'string') {
34
+ type = parseMoveType(type)
35
+ }
36
+ return this.filterAndDecodeStruct(type, resources)
37
+ }
38
+ decodeResource<T>(res: MoveResource): Promise<TypedMoveResource<T> | undefined> {
39
+ return this.decodedStruct(res)
40
+ }
41
+ filterAndDecodeResources<T>(
42
+ type: string | TypeDescriptor<T>,
43
+ resources: MoveResource[]
44
+ ): Promise<TypedMoveResource<T>[]> {
45
+ if (typeof type === 'string') {
46
+ type = parseMoveType(type)
47
+ }
48
+ return this.filterAndDecodeStruct(type, resources)
49
+ }
50
+
51
+ async decodeFunctionPayload(
52
+ payload: TransactionPayload_EntryFunctionPayload
53
+ ): Promise<TransactionPayload_EntryFunctionPayload> {
54
+ const func = await this.getMoveFunction(payload.function)
55
+ const params = this.adapter.getMeaningfulFunctionParams(func.params)
56
+ const argumentsDecoded = await this.decodeArray(payload.arguments, params)
57
+
58
+ return {
59
+ ...payload,
60
+ arguments_decoded: argumentsDecoded
61
+ } as TypedFunctionPayload<any>
62
+ }
63
+ }
64
+
65
+ // const MOVE_CODER = new MoveCoder(AptosNetwork.MAIN_NET)
66
+ // const TESTNET_MOVE_CODER = new MoveCoder(AptosNetwork.TEST_NET)
67
+ //
68
+ // export function defaultMoveCoder(network: AptosNetwork = AptosNetwork.MAIN_NET): MoveCoder {
69
+ // if (network == AptosNetwork.MAIN_NET) {
70
+ // return MOVE_CODER
71
+ // }
72
+ // return TESTNET_MOVE_CODER
73
+ // }
74
+
75
+ const DEFAULT_ENDPOINT = 'https://mainnet.aptoslabs.com/'
76
+ const CODER_MAP = new Map<string, MoveCoder>()
77
+
78
+ export function defaultMoveCoder(endpoint: string = DEFAULT_ENDPOINT): MoveCoder {
79
+ let coder = CODER_MAP.get(endpoint)
80
+ if (!coder) {
81
+ coder = new MoveCoder(new AptosClient(endpoint))
82
+ CODER_MAP.set(endpoint, coder)
83
+ }
84
+ return coder
85
+ }
@@ -0,0 +1,13 @@
1
+ import { Types } from 'aptos'
2
+
3
+ export type Address = Types.Address
4
+ export type Event = Types.Event
5
+ export type MoveFunction = Types.MoveFunction
6
+ export type MoveModule = Types.MoveModule
7
+ export type MoveResource = Types.MoveResource
8
+ export type MoveStruct = Types.MoveStruct
9
+ export type MoveStructField = Types.MoveStructField
10
+ export type MoveModuleBytecode = Types.MoveModuleBytecode
11
+ export type TransactionPayload_EntryFunctionPayload =
12
+ Types.TransactionPayload_EntryFunctionPayload
13
+ export type Transaction_UserTransaction = Types.Transaction_UserTransaction