|
| 1 | +import { PlutusData } from "."; |
| 2 | + |
1 | 3 | /** |
2 | 4 | * The Plutus Data constructor object, representing custom data type in JSON |
3 | 5 | */ |
4 | | -export type ConStr<N = 0, T = any> = { constructor: N; fields: T }; |
5 | | - |
| 6 | +export interface ConStr<N = number, T extends PlutusData[] = PlutusData[]> { |
| 7 | + constructor: N; |
| 8 | + fields: T; |
| 9 | +} |
6 | 10 | /** |
7 | 11 | * The Plutus Data index 0 constructor object, representing custom data type in JSON |
8 | 12 | */ |
9 | | -export type ConStr0<T = any> = ConStr<0, T>; |
| 13 | +export interface ConStr0<T extends PlutusData[] = PlutusData[]> extends ConStr< |
| 14 | + 0, |
| 15 | + T |
| 16 | +> {} |
10 | 17 |
|
11 | 18 | /** |
12 | 19 | * The Plutus Data index 1 constructor object, representing custom data type in JSON |
13 | 20 | */ |
14 | | -export type ConStr1<T = any> = ConStr<1, T>; |
| 21 | +export interface ConStr1<T extends PlutusData[] = PlutusData[]> extends ConStr< |
| 22 | + 1, |
| 23 | + T |
| 24 | +> {} |
15 | 25 |
|
16 | 26 | /** |
17 | 27 | * The Plutus Data index 2 constructor object, representing custom data type in JSON |
18 | 28 | */ |
19 | | -export type ConStr2<T = any> = ConStr<2, T>; |
| 29 | +export interface ConStr2<T extends PlutusData[] = PlutusData[]> extends ConStr< |
| 30 | + 2, |
| 31 | + T |
| 32 | +> {} |
20 | 33 |
|
21 | 34 | /** |
22 | 35 | * The Plutus Data index 3 constructor object, representing custom data type in JSON |
23 | 36 | */ |
24 | | -export type ConStr3<T = any> = ConStr<3, T>; |
| 37 | +export interface ConStr3<T extends PlutusData[] = PlutusData[]> extends ConStr< |
| 38 | + 3, |
| 39 | + T |
| 40 | +> {} |
25 | 41 |
|
26 | 42 | /** |
27 | 43 | * The utility function to create a Plutus Data constructor object, representing custom data type in JSON |
28 | 44 | * @param constructor The constructor index number |
29 | 45 | * @param fields The items in array |
30 | 46 | * @returns The Plutus Data constructor object |
31 | 47 | */ |
32 | | -export const conStr = <N extends number, T>( |
| 48 | +export const conStr = <N extends number, T extends PlutusData[]>( |
33 | 49 | constructor: N, |
34 | 50 | fields: T, |
35 | 51 | ): ConStr<N, T> => { |
36 | 52 | if (!Array.isArray(fields)) { |
37 | 53 | throw new Error("fields of a constructor must be an array"); |
38 | 54 | } |
39 | | - return { |
40 | | - constructor, |
41 | | - fields, |
42 | | - }; |
| 55 | + return { constructor, fields }; |
43 | 56 | }; |
44 | 57 |
|
45 | 58 | /** |
46 | 59 | * The utility function to create a Plutus Data index 0 constructor object, representing custom data type in JSON |
47 | 60 | * @param fields The items of in array |
48 | 61 | * @returns The Plutus Data constructor object |
49 | 62 | */ |
50 | | -export const conStr0 = <T>(fields: T): ConStr0<T> => conStr<0, T>(0, fields); |
| 63 | +export const conStr0 = <T extends PlutusData[]>(fields: T): ConStr0<T> => |
| 64 | + conStr<0, T>(0, fields); |
51 | 65 |
|
52 | 66 | /** |
53 | 67 | * The utility function to create a Plutus Data index 1 constructor object, representing custom data type in JSON |
54 | 68 | * @param fields The items of in array |
55 | 69 | * @returns The Plutus Data constructor object |
56 | 70 | */ |
57 | | -export const conStr1 = <T>(fields: T): ConStr1<T> => conStr<1, T>(1, fields); |
| 71 | +export const conStr1 = <T extends PlutusData[]>(fields: T): ConStr1<T> => |
| 72 | + conStr<1, T>(1, fields); |
58 | 73 |
|
59 | 74 | /** |
60 | 75 | * The utility function to create a Plutus Data index 2 constructor object, representing custom data type in JSON |
61 | 76 | * @param fields The items of in array |
62 | 77 | * @returns The Plutus Data constructor object |
63 | 78 | */ |
64 | | -export const conStr2 = <T>(fields: T): ConStr2<T> => conStr<2, T>(2, fields); |
| 79 | +export const conStr2 = <T extends PlutusData[]>(fields: T): ConStr2<T> => |
| 80 | + conStr<2, T>(2, fields); |
65 | 81 |
|
66 | 82 | /** |
67 | 83 | * The utility function to create a Plutus Data index 3 constructor object, representing custom data type in JSON |
68 | 84 | * @param fields The items of in array |
69 | 85 | * @returns The Plutus Data constructor object |
70 | 86 | */ |
71 | | -export const conStr3 = <T>(fields: T): ConStr3<T> => conStr<3, T>(3, fields); |
| 87 | +export const conStr3 = <T extends PlutusData[]>(fields: T): ConStr3<T> => |
| 88 | + conStr<3, T>(3, fields); |
0 commit comments