@nomicfoundation/hardhat-viem 1.0.0

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 (50) hide show
  1. package/.eslintrc.js +24 -0
  2. package/LICENSE +21 -0
  3. package/README.md +237 -0
  4. package/index.d.ts +3 -0
  5. package/index.d.ts.map +1 -0
  6. package/index.js +20 -0
  7. package/index.js.map +1 -0
  8. package/internal/accounts.d.ts +5 -0
  9. package/internal/accounts.d.ts.map +1 -0
  10. package/internal/accounts.js +9 -0
  11. package/internal/accounts.js.map +1 -0
  12. package/internal/chains.d.ts +7 -0
  13. package/internal/chains.d.ts.map +1 -0
  14. package/internal/chains.js +74 -0
  15. package/internal/chains.js.map +1 -0
  16. package/internal/clients.d.ts +45 -0
  17. package/internal/clients.d.ts.map +1 -0
  18. package/internal/clients.js +127 -0
  19. package/internal/clients.js.map +1 -0
  20. package/internal/contracts.d.ts +11 -0
  21. package/internal/contracts.d.ts.map +1 -0
  22. package/internal/contracts.js +155 -0
  23. package/internal/contracts.js.map +1 -0
  24. package/internal/errors.d.ts +23 -0
  25. package/internal/errors.d.ts.map +1 -0
  26. package/internal/errors.js +70 -0
  27. package/internal/errors.js.map +1 -0
  28. package/internal/tasks.d.ts +2 -0
  29. package/internal/tasks.d.ts.map +1 -0
  30. package/internal/tasks.js +224 -0
  31. package/internal/tasks.js.map +1 -0
  32. package/internal/type-extensions.d.ts +26 -0
  33. package/internal/type-extensions.d.ts.map +1 -0
  34. package/internal/type-extensions.js +5 -0
  35. package/internal/type-extensions.js.map +1 -0
  36. package/package.json +75 -0
  37. package/src/index.ts +42 -0
  38. package/src/internal/accounts.ts +9 -0
  39. package/src/internal/chains.ts +91 -0
  40. package/src/internal/clients.ts +152 -0
  41. package/src/internal/contracts.ts +243 -0
  42. package/src/internal/errors.ts +76 -0
  43. package/src/internal/tasks.ts +319 -0
  44. package/src/internal/type-extensions.ts +54 -0
  45. package/src/tsconfig.json +15 -0
  46. package/src/types.ts +77 -0
  47. package/types.d.ts +32 -0
  48. package/types.d.ts.map +1 -0
  49. package/types.js +3 -0
  50. package/types.js.map +1 -0
@@ -0,0 +1,319 @@
1
+ import type { Artifact, Artifacts } from "hardhat/types";
2
+ import type { ArtifactsEmittedPerFile } from "hardhat/types/builtin-tasks";
3
+
4
+ import { join, dirname, relative } from "path";
5
+ import { mkdir, writeFile, rm } from "fs/promises";
6
+
7
+ import { subtask } from "hardhat/config";
8
+ import {
9
+ TASK_COMPILE_SOLIDITY_EMIT_ARTIFACTS,
10
+ TASK_COMPILE_SOLIDITY,
11
+ TASK_COMPILE_REMOVE_OBSOLETE_ARTIFACTS,
12
+ } from "hardhat/builtin-tasks/task-names";
13
+ import {
14
+ getFullyQualifiedName,
15
+ parseFullyQualifiedName,
16
+ } from "hardhat/utils/contract-names";
17
+ import { getAllFilesMatching } from "hardhat/internal/util/fs-utils";
18
+ import { replaceBackslashes } from "hardhat/utils/source-names";
19
+
20
+ interface EmittedArtifacts {
21
+ artifactsEmittedPerFile: ArtifactsEmittedPerFile;
22
+ }
23
+
24
+ /**
25
+ * Override task that generates an `artifacts.d.ts` file with `never`
26
+ * types for duplicate contract names. This file is used in conjunction with
27
+ * the `artifacts.d.ts` file inside each contract directory to type
28
+ * `hre.artifacts`.
29
+ */
30
+ subtask(TASK_COMPILE_SOLIDITY).setAction(
31
+ async (_, { config, artifacts }, runSuper) => {
32
+ const superRes = await runSuper();
33
+
34
+ const duplicateContractNames = await findDuplicateContractNames(artifacts);
35
+
36
+ const duplicateArtifactsDTs = generateDuplicateArtifactsDefinition(
37
+ duplicateContractNames
38
+ );
39
+
40
+ try {
41
+ await writeFile(
42
+ join(config.paths.artifacts, "artifacts.d.ts"),
43
+ duplicateArtifactsDTs
44
+ );
45
+ } catch (error) {
46
+ console.error("Error writing artifacts definition:", error);
47
+ }
48
+
49
+ return superRes;
50
+ }
51
+ );
52
+
53
+ /**
54
+ * Override task to emit TypeScript and definition files for each contract.
55
+ * Generates a `.d.ts` file per contract, and a `artifacts.d.ts` per solidity
56
+ * file, which is used in conjunction to the root `artifacts.d.ts`
57
+ * to type `hre.artifacts`.
58
+ */
59
+ subtask(TASK_COMPILE_SOLIDITY_EMIT_ARTIFACTS).setAction(
60
+ async (_, { artifacts, config }, runSuper): Promise<EmittedArtifacts> => {
61
+ const { artifactsEmittedPerFile }: EmittedArtifacts = await runSuper();
62
+ const duplicateContractNames = await findDuplicateContractNames(artifacts);
63
+
64
+ await Promise.all(
65
+ artifactsEmittedPerFile.map(async ({ file, artifactsEmitted }) => {
66
+ const srcDir = join(config.paths.artifacts, file.sourceName);
67
+ await mkdir(srcDir, {
68
+ recursive: true,
69
+ });
70
+
71
+ const contractTypeData = await Promise.all(
72
+ artifactsEmitted.map(async (contractName) => {
73
+ const fqn = getFullyQualifiedName(file.sourceName, contractName);
74
+ const artifact = await artifacts.readArtifact(fqn);
75
+ const isDuplicate = duplicateContractNames.has(contractName);
76
+ const declaration = generateContractDeclaration(
77
+ artifact,
78
+ isDuplicate
79
+ );
80
+
81
+ const typeName = `${contractName}$Type`;
82
+
83
+ return { contractName, fqn, typeName, declaration };
84
+ })
85
+ );
86
+
87
+ const fp: Array<Promise<void>> = [];
88
+ for (const { contractName, declaration } of contractTypeData) {
89
+ fp.push(writeFile(join(srcDir, `${contractName}.d.ts`), declaration));
90
+ }
91
+
92
+ const dTs = generateArtifactsDefinition(contractTypeData);
93
+ fp.push(writeFile(join(srcDir, "artifacts.d.ts"), dTs));
94
+
95
+ try {
96
+ await Promise.all(fp);
97
+ } catch (error) {
98
+ console.error("Error writing artifacts definition:", error);
99
+ }
100
+ })
101
+ );
102
+
103
+ return { artifactsEmittedPerFile };
104
+ }
105
+ );
106
+
107
+ /**
108
+ * Override task for cleaning up outdated artifacts.
109
+ * Deletes directories with stale `artifacts.d.ts` files that no longer have
110
+ * a matching `.sol` file.
111
+ */
112
+ subtask(TASK_COMPILE_REMOVE_OBSOLETE_ARTIFACTS).setAction(
113
+ async (_, { config, artifacts }, runSuper) => {
114
+ const superRes = await runSuper();
115
+
116
+ const fqns = await artifacts.getAllFullyQualifiedNames();
117
+ const existingSourceNames = new Set(
118
+ fqns.map((fqn) => parseFullyQualifiedName(fqn).sourceName)
119
+ );
120
+ const allArtifactsDTs = await getAllFilesMatching(
121
+ config.paths.artifacts,
122
+ (f) => f.endsWith("artifacts.d.ts")
123
+ );
124
+
125
+ for (const artifactDTs of allArtifactsDTs) {
126
+ const dir = dirname(artifactDTs);
127
+ const sourceName = replaceBackslashes(
128
+ relative(config.paths.artifacts, dir)
129
+ );
130
+ // If sourceName is empty, it means that the artifacts.d.ts file is in the
131
+ // root of the artifacts directory, and we shouldn't delete it.
132
+ if (sourceName === "") {
133
+ continue;
134
+ }
135
+
136
+ if (!existingSourceNames.has(sourceName)) {
137
+ await rm(dir, { force: true, recursive: true });
138
+ }
139
+ }
140
+
141
+ return superRes;
142
+ }
143
+ );
144
+
145
+ const AUTOGENERATED_FILE_PREFACE = `// This file was autogenerated by hardhat-viem, do not edit it.
146
+ // prettier-ignore
147
+ // tslint:disable
148
+ // eslint-disable`;
149
+
150
+ /**
151
+ * Generates TypeScript code that extends the `ArtifactsMap` with `never` types
152
+ * for duplicate contract names.
153
+ */
154
+ function generateDuplicateArtifactsDefinition(
155
+ duplicateContractNames: Set<string>
156
+ ) {
157
+ return `${AUTOGENERATED_FILE_PREFACE}
158
+
159
+ import "hardhat/types/artifacts";
160
+
161
+ declare module "hardhat/types/artifacts" {
162
+ interface ArtifactsMap {
163
+ ${Array.from(duplicateContractNames)
164
+ .map((name) => `${name}: never;`)
165
+ .join("\n ")}
166
+ }
167
+ }
168
+ `;
169
+ }
170
+
171
+ /**
172
+ * Generates TypeScript code to declare a contract and its associated
173
+ * TypeScript types.
174
+ */
175
+ function generateContractDeclaration(artifact: Artifact, isDuplicate: boolean) {
176
+ const { contractName, sourceName } = artifact;
177
+ const fqn = getFullyQualifiedName(sourceName, contractName);
178
+ const validNames = isDuplicate ? [fqn] : [contractName, fqn];
179
+ const json = JSON.stringify(artifact, undefined, 2);
180
+ const contractTypeName = `${contractName}$Type`;
181
+
182
+ const constructorAbi = artifact.abi.find(
183
+ ({ type }) => type === "constructor"
184
+ );
185
+
186
+ const inputs: Array<{
187
+ internalType: string;
188
+ name: string;
189
+ type: string;
190
+ }> = constructorAbi !== undefined ? constructorAbi.inputs : [];
191
+
192
+ const constructorArgs =
193
+ inputs.length > 0
194
+ ? `constructorArgs: [${inputs
195
+ .map(({ name, type }) => getArgType(name, type))
196
+ .join(", ")}]`
197
+ : `constructorArgs?: []`;
198
+
199
+ return `${AUTOGENERATED_FILE_PREFACE}
200
+
201
+ import type { Address } from "viem";
202
+ ${
203
+ inputs.length > 0
204
+ ? `import type { AbiParameterToPrimitiveType, GetContractReturnType } from "@nomicfoundation/hardhat-viem/types";`
205
+ : `import type { GetContractReturnType } from "@nomicfoundation/hardhat-viem/types";`
206
+ }
207
+ import "@nomicfoundation/hardhat-viem/types";
208
+
209
+ export interface ${contractTypeName} ${json}
210
+
211
+ declare module "@nomicfoundation/hardhat-viem/types" {
212
+ ${validNames
213
+ .map(
214
+ (name) => `export function deployContract(
215
+ contractName: "${name}",
216
+ ${constructorArgs},
217
+ config?: DeployContractConfig
218
+ ): Promise<GetContractReturnType<${contractTypeName}["abi"]>>;`
219
+ )
220
+ .join("\n ")}
221
+
222
+ ${validNames
223
+ .map(
224
+ (name) => `export function sendDeploymentTransaction(
225
+ contractName: "${name}",
226
+ ${constructorArgs},
227
+ config?: SendDeploymentTransactionConfig
228
+ ): Promise<{
229
+ contract: GetContractReturnType<${contractTypeName}["abi"]>;
230
+ deploymentTransaction: GetTransactionReturnType;
231
+ }>;`
232
+ )
233
+ .join("\n ")}
234
+
235
+ ${validNames
236
+ .map(
237
+ (name) => `export function getContractAt(
238
+ contractName: "${name}",
239
+ address: Address,
240
+ config?: GetContractAtConfig
241
+ ): Promise<GetContractReturnType<${contractTypeName}["abi"]>>;`
242
+ )
243
+ .join("\n ")}
244
+ }
245
+ `;
246
+ }
247
+
248
+ /**
249
+ * Generates TypeScript code to extend the `ArtifactsMap` interface with
250
+ * contract types.
251
+ */
252
+ function generateArtifactsDefinition(
253
+ contractTypeData: Array<{
254
+ contractName: string;
255
+ fqn: string;
256
+ typeName: string;
257
+ declaration: string;
258
+ }>
259
+ ) {
260
+ return `${AUTOGENERATED_FILE_PREFACE}
261
+
262
+ import "hardhat/types/artifacts";
263
+
264
+ ${contractTypeData
265
+ .map((ctd) => `import { ${ctd.typeName} } from "./${ctd.contractName}";`)
266
+ .join("\n")}
267
+
268
+ declare module "hardhat/types/artifacts" {
269
+ interface ArtifactsMap {
270
+ ${contractTypeData
271
+ .map((ctd) => `["${ctd.contractName}"]: ${ctd.typeName};`)
272
+ .join("\n ")}
273
+ ${contractTypeData
274
+ .map((ctd) => `["${ctd.fqn}"]: ${ctd.typeName};`)
275
+ .join("\n ")}
276
+ }
277
+ }
278
+ `;
279
+ }
280
+
281
+ /**
282
+ * Returns the type of a function argument in one of the following formats:
283
+ * - If the 'name' is provided:
284
+ * "name: AbiParameterToPrimitiveType<{ name: string; type: string; }>"
285
+ *
286
+ * - If the 'name' is empty:
287
+ * "AbiParameterToPrimitiveType<{ name: string; type: string; }>"
288
+ */
289
+ function getArgType(name: string | undefined, type: string) {
290
+ const argType = `AbiParameterToPrimitiveType<${JSON.stringify({
291
+ name,
292
+ type,
293
+ })}>`;
294
+
295
+ return name !== "" && name !== undefined ? `${name}: ${argType}` : argType;
296
+ }
297
+
298
+ /**
299
+ * Returns a set of duplicate contract names.
300
+ */
301
+ async function findDuplicateContractNames(artifacts: Artifacts) {
302
+ const fqns = await artifacts.getAllFullyQualifiedNames();
303
+ const contractNames = fqns.map(
304
+ (fqn) => parseFullyQualifiedName(fqn).contractName
305
+ );
306
+
307
+ const duplicates = new Set<string>();
308
+ const existing = new Set<string>();
309
+
310
+ for (const name of contractNames) {
311
+ if (existing.has(name)) {
312
+ duplicates.add(name);
313
+ }
314
+
315
+ existing.add(name);
316
+ }
317
+
318
+ return duplicates;
319
+ }
@@ -0,0 +1,54 @@
1
+ import type {
2
+ Address,
3
+ PublicClientConfig,
4
+ WalletClientConfig,
5
+ TestClientConfig,
6
+ } from "viem";
7
+ import type {
8
+ PublicClient,
9
+ TestClient,
10
+ WalletClient,
11
+ deployContract,
12
+ sendDeploymentTransaction,
13
+ getContractAt,
14
+ } from "../types";
15
+ import "hardhat/types/runtime";
16
+ import "hardhat/types/artifacts";
17
+
18
+ declare module "hardhat/types/runtime" {
19
+ interface HardhatRuntimeEnvironment {
20
+ viem: {
21
+ getPublicClient(
22
+ publicClientConfig?: Partial<PublicClientConfig>
23
+ ): Promise<PublicClient>;
24
+ getWalletClients(
25
+ walletClientConfig?: Partial<WalletClientConfig>
26
+ ): Promise<WalletClient[]>;
27
+ getWalletClient(
28
+ address: Address,
29
+ walletClientConfig?: Partial<WalletClientConfig>
30
+ ): Promise<WalletClient>;
31
+ getTestClient(
32
+ testClientConfig?: Partial<TestClientConfig>
33
+ ): Promise<TestClient>;
34
+ deployContract: typeof deployContract;
35
+ sendDeploymentTransaction: typeof sendDeploymentTransaction;
36
+ getContractAt: typeof getContractAt;
37
+ };
38
+ }
39
+ }
40
+
41
+ declare module "hardhat/types/artifacts" {
42
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
43
+ interface ArtifactsMap {}
44
+
45
+ interface Artifacts {
46
+ readArtifact<ArgT extends keyof ArtifactsMap>(
47
+ contractNameOrFullyQualifiedName: ArgT
48
+ ): Promise<ArtifactsMap[ArgT]>;
49
+
50
+ readArtifactSync<ArgT extends keyof ArtifactsMap>(
51
+ contractNameOrFullyQualifiedName: ArgT
52
+ ): ArtifactsMap[ArgT];
53
+ }
54
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "extends": "../../../config/typescript/tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../",
5
+ "rootDirs": ["."],
6
+ "composite": true
7
+ },
8
+ "include": ["./**/*.ts"],
9
+ "exclude": [],
10
+ "references": [
11
+ {
12
+ "path": "../../hardhat-core/src"
13
+ }
14
+ ]
15
+ }
package/src/types.ts ADDED
@@ -0,0 +1,77 @@
1
+ import type * as viemT from "viem";
2
+ import type { ArtifactsMap } from "hardhat/types/artifacts";
3
+
4
+ export type PublicClient = viemT.PublicClient<viemT.Transport, viemT.Chain>;
5
+ export type WalletClient = viemT.WalletClient<
6
+ viemT.Transport,
7
+ viemT.Chain,
8
+ viemT.Account
9
+ >;
10
+ export type TestClient = viemT.TestClient<
11
+ TestClientMode,
12
+ viemT.Transport,
13
+ viemT.Chain
14
+ >;
15
+
16
+ export type TestClientMode = Parameters<
17
+ typeof viemT.createTestClient
18
+ >[0]["mode"];
19
+
20
+ export interface SendTransactionConfig {
21
+ walletClient?: WalletClient;
22
+ gas?: bigint;
23
+ gasPrice?: bigint;
24
+ maxFeePerGas?: bigint;
25
+ maxPriorityFeePerGas?: bigint;
26
+ value?: bigint;
27
+ }
28
+
29
+ export interface DeployContractConfig extends SendTransactionConfig {
30
+ confirmations?: number;
31
+ }
32
+
33
+ export type SendDeploymentTransactionConfig = SendTransactionConfig;
34
+
35
+ export interface GetContractAtConfig {
36
+ walletClient?: WalletClient;
37
+ }
38
+
39
+ export type GetContractReturnType<
40
+ TAbi extends viemT.Abi | readonly unknown[] = viemT.Abi
41
+ > = viemT.GetContractReturnType<
42
+ TAbi,
43
+ PublicClient,
44
+ WalletClient,
45
+ viemT.Address
46
+ >;
47
+
48
+ export type GetTransactionReturnType = viemT.GetTransactionReturnType<
49
+ viemT.Chain,
50
+ "latest"
51
+ >;
52
+
53
+ export type ContractName<StringT extends string> =
54
+ StringT extends keyof ArtifactsMap ? never : StringT;
55
+
56
+ export declare function deployContract<CN extends string>(
57
+ contractName: ContractName<CN>,
58
+ constructorArgs?: any[],
59
+ config?: DeployContractConfig
60
+ ): Promise<GetContractReturnType>;
61
+
62
+ export declare function sendDeploymentTransaction<CN extends string>(
63
+ contractName: ContractName<CN>,
64
+ constructorArgs?: any[],
65
+ config?: SendDeploymentTransactionConfig
66
+ ): Promise<{
67
+ contract: GetContractReturnType;
68
+ deploymentTransaction: GetTransactionReturnType;
69
+ }>;
70
+
71
+ export declare function getContractAt<CN extends string>(
72
+ contractName: ContractName<CN>,
73
+ address: viemT.Address,
74
+ config?: GetContractAtConfig
75
+ ): Promise<GetContractReturnType>;
76
+
77
+ export type { AbiParameterToPrimitiveType } from "abitype";
package/types.d.ts ADDED
@@ -0,0 +1,32 @@
1
+ import type * as viemT from "viem";
2
+ import type { ArtifactsMap } from "hardhat/types/artifacts";
3
+ export type PublicClient = viemT.PublicClient<viemT.Transport, viemT.Chain>;
4
+ export type WalletClient = viemT.WalletClient<viemT.Transport, viemT.Chain, viemT.Account>;
5
+ export type TestClient = viemT.TestClient<TestClientMode, viemT.Transport, viemT.Chain>;
6
+ export type TestClientMode = Parameters<typeof viemT.createTestClient>[0]["mode"];
7
+ export interface SendTransactionConfig {
8
+ walletClient?: WalletClient;
9
+ gas?: bigint;
10
+ gasPrice?: bigint;
11
+ maxFeePerGas?: bigint;
12
+ maxPriorityFeePerGas?: bigint;
13
+ value?: bigint;
14
+ }
15
+ export interface DeployContractConfig extends SendTransactionConfig {
16
+ confirmations?: number;
17
+ }
18
+ export type SendDeploymentTransactionConfig = SendTransactionConfig;
19
+ export interface GetContractAtConfig {
20
+ walletClient?: WalletClient;
21
+ }
22
+ export type GetContractReturnType<TAbi extends viemT.Abi | readonly unknown[] = viemT.Abi> = viemT.GetContractReturnType<TAbi, PublicClient, WalletClient, viemT.Address>;
23
+ export type GetTransactionReturnType = viemT.GetTransactionReturnType<viemT.Chain, "latest">;
24
+ export type ContractName<StringT extends string> = StringT extends keyof ArtifactsMap ? never : StringT;
25
+ export declare function deployContract<CN extends string>(contractName: ContractName<CN>, constructorArgs?: any[], config?: DeployContractConfig): Promise<GetContractReturnType>;
26
+ export declare function sendDeploymentTransaction<CN extends string>(contractName: ContractName<CN>, constructorArgs?: any[], config?: SendDeploymentTransactionConfig): Promise<{
27
+ contract: GetContractReturnType;
28
+ deploymentTransaction: GetTransactionReturnType;
29
+ }>;
30
+ export declare function getContractAt<CN extends string>(contractName: ContractName<CN>, address: viemT.Address, config?: GetContractAtConfig): Promise<GetContractReturnType>;
31
+ export type { AbiParameterToPrimitiveType } from "abitype";
32
+ //# sourceMappingURL=types.d.ts.map
package/types.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAC3C,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,CACd,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACvC,cAAc,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,KAAK,CACZ,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CACrC,OAAO,KAAK,CAAC,gBAAgB,CAC9B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEb,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,+BAA+B,GAAG,qBAAqB,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,MAAM,qBAAqB,CAC/B,IAAI,SAAS,KAAK,CAAC,GAAG,GAAG,SAAS,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,IACrD,KAAK,CAAC,qBAAqB,CAC7B,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,KAAK,CAAC,OAAO,CACd,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,CACnE,KAAK,CAAC,KAAK,EACX,QAAQ,CACT,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,MAAM,IAC7C,OAAO,SAAS,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,SAAS,MAAM,EACtD,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,EAC9B,eAAe,CAAC,EAAE,GAAG,EAAE,EACvB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAElC,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAAE,SAAS,MAAM,EACjE,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,EAC9B,eAAe,CAAC,EAAE,GAAG,EAAE,EACvB,MAAM,CAAC,EAAE,+BAA+B,GACvC,OAAO,CAAC;IACT,QAAQ,EAAE,qBAAqB,CAAC;IAChC,qBAAqB,EAAE,wBAAwB,CAAC;CACjD,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,SAAS,MAAM,EACrD,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,EAC9B,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAElC,YAAY,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC"}
package/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":""}