@rocketh/viem 0.17.4 → 0.17.6
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.
- package/README.md +6 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
- package/src/index.ts +94 -0
package/README.md
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
1
|
# @rocketh/viem
|
|
2
|
+
|
|
3
|
+
Viem integration for rocketh, providing viem clients and contract instances for interacting with deployed smart contracts using the viem library.
|
|
4
|
+
|
|
5
|
+
For full documentation, visit [rocketh.dev](https://rocketh.dev).
|
|
6
|
+
|
|
7
|
+
For hardhat-deploy documentation, see [rocketh.dev/hardhat-deploy/](https://rocketh.dev/hardhat-deploy/).
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,9 @@ export type ViemHandle = {
|
|
|
13
13
|
walletClient: WalletClient;
|
|
14
14
|
publicClient: PublicClient;
|
|
15
15
|
getContract<TAbi extends Abi>(name: string | Deployment<TAbi>): ViemContract<TAbi>;
|
|
16
|
-
getWritableContract<TAbi extends Abi>(name: string | Deployment<TAbi
|
|
16
|
+
getWritableContract<TAbi extends Abi>(name: string | Deployment<TAbi>, options?: {
|
|
17
|
+
account?: `0x${string}`;
|
|
18
|
+
}): ViemWritableContract<TAbi>;
|
|
17
19
|
};
|
|
18
20
|
export declare function viem(env: Environment): ViemHandle;
|
|
19
21
|
export {};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAIN,YAAY,EACZ,YAAY,EAEZ,OAAO,EACP,qBAAqB,EACrB,SAAS,EACT,KAAK,EACL,OAAO,EACP,MAAM,EACN,eAAe,EACf,MAAM,MAAM,CAAC;AAId,KAAK,WAAW,CACf,SAAS,SAAS,SAAS,GAAG,SAAS,IAGpC;IACH,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AAEF,KAAK,mBAAmB,CAAC,SAAS,SAAS,SAAS,GAAG,SAAS,IAAI;IACnE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,IAAI,SAAS,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AACxH,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AAExH,MAAM,MAAM,UAAU,GAAG;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,IAAI,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnF,mBAAmB,CAAC,IAAI,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAIN,YAAY,EACZ,YAAY,EAEZ,OAAO,EACP,qBAAqB,EACrB,SAAS,EACT,KAAK,EACL,OAAO,EACP,MAAM,EACN,eAAe,EACf,MAAM,MAAM,CAAC;AAId,KAAK,WAAW,CACf,SAAS,SAAS,SAAS,GAAG,SAAS,IAGpC;IACH,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AAEF,KAAK,mBAAmB,CAAC,SAAS,SAAS,SAAS,GAAG,SAAS,IAAI;IACnE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,IAAI,SAAS,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AACxH,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AAExH,MAAM,MAAM,UAAU,GAAG;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,IAAI,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnF,mBAAmB,CAAC,IAAI,SAAS,GAAG,EACnC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,EAC/B,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;KACxB,GACC,oBAAoB,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,wBAAgB,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,CA6CjD"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAC;AAEhC,OAAO,EACN,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EAGN,WAAW,IAAI,eAAe,GAQ9B,MAAM,MAAM,CAAC;AAEd,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAC;AAEhC,OAAO,EACN,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EAGN,WAAW,IAAI,eAAe,GAQ9B,MAAM,MAAM,CAAC;AAEd,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AA8BrC,MAAM,UAAU,IAAI,CAAC,GAAgB;IACpC,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACvC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;QACxB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACvC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;QACxB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvC,CAAC,CAAC;IAEH,OAAO;QACN,YAAY;QACZ,YAAY;QACZ,mBAAmB,CAClB,IAA+B,EAC/B,OAEC;YAED,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzE,IAAI,oBAAoB,GAA4B,YAAY,CAAC;YACjE,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;gBACtB,oBAAoB,GAAG,kBAAkB,CAAC;oBACzC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;oBACxB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACvC,OAAO,EAAE,OAAO,CAAC,OAAO;iBACxB,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,eAAe,CAAC;gBAChC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,GAAG,EAAE,UAAU,CAAC,GAAG;gBACnB,MAAM,EAAE,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAC;aAC5D,CAA+B,CAAC;YACjC,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,WAAW,CAAmB,IAA+B;YAC5D,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzE,OAAO,eAAe,CAAC;gBACtB,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,GAAG,EAAE,UAAU,CAAC,GAAG;gBACnB,MAAM,EAAE,EAAC,MAAM,EAAE,YAAY,EAAC;aAC9B,CAAuB,CAAC;QAC1B,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rocketh/viem",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.6",
|
|
4
4
|
"description": "provide viem functionality for rocketh",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -18,19 +18,20 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
|
-
"dist"
|
|
21
|
+
"dist",
|
|
22
|
+
"src"
|
|
22
23
|
],
|
|
23
24
|
"dependencies": {
|
|
24
25
|
"abitype": "^1.2.3",
|
|
25
26
|
"eip-1193": "^0.6.5",
|
|
26
27
|
"named-logs": "^0.4.1",
|
|
27
|
-
"@rocketh/core": "0.17.
|
|
28
|
+
"@rocketh/core": "0.17.9"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
|
30
|
-
"as-soon": "^0.
|
|
31
|
+
"as-soon": "^0.1.4",
|
|
31
32
|
"rimraf": "^6.1.2",
|
|
32
33
|
"typescript": "^5.9.3",
|
|
33
|
-
"viem": "^2.44.
|
|
34
|
+
"viem": "^2.44.4"
|
|
34
35
|
},
|
|
35
36
|
"peerDependencies": {
|
|
36
37
|
"viem": "^2.41.2"
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import {logs} from 'named-logs';
|
|
2
|
+
import type {Abi, Deployment, Environment} from '@rocketh/core/types';
|
|
3
|
+
import {
|
|
4
|
+
createPublicClient,
|
|
5
|
+
createWalletClient,
|
|
6
|
+
custom,
|
|
7
|
+
PublicClient,
|
|
8
|
+
WalletClient,
|
|
9
|
+
getContract as getViemContract,
|
|
10
|
+
Address,
|
|
11
|
+
GetContractReturnType,
|
|
12
|
+
Transport,
|
|
13
|
+
Chain,
|
|
14
|
+
Account,
|
|
15
|
+
Client,
|
|
16
|
+
CustomTransport,
|
|
17
|
+
} from 'viem';
|
|
18
|
+
|
|
19
|
+
const logger = logs('@rocketh/viem');
|
|
20
|
+
|
|
21
|
+
type KeyedClient<
|
|
22
|
+
transport extends Transport = Transport,
|
|
23
|
+
// chain extends Chain | undefined = Chain | undefined,
|
|
24
|
+
// account extends Account | undefined = Account | undefined
|
|
25
|
+
> = {
|
|
26
|
+
public: Client<transport, Chain>;
|
|
27
|
+
wallet: Client<transport, Chain, Account>;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
type ReadonlyKeyedClient<transport extends Transport = Transport> = {
|
|
31
|
+
public: Client<transport, Chain>;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type ViemWritableContract<TAbi extends Abi> = GetContractReturnType<TAbi, KeyedClient<CustomTransport>, Address>;
|
|
35
|
+
export type ViemContract<TAbi extends Abi> = GetContractReturnType<TAbi, ReadonlyKeyedClient<CustomTransport>, Address>;
|
|
36
|
+
|
|
37
|
+
export type ViemHandle = {
|
|
38
|
+
walletClient: WalletClient;
|
|
39
|
+
publicClient: PublicClient;
|
|
40
|
+
getContract<TAbi extends Abi>(name: string | Deployment<TAbi>): ViemContract<TAbi>;
|
|
41
|
+
getWritableContract<TAbi extends Abi>(
|
|
42
|
+
name: string | Deployment<TAbi>,
|
|
43
|
+
options?: {
|
|
44
|
+
account?: `0x${string}`;
|
|
45
|
+
},
|
|
46
|
+
): ViemWritableContract<TAbi>;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export function viem(env: Environment): ViemHandle {
|
|
50
|
+
const walletClient = createWalletClient({
|
|
51
|
+
chain: env.network.chain,
|
|
52
|
+
transport: custom(env.network.provider),
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const publicClient = createPublicClient({
|
|
56
|
+
chain: env.network.chain,
|
|
57
|
+
transport: custom(env.network.provider),
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
walletClient,
|
|
62
|
+
publicClient,
|
|
63
|
+
getWritableContract<TAbi extends Abi>(
|
|
64
|
+
name: string | Deployment<TAbi>,
|
|
65
|
+
options?: {
|
|
66
|
+
account?: `0x${string}`;
|
|
67
|
+
},
|
|
68
|
+
) {
|
|
69
|
+
const deployment = typeof name === 'string' ? env.get<TAbi>(name) : name;
|
|
70
|
+
let contractWalletClient: WalletClient<Transport> = walletClient;
|
|
71
|
+
if (options?.account) {
|
|
72
|
+
contractWalletClient = createWalletClient({
|
|
73
|
+
chain: env.network.chain,
|
|
74
|
+
transport: custom(env.network.provider),
|
|
75
|
+
account: options.account,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const contract = getViemContract({
|
|
79
|
+
address: deployment.address,
|
|
80
|
+
abi: deployment.abi,
|
|
81
|
+
client: {public: publicClient, wallet: contractWalletClient},
|
|
82
|
+
}) as ViemWritableContract<TAbi>;
|
|
83
|
+
return contract;
|
|
84
|
+
},
|
|
85
|
+
getContract<TAbi extends Abi>(name: string | Deployment<TAbi>) {
|
|
86
|
+
const deployment = typeof name === 'string' ? env.get<TAbi>(name) : name;
|
|
87
|
+
return getViemContract({
|
|
88
|
+
address: deployment.address,
|
|
89
|
+
abi: deployment.abi,
|
|
90
|
+
client: {public: publicClient},
|
|
91
|
+
}) as ViemContract<TAbi>;
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|