@solana/codecs-data-structures 2.0.0-experimental.a48ebd2 → 2.0.0-experimental.a64df70

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 (45) hide show
  1. package/README.md +482 -4
  2. package/dist/index.browser.cjs +334 -432
  3. package/dist/index.browser.cjs.map +1 -1
  4. package/dist/index.browser.js +336 -430
  5. package/dist/index.browser.js.map +1 -1
  6. package/dist/index.native.js +338 -430
  7. package/dist/index.native.js.map +1 -1
  8. package/dist/index.node.cjs +334 -432
  9. package/dist/index.node.cjs.map +1 -1
  10. package/dist/index.node.js +338 -430
  11. package/dist/index.node.js.map +1 -1
  12. package/dist/types/array.d.ts +35 -6
  13. package/dist/types/array.d.ts.map +1 -1
  14. package/dist/types/bit-array.d.ts +5 -5
  15. package/dist/types/bit-array.d.ts.map +1 -1
  16. package/dist/types/boolean.d.ts +18 -6
  17. package/dist/types/boolean.d.ts.map +1 -1
  18. package/dist/types/bytes.d.ts +14 -5
  19. package/dist/types/bytes.d.ts.map +1 -1
  20. package/dist/types/data-enum.d.ts +18 -20
  21. package/dist/types/data-enum.d.ts.map +1 -1
  22. package/dist/types/index.d.ts +13 -14
  23. package/dist/types/index.d.ts.map +1 -1
  24. package/dist/types/map.d.ts +24 -6
  25. package/dist/types/map.d.ts.map +1 -1
  26. package/dist/types/nullable.d.ts +24 -6
  27. package/dist/types/nullable.d.ts.map +1 -1
  28. package/dist/types/scalar-enum.d.ts +42 -11
  29. package/dist/types/scalar-enum.d.ts.map +1 -1
  30. package/dist/types/set.d.ts +24 -6
  31. package/dist/types/set.d.ts.map +1 -1
  32. package/dist/types/struct.d.ts +16 -21
  33. package/dist/types/struct.d.ts.map +1 -1
  34. package/dist/types/tuple.d.ts +22 -15
  35. package/dist/types/tuple.d.ts.map +1 -1
  36. package/dist/types/unit.d.ts +4 -12
  37. package/dist/types/unit.d.ts.map +1 -1
  38. package/dist/types/utils.d.ts +10 -2
  39. package/dist/types/utils.d.ts.map +1 -1
  40. package/package.json +12 -34
  41. package/dist/index.development.js +0 -889
  42. package/dist/index.development.js.map +0 -1
  43. package/dist/index.production.min.js +0 -51
  44. package/dist/types/array-like-codec-size.d.ts +0 -20
  45. package/dist/types/array-like-codec-size.d.ts.map +0 -1
@@ -1,4 +1,4 @@
1
- import { BaseCodecConfig, Codec, Decoder, Encoder } from '@solana/codecs-core';
1
+ import { Codec, Decoder, Encoder } from '@solana/codecs-core';
2
2
  import { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
3
3
  /**
4
4
  * Defines a data enum using discriminated union types.
@@ -43,48 +43,46 @@ export type GetDataEnumKind<T extends DataEnum, K extends T['__kind']> = Extract
43
43
  export type GetDataEnumKindContent<T extends DataEnum, K extends T['__kind']> = Omit<Extract<T, {
44
44
  __kind: K;
45
45
  }>, '__kind'>;
46
- /** Get the name and codec of each variant in a data enum. */
47
- export type DataEnumToCodecTuple<T extends DataEnum, U extends T = T> = Array<T extends never ? never : [
48
- T['__kind'],
49
- keyof Omit<T, '__kind'> extends never ? Codec<Omit<T, '__kind'>, Omit<U, '__kind'>> | Codec<void> : Codec<Omit<T, '__kind'>, Omit<U, '__kind'>>
50
- ]>;
51
- /** Get the name and encoder of each variant in a data enum. */
52
- export type DataEnumToEncoderTuple<T extends DataEnum> = Array<T extends never ? never : [
53
- T['__kind'],
54
- keyof Omit<T, '__kind'> extends never ? Encoder<Omit<T, '__kind'>> | Encoder<void> : Encoder<Omit<T, '__kind'>>
55
- ]>;
56
- /** Get the name and decoder of each variant in a data enum. */
57
- export type DataEnumToDecoderTuple<T extends DataEnum> = Array<T extends never ? never : [
58
- T['__kind'],
59
- keyof Omit<T, '__kind'> extends never ? Decoder<Omit<T, '__kind'>> | Decoder<void> : Decoder<Omit<T, '__kind'>>
60
- ]>;
61
46
  /** Defines the config for data enum codecs. */
62
- export type DataEnumCodecConfig<TDiscriminator = NumberCodec | NumberEncoder | NumberDecoder> = BaseCodecConfig & {
47
+ export type DataEnumCodecConfig<TDiscriminator = NumberCodec | NumberEncoder | NumberDecoder> = {
63
48
  /**
64
49
  * The codec to use for the enum discriminator prefixing the variant.
65
50
  * @defaultValue u8 prefix.
66
51
  */
67
52
  size?: TDiscriminator;
68
53
  };
54
+ type Variants<T> = readonly (readonly [string, T])[];
55
+ type ArrayIndices<T extends readonly unknown[]> = Exclude<Partial<T>['length'], T['length']> & number;
56
+ type GetEncoderTypeFromVariants<TVariants extends Variants<Encoder<any>>> = {
57
+ [I in ArrayIndices<TVariants>]: {
58
+ __kind: TVariants[I][0];
59
+ } & (TVariants[I][1] extends Encoder<infer TFrom> ? TFrom extends object ? TFrom : object : never);
60
+ }[ArrayIndices<TVariants>];
61
+ type GetDecoderTypeFromVariants<TVariants extends Variants<Decoder<any>>> = {
62
+ [I in ArrayIndices<TVariants>]: {
63
+ __kind: TVariants[I][0];
64
+ } & (TVariants[I][1] extends Decoder<infer TTo> ? TTo extends object ? TTo : object : never);
65
+ }[ArrayIndices<TVariants>];
69
66
  /**
70
67
  * Creates a data enum encoder.
71
68
  *
72
69
  * @param variants - The variant encoders of the data enum.
73
70
  * @param config - A set of config for the encoder.
74
71
  */
75
- export declare function getDataEnumEncoder<T extends DataEnum>(variants: DataEnumToEncoderTuple<T>, config?: DataEnumCodecConfig<NumberEncoder>): Encoder<T>;
72
+ export declare function getDataEnumEncoder<const TVariants extends Variants<Encoder<any>>>(variants: TVariants, config?: DataEnumCodecConfig<NumberEncoder>): Encoder<GetEncoderTypeFromVariants<TVariants>>;
76
73
  /**
77
74
  * Creates a data enum decoder.
78
75
  *
79
76
  * @param variants - The variant decoders of the data enum.
80
77
  * @param config - A set of config for the decoder.
81
78
  */
82
- export declare function getDataEnumDecoder<T extends DataEnum>(variants: DataEnumToDecoderTuple<T>, config?: DataEnumCodecConfig<NumberDecoder>): Decoder<T>;
79
+ export declare function getDataEnumDecoder<const TVariants extends Variants<Decoder<any>>>(variants: TVariants, config?: DataEnumCodecConfig<NumberDecoder>): Decoder<GetDecoderTypeFromVariants<TVariants>>;
83
80
  /**
84
81
  * Creates a data enum codec.
85
82
  *
86
83
  * @param variants - The variant codecs of the data enum.
87
84
  * @param config - A set of config for the codec.
88
85
  */
89
- export declare function getDataEnumCodec<T extends DataEnum, U extends T = T>(variants: DataEnumToCodecTuple<T, U>, config?: DataEnumCodecConfig<NumberCodec>): Codec<T, U>;
86
+ export declare function getDataEnumCodec<const TVariants extends Variants<Codec<any, any>>>(variants: TVariants, config?: DataEnumCodecConfig<NumberCodec>): Codec<GetEncoderTypeFromVariants<TVariants>, GetDecoderTypeFromVariants<TVariants> & GetEncoderTypeFromVariants<TVariants>>;
87
+ export {};
90
88
  //# sourceMappingURL=data-enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-enum.d.ts","sourceRoot":"","sources":["../../src/data-enum.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-enum.d.ts","sourceRoot":"","sources":["../../src/data-enum.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,14 @@
1
- export * from './array';
2
- export * from './array-like-codec-size';
3
- export * from './assertions';
4
- export * from './bit-array';
5
- export * from './boolean';
6
- export * from './bytes';
7
- export * from './data-enum';
8
- export * from './map';
9
- export * from './nullable';
10
- export * from './scalar-enum';
11
- export * from './set';
12
- export * from './struct';
13
- export * from './tuple';
14
- export * from './unit';
1
+ export * from './array.js';
2
+ export * from './assertions.js';
3
+ export * from './bit-array.js';
4
+ export * from './boolean.js';
5
+ export * from './bytes.js';
6
+ export * from './data-enum.js';
7
+ export * from './map.js';
8
+ export * from './nullable.js';
9
+ export * from './scalar-enum.js';
10
+ export * from './set.js';
11
+ export * from './struct.js';
12
+ export * from './tuple.js';
13
+ export * from './unit.js';
15
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
@@ -1,8 +1,8 @@
1
- import { BaseCodecConfig, Codec, Decoder, Encoder } from '@solana/codecs-core';
1
+ import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, VariableSizeCodec, VariableSizeDecoder, VariableSizeEncoder } from '@solana/codecs-core';
2
2
  import { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
3
- import { ArrayLikeCodecSize } from './array-like-codec-size';
3
+ import { ArrayLikeCodecSize } from './array.js';
4
4
  /** Defines the config for Map codecs. */
5
- export type MapCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberDecoder> = BaseCodecConfig & {
5
+ export type MapCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberDecoder> = {
6
6
  /**
7
7
  * The size of the array.
8
8
  * @defaultValue u32 prefix.
@@ -16,7 +16,13 @@ export type MapCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberD
16
16
  * @param value - The encoder to use for the map's values.
17
17
  * @param config - A set of config for the encoder.
18
18
  */
19
- export declare function getMapEncoder<K, V>(key: Encoder<K>, value: Encoder<V>, config?: MapCodecConfig<NumberEncoder>): Encoder<Map<K, V>>;
19
+ export declare function getMapEncoder<TFromKey, TFromValue>(key: Encoder<TFromKey>, value: Encoder<TFromValue>, config: MapCodecConfig<NumberEncoder> & {
20
+ size: 0;
21
+ }): FixedSizeEncoder<Map<TFromKey, TFromValue>, 0>;
22
+ export declare function getMapEncoder<TFromKey, TFromValue>(key: FixedSizeEncoder<TFromKey>, value: FixedSizeEncoder<TFromValue>, config: MapCodecConfig<NumberEncoder> & {
23
+ size: number;
24
+ }): FixedSizeEncoder<Map<TFromKey, TFromValue>>;
25
+ export declare function getMapEncoder<TFromKey, TFromValue>(key: Encoder<TFromKey>, value: Encoder<TFromValue>, config?: MapCodecConfig<NumberEncoder>): VariableSizeEncoder<Map<TFromKey, TFromValue>>;
20
26
  /**
21
27
  * Creates a decoder for a map.
22
28
  *
@@ -24,7 +30,13 @@ export declare function getMapEncoder<K, V>(key: Encoder<K>, value: Encoder<V>,
24
30
  * @param value - The decoder to use for the map's values.
25
31
  * @param config - A set of config for the decoder.
26
32
  */
27
- export declare function getMapDecoder<K, V>(key: Decoder<K>, value: Decoder<V>, config?: MapCodecConfig<NumberDecoder>): Decoder<Map<K, V>>;
33
+ export declare function getMapDecoder<TToKey, TToValue>(key: Decoder<TToKey>, value: Decoder<TToValue>, config: MapCodecConfig<NumberDecoder> & {
34
+ size: 0;
35
+ }): FixedSizeDecoder<Map<TToKey, TToValue>, 0>;
36
+ export declare function getMapDecoder<TToKey, TToValue>(key: FixedSizeDecoder<TToKey>, value: FixedSizeDecoder<TToValue>, config: MapCodecConfig<NumberDecoder> & {
37
+ size: number;
38
+ }): FixedSizeDecoder<Map<TToKey, TToValue>>;
39
+ export declare function getMapDecoder<TToKey, TToValue>(key: Decoder<TToKey>, value: Decoder<TToValue>, config?: MapCodecConfig<NumberDecoder>): VariableSizeDecoder<Map<TToKey, TToValue>>;
28
40
  /**
29
41
  * Creates a codec for a map.
30
42
  *
@@ -32,5 +44,11 @@ export declare function getMapDecoder<K, V>(key: Decoder<K>, value: Decoder<V>,
32
44
  * @param value - The codec to use for the map's values.
33
45
  * @param config - A set of config for the codec.
34
46
  */
35
- export declare function getMapCodec<TK, TV, UK extends TK = TK, UV extends TV = TV>(key: Codec<TK, UK>, value: Codec<TV, UV>, config?: MapCodecConfig<NumberCodec>): Codec<Map<TK, TV>, Map<UK, UV>>;
47
+ export declare function getMapCodec<TFromKey, TFromValue, TToKey extends TFromKey = TFromKey, TToValue extends TFromValue = TFromValue>(key: Codec<TFromKey, TToKey>, value: Codec<TFromValue, TToValue>, config: MapCodecConfig<NumberCodec> & {
48
+ size: 0;
49
+ }): FixedSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>, 0>;
50
+ export declare function getMapCodec<TFromKey, TFromValue, TToKey extends TFromKey = TFromKey, TToValue extends TFromValue = TFromValue>(key: FixedSizeCodec<TFromKey, TToKey>, value: FixedSizeCodec<TFromValue, TToValue>, config: MapCodecConfig<NumberCodec> & {
51
+ size: number;
52
+ }): FixedSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>>;
53
+ export declare function getMapCodec<TFromKey, TFromValue, TToKey extends TFromKey = TFromKey, TToValue extends TFromValue = TFromValue>(key: Codec<TFromKey, TToKey>, value: Codec<TFromValue, TToValue>, config?: MapCodecConfig<NumberCodec>): VariableSizeCodec<Map<TFromKey, TFromValue>, Map<TToKey, TToValue>>;
36
54
  //# sourceMappingURL=map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAA2B,OAAO,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAgC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEjH,OAAO,EACH,kBAAkB,EAKrB,MAAM,yBAAyB,CAAC;AAGjC,yCAAyC;AACzC,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,WAAW,GAAG,aAAa,GAAG,aAAa,IAAI,eAAe,GAAG;IACxG;;;OAGG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAqBF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAC9B,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EACf,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,GAAE,cAAc,CAAC,aAAa,CAAM,GAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAYpB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAC9B,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EACf,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,MAAM,GAAE,cAAc,CAAC,aAAa,CAAM,GAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CA0BpB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EACtE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACpB,MAAM,GAAE,cAAc,CAAC,WAAW,CAAM,GACzC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAEjC"}
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { BaseCodecConfig, Codec, Decoder, Encoder } from '@solana/codecs-core';
2
- import { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
1
+ import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, VariableSizeCodec, VariableSizeDecoder, VariableSizeEncoder } from '@solana/codecs-core';
2
+ import { FixedSizeNumberCodec, FixedSizeNumberDecoder, FixedSizeNumberEncoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
3
3
  /** Defines the config for nullable codecs. */
4
- export type NullableCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberDecoder> = BaseCodecConfig & {
4
+ export type NullableCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberDecoder> = {
5
5
  /**
6
6
  * The codec to use for the boolean prefix.
7
7
  * @defaultValue u8 prefix.
@@ -23,19 +23,37 @@ export type NullableCodecConfig<TPrefix extends NumberCodec | NumberEncoder | Nu
23
23
  * @param item - The encoder to use for the value that may be present.
24
24
  * @param config - A set of config for the encoder.
25
25
  */
26
- export declare function getNullableEncoder<T>(item: Encoder<T>, config?: NullableCodecConfig<NumberEncoder>): Encoder<T | null>;
26
+ export declare function getNullableEncoder<TFrom>(item: FixedSizeEncoder<TFrom>, config: NullableCodecConfig<FixedSizeNumberEncoder> & {
27
+ fixed: true;
28
+ }): FixedSizeEncoder<TFrom | null>;
29
+ export declare function getNullableEncoder<TFrom>(item: FixedSizeEncoder<TFrom, 0>, config?: NullableCodecConfig<FixedSizeNumberEncoder>): FixedSizeEncoder<TFrom | null>;
30
+ export declare function getNullableEncoder<TFrom>(item: Encoder<TFrom>, config?: NullableCodecConfig<NumberEncoder> & {
31
+ fixed?: false;
32
+ }): VariableSizeEncoder<TFrom | null>;
27
33
  /**
28
34
  * Creates a decoder for an optional value using `null` as the `None` value.
29
35
  *
30
36
  * @param item - The decoder to use for the value that may be present.
31
37
  * @param config - A set of config for the decoder.
32
38
  */
33
- export declare function getNullableDecoder<T>(item: Decoder<T>, config?: NullableCodecConfig<NumberDecoder>): Decoder<T | null>;
39
+ export declare function getNullableDecoder<TTo>(item: FixedSizeDecoder<TTo>, config: NullableCodecConfig<FixedSizeNumberDecoder> & {
40
+ fixed: true;
41
+ }): FixedSizeDecoder<TTo | null>;
42
+ export declare function getNullableDecoder<TTo>(item: FixedSizeDecoder<TTo, 0>, config?: NullableCodecConfig<FixedSizeNumberDecoder>): FixedSizeDecoder<TTo | null>;
43
+ export declare function getNullableDecoder<TTo>(item: Decoder<TTo>, config?: NullableCodecConfig<NumberDecoder> & {
44
+ fixed?: false;
45
+ }): VariableSizeDecoder<TTo | null>;
34
46
  /**
35
47
  * Creates a codec for an optional value using `null` as the `None` value.
36
48
  *
37
49
  * @param item - The codec to use for the value that may be present.
38
50
  * @param config - A set of config for the codec.
39
51
  */
40
- export declare function getNullableCodec<T, U extends T = T>(item: Codec<T, U>, config?: NullableCodecConfig<NumberCodec>): Codec<T | null, U | null>;
52
+ export declare function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(item: FixedSizeCodec<TFrom, TTo>, config: NullableCodecConfig<FixedSizeNumberCodec> & {
53
+ fixed: true;
54
+ }): FixedSizeCodec<TFrom | null, TTo | null>;
55
+ export declare function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(item: FixedSizeCodec<TFrom, TTo, 0>, config?: NullableCodecConfig<FixedSizeNumberCodec>): FixedSizeCodec<TFrom | null, TTo | null>;
56
+ export declare function getNullableCodec<TFrom, TTo extends TFrom = TFrom>(item: Codec<TFrom, TTo>, config?: NullableCodecConfig<NumberCodec> & {
57
+ fixed?: false;
58
+ }): VariableSizeCodec<TFrom | null, TTo | null>;
41
59
  //# sourceMappingURL=nullable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../src/nullable.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EACf,KAAK,EAGL,OAAO,EACP,OAAO,EAGV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA8B,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI/G,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,WAAW,GAAG,aAAa,GAAG,aAAa,IAAI,eAAe,GAAG;IAC7G;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAmBF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAChC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,MAAM,GAAE,mBAAmB,CAAC,aAAa,CAAM,GAChD,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAYnB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAChC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,MAAM,GAAE,mBAAmB,CAAC,aAAa,CAAM,GAChD,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAoBnB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAC/C,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,MAAM,GAAE,mBAAmB,CAAC,WAAW,CAAM,GAC9C,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAE3B"}
1
+ {"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../src/nullable.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,38 @@
1
- import { BaseCodecConfig, Codec, Decoder, Encoder } from '@solana/codecs-core';
2
- import { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
1
+ import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, VariableSizeCodec, VariableSizeDecoder, VariableSizeEncoder } from '@solana/codecs-core';
2
+ import { FixedSizeNumberCodec, FixedSizeNumberDecoder, FixedSizeNumberEncoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
3
3
  /**
4
- * Defines a scalar enum as a type from its constructor.
4
+ * Defines the "lookup object" of a scalar enum.
5
5
  *
6
6
  * @example
7
7
  * ```ts
8
8
  * enum Direction { Left, Right };
9
- * type DirectionType = ScalarEnum<Direction>;
10
9
  * ```
11
10
  */
12
- export type ScalarEnum<T> = ({
13
- [key: number | string]: string | number | T;
14
- } | number | T) & NonNullable<unknown>;
11
+ export type ScalarEnum = {
12
+ [key: string]: string | number;
13
+ };
14
+ /**
15
+ * Returns the allowed input for a scalar enum.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * enum Direction { Left, Right };
20
+ * type DirectionInput = ScalarEnumFrom<Direction>; // "Left" | "Right" | 0 | 1
21
+ * ```
22
+ */
23
+ export type ScalarEnumFrom<TEnum extends ScalarEnum> = keyof TEnum | TEnum[keyof TEnum];
24
+ /**
25
+ * Returns all the available variants of a scalar enum.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * enum Direction { Left, Right };
30
+ * type DirectionOutput = ScalarEnumFrom<Direction>; // 0 | 1
31
+ * ```
32
+ */
33
+ export type ScalarEnumTo<TEnum extends ScalarEnum> = TEnum[keyof TEnum];
15
34
  /** Defines the config for scalar enum codecs. */
16
- export type ScalarEnumCodecConfig<TDiscriminator extends NumberCodec | NumberEncoder | NumberDecoder> = BaseCodecConfig & {
35
+ export type ScalarEnumCodecConfig<TDiscriminator extends NumberCodec | NumberEncoder | NumberDecoder> = {
17
36
  /**
18
37
  * The codec to use for the enum discriminator.
19
38
  * @defaultValue u8 discriminator.
@@ -26,19 +45,31 @@ export type ScalarEnumCodecConfig<TDiscriminator extends NumberCodec | NumberEnc
26
45
  * @param constructor - The constructor of the scalar enum.
27
46
  * @param config - A set of config for the encoder.
28
47
  */
29
- export declare function getScalarEnumEncoder<T>(constructor: ScalarEnum<T>, config?: ScalarEnumCodecConfig<NumberEncoder>): Encoder<T>;
48
+ export declare function getScalarEnumEncoder<TEnum extends ScalarEnum>(constructor: TEnum): FixedSizeEncoder<ScalarEnumFrom<TEnum>, 1>;
49
+ export declare function getScalarEnumEncoder<TEnum extends ScalarEnum, TSize extends number>(constructor: TEnum, config: ScalarEnumCodecConfig<NumberEncoder> & {
50
+ size: FixedSizeNumberEncoder<TSize>;
51
+ }): FixedSizeEncoder<ScalarEnumFrom<TEnum>, TSize>;
52
+ export declare function getScalarEnumEncoder<TEnum extends ScalarEnum>(constructor: TEnum, config?: ScalarEnumCodecConfig<NumberEncoder>): VariableSizeEncoder<ScalarEnumFrom<TEnum>>;
30
53
  /**
31
54
  * Creates a scalar enum decoder.
32
55
  *
33
56
  * @param constructor - The constructor of the scalar enum.
34
57
  * @param config - A set of config for the decoder.
35
58
  */
36
- export declare function getScalarEnumDecoder<T>(constructor: ScalarEnum<T>, config?: ScalarEnumCodecConfig<NumberDecoder>): Decoder<T>;
59
+ export declare function getScalarEnumDecoder<TEnum extends ScalarEnum>(constructor: TEnum): FixedSizeDecoder<ScalarEnumTo<TEnum>, 1>;
60
+ export declare function getScalarEnumDecoder<TEnum extends ScalarEnum, TSize extends number>(constructor: TEnum, config: ScalarEnumCodecConfig<NumberDecoder> & {
61
+ size: FixedSizeNumberDecoder<TSize>;
62
+ }): FixedSizeDecoder<ScalarEnumTo<TEnum>, TSize>;
63
+ export declare function getScalarEnumDecoder<TEnum extends ScalarEnum>(constructor: TEnum, config?: ScalarEnumCodecConfig<NumberDecoder>): VariableSizeDecoder<ScalarEnumTo<TEnum>>;
37
64
  /**
38
65
  * Creates a scalar enum codec.
39
66
  *
40
67
  * @param constructor - The constructor of the scalar enum.
41
68
  * @param config - A set of config for the codec.
42
69
  */
43
- export declare function getScalarEnumCodec<T>(constructor: ScalarEnum<T>, config?: ScalarEnumCodecConfig<NumberCodec>): Codec<T>;
70
+ export declare function getScalarEnumCodec<TEnum extends ScalarEnum>(constructor: TEnum): FixedSizeCodec<ScalarEnumFrom<TEnum>, ScalarEnumTo<TEnum>, 1>;
71
+ export declare function getScalarEnumCodec<TEnum extends ScalarEnum, TSize extends number>(constructor: TEnum, config: ScalarEnumCodecConfig<NumberCodec> & {
72
+ size: FixedSizeNumberCodec<TSize>;
73
+ }): FixedSizeCodec<ScalarEnumFrom<TEnum>, ScalarEnumTo<TEnum>, TSize>;
74
+ export declare function getScalarEnumCodec<TEnum extends ScalarEnum>(constructor: TEnum, config?: ScalarEnumCodecConfig<NumberCodec>): VariableSizeCodec<ScalarEnumFrom<TEnum>, ScalarEnumTo<TEnum>>;
44
75
  //# sourceMappingURL=scalar-enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scalar-enum.d.ts","sourceRoot":"","sources":["../../src/scalar-enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EACf,KAAK,EAGL,OAAO,EACP,OAAO,EACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA8B,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/G;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAA;CAAE,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAElH,iDAAiD;AACjD,MAAM,MAAM,qBAAqB,CAAC,cAAc,SAAS,WAAW,GAAG,aAAa,GAAG,aAAa,IAChG,eAAe,GAAG;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;CACzB,CAAC;AAmCN;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAClC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAC1B,MAAM,GAAE,qBAAqB,CAAC,aAAa,CAAM,GAClD,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAClC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAC1B,MAAM,GAAE,qBAAqB,CAAC,aAAa,CAAM,GAClD,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAChC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAC1B,MAAM,GAAE,qBAAqB,CAAC,WAAW,CAAM,GAChD,KAAK,CAAC,CAAC,CAAC,CAEV"}
1
+ {"version":3,"file":"scalar-enum.d.ts","sourceRoot":"","sources":["../../src/scalar-enum.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { BaseCodecConfig, Codec, Decoder, Encoder } from '@solana/codecs-core';
1
+ import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, VariableSizeCodec, VariableSizeDecoder, VariableSizeEncoder } from '@solana/codecs-core';
2
2
  import { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
3
- import { ArrayLikeCodecSize } from './array-like-codec-size';
3
+ import { ArrayLikeCodecSize } from './array.js';
4
4
  /** Defines the config for set codecs. */
5
- export type SetCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberDecoder> = BaseCodecConfig & {
5
+ export type SetCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberDecoder> = {
6
6
  /**
7
7
  * The size of the set.
8
8
  * @defaultValue u32 prefix.
@@ -15,19 +15,37 @@ export type SetCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberD
15
15
  * @param item - The encoder to use for the set's items.
16
16
  * @param config - A set of config for the encoder.
17
17
  */
18
- export declare function getSetEncoder<T>(item: Encoder<T>, config?: SetCodecConfig<NumberEncoder>): Encoder<Set<T>>;
18
+ export declare function getSetEncoder<TFrom>(item: Encoder<TFrom>, config: SetCodecConfig<NumberEncoder> & {
19
+ size: 0;
20
+ }): FixedSizeEncoder<Set<TFrom>, 0>;
21
+ export declare function getSetEncoder<TFrom>(item: FixedSizeEncoder<TFrom>, config: SetCodecConfig<NumberEncoder> & {
22
+ size: number;
23
+ }): FixedSizeEncoder<Set<TFrom>>;
24
+ export declare function getSetEncoder<TFrom>(item: Encoder<TFrom>, config?: SetCodecConfig<NumberEncoder>): VariableSizeEncoder<Set<TFrom>>;
19
25
  /**
20
26
  * Decodes an set of items.
21
27
  *
22
28
  * @param item - The encoder to use for the set's items.
23
29
  * @param config - A set of config for the encoder.
24
30
  */
25
- export declare function getSetDecoder<T>(item: Decoder<T>, config?: SetCodecConfig<NumberDecoder>): Decoder<Set<T>>;
31
+ export declare function getSetDecoder<TTo>(item: Decoder<TTo>, config: SetCodecConfig<NumberDecoder> & {
32
+ size: 0;
33
+ }): FixedSizeDecoder<Set<TTo>, 0>;
34
+ export declare function getSetDecoder<TTo>(item: FixedSizeDecoder<TTo>, config: SetCodecConfig<NumberDecoder> & {
35
+ size: number;
36
+ }): FixedSizeDecoder<Set<TTo>>;
37
+ export declare function getSetDecoder<TTo>(item: Decoder<TTo>, config?: SetCodecConfig<NumberDecoder>): VariableSizeDecoder<Set<TTo>>;
26
38
  /**
27
39
  * Creates a codec for an set of items.
28
40
  *
29
41
  * @param item - The codec to use for the set's items.
30
42
  * @param config - A set of config for the codec.
31
43
  */
32
- export declare function getSetCodec<T, U extends T = T>(item: Codec<T, U>, config?: SetCodecConfig<NumberCodec>): Codec<Set<T>, Set<U>>;
44
+ export declare function getSetCodec<TFrom, TTo extends TFrom = TFrom>(item: Codec<TFrom, TTo>, config: SetCodecConfig<NumberCodec> & {
45
+ size: 0;
46
+ }): FixedSizeCodec<Set<TFrom>, Set<TTo>, 0>;
47
+ export declare function getSetCodec<TFrom, TTo extends TFrom = TFrom>(item: FixedSizeCodec<TFrom, TTo>, config: SetCodecConfig<NumberCodec> & {
48
+ size: number;
49
+ }): FixedSizeCodec<Set<TFrom>, Set<TTo>>;
50
+ export declare function getSetCodec<TFrom, TTo extends TFrom = TFrom>(item: Codec<TFrom, TTo>, config?: SetCodecConfig<NumberCodec>): VariableSizeCodec<Set<TFrom>, Set<TTo>>;
33
51
  //# sourceMappingURL=set.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAA2B,OAAO,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAgC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEjH,OAAO,EACH,kBAAkB,EAKrB,MAAM,yBAAyB,CAAC;AAGjC,yCAAyC;AACzC,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,WAAW,GAAG,aAAa,GAAG,aAAa,IAAI,eAAe,GAAG;IACxG;;;OAGG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAeF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAE,cAAc,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAY9G;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAE,cAAc,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAmB9G;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAC1C,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,MAAM,GAAE,cAAc,CAAC,WAAW,CAAM,GACzC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAEvB"}
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/set.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,32 @@
1
- import { BaseCodecConfig, Codec, Decoder, Encoder } from '@solana/codecs-core';
2
- /** Get the name and encoder of each field in a struct. */
3
- export type StructToEncoderTuple<T extends object> = Array<{
4
- [K in keyof T]: [K, Encoder<T[K]>];
5
- }[keyof T]>;
6
- /** Get the name and decoder of each field in a struct. */
7
- export type StructToDecoderTuple<T extends object> = Array<{
8
- [K in keyof T]: [K, Decoder<T[K]>];
9
- }[keyof T]>;
10
- /** Get the name and codec of each field in a struct. */
11
- export type StructToCodecTuple<T extends object, U extends T> = Array<{
12
- [K in keyof T]: [K, Codec<T[K], U[K]>];
13
- }[keyof T]>;
14
- /** Defines the config for struct codecs. */
15
- export type StructCodecConfig = BaseCodecConfig;
1
+ import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, VariableSizeCodec, VariableSizeDecoder, VariableSizeEncoder } from '@solana/codecs-core';
2
+ type Fields<T> = readonly (readonly [string, T])[];
3
+ type ArrayIndices<T extends readonly unknown[]> = Exclude<Partial<T>['length'], T['length']> & number;
4
+ type GetEncoderTypeFromFields<TFields extends Fields<Encoder<any>>> = {
5
+ [I in ArrayIndices<TFields> as TFields[I][0]]: TFields[I][1] extends Encoder<infer TFrom> ? TFrom : never;
6
+ };
7
+ type GetDecoderTypeFromFields<TFields extends Fields<Decoder<any>>> = {
8
+ [I in ArrayIndices<TFields> as TFields[I][0]]: TFields[I][1] extends Decoder<infer TTo> ? TTo : never;
9
+ };
16
10
  /**
17
11
  * Creates a encoder for a custom object.
18
12
  *
19
13
  * @param fields - The name and encoder of each field.
20
- * @param config - A set of config for the encoder.
21
14
  */
22
- export declare function getStructEncoder<T extends object>(fields: StructToEncoderTuple<T>, config?: StructCodecConfig): Encoder<T>;
15
+ export declare function getStructEncoder<const TFields extends Fields<FixedSizeEncoder<any>>>(fields: TFields): FixedSizeEncoder<GetEncoderTypeFromFields<TFields>>;
16
+ export declare function getStructEncoder<const TFields extends Fields<Encoder<any>>>(fields: TFields): VariableSizeEncoder<GetEncoderTypeFromFields<TFields>>;
23
17
  /**
24
18
  * Creates a decoder for a custom object.
25
19
  *
26
20
  * @param fields - The name and decoder of each field.
27
- * @param config - A set of config for the decoder.
28
21
  */
29
- export declare function getStructDecoder<T extends object>(fields: StructToDecoderTuple<T>, config?: StructCodecConfig): Decoder<T>;
22
+ export declare function getStructDecoder<const TFields extends Fields<FixedSizeDecoder<any>>>(fields: TFields): FixedSizeDecoder<GetDecoderTypeFromFields<TFields>>;
23
+ export declare function getStructDecoder<const TFields extends Fields<Decoder<any>>>(fields: TFields): VariableSizeDecoder<GetDecoderTypeFromFields<TFields>>;
30
24
  /**
31
25
  * Creates a codec for a custom object.
32
26
  *
33
27
  * @param fields - The name and codec of each field.
34
- * @param config - A set of config for the codec.
35
28
  */
36
- export declare function getStructCodec<T extends object, U extends T = T>(fields: StructToCodecTuple<T, U>, config?: StructCodecConfig): Codec<T, U>;
29
+ export declare function getStructCodec<const TFields extends Fields<FixedSizeCodec<any>>>(fields: TFields): FixedSizeCodec<GetEncoderTypeFromFields<TFields>, GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>>;
30
+ export declare function getStructCodec<const TFields extends Fields<Codec<any>>>(fields: TFields): VariableSizeCodec<GetEncoderTypeFromFields<TFields>, GetDecoderTypeFromFields<TFields> & GetEncoderTypeFromFields<TFields>>;
31
+ export {};
37
32
  //# sourceMappingURL=struct.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../src/struct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAA2B,OAAO,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAIpH,0DAA0D;AAC1D,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,KAAK,CACtD;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC,MAAM,CAAC,CAAC,CACb,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,KAAK,CACtD;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC,MAAM,CAAC,CAAC,CACb,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,CACjE;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC,CAAC,MAAM,CAAC,CAAC,CACb,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAYhD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAC7C,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC/B,MAAM,GAAE,iBAAsB,GAC/B,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAC7C,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC/B,MAAM,GAAE,iBAAsB,GAC/B,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAC5D,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAChC,MAAM,GAAE,iBAAsB,GAC/B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAEb"}
1
+ {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../src/struct.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,EAIL,OAAO,EACP,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAEhB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,qBAAqB,CAAC;AAI7B,KAAK,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC;AAEtG,KAAK,wBAAwB,CAAC,OAAO,SAAS,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;KACjE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK;CAC5G,CAAC;AAEF,KAAK,wBAAwB,CAAC,OAAO,SAAS,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;KACjE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK;CACxG,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAChF,MAAM,EAAE,OAAO,GAChB,gBAAgB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AACvD,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EACvE,MAAM,EAAE,OAAO,GAChB,mBAAmB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AA4B1D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAChF,MAAM,EAAE,OAAO,GAChB,gBAAgB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AACvD,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EACvE,MAAM,EAAE,OAAO,GAChB,mBAAmB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AAuB1D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAC5E,MAAM,EAAE,OAAO,GAChB,cAAc,CACb,wBAAwB,CAAC,OAAO,CAAC,EACjC,wBAAwB,CAAC,OAAO,CAAC,GAAG,wBAAwB,CAAC,OAAO,CAAC,CACxE,CAAC;AACF,wBAAgB,cAAc,CAAC,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACnE,MAAM,EAAE,OAAO,GAChB,iBAAiB,CAChB,wBAAwB,CAAC,OAAO,CAAC,EACjC,wBAAwB,CAAC,OAAO,CAAC,GAAG,wBAAwB,CAAC,OAAO,CAAC,CACxE,CAAC"}
@@ -1,36 +1,43 @@
1
- import { BaseCodecConfig, Codec, Decoder, Encoder } from '@solana/codecs-core';
2
- /** Defines the config for tuple codecs. */
3
- export type TupleCodecConfig = BaseCodecConfig;
4
- type WrapInEncoder<T> = {
5
- [P in keyof T]: Encoder<T[P]>;
1
+ import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, VariableSizeCodec, VariableSizeDecoder, VariableSizeEncoder } from '@solana/codecs-core';
2
+ type WrapInFixedSizeEncoder<TFrom> = {
3
+ [P in keyof TFrom]: FixedSizeEncoder<TFrom[P]>;
6
4
  };
7
- type WrapInDecoder<T> = {
8
- [P in keyof T]: Decoder<T[P]>;
5
+ type WrapInEncoder<TFrom> = {
6
+ [P in keyof TFrom]: Encoder<TFrom[P]>;
9
7
  };
10
- type WrapInCodec<T, U extends T = T> = {
11
- [P in keyof T]: Codec<T[P], U[P]>;
8
+ type WrapInFixedSizeDecoder<TTo> = {
9
+ [P in keyof TTo]: FixedSizeDecoder<TTo[P]>;
10
+ };
11
+ type WrapInDecoder<TTo> = {
12
+ [P in keyof TTo]: Decoder<TTo[P]>;
13
+ };
14
+ type WrapInCodec<TFrom, TTo extends TFrom> = {
15
+ [P in keyof TFrom]: Codec<TFrom[P], TTo[P]>;
16
+ };
17
+ type WrapInFixedSizeCodec<TFrom, TTo extends TFrom> = {
18
+ [P in keyof TFrom]: FixedSizeCodec<TFrom[P], TTo[P]>;
12
19
  };
13
20
  type AnyArray = any[];
14
21
  /**
15
22
  * Creates a encoder for a tuple-like array.
16
23
  *
17
24
  * @param items - The encoders to use for each item in the tuple.
18
- * @param config - A set of config for the encoder.
19
25
  */
20
- export declare function getTupleEncoder<T extends AnyArray>(items: WrapInEncoder<[...T]>, config?: TupleCodecConfig): Encoder<T>;
26
+ export declare function getTupleEncoder<TFrom extends AnyArray>(items: WrapInFixedSizeEncoder<[...TFrom]>): FixedSizeEncoder<TFrom>;
27
+ export declare function getTupleEncoder<TFrom extends AnyArray>(items: WrapInEncoder<[...TFrom]>): VariableSizeEncoder<TFrom>;
21
28
  /**
22
29
  * Creates a decoder for a tuple-like array.
23
30
  *
24
31
  * @param items - The decoders to use for each item in the tuple.
25
- * @param config - A set of config for the decoder.
26
32
  */
27
- export declare function getTupleDecoder<T extends AnyArray>(items: WrapInDecoder<[...T]>, config?: TupleCodecConfig): Decoder<T>;
33
+ export declare function getTupleDecoder<TTo extends AnyArray>(items: WrapInFixedSizeDecoder<[...TTo]>): FixedSizeDecoder<TTo>;
34
+ export declare function getTupleDecoder<TTo extends AnyArray>(items: WrapInDecoder<[...TTo]>): VariableSizeDecoder<TTo>;
28
35
  /**
29
36
  * Creates a codec for a tuple-like array.
30
37
  *
31
38
  * @param items - The codecs to use for each item in the tuple.
32
- * @param config - A set of config for the codec.
33
39
  */
34
- export declare function getTupleCodec<T extends AnyArray, U extends T = T>(items: WrapInCodec<[...T], [...U]>, config?: TupleCodecConfig): Codec<T, U>;
40
+ export declare function getTupleCodec<TFrom extends AnyArray, TTo extends TFrom = TFrom>(items: WrapInFixedSizeCodec<[...TFrom], [...TTo]>): FixedSizeCodec<TFrom, TTo>;
41
+ export declare function getTupleCodec<TFrom extends AnyArray, TTo extends TFrom = TFrom>(items: WrapInCodec<[...TFrom], [...TTo]>): VariableSizeCodec<TFrom, TTo>;
35
42
  export {};
36
43
  //# sourceMappingURL=tuple.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../src/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAA2B,OAAO,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAKpH,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAE/C,KAAK,aAAa,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC;AACF,KAAK,aAAa,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC;AACF,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;KAClC,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC;AAGF,KAAK,QAAQ,GAAG,GAAG,EAAE,CAAC;AAYtB;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,QAAQ,EAC9C,KAAK,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC5B,MAAM,GAAE,gBAAqB,GAC9B,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,QAAQ,EAC9C,KAAK,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC5B,MAAM,GAAE,gBAAqB,GAC9B,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAC7D,KAAK,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAClC,MAAM,GAAE,gBAAqB,GAC9B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAKb"}
1
+ {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../src/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAIL,OAAO,EACP,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAEhB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,qBAAqB,CAAC;AAK7B,KAAK,sBAAsB,CAAC,KAAK,IAAI;KAChC,CAAC,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACjD,CAAC;AACF,KAAK,aAAa,CAAC,KAAK,IAAI;KACvB,CAAC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACxC,CAAC;AACF,KAAK,sBAAsB,CAAC,GAAG,IAAI;KAC9B,CAAC,IAAI,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC;AACF,KAAK,aAAa,CAAC,GAAG,IAAI;KACrB,CAAC,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC;AACF,KAAK,WAAW,CAAC,KAAK,EAAE,GAAG,SAAS,KAAK,IAAI;KACxC,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAC;AACF,KAAK,oBAAoB,CAAC,KAAK,EAAE,GAAG,SAAS,KAAK,IAAI;KACjD,CAAC,IAAI,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC;AAGF,KAAK,QAAQ,GAAG,GAAG,EAAE,CAAC;AAEtB;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,SAAS,QAAQ,EAClD,KAAK,EAAE,sBAAsB,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAC1C,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC3B,wBAAgB,eAAe,CAAC,KAAK,SAAS,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAuBtH;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACtH,wBAAgB,eAAe,CAAC,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAmBhH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,SAAS,QAAQ,EAAE,GAAG,SAAS,KAAK,GAAG,KAAK,EAC3E,KAAK,EAAE,oBAAoB,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAClD,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B,wBAAgB,aAAa,CAAC,KAAK,SAAS,QAAQ,EAAE,GAAG,SAAS,KAAK,GAAG,KAAK,EAC3E,KAAK,EAAE,WAAW,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GACzC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC"}