diff --git a/.changeset/tender-camels-destroy.md b/.changeset/tender-camels-destroy.md new file mode 100644 index 0000000..f5d0337 --- /dev/null +++ b/.changeset/tender-camels-destroy.md @@ -0,0 +1,5 @@ +--- +'@thalalabs/surf': patch +--- + +support 0x1::object::Object type in struct diff --git a/src/core/__tests__/accountResource.test.ts b/src/core/__tests__/accountResource.test.ts index 53107ab..4f5bcda 100644 --- a/src/core/__tests__/accountResource.test.ts +++ b/src/core/__tests__/accountResource.test.ts @@ -120,6 +120,17 @@ describe('get account resource', () => { // @ts-expect-error out of index, option only has 0 or 1 item expect(data.supply.vec[1]).toBeUndefined(); }, 60000); + + it('object type', async () => { + async () => { + const data = await client.useABI(TEST_ABI).resource.TestObjectStruct({ + typeArguments: [], + account: '0x1', + }); + + expect(data.objects[0]!.inner).toBeDefined(); + }; + }, 60000); }); const TEST_ABI = { @@ -156,5 +167,17 @@ const TEST_ABI = { }, ], }, + { + name: 'TestObjectStruct', + is_native: false, + abilities: ['key'], + generic_type_params: [], + fields: [ + { + name: 'objects', + type: 'vector<0x1::object::Object<0x123::abc::Abc>>', + }, + ], + }, ], } as const; diff --git a/src/types/convertor/structConvertor.ts b/src/types/convertor/structConvertor.ts index 39f6f9d..02acb19 100644 --- a/src/types/convertor/structConvertor.ts +++ b/src/types/convertor/structConvertor.ts @@ -50,9 +50,11 @@ type ConvertStructFieldNonStructType< ? ConvertPrimitiveStructField : TMoveType extends `vector<${infer TInner}>` ? ConvertStructFieldType[] - : TMoveType extends `0x1::option::Option<${infer TInner}>` - ? ConvertStructFieldOptionType - : UnknownStruct; + : TMoveType extends `0x1::object::Object<${string}>` + ? { inner: `0x${string}` } + : TMoveType extends `0x1::option::Option<${infer TInner}>` + ? ConvertStructFieldOptionType + : UnknownStruct; type ConvertStructFieldOptionType< TABITable extends ABITable,