@thalalabs/surf 1.7.1 → 1.7.3

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @thalalabs/surf
2
2
 
3
+ ## 1.7.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 00e316b: bump ts-sdk packages
8
+
9
+ ## 1.7.2
10
+
11
+ ### Patch Changes
12
+
13
+ - fa03792: support 0x1::object::Object and 0x1::option::Option for view function returns
14
+ - 6113067: support 0x1::object::Object type in struct
15
+
3
16
  ## 1.7.1
4
17
 
5
18
  ### Patch Changes
@@ -3,7 +3,9 @@
3
3
  * for return value of view functions.
4
4
  */
5
5
  import { UnknownStruct } from '../common.js';
6
+ import { DefaultABITable } from '../defaultABITable.js';
6
7
  import { MoveNonStructTypes, MovePrimitive } from '../moveTypes.js';
8
+ import { ConvertStructFieldOptionType } from './structConvertor.js';
7
9
  /**
8
10
  * Convert an array of return types.
9
11
  */
@@ -16,6 +18,8 @@ export type ConvertReturns<T extends readonly string[]> = T extends readonly [
16
18
  */
17
19
  type ConvertReturnType<TMoveType extends string> = TMoveType extends MoveNonStructTypes ? ConvertNonStructReturnType<TMoveType> : UnknownStruct<TMoveType>;
18
20
  type ConvertPrimitiveReturnType<TMoveType extends MovePrimitive> = TMoveType extends 'bool' ? boolean : TMoveType extends 'u8' ? number : TMoveType extends 'u16' ? number : TMoveType extends 'u32' ? number : TMoveType extends 'u64' ? string : TMoveType extends 'u128' ? string : TMoveType extends 'u256' ? string : TMoveType extends 'address' ? `0x${string}` : TMoveType extends '0x1::string::String' ? string : never;
19
- type ConvertNonStructReturnType<TMoveType extends MoveNonStructTypes> = TMoveType extends MovePrimitive ? ConvertPrimitiveReturnType<TMoveType> : TMoveType extends `vector<${infer TInner}>` ? ConvertReturnType<TInner>[] : UnknownStruct<TMoveType>;
21
+ type ConvertNonStructReturnType<TMoveType extends MoveNonStructTypes> = TMoveType extends MovePrimitive ? ConvertPrimitiveReturnType<TMoveType> : TMoveType extends `vector<${infer TInner}>` ? ConvertReturnType<TInner>[] : TMoveType extends `0x1::object::Object<${string}>` ? {
22
+ inner: `0x${string}`;
23
+ } : TMoveType extends `0x1::option::Option<${infer TInner}>` ? ConvertStructFieldOptionType<DefaultABITable, TInner> : UnknownStruct<TMoveType>;
20
24
  export {};
21
25
  //# sourceMappingURL=returnConvertor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"returnConvertor.d.ts","sourceRoot":"","sources":["../../../../src/types/convertor/returnConvertor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,SAAS;IAC3E,MAAM,IAAI,SAAS,MAAM;IACzB,GAAG,MAAM,KAAK,SAAS,MAAM,EAAE;CAChC,GACG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GACnD,EAAE,CAAC;AAEP;;GAEG;AACH,KAAK,iBAAiB,CAAC,SAAS,SAAS,MAAM,IAC7C,SAAS,SAAS,kBAAkB,GAEhC,0BAA0B,CAAC,SAAS,CAAC,GAErC,aAAa,CAAC,SAAS,CAAC,CAAC;AAE/B,KAAK,0BAA0B,CAAC,SAAS,SAAS,aAAa,IAC7D,SAAS,SAAS,MAAM,GACpB,OAAO,GACP,SAAS,SAAS,IAAI,GACtB,MAAM,GACN,SAAS,SAAS,KAAK,GACvB,MAAM,GACN,SAAS,SAAS,KAAK,GACvB,MAAM,GACN,SAAS,SAAS,KAAK,GACvB,MAAM,GACN,SAAS,SAAS,MAAM,GACxB,MAAM,GACN,SAAS,SAAS,MAAM,GACxB,MAAM,GACN,SAAS,SAAS,SAAS,GAC3B,KAAK,MAAM,EAAE,GACb,SAAS,SAAS,qBAAqB,GACvC,MAAM,GACN,KAAK,CAAC;AAEZ,KAAK,0BAA0B,CAAC,SAAS,SAAS,kBAAkB,IAClE,SAAS,SAAS,aAAa,GAC3B,0BAA0B,CAAC,SAAS,CAAC,GACrC,SAAS,SAAS,UAAU,MAAM,MAAM,GAAG,GAC3C,iBAAiB,CAAC,MAAM,CAAC,EAAE,GAC3B,aAAa,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"returnConvertor.d.ts","sourceRoot":"","sources":["../../../../src/types/convertor/returnConvertor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,SAAS;IAC3E,MAAM,IAAI,SAAS,MAAM;IACzB,GAAG,MAAM,KAAK,SAAS,MAAM,EAAE;CAChC,GACG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GACnD,EAAE,CAAC;AAEP;;GAEG;AACH,KAAK,iBAAiB,CAAC,SAAS,SAAS,MAAM,IAC7C,SAAS,SAAS,kBAAkB,GAEhC,0BAA0B,CAAC,SAAS,CAAC,GAErC,aAAa,CAAC,SAAS,CAAC,CAAC;AAE/B,KAAK,0BAA0B,CAAC,SAAS,SAAS,aAAa,IAC7D,SAAS,SAAS,MAAM,GACpB,OAAO,GACP,SAAS,SAAS,IAAI,GACpB,MAAM,GACN,SAAS,SAAS,KAAK,GACrB,MAAM,GACN,SAAS,SAAS,KAAK,GACrB,MAAM,GACN,SAAS,SAAS,KAAK,GACrB,MAAM,GACN,SAAS,SAAS,MAAM,GACtB,MAAM,GACN,SAAS,SAAS,MAAM,GACtB,MAAM,GACN,SAAS,SAAS,SAAS,GACzB,KAAK,MAAM,EAAE,GACb,SAAS,SAAS,qBAAqB,GACrC,MAAM,GACN,KAAK,CAAC;AAE5B,KAAK,0BAA0B,CAAC,SAAS,SAAS,kBAAkB,IAClE,SAAS,SAAS,aAAa,GAC3B,0BAA0B,CAAC,SAAS,CAAC,GACrC,SAAS,SAAS,UAAU,MAAM,MAAM,GAAG,GACzC,iBAAiB,CAAC,MAAM,CAAC,EAAE,GAC3B,SAAS,SAAS,uBAAuB,MAAM,GAAG,GAChD;IAAE,KAAK,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,GACxB,SAAS,SAAS,uBAAuB,MAAM,MAAM,GAAG,GACtD,4BAA4B,CAAC,eAAe,EAAE,MAAM,CAAC,GACrD,aAAa,CAAC,SAAS,CAAC,CAAC"}
@@ -10,8 +10,10 @@ export type ConvertStructFieldType<TABITable extends ABITable, TMoveType extends
10
10
  * Internal
11
11
  */
12
12
  type ConvertPrimitiveStructField<T extends MovePrimitive> = T extends 'bool' ? boolean : T extends 'u8' ? number : T extends 'u16' ? number : T extends 'u32' ? number : T extends 'u64' ? string : T extends 'u128' ? string : T extends 'u256' ? string : T extends 'address' ? `0x${string}` : T extends '0x1::string::String' ? string : never;
13
- type ConvertStructFieldNonStructType<TABITable extends ABITable, TMoveType extends MoveNonStructTypes> = TMoveType extends MovePrimitive ? ConvertPrimitiveStructField<TMoveType> : TMoveType extends `vector<${infer TInner}>` ? ConvertStructFieldType<TABITable, TInner>[] : TMoveType extends `0x1::option::Option<${infer TInner}>` ? ConvertStructFieldOptionType<TABITable, TInner> : UnknownStruct<TMoveType>;
14
- type ConvertStructFieldOptionType<TABITable extends ABITable, TMoveType extends string> = {
13
+ type ConvertStructFieldNonStructType<TABITable extends ABITable, TMoveType extends MoveNonStructTypes> = TMoveType extends MovePrimitive ? ConvertPrimitiveStructField<TMoveType> : TMoveType extends `vector<${infer TInner}>` ? ConvertStructFieldType<TABITable, TInner>[] : TMoveType extends `0x1::object::Object<${string}>` ? {
14
+ inner: `0x${string}`;
15
+ } : TMoveType extends `0x1::option::Option<${infer TInner}>` ? ConvertStructFieldOptionType<TABITable, TInner> : UnknownStruct<TMoveType>;
16
+ export type ConvertStructFieldOptionType<TABITable extends ABITable, TMoveType extends string> = {
15
17
  vec: [ConvertStructFieldType<TABITable, TMoveType>] | [];
16
18
  };
17
19
  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], {
@@ -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,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"}
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,GAAG,GAChD;IAAE,KAAK,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,GACxB,SAAS,SAAS,uBAAuB,MAAM,MAAM,GAAG,GACtD,4BAA4B,CAAC,SAAS,EAAE,MAAM,CAAC,GAC/C,aAAa,CAAC,SAAS,CAAC,CAAC;AAEnC,MAAM,MAAM,4BAA4B,CACtC,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thalalabs/surf",
3
- "version": "1.7.1",
3
+ "version": "1.7.3",
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,8 +33,8 @@
33
33
  }
34
34
  },
35
35
  "devDependencies": {
36
- "@aptos-labs/ts-sdk": "^1.22.0",
37
- "@aptos-labs/wallet-adapter-react": "^3.4.2",
36
+ "@aptos-labs/ts-sdk": "^1.26.0",
37
+ "@aptos-labs/wallet-adapter-react": "^3.5.9",
38
38
  "@changesets/cli": "^2.26.1",
39
39
  "@types/jest": "~29.5",
40
40
  "@types/node": "~18",
@@ -56,8 +56,8 @@
56
56
  "typescript": "~5.1"
57
57
  },
58
58
  "peerDependencies": {
59
- "@aptos-labs/ts-sdk": "^1.22.0",
60
- "@aptos-labs/wallet-adapter-react": "^3.4.2",
59
+ "@aptos-labs/ts-sdk": "^1.26.0",
60
+ "@aptos-labs/wallet-adapter-react": "^3.5.9",
61
61
  "react": "^18.2.0"
62
62
  },
63
63
  "peerDependenciesMeta": {
@@ -120,6 +120,17 @@ describe('get account resource', () => {
120
120
  // @ts-expect-error out of index, option only has 0 or 1 item
121
121
  expect(data.supply.vec[1]).toBeUndefined();
122
122
  }, 60000);
123
+
124
+ it('object type', async () => {
125
+ async () => {
126
+ const data = await client.useABI(TEST_ABI).resource.TestObjectStruct({
127
+ typeArguments: [],
128
+ account: '0x1',
129
+ });
130
+
131
+ expect(data.objects[0]!.inner).toBeDefined();
132
+ };
133
+ }, 60000);
123
134
  });
124
135
 
125
136
  const TEST_ABI = {
@@ -156,5 +167,17 @@ const TEST_ABI = {
156
167
  },
157
168
  ],
158
169
  },
170
+ {
171
+ name: 'TestObjectStruct',
172
+ is_native: false,
173
+ abilities: ['key'],
174
+ generic_type_params: [],
175
+ fields: [
176
+ {
177
+ name: 'objects',
178
+ type: 'vector<0x1::object::Object<0x123::abc::Abc>>',
179
+ },
180
+ ],
181
+ },
159
182
  ],
160
183
  } as const;
@@ -9,21 +9,17 @@ import { createViewPayload } from '../createViewPayload.js';
9
9
 
10
10
  describe('call view functions', () => {
11
11
  const client = createSurfClient(
12
- new Aptos(
13
- new AptosConfig({ network: Network.TESTNET })
14
- )
12
+ new Aptos(new AptosConfig({ network: Network.TESTNET })),
15
13
  );
16
-
14
+
17
15
  const clientMain = createSurfClient(
18
- new Aptos(
19
- new AptosConfig({ network: Network.MAINNET })
20
- )
16
+ new Aptos(new AptosConfig({ network: Network.MAINNET })),
21
17
  );
22
18
  // Act before assertions
23
- beforeAll(async () => { });
19
+ beforeAll(async () => {});
24
20
 
25
21
  // Teardown (cleanup) after assertions
26
- afterAll(() => { });
22
+ afterAll(() => {});
27
23
 
28
24
  it('basic', async () => {
29
25
  const viewPayload = createViewPayload(COIN_ABI, {
@@ -58,9 +54,10 @@ describe('call view functions', () => {
58
54
  typeArguments: ['0x1::aptos_coin::AptosCoin'],
59
55
  });
60
56
  const result = await client.view({
61
- payload: viewPayload, options: {
57
+ payload: viewPayload,
58
+ options: {
62
59
  ledgerVersion: 562606728,
63
- }
60
+ },
64
61
  });
65
62
  expect(result).toMatchInlineSnapshot(`
66
63
  [
@@ -83,6 +80,49 @@ describe('call view functions', () => {
83
80
  expect((result[0] as any).v).toBeDefined();
84
81
  expect(typeof (result[0] as any).v).toEqual('string');
85
82
  }, 60000);
83
+
84
+ it('return objects', async () => {
85
+ // no need to run, type check only.
86
+ async () => {
87
+ const viewPayload = createViewPayload(TIERED_ORACLE_ABI, {
88
+ function: 'get_objects',
89
+ functionArguments: [],
90
+ typeArguments: ['0x1::aptos_coin::AptosCoin'],
91
+ });
92
+
93
+ // The declaration in Move:
94
+ // struct FixedPoint64 has copy, drop, store { value: u128 }
95
+ const result = await clientMain.view({ payload: viewPayload });
96
+
97
+ result[0][0]!.inner;
98
+
99
+ // @ts-expect-error
100
+ result[0][0].abc;
101
+ };
102
+ }, 60000);
103
+
104
+ it('return options', async () => {
105
+ // no need to run, type check only.
106
+ async () => {
107
+ const viewPayload = createViewPayload(TIERED_ORACLE_ABI, {
108
+ function: 'get_options',
109
+ functionArguments: [],
110
+ typeArguments: ['0x1::aptos_coin::AptosCoin'],
111
+ });
112
+
113
+ // The declaration in Move:
114
+ // struct FixedPoint64 has copy, drop, store { value: u128 }
115
+ const result = await clientMain.view({ payload: viewPayload });
116
+
117
+ result[0][0]!.vec[0];
118
+
119
+ // @ts-expect-error out of range, option only has 0 or 1 item
120
+ result[0][0]!.vec[1];
121
+
122
+ // @ts-expect-error
123
+ result[0][0].abc;
124
+ };
125
+ }, 60000);
86
126
  });
87
127
 
88
128
  const TIERED_ORACLE_ABI = {
@@ -107,6 +147,32 @@ const TIERED_ORACLE_ABI = {
107
147
  '0x4dcae85fc5559071906cd5c76b7420fcbb4b0a92f00ab40ffc394aadbbff5ee9::fixed_point64::FixedPoint64',
108
148
  ],
109
149
  },
150
+ {
151
+ name: 'get_objects',
152
+ visibility: 'public',
153
+ is_entry: false,
154
+ is_view: true,
155
+ generic_type_params: [
156
+ {
157
+ constraints: [],
158
+ },
159
+ ],
160
+ params: [],
161
+ return: ['vector<0x1::object::Object<0x123::abc::Abc>>'],
162
+ },
163
+ {
164
+ name: 'get_options',
165
+ visibility: 'public',
166
+ is_entry: false,
167
+ is_view: true,
168
+ generic_type_params: [
169
+ {
170
+ constraints: [],
171
+ },
172
+ ],
173
+ params: [],
174
+ return: ['vector<0x1::option::Option<0x123::abc::Abc>>'],
175
+ },
110
176
  ],
111
177
  structs: [],
112
178
  } as const;
@@ -4,7 +4,9 @@
4
4
  */
5
5
 
6
6
  import { UnknownStruct } from '../common.js';
7
+ import { DefaultABITable } from '../defaultABITable.js';
7
8
  import { MoveNonStructTypes, MovePrimitive } from '../moveTypes.js';
9
+ import { ConvertStructFieldOptionType } from './structConvertor.js';
8
10
 
9
11
  /**
10
12
  * Convert an array of return types.
@@ -30,26 +32,30 @@ type ConvertPrimitiveReturnType<TMoveType extends MovePrimitive> =
30
32
  TMoveType extends 'bool'
31
33
  ? boolean
32
34
  : TMoveType extends 'u8'
33
- ? number
34
- : TMoveType extends 'u16'
35
- ? number
36
- : TMoveType extends 'u32'
37
- ? number
38
- : TMoveType extends 'u64'
39
- ? string
40
- : TMoveType extends 'u128'
41
- ? string
42
- : TMoveType extends 'u256'
43
- ? string
44
- : TMoveType extends 'address'
45
- ? `0x${string}`
46
- : TMoveType extends '0x1::string::String'
47
- ? string
48
- : never;
35
+ ? number
36
+ : TMoveType extends 'u16'
37
+ ? number
38
+ : TMoveType extends 'u32'
39
+ ? number
40
+ : TMoveType extends 'u64'
41
+ ? string
42
+ : TMoveType extends 'u128'
43
+ ? string
44
+ : TMoveType extends 'u256'
45
+ ? string
46
+ : TMoveType extends 'address'
47
+ ? `0x${string}`
48
+ : TMoveType extends '0x1::string::String'
49
+ ? string
50
+ : never;
49
51
 
50
52
  type ConvertNonStructReturnType<TMoveType extends MoveNonStructTypes> =
51
53
  TMoveType extends MovePrimitive
52
54
  ? ConvertPrimitiveReturnType<TMoveType>
53
55
  : TMoveType extends `vector<${infer TInner}>`
54
- ? ConvertReturnType<TInner>[]
55
- : UnknownStruct<TMoveType>;
56
+ ? ConvertReturnType<TInner>[]
57
+ : TMoveType extends `0x1::object::Object<${string}>`
58
+ ? { inner: `0x${string}` }
59
+ : TMoveType extends `0x1::option::Option<${infer TInner}>`
60
+ ? ConvertStructFieldOptionType<DefaultABITable, TInner>
61
+ : UnknownStruct<TMoveType>;
@@ -50,11 +50,13 @@ type ConvertStructFieldNonStructType<
50
50
  ? ConvertPrimitiveStructField<TMoveType>
51
51
  : TMoveType extends `vector<${infer TInner}>`
52
52
  ? ConvertStructFieldType<TABITable, TInner>[]
53
- : TMoveType extends `0x1::option::Option<${infer TInner}>`
54
- ? ConvertStructFieldOptionType<TABITable, TInner>
55
- : UnknownStruct<TMoveType>;
53
+ : TMoveType extends `0x1::object::Object<${string}>`
54
+ ? { inner: `0x${string}` }
55
+ : TMoveType extends `0x1::option::Option<${infer TInner}>`
56
+ ? ConvertStructFieldOptionType<TABITable, TInner>
57
+ : UnknownStruct<TMoveType>;
56
58
 
57
- type ConvertStructFieldOptionType<
59
+ export type ConvertStructFieldOptionType<
58
60
  TABITable extends ABITable,
59
61
  TMoveType extends string,
60
62
  > = {