diff --git a/.changeset/nasty-beans-count.md b/.changeset/nasty-beans-count.md new file mode 100644 index 0000000..df7ff6e --- /dev/null +++ b/.changeset/nasty-beans-count.md @@ -0,0 +1,5 @@ +--- +"@fleet-sdk/serializer": patch +--- + +Fix types for nested `SColl[SBytes]` creation. diff --git a/packages/serializer/src/types/constructors.test-d.ts b/packages/serializer/src/types/constructors.test-d.ts index 313737e..765ce42 100644 --- a/packages/serializer/src/types/constructors.test-d.ts +++ b/packages/serializer/src/types/constructors.test-d.ts @@ -124,6 +124,12 @@ describe("Constructor proxies types", () => { [false, false] ]).data ).toMatchTypeOf(); + expectTypeOf( + SColl(SColl(SByte), [Uint8Array.from([1, 2, 3]), Uint8Array.from([4, 5, 6])]).data + ).toMatchTypeOf(); + expectTypeOf(SColl(SColl(SByte), ["deadbeef", "cafe"]).data).toMatchTypeOf< + Uint8Array[] + >(); expectTypeOf(SPair(SInt(1), SBool(false)).data).toMatchTypeOf<[number, boolean]>(); expectTypeOf(SPair(SBool(true), SInt(1)).data).toMatchTypeOf<[boolean, number]>(); diff --git a/packages/serializer/src/types/constructors.ts b/packages/serializer/src/types/constructors.ts index 7cc30c1..3adb853 100644 --- a/packages/serializer/src/types/constructors.ts +++ b/packages/serializer/src/types/constructors.ts @@ -112,11 +112,16 @@ type SUnit = (value?: undefined) => SConstant; export const SUnit: SUnit = monoProxy(SUnitType, undefined, true); type SColl = { - (type: SConstructor): SConstructor; ( type: SConstructor, elements: ByteInput | D[] ): SConstant; + ( + type: SConstructor, + elements: ByteInput[] + ): SConstant; + + (type: SConstructor): SConstructor; (type: SConstructor, elements: D[]): SConstant; };