@typemove/aptos 2.0.0 → 2.0.1-rc.1

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 (73) hide show
  1. package/dist/esm/account-resource-client.d.ts +28 -0
  2. package/dist/esm/account-resource-client.d.ts.map +1 -0
  3. package/dist/esm/account-resource-client.js +47 -0
  4. package/dist/esm/account-resource-client.js.map +1 -0
  5. package/dist/esm/aptos-chain-adapter.d.ts +16 -0
  6. package/dist/esm/aptos-chain-adapter.d.ts.map +1 -0
  7. package/dist/esm/aptos-chain-adapter.js +104 -0
  8. package/dist/esm/aptos-chain-adapter.js.map +1 -0
  9. package/dist/esm/builtin/0x1.d.ts +7522 -0
  10. package/dist/esm/builtin/0x1.d.ts.map +1 -0
  11. package/dist/esm/builtin/0x1.js +11632 -0
  12. package/dist/esm/builtin/0x1.js.map +1 -0
  13. package/dist/esm/builtin/0x3.d.ts +1087 -0
  14. package/dist/esm/builtin/0x3.d.ts.map +1 -0
  15. package/dist/esm/builtin/0x3.js +926 -0
  16. package/dist/esm/builtin/0x3.js.map +1 -0
  17. package/dist/esm/builtin/0x4.d.ts +535 -0
  18. package/dist/esm/builtin/0x4.d.ts.map +1 -0
  19. package/dist/esm/builtin/0x4.js +884 -0
  20. package/dist/esm/builtin/0x4.js.map +1 -0
  21. package/dist/esm/builtin/index.d.ts +4 -0
  22. package/dist/esm/builtin/index.d.ts.map +1 -0
  23. package/dist/esm/builtin/index.js +7 -0
  24. package/dist/esm/builtin/index.js.map +1 -0
  25. package/dist/esm/codegen/codegen.d.ts +18 -0
  26. package/dist/esm/codegen/codegen.d.ts.map +1 -0
  27. package/dist/esm/codegen/codegen.js +161 -0
  28. package/dist/esm/codegen/codegen.js.map +1 -0
  29. package/dist/esm/codegen/index.d.ts +2 -0
  30. package/dist/esm/codegen/index.d.ts.map +1 -0
  31. package/dist/esm/codegen/index.js +2 -0
  32. package/dist/esm/codegen/index.js.map +1 -0
  33. package/dist/esm/codegen/run.d.ts +3 -0
  34. package/dist/esm/codegen/run.d.ts.map +1 -0
  35. package/dist/esm/codegen/run.js.map +1 -0
  36. package/dist/esm/coder-helpers.d.ts +6 -0
  37. package/dist/esm/coder-helpers.d.ts.map +1 -0
  38. package/dist/esm/coder-helpers.js +8 -0
  39. package/dist/esm/coder-helpers.js.map +1 -0
  40. package/dist/esm/index.d.ts +5 -0
  41. package/dist/esm/index.d.ts.map +1 -0
  42. package/dist/esm/index.js +5 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/models.d.ts +12 -0
  45. package/dist/esm/models.d.ts.map +1 -0
  46. package/dist/esm/models.js +2 -0
  47. package/dist/esm/models.js.map +1 -0
  48. package/dist/esm/move-coder.d.ts +17 -0
  49. package/dist/esm/move-coder.d.ts.map +1 -0
  50. package/dist/esm/move-coder.js +97 -0
  51. package/dist/esm/move-coder.js.map +1 -0
  52. package/dist/esm/to-internal.d.ts +7 -0
  53. package/dist/esm/to-internal.d.ts.map +1 -0
  54. package/dist/esm/to-internal.js +55 -0
  55. package/dist/esm/to-internal.js.map +1 -0
  56. package/package.json +6 -6
  57. package/src/abis/0x1.json +43414 -0
  58. package/src/abis/0x3.json +3976 -0
  59. package/src/abis/0x4.json +2844 -0
  60. package/src/account-resource-client.ts +69 -0
  61. package/src/aptos-chain-adapter.ts +132 -0
  62. package/src/builtin/0x1.ts +19976 -0
  63. package/src/builtin/0x3.ts +2083 -0
  64. package/src/builtin/0x4.ts +1503 -0
  65. package/src/builtin/index.ts +6 -0
  66. package/src/codegen/codegen.ts +190 -0
  67. package/src/codegen/index.ts +1 -0
  68. package/src/codegen/run.ts +67 -0
  69. package/src/coder-helpers.ts +15 -0
  70. package/src/index.ts +4 -0
  71. package/src/models.ts +23 -0
  72. package/src/move-coder.ts +124 -0
  73. package/src/to-internal.ts +71 -0
@@ -0,0 +1,28 @@
1
+ import { AccountAddressInput, Aptos, LedgerVersionArg, PaginationArgs, MoveResource } from '@aptos-labs/ts-sdk';
2
+ import { TypeDescriptor } from '@typemove/move';
3
+ import { TypedMoveResource } from './models.js';
4
+ export declare class AccountResourceClient {
5
+ client: Aptos;
6
+ constructor(client: Aptos);
7
+ /**
8
+ * Get all resources of an account, same as `getAccountResources` in aptos client
9
+ * @param accountAddress
10
+ * @param query
11
+ */
12
+ getAll(accountAddress: AccountAddressInput, options?: PaginationArgs & LedgerVersionArg): Promise<MoveResource[]>;
13
+ /**
14
+ * Match a single resource with exact type, resource type should not contain any type
15
+ * @param accountAddress
16
+ * @param resourceType
17
+ * @param options
18
+ */
19
+ matchExact<T>(accountAddress: AccountAddressInput, resourceType: TypeDescriptor<T>, options?: LedgerVersionArg): Promise<TypedMoveResource<T> | undefined>;
20
+ /**
21
+ * Match all resources with type pattern, it could be a partial type like `amm.Pool<aptos_coin.AptosCoin.type(), ANY_TYPE>`
22
+ * @param accountAddress
23
+ * @param resourceType
24
+ * @param options
25
+ */
26
+ matchAll<T>(accountAddress: AccountAddressInput, resourceType: TypeDescriptor<T>, options?: PaginationArgs & LedgerVersionArg): Promise<TypedMoveResource<T>[]>;
27
+ }
28
+ //# sourceMappingURL=account-resource-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-resource-client.d.ts","sourceRoot":"","sources":["../../src/account-resource-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,EAEL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACb,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAM/C,qBAAa,qBAAqB;IAChC,MAAM,EAAE,KAAK,CAAA;gBACD,MAAM,EAAE,KAAK;IAIzB;;;;OAIG;IACG,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB;IAI7F;;;;;OAKG;IACG,UAAU,CAAC,CAAC,EAChB,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,EAC/B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAa5C;;;;;OAKG;IACG,QAAQ,CAAC,CAAC,EACd,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,EAC/B,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;CAInC"}
@@ -0,0 +1,47 @@
1
+ import { defaultMoveCoder } from './move-coder.js';
2
+ // type ResourceQuery = {
3
+ // ledgerVersion?: bigint | number
4
+ // }
5
+ export class AccountResourceClient {
6
+ client;
7
+ constructor(client) {
8
+ this.client = client;
9
+ }
10
+ /**
11
+ * Get all resources of an account, same as `getAccountResources` in aptos client
12
+ * @param accountAddress
13
+ * @param query
14
+ */
15
+ async getAll(accountAddress, options) {
16
+ return this.client.getAccountResources({ accountAddress, options });
17
+ }
18
+ /**
19
+ * Match a single resource with exact type, resource type should not contain any type
20
+ * @param accountAddress
21
+ * @param resourceType
22
+ * @param options
23
+ */
24
+ async matchExact(accountAddress, resourceType, options) {
25
+ if (resourceType.existAnyType()) {
26
+ throw new Error('resource type for match call should not contain any type');
27
+ }
28
+ const typeStr = resourceType.getSignature();
29
+ const result = await this.client.getAccountResource({ accountAddress, resourceType: typeStr, options });
30
+ const resource = {
31
+ type: typeStr,
32
+ data: result
33
+ };
34
+ return defaultMoveCoder(this.client.config).decodeResource(resource);
35
+ }
36
+ /**
37
+ * Match all resources with type pattern, it could be a partial type like `amm.Pool<aptos_coin.AptosCoin.type(), ANY_TYPE>`
38
+ * @param accountAddress
39
+ * @param resourceType
40
+ * @param options
41
+ */
42
+ async matchAll(accountAddress, resourceType, options) {
43
+ const result = await this.client.getAccountResources({ accountAddress, options });
44
+ return defaultMoveCoder(this.client.config).filterAndDecodeResources(resourceType, result);
45
+ }
46
+ }
47
+ //# sourceMappingURL=account-resource-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-resource-client.js","sourceRoot":"","sources":["../../src/account-resource-client.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGlD,yBAAyB;AACzB,oCAAoC;AACpC,IAAI;AAEJ,MAAM,OAAO,qBAAqB;IAChC,MAAM,CAAO;IACb,YAAY,MAAa;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,cAAmC,EAAE,OAA2C;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAA;IACrE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,cAAmC,EACnC,YAA+B,EAC/B,OAA0B;QAE1B,IAAI,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;QAC7E,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAkB,CAAA;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QACvG,MAAM,QAAQ,GAAiB;YAC7B,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;SACb,CAAA;QACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAI,QAAQ,CAAC,CAAA;IACzE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CACZ,cAAmC,EACnC,YAA+B,EAC/B,OAA2C;QAE3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAA;QACjF,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,wBAAwB,CAAI,YAAY,EAAE,MAAM,CAAC,CAAA;IAC/F,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { ChainAdapter, TypeDescriptor, InternalMoveModule, InternalMoveStruct } from '@typemove/move';
2
+ import { Aptos, Event, MoveModuleBytecode, MoveResource } from '@aptos-labs/ts-sdk';
3
+ export declare class AptosChainAdapter extends ChainAdapter<MoveModuleBytecode, Event | MoveResource> {
4
+ client: Aptos;
5
+ private optimisticEventDetection;
6
+ constructor(client: Aptos, optimisticEventDetection?: boolean);
7
+ fetchModules(account: string): Promise<MoveModuleBytecode[]>;
8
+ fetchModule(account: string, module: string): Promise<MoveModuleBytecode>;
9
+ toInternalModules(modules: MoveModuleBytecode[]): InternalMoveModule[];
10
+ getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[];
11
+ getAllEventStructs(modules: InternalMoveModule[]): Map<string, InternalMoveStruct>;
12
+ getType(data: Event | MoveResource): string;
13
+ getData(data: Event | MoveResource): any;
14
+ getChainId(): Promise<string>;
15
+ }
16
+ //# sourceMappingURL=aptos-chain-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aptos-chain-adapter.d.ts","sourceRoot":"","sources":["../../src/aptos-chain-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAUnF,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,kBAAkB,EAAE,KAAK,GAAG,YAAY,CAAC;IAE3F,MAAM,EAAE,KAAK,CAAA;IACb,OAAO,CAAC,wBAAwB,CAAgB;gBAEpC,MAAM,EAAE,KAAK,EAAE,wBAAwB,UAAO;IAMpD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO5D,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQ/E,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE;IAItE,2BAA2B,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;IAUvE,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE;IAuDhD,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM;IAI3C,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY;IAO5B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAMpC"}
@@ -0,0 +1,104 @@
1
+ import { ChainAdapter, moduleQname, SPLITTER } from '@typemove/move';
2
+ import { toInternalModule } from './to-internal.js';
3
+ // Drop bytecode — typemove's codegen only reads `m.abi`, and bytecode is
4
+ // ~50% of each Aptos module entry's bytes. Cast is needed because
5
+ // MoveModuleBytecode declares `bytecode: string` as required.
6
+ function stripBytecode({ abi }) {
7
+ return { abi };
8
+ }
9
+ export class AptosChainAdapter extends ChainAdapter {
10
+ // static INSTANCE = new AptosChainAdapter()
11
+ client;
12
+ optimisticEventDetection = true;
13
+ constructor(client, optimisticEventDetection = true) {
14
+ super();
15
+ this.client = client;
16
+ this.optimisticEventDetection = optimisticEventDetection;
17
+ }
18
+ async fetchModules(account) {
19
+ const modules = await this.client.getAccountModules({
20
+ accountAddress: account
21
+ });
22
+ return modules.map(stripBytecode);
23
+ }
24
+ async fetchModule(account, module) {
25
+ const m = await this.client.getAccountModule({
26
+ accountAddress: account,
27
+ moduleName: module
28
+ });
29
+ return stripBytecode(m);
30
+ }
31
+ toInternalModules(modules) {
32
+ return modules.flatMap((m) => (m.abi ? [toInternalModule(m)] : []));
33
+ }
34
+ getMeaningfulFunctionParams(params) {
35
+ if (params.length === 0) {
36
+ return params;
37
+ }
38
+ if (params[0].qname === 'signer' && params[0].reference) {
39
+ params = params.slice(1);
40
+ }
41
+ return params;
42
+ }
43
+ getAllEventStructs(modules) {
44
+ const eventMap = new Map();
45
+ const structMap = new Map();
46
+ for (const module of modules) {
47
+ const qname = moduleQname(module);
48
+ for (const struct of module.structs) {
49
+ const typeName = qname + SPLITTER + struct.name;
50
+ // Skip deprecated v2 events
51
+ if (typeName == '0x1::coin::Deposit' || typeName == '0x1::coin::Withdraw') {
52
+ continue;
53
+ }
54
+ structMap.set(typeName, struct);
55
+ // Check if struct is explicitly marked as event
56
+ if (struct.isEvent) {
57
+ eventMap.set(typeName, struct);
58
+ continue;
59
+ }
60
+ if (struct.name.endsWith('Event')) {
61
+ // this is a hack to support some old events
62
+ eventMap.set(typeName, struct);
63
+ continue;
64
+ }
65
+ // Check for native events: structs with EXACTLY drop and store abilities
66
+ if (this.optimisticEventDetection) {
67
+ const abilities = new Set(struct.abilities);
68
+ if (abilities.size === 2 && abilities.has('drop') && abilities.has('store')) {
69
+ eventMap.set(typeName, struct);
70
+ }
71
+ }
72
+ }
73
+ }
74
+ // Also check for legacy events (in EventHandle fields)
75
+ for (const module of modules) {
76
+ for (const struct of module.structs) {
77
+ for (const field of struct.fields) {
78
+ const t = field.type;
79
+ if (t.qname === '0x1::event::EventHandle') {
80
+ const event = t.typeArgs[0].qname;
81
+ const eventStruct = structMap.get(event);
82
+ if (eventStruct) {
83
+ eventMap.set(event, eventStruct);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ return eventMap;
90
+ }
91
+ getType(data) {
92
+ return data.type;
93
+ }
94
+ getData(data) {
95
+ if ('data' in data && 'type' in data) {
96
+ return data.data;
97
+ }
98
+ return data;
99
+ }
100
+ async getChainId() {
101
+ return (await this.client.getChainId()).toString();
102
+ }
103
+ }
104
+ //# sourceMappingURL=aptos-chain-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aptos-chain-adapter.js","sourceRoot":"","sources":["../../src/aptos-chain-adapter.ts"],"names":[],"mappings":"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"}