@thalalabs/surf 1.5.0 → 1.6.0

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.
@@ -18,7 +18,7 @@ jobs:
18
18
  - uses: actions/checkout@v2
19
19
  - uses: actions/setup-node@v3
20
20
  with:
21
- node-version: 16.x
21
+ node-version: 20.x
22
22
  - run: yarn install --frozen-lockfile
23
23
  - run: yarn test
24
24
  - name: Create Release Pull Request or Publish
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+ echo "Running pre-commit hook"
3
+ . "$(dirname "$0")/_/husky.sh"
4
+
5
+ yarn run lint-staged
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @thalalabs/surf
2
2
 
3
+ ## 1.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d7b62ed: Change ABITable to an array type instead of a map
8
+
9
+ ## 1.5.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 09f70fb: upgrade dependencies
14
+
3
15
  ## 1.5.0
4
16
 
5
17
  ### Minor Changes
package/README.md CHANGED
@@ -59,7 +59,7 @@ When you input `client.useABI(COIN_ABI).view.` into your IDE, the auto-completio
59
59
  npm i @thalalabs/surf @aptos-labs/ts-sdk
60
60
  ```
61
61
 
62
- If you want to use the React Hooks, install the `@aptos-labs/wallet-adapter-react@^2.0.0` additionally. Those React Hooks will be moved to a separate package in near future.
62
+ If you want to use the React Hooks, install the `@aptos-labs/wallet-adapter-react` additionally. Those React Hooks will be moved to a separate package in near future.
63
63
 
64
64
  ### Start
65
65
 
@@ -100,6 +100,8 @@ const payload = createViewPayload(COIN_ABI, {
100
100
  function: 'balance',
101
101
  functionArguments: ['0x1'],
102
102
  typeArguments: ['0x1::aptos_coin::AptosCoin'],
103
+ // (optional) you can also override the address in ABI
104
+ // address: "0x123"
103
105
  });
104
106
  const [balance] = await client.view({
105
107
  payload,
@@ -132,6 +134,8 @@ const payload = createEntryPayload(COIN_ABI, {
132
134
  function: 'transfer',
133
135
  functionArguments: ['0x1', 1],
134
136
  typeArguments: ['0x1::aptos_coin::AptosCoin'],
137
+ // (optional) you can also override the address in ABI
138
+ // address: "0x123"
135
139
  });
136
140
  const result = await client.submitTransaction({
137
141
  payload,
@@ -193,9 +197,12 @@ import { DefaultABITable } from "@thalalabs/surf";
193
197
  import { createSurfClient } from '@thalalabs/surf';
194
198
  import { Aptos } from '@aptos-labs/ts-sdk';
195
199
 
196
- type ABITAble = DefaultABITable & {
197
- '0x4dcae85fc5559071906cd5c76b7420fcbb4b0a92f00ab40ffc394aadbbff5ee9::fixed_point64': typeof FIXED_POINT64_ABI,
198
- };
200
+ type ABITAble = [
201
+ ...DefaultABITable,
202
+ ...[
203
+ typeof FIXED_POINT64_ABI
204
+ ]
205
+ ];
199
206
 
200
207
  const client = createSurfClient<ABITAble>(new Aptos());
201
208
  ```
@@ -1,4 +1,4 @@
1
- export type UnknownStruct<_T extends string> = object;
1
+ export type UnknownStruct<_T extends string> = unknown;
2
2
  export type AnyNumber = number | bigint | string;
3
3
  export type OmitSigner<T extends readonly string[]> = T extends readonly [
4
4
  '&signer' | 'signer',
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,MAAM,IAAI,MAAM,CAAC;AAEtD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAIjD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,SAAS;IACvE,SAAS,GAAG,QAAQ;IACpB,GAAG,MAAM,IAAI;CACd,GACG,IAAI,GACJ,CAAC,CAAC;AAIN,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IACpC,CAAC,SAAS,GAAG,MAAM,MAAM,IAAI,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,MAAM,IAAI,OAAO,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAIjD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,SAAS;IACvE,SAAS,GAAG,QAAQ;IACpB,GAAG,MAAM,IAAI;CACd,GACG,IAAI,GACJ,CAAC,CAAC;AAIN,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IACpC,CAAC,SAAS,GAAG,MAAM,MAAM,IAAI,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC"}
@@ -14,6 +14,12 @@ type ConvertStructFieldNonStructType<TABITable extends ABITable, TMoveType exten
14
14
  type ConvertStructFieldOptionType<TABITable extends ABITable, TMoveType extends string> = {
15
15
  vec: [ConvertStructFieldType<TABITable, TMoveType>] | [];
16
16
  };
17
- type ConvertStructFieldStructType<TABITable extends ABITable, TMoveType extends string> = TMoveType extends `${infer TAccountAddress}::${infer TModuleName}::${infer TStructName}${'' | `<${infer _TInnerType}>`}` ? `${TAccountAddress}::${TModuleName}` extends keyof TABITable ? OmitInner<TStructName> extends ResourceStructName<TABITable[`${TAccountAddress}::${TModuleName}`]> ? ExtractStructType<TABITable, TABITable[`${TAccountAddress}::${TModuleName}`], OmitInner<TStructName>> : UnknownStruct<TMoveType> : UnknownStruct<TMoveType> : UnknownStruct<TMoveType>;
17
+ type ConvertStructFieldStructType<TABITable extends ABITable, TMoveType extends string> = TMoveType extends `${infer TAccountAddress}::${infer TModuleName}::${infer TStructName}${'' | `<${infer _TInnerType}>`}` ? OmitInner<TStructName> extends ResourceStructName<Extract<TABITable[number], {
18
+ address: TAccountAddress;
19
+ name: TModuleName;
20
+ }>> ? ExtractStructType<TABITable, Extract<TABITable[number], {
21
+ address: TAccountAddress;
22
+ name: TModuleName;
23
+ }>, OmitInner<TStructName>> : UnknownStruct<TMoveType> : UnknownStruct<TMoveType>;
18
24
  export {};
19
25
  //# sourceMappingURL=structConvertor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structConvertor.d.ts","sourceRoot":"","sources":["../../../../src/types/convertor/structConvertor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB,SAAS,SAAS,kBAAkB,GAEpC,+BAA+B,CAAC,SAAS,EAAE,SAAS,CAAC,GAErD,4BAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAEvD;;GAEG;AACH,KAAK,2BAA2B,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,MAAM,GACxE,OAAO,GACP,CAAC,SAAS,IAAI,GACd,MAAM,GACN,CAAC,SAAS,KAAK,GACf,MAAM,GACN,CAAC,SAAS,KAAK,GACf,MAAM,GACN,CAAC,SAAS,KAAK,GACf,MAAM,GACN,CAAC,SAAS,MAAM,GAChB,MAAM,GACN,CAAC,SAAS,MAAM,GAChB,MAAM,GACN,CAAC,SAAS,SAAS,GACnB,KAAK,MAAM,EAAE,GACb,CAAC,SAAS,qBAAqB,GAC/B,MAAM,GACN,KAAK,CAAC;AAGV,KAAK,+BAA+B,CAClC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,kBAAkB,IAClC,SAAS,SAAS,aAAa,GAC/B,2BAA2B,CAAC,SAAS,CAAC,GACtC,SAAS,SAAS,UAAU,MAAM,MAAM,GAAG,GAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,GAC3C,SAAS,SAAS,uBAAuB,MAAM,MAAM,GAAG,GACxD,4BAA4B,CAAC,SAAS,EAAE,MAAM,CAAC,GAC/C,aAAa,CAAC,SAAS,CAAC,CAAC;AAE7B,KAAK,4BAA4B,CAC/B,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB;IACF,GAAG,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;CAC1D,CAAC;AAGF,KAAK,4BAA4B,CAC/B,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB,SAAS,SAAS,GAAG,MAAM,eAAe,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,GACtF,EAAE,GACF,IAAI,MAAM,WAAW,GAAG,EAAE,GAC1B,GAAG,eAAe,KAAK,WAAW,EAAE,SAAS,MAAM,SAAS,GAC1D,SAAS,CAAC,WAAW,CAAC,SAAS,kBAAkB,CAC/C,SAAS,CAAC,GAAG,eAAe,KAAK,WAAW,EAAE,CAAC,CAChD,GACC,iBAAiB,CACf,SAAS,EACT,SAAS,CAAC,GAAG,eAAe,KAAK,WAAW,EAAE,CAAC,EAC/C,SAAS,CAAC,WAAW,CAAC,CACvB,GAED,aAAa,CAAC,SAAS,CAAC,GAC1B,aAAa,CAAC,SAAS,CAAC,GAC1B,aAAa,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"structConvertor.d.ts","sourceRoot":"","sources":["../../../../src/types/convertor/structConvertor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB,SAAS,SAAS,kBAAkB,GAEpC,+BAA+B,CAAC,SAAS,EAAE,SAAS,CAAC,GAErD,4BAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAEvD;;GAEG;AACH,KAAK,2BAA2B,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,MAAM,GACxE,OAAO,GACP,CAAC,SAAS,IAAI,GACZ,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,SAAS,GACjB,KAAK,MAAM,EAAE,GACb,CAAC,SAAS,qBAAqB,GAC7B,MAAM,GACN,KAAK,CAAC;AAG1B,KAAK,+BAA+B,CAClC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,kBAAkB,IAClC,SAAS,SAAS,aAAa,GAC/B,2BAA2B,CAAC,SAAS,CAAC,GACtC,SAAS,SAAS,UAAU,MAAM,MAAM,GAAG,GACzC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,GAC3C,SAAS,SAAS,uBAAuB,MAAM,MAAM,GAAG,GACtD,4BAA4B,CAAC,SAAS,EAAE,MAAM,CAAC,GAC/C,aAAa,CAAC,SAAS,CAAC,CAAC;AAEjC,KAAK,4BAA4B,CAC/B,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB;IACF,GAAG,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;CAC1D,CAAC;AAGF,KAAK,4BAA4B,CAC/B,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB,SAAS,SAAS,GAAG,MAAM,eAAe,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,GACtF,EAAE,GACF,IAAI,MAAM,WAAW,GAAG,EAAE,GAC1B,SAAS,CAAC,WAAW,CAAC,SAAS,kBAAkB,CAC/C,OAAO,CACL,SAAS,CAAC,MAAM,CAAC,EACjB;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAChD,CACF,GACC,iBAAiB,CACf,SAAS,EACT,OAAO,CACL,SAAS,CAAC,MAAM,CAAC,EACjB;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAChD,EACD,SAAS,CAAC,WAAW,CAAC,CACvB,GAED,aAAa,CAAC,SAAS,CAAC,GAC1B,aAAa,CAAC,SAAS,CAAC,CAAC"}
@@ -5,15 +5,13 @@ import type { GUID_ABI } from '../abi/guid.js';
5
5
  import { OPTIONAL_AGGREGATOR_ABI } from '../abi/optional_aggregator.js';
6
6
  import { TABLE_ABI } from '../abi/table.js';
7
7
  import { ABIRoot } from './abi.js';
8
- export type ABITable = {
9
- [TAddress in string]: ABIRoot;
10
- };
11
- export type DefaultABITable = {
12
- '0x1::coin': typeof COIN_ABI;
13
- '0x1::event': typeof EVENT_ABI;
14
- '0x1::guid': typeof GUID_ABI;
15
- '0x1::table': typeof TABLE_ABI;
16
- '0x1::optional_aggregator': typeof OPTIONAL_AGGREGATOR_ABI;
17
- '0x1::aggregator': typeof AGGREGATOR_ABI;
18
- };
8
+ export type ABITable = ABIRoot[];
9
+ export type DefaultABITable = [
10
+ typeof COIN_ABI,
11
+ typeof EVENT_ABI,
12
+ typeof GUID_ABI,
13
+ typeof TABLE_ABI,
14
+ typeof OPTIONAL_AGGREGATOR_ABI,
15
+ typeof AGGREGATOR_ABI
16
+ ];
19
17
  //# sourceMappingURL=defaultABITable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultABITable.d.ts","sourceRoot":"","sources":["../../../src/types/defaultABITable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,MAAM,QAAQ,GAAG;KACpB,QAAQ,IAAI,MAAM,GAAG,OAAO;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,OAAO,QAAQ,CAAC;IAC7B,YAAY,EAAE,OAAO,SAAS,CAAC;IAC/B,WAAW,EAAE,OAAO,QAAQ,CAAC;IAC7B,YAAY,EAAE,OAAO,SAAS,CAAC;IAC/B,0BAA0B,EAAE,OAAO,uBAAuB,CAAC;IAC3D,iBAAiB,EAAE,OAAO,cAAc,CAAC;CAC1C,CAAC"}
1
+ {"version":3,"file":"defaultABITable.d.ts","sourceRoot":"","sources":["../../../src/types/defaultABITable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,QAAQ;IACf,OAAO,SAAS;IAChB,OAAO,QAAQ;IACf,OAAO,SAAS;IAChB,OAAO,uBAAuB;IAC9B,OAAO,cAAc;CACtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thalalabs/surf",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "TypeScript Interfaces & React Hooks for interacting with Aptos Smart Contracts with type safety.",
5
5
  "main": "./build/cjs/index.js",
6
6
  "module": "./build/esm/index.js",
@@ -33,6 +33,7 @@
33
33
  }
34
34
  },
35
35
  "devDependencies": {
36
+ "@aptos-labs/ts-sdk": "^1.16.0",
36
37
  "@aptos-labs/wallet-adapter-react": "^2.2.0",
37
38
  "@changesets/cli": "^2.26.1",
38
39
  "@types/jest": "~29.5",
@@ -43,19 +44,20 @@
43
44
  "eslint": "~8.57",
44
45
  "eslint-config-prettier": "~9.1",
45
46
  "eslint-plugin-jest": "~27.6",
47
+ "husky": "^9.0.11",
46
48
  "jest": "~29.7",
49
+ "lint-staged": "^15.2.5",
47
50
  "prettier": "~3.1",
48
51
  "react": "^18.2.0",
49
52
  "rimraf": "~5.0",
50
53
  "ts-api-utils": "~0.0.44",
51
54
  "ts-jest": "~29.1",
52
55
  "tslib": "~2.6",
53
- "typescript": "~5.1",
54
- "@aptos-labs/ts-sdk": "^1.2.0"
56
+ "typescript": "~5.1"
55
57
  },
56
58
  "peerDependencies": {
59
+ "@aptos-labs/ts-sdk": "^1.16.0",
57
60
  "@aptos-labs/wallet-adapter-react": "^2.2.0",
58
- "@aptos-labs/ts-sdk": "^1.14.0",
59
61
  "react": "^18.2.0"
60
62
  },
61
63
  "peerDependenciesMeta": {
@@ -81,6 +83,13 @@
81
83
  "test:watch": "jest --watch",
82
84
  "release": "yarn build && changeset publish"
83
85
  },
86
+ "lint-staged": {
87
+ "*.{js,jsx,ts,tsx}": [
88
+ "eslint --fix",
89
+ "prettier --write"
90
+ ],
91
+ "*.json": "prettier --write"
92
+ },
84
93
  "keywords": [
85
94
  "move",
86
95
  "blockchain",
@@ -10,16 +10,14 @@ import { createSurfClient } from '../Client.js';
10
10
 
11
11
  describe('get account resource', () => {
12
12
  const client = createSurfClient(
13
- new Aptos(
14
- new AptosConfig({ network: Network.TESTNET })
15
- )
13
+ new Aptos(new AptosConfig({ network: Network.TESTNET })),
16
14
  );
17
15
 
18
16
  // Act before assertions
19
- beforeAll(async () => { });
17
+ beforeAll(async () => {});
20
18
 
21
19
  // Teardown (cleanup) after assertions
22
- afterAll(() => { });
20
+ afterAll(() => {});
23
21
 
24
22
  it('get CoinStore', async () => {
25
23
  const result = await client.useABI(COIN_ABI).resource.CoinStore({
@@ -33,9 +31,7 @@ describe('get account resource', () => {
33
31
  expect(result.withdraw_events).toBeDefined();
34
32
 
35
33
  // can inference nested struct
36
- expect(
37
- result.deposit_events.guid.id.creation_num.startsWith,
38
- ).toBeDefined();
34
+ expect(result.deposit_events.guid.id.creation_num.startsWith).toBeDefined();
39
35
 
40
36
  // @ts-expect-error field not exist
41
37
  expect(result.deposit_events.guid.id.abc).toBeUndefined();
@@ -81,14 +77,10 @@ describe('get account resource', () => {
81
77
 
82
78
  it('use customized ABITable', async () => {
83
79
  async () => {
84
- type ABITAble = DefaultABITable & {
85
- '0x4dcae85fc5559071906cd5c76b7420fcbb4b0a92f00ab40ffc394aadbbff5ee9::fixed_point64': typeof FIXED_POINT64_ABI;
86
- };
80
+ type ABITAble = [...DefaultABITable, ...[typeof FIXED_POINT64_ABI]];
87
81
 
88
82
  const client = createSurfClient<ABITAble>(
89
- new Aptos(
90
- new AptosConfig({ network: Network.TESTNET })
91
- )
83
+ new Aptos(new AptosConfig({ network: Network.TESTNET })),
92
84
  );
93
85
 
94
86
  const result = await client.useABI(TEST_ABI).resource.TestStruct({
@@ -1,4 +1,4 @@
1
- export type UnknownStruct<_T extends string> = object;
1
+ export type UnknownStruct<_T extends string> = unknown;
2
2
 
3
3
  export type AnyNumber = number | bigint | string;
4
4
 
@@ -25,22 +25,22 @@ export type ConvertStructFieldType<
25
25
  type ConvertPrimitiveStructField<T extends MovePrimitive> = T extends 'bool'
26
26
  ? boolean
27
27
  : T extends 'u8'
28
- ? number
29
- : T extends 'u16'
30
- ? number
31
- : T extends 'u32'
32
- ? number
33
- : T extends 'u64'
34
- ? string
35
- : T extends 'u128'
36
- ? string
37
- : T extends 'u256'
38
- ? string
39
- : T extends 'address'
40
- ? `0x${string}`
41
- : T extends '0x1::string::String'
42
- ? string
43
- : never;
28
+ ? number
29
+ : T extends 'u16'
30
+ ? number
31
+ : T extends 'u32'
32
+ ? number
33
+ : T extends 'u64'
34
+ ? string
35
+ : T extends 'u128'
36
+ ? string
37
+ : T extends 'u256'
38
+ ? string
39
+ : T extends 'address'
40
+ ? `0x${string}`
41
+ : T extends '0x1::string::String'
42
+ ? string
43
+ : never;
44
44
 
45
45
  // Convert a struct field non-struct Move type to a TypeScript type
46
46
  type ConvertStructFieldNonStructType<
@@ -49,10 +49,10 @@ type ConvertStructFieldNonStructType<
49
49
  > = TMoveType extends MovePrimitive
50
50
  ? ConvertPrimitiveStructField<TMoveType>
51
51
  : TMoveType extends `vector<${infer TInner}>`
52
- ? ConvertStructFieldType<TABITable, TInner>[]
53
- : TMoveType extends `0x1::option::Option<${infer TInner}>`
54
- ? ConvertStructFieldOptionType<TABITable, TInner>
55
- : UnknownStruct<TMoveType>;
52
+ ? ConvertStructFieldType<TABITable, TInner>[]
53
+ : TMoveType extends `0x1::option::Option<${infer TInner}>`
54
+ ? ConvertStructFieldOptionType<TABITable, TInner>
55
+ : UnknownStruct<TMoveType>;
56
56
 
57
57
  type ConvertStructFieldOptionType<
58
58
  TABITable extends ABITable,
@@ -68,16 +68,20 @@ type ConvertStructFieldStructType<
68
68
  > = TMoveType extends `${infer TAccountAddress}::${infer TModuleName}::${infer TStructName}${
69
69
  | ''
70
70
  | `<${infer _TInnerType}>`}`
71
- ? `${TAccountAddress}::${TModuleName}` extends keyof TABITable
72
- ? OmitInner<TStructName> extends ResourceStructName<
73
- TABITable[`${TAccountAddress}::${TModuleName}`]
71
+ ? OmitInner<TStructName> extends ResourceStructName<
72
+ Extract<
73
+ TABITable[number],
74
+ { address: TAccountAddress; name: TModuleName }
75
+ >
76
+ >
77
+ ? ExtractStructType<
78
+ TABITable,
79
+ Extract<
80
+ TABITable[number],
81
+ { address: TAccountAddress; name: TModuleName }
82
+ >,
83
+ OmitInner<TStructName>
74
84
  >
75
- ? ExtractStructType<
76
- TABITable,
77
- TABITable[`${TAccountAddress}::${TModuleName}`],
78
- OmitInner<TStructName>
79
- >
80
- : // Unknown struct, use the default struct type
81
- UnknownStruct<TMoveType>
82
- : UnknownStruct<TMoveType>
85
+ : // Unknown struct, use the default struct type
86
+ UnknownStruct<TMoveType>
83
87
  : UnknownStruct<TMoveType>;
@@ -6,15 +6,13 @@ import { OPTIONAL_AGGREGATOR_ABI } from '../abi/optional_aggregator.js';
6
6
  import { TABLE_ABI } from '../abi/table.js';
7
7
  import { ABIRoot } from './abi.js';
8
8
 
9
- export type ABITable = {
10
- [TAddress in string]: ABIRoot;
11
- };
9
+ export type ABITable = ABIRoot[];
12
10
 
13
- export type DefaultABITable = {
14
- '0x1::coin': typeof COIN_ABI;
15
- '0x1::event': typeof EVENT_ABI;
16
- '0x1::guid': typeof GUID_ABI;
17
- '0x1::table': typeof TABLE_ABI;
18
- '0x1::optional_aggregator': typeof OPTIONAL_AGGREGATOR_ABI;
19
- '0x1::aggregator': typeof AGGREGATOR_ABI;
20
- };
11
+ export type DefaultABITable = [
12
+ typeof COIN_ABI,
13
+ typeof EVENT_ABI,
14
+ typeof GUID_ABI,
15
+ typeof TABLE_ABI,
16
+ typeof OPTIONAL_AGGREGATOR_ABI,
17
+ typeof AGGREGATOR_ABI,
18
+ ];