viem 1.2.9 → 1.2.11
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/dist/cjs/accounts/utils/signTransaction.js.map +1 -1
- package/dist/cjs/chains/formatters/celo.js +2 -2
- package/dist/cjs/chains/formatters/celo.js.map +1 -1
- package/dist/cjs/chains/formatters/optimism.js +2 -2
- package/dist/cjs/chains/formatters/optimism.js.map +1 -1
- package/dist/cjs/chains/index.js +8 -8
- package/dist/cjs/chains/serializers/celo.js +12 -13
- package/dist/cjs/chains/serializers/celo.js.map +1 -1
- package/dist/cjs/clients/createClient.js +19 -12
- package/dist/cjs/clients/createClient.js.map +1 -1
- package/dist/cjs/clients/createPublicClient.js +6 -7
- package/dist/cjs/clients/createPublicClient.js.map +1 -1
- package/dist/cjs/clients/createTestClient.js +9 -9
- package/dist/cjs/clients/createTestClient.js.map +1 -1
- package/dist/cjs/clients/createWalletClient.js +6 -6
- package/dist/cjs/clients/createWalletClient.js.map +1 -1
- package/dist/cjs/clients/decorators/public.js +44 -42
- package/dist/cjs/clients/decorators/public.js.map +1 -1
- package/dist/cjs/clients/decorators/wallet.js +17 -15
- package/dist/cjs/clients/decorators/wallet.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/errors/version.js.map +1 -1
- package/dist/cjs/utils/abi/encodePacked.js.map +1 -1
- package/dist/cjs/utils/ens/avatar/utils.js +2 -1
- package/dist/cjs/utils/ens/avatar/utils.js.map +1 -1
- package/dist/cjs/utils/formatters/extract.js +0 -1
- package/dist/cjs/utils/formatters/extract.js.map +1 -1
- package/dist/cjs/utils/transaction/prepareRequest.js +1 -1
- package/dist/cjs/utils/transaction/prepareRequest.js.map +1 -1
- package/dist/esm/accounts/utils/signTransaction.js.map +1 -1
- package/dist/esm/chains/formatters/celo.js +1 -1
- package/dist/esm/chains/formatters/celo.js.map +1 -1
- package/dist/esm/chains/formatters/optimism.js +1 -1
- package/dist/esm/chains/formatters/optimism.js.map +1 -1
- package/dist/esm/chains/index.js +11 -11
- package/dist/esm/chains/serializers/celo.js +13 -14
- package/dist/esm/chains/serializers/celo.js.map +1 -1
- package/dist/esm/clients/createClient.js +19 -15
- package/dist/esm/clients/createClient.js.map +1 -1
- package/dist/esm/clients/createPublicClient.js +6 -26
- package/dist/esm/clients/createPublicClient.js.map +1 -1
- package/dist/esm/clients/createTestClient.js +9 -32
- package/dist/esm/clients/createTestClient.js.map +1 -1
- package/dist/esm/clients/createWalletClient.js +6 -42
- package/dist/esm/clients/createWalletClient.js.map +1 -1
- package/dist/esm/clients/decorators/public.js +44 -42
- package/dist/esm/clients/decorators/public.js.map +1 -1
- package/dist/esm/clients/decorators/wallet.js +17 -15
- package/dist/esm/clients/decorators/wallet.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/errors/version.js.map +1 -1
- package/dist/esm/utils/abi/encodePacked.js.map +1 -1
- package/dist/esm/utils/ens/avatar/utils.js +3 -1
- package/dist/esm/utils/ens/avatar/utils.js.map +1 -1
- package/dist/esm/utils/formatters/extract.js +1 -1
- package/dist/esm/utils/formatters/extract.js.map +1 -1
- package/dist/esm/utils/transaction/prepareRequest.js +1 -1
- package/dist/esm/utils/transaction/prepareRequest.js.map +1 -1
- package/dist/types/accounts/utils/signTransaction.d.ts +1 -1
- package/dist/types/accounts/utils/signTransaction.d.ts.map +1 -1
- package/dist/types/chains/formatters/celo.d.ts +2 -2
- package/dist/types/chains/formatters/celo.d.ts.map +1 -1
- package/dist/types/chains/formatters/optimism.d.ts +9 -9
- package/dist/types/chains/formatters/optimism.d.ts.map +1 -1
- package/dist/types/chains/serializers/celo.d.ts +3 -4
- package/dist/types/chains/serializers/celo.d.ts.map +1 -1
- package/dist/types/clients/createClient.d.ts +29 -32
- package/dist/types/clients/createClient.d.ts.map +1 -1
- package/dist/types/clients/createPublicClient.d.ts +3 -3
- package/dist/types/clients/createPublicClient.d.ts.map +1 -1
- package/dist/types/clients/createTestClient.d.ts +9 -7
- package/dist/types/clients/createTestClient.d.ts.map +1 -1
- package/dist/types/clients/createWalletClient.d.ts +3 -3
- package/dist/types/clients/createWalletClient.d.ts.map +1 -1
- package/dist/types/clients/decorators/public.d.ts +1 -519
- package/dist/types/clients/decorators/public.d.ts.map +1 -1
- package/dist/types/clients/decorators/wallet.d.ts +1 -519
- package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/errors/version.d.ts.map +1 -1
- package/dist/types/types/chain.d.ts +3 -4
- package/dist/types/types/chain.d.ts.map +1 -1
- package/dist/types/types/transaction.d.ts +1 -1
- package/dist/types/types/transaction.d.ts.map +1 -1
- package/dist/types/types/typedData.d.ts +6 -6
- package/dist/types/types/typedData.d.ts.map +1 -1
- package/dist/types/utils/ens/avatar/utils.d.ts +1 -1
- package/dist/types/utils/ens/avatar/utils.d.ts.map +1 -1
- package/dist/types/utils/formatters/extract.d.ts +1 -1
- package/dist/types/utils/formatters/extract.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/accounts/utils/signTransaction.ts +7 -2
- package/src/chains/formatters/celo.ts +8 -7
- package/src/chains/formatters/optimism.ts +14 -14
- package/src/chains/index.ts +11 -11
- package/src/chains/serializers/celo.ts +15 -19
- package/src/clients/createClient.ts +113 -89
- package/src/clients/createPublicClient.ts +26 -26
- package/src/clients/createTestClient.ts +41 -47
- package/src/clients/createWalletClient.ts +30 -33
- package/src/clients/decorators/public.ts +49 -44
- package/src/clients/decorators/wallet.ts +18 -16
- package/src/errors/version.ts +1 -1
- package/src/types/chain.ts +6 -7
- package/src/types/transaction.ts +1 -1
- package/src/types/typedData.ts +6 -6
- package/src/utils/abi/encodePacked.ts +1 -1
- package/src/utils/ens/avatar/utils.ts +3 -1
- package/src/utils/formatters/extract.ts +3 -2
- package/src/utils/transaction/prepareRequest.ts +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../src/types/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,SAAS,EACT,eAAe,EACf,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC;IACF,WAAW,EAAE,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;CAC/D,GAAG,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,GAC/C,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,GAC3C,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAE9C,MAAM,MAAM,kBAAkB,CAC5B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,
|
1
|
+
{"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../src/types/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,SAAS,EACT,eAAe,EACf,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC;IACF,WAAW,EAAE,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;CAC/D,GAAG,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,GAC/C,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,GAC3C,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAE9C,MAAM,MAAM,kBAAkB,CAC5B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACvE,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,OAAO,GAAG,UAAU,SAAS,SAAS,GAClC,yBAAyB,CAAC,UAAU,CAAC,GACrC;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC5B,OAAO,GAAG,OAAO,SAAS;IAAE,YAAY,EAAE,MAAM,MAAM,CAAA;CAAE,GACpD,MAAM,GACN,eAAe,IACjB,YAAY,SAAS,cAAc,GACnC;IACE,MAAM,EAAE,OAAO,CAAA;CAChB,GACD;IACE,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAEL,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACvE,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,OAAO,GAAG,UAAU,SAAS,SAAS,GAClC,yBAAyB,CAAC,UAAU,CAAC,GACrC;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC5B,QAAQ,GAAG,OAAO,CAAC,YAAY,SAAS,MAAM,OAAO,GACjD,YAAY,GACZ,MAAM,OAAO,CAAC,IAChB,YAAY,SAAS,cAAc,GACnC,EAAE,GACF;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,SAAS,QAAQ,GACzC;IACE;;;;OAIG;IACH,OAAO,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CACtC,GACD;IACE,mBAAmB;IACnB,OAAO,EAAE,QAAQ,CAAA;CAClB,CAAA;AAEL,MAAM,MAAM,uBAAuB,CACjC,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,UAAU,SAAS,SAAS,GAC5B,MAAM,UAAU,SAAS,MAAM,gBAAgB,GAEzC,gBAAgB,GAChB,CAAC,YAAY,SAAS,gBAAgB,GAAG,YAAY,GAAG,KAAK,CAAC,GAC9D,CAAC,SAAS,SAAS,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,GAC/C,cAAc,GAClB,KAAK,GACP,YAAY,CAAA;AAEhB,MAAM,MAAM,iBAAiB,CAC3B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,YAAY,SAAS,cAAc,GACnC;IACE,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;CAC3B,GACD;IACE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;CAC1B,CAAA"}
|
@@ -29,7 +29,7 @@ type ParsedNft = {
|
|
29
29
|
contractAddress: Address;
|
30
30
|
tokenID: string;
|
31
31
|
};
|
32
|
-
export declare function parseNftUri(
|
32
|
+
export declare function parseNftUri(uri_: string): ParsedNft;
|
33
33
|
export declare function getNftTokenUri<TChain extends Chain | undefined>(client: Client<Transport, TChain>, { nft }: {
|
34
34
|
nft: ParsedNft;
|
35
35
|
}): Promise<string>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/utils/ens/avatar/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAO/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,KAAK,OAAO,GAAG;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AASD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/utils/ens/avatar/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAO/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,KAAK,OAAO,GAAG;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AASD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,oBA6B3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,UAI5E;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,WAAW,GACZ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;CAC3C,GAAG,OAAO,CAuDV;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,OAUrC;AAED,wBAAsB,oBAAoB,CAAC,EACzC,WAAW,EACX,GAAG,GACJ,EAAE;IACD,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC1C,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,OAAO,CAAC,MAAM,CAAC,CAWlB;AAED,wBAAsB,cAAc,CAAC,EACnC,WAAW,EACX,GAAG,GACJ,EAAE;IACD,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC1C,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,OAAO,CAAC,MAAM,CAAC,CASlB;AAED,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAgCnD;AAED,wBAAsB,cAAc,CAAC,MAAM,SAAS,KAAK,GAAG,SAAS,EACnE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EACjC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,mBAmC5B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../src/utils/formatters/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD;;GAEG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;CAAE,
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../src/utils/formatters/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD;;GAEG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;CAAE,2BAW7C"}
|
package/package.json
CHANGED
@@ -17,7 +17,9 @@ export type SignTransactionArgs<
|
|
17
17
|
> = {
|
18
18
|
privateKey: Hex
|
19
19
|
transaction: TTransactionSerializable
|
20
|
-
serializer?: SerializeTransactionFn<
|
20
|
+
serializer?: SerializeTransactionFn<
|
21
|
+
TransactionSerializable & TTransactionSerializable
|
22
|
+
>
|
21
23
|
}
|
22
24
|
export type SignTransactionReturnType<
|
23
25
|
TTransactionSerializable extends TransactionSerializable = TransactionSerializable,
|
@@ -36,5 +38,8 @@ export async function signTransaction<
|
|
36
38
|
hash: keccak256(serializer(transaction)),
|
37
39
|
privateKey,
|
38
40
|
})
|
39
|
-
return serializer(
|
41
|
+
return serializer(
|
42
|
+
transaction,
|
43
|
+
signature,
|
44
|
+
) as SignTransactionReturnType<TTransactionSerializable>
|
40
45
|
}
|
@@ -14,7 +14,7 @@ import {
|
|
14
14
|
import { defineTransactionReceipt } from '../../utils/formatters/transactionReceipt.js'
|
15
15
|
import { defineTransactionRequest } from '../../utils/formatters/transactionRequest.js'
|
16
16
|
|
17
|
-
export type
|
17
|
+
export type CeloFormatOverrides = {
|
18
18
|
RpcBlock: {
|
19
19
|
randomness: {
|
20
20
|
committed: Hex
|
@@ -49,10 +49,11 @@ export type CeloOverrides = {
|
|
49
49
|
gatewayFeeRecipient: Address | null
|
50
50
|
}
|
51
51
|
}
|
52
|
-
|
52
|
+
|
53
|
+
export const formattersCelo = {
|
53
54
|
block: /*#__PURE__*/ defineBlock({
|
54
55
|
exclude: ['difficulty', 'gasLimit', 'mixHash', 'nonce', 'uncles'],
|
55
|
-
format(args:
|
56
|
+
format(args: CeloFormatOverrides['RpcBlock']) {
|
56
57
|
const transactions = args.transactions?.map((transaction) => {
|
57
58
|
if (typeof transaction === 'string') return transaction
|
58
59
|
return {
|
@@ -63,7 +64,7 @@ export const celoFormatters = {
|
|
63
64
|
: null,
|
64
65
|
gatewayFeeRecipient: transaction.gatewayFeeRecipient,
|
65
66
|
}
|
66
|
-
}) as Hash[] | (Transaction &
|
67
|
+
}) as Hash[] | (Transaction & CeloFormatOverrides['Transaction'])[]
|
67
68
|
return {
|
68
69
|
randomness: args.randomness,
|
69
70
|
transactions,
|
@@ -71,7 +72,7 @@ export const celoFormatters = {
|
|
71
72
|
},
|
72
73
|
}),
|
73
74
|
transaction: /*#__PURE__*/ defineTransaction({
|
74
|
-
format(args:
|
75
|
+
format(args: CeloFormatOverrides['RpcTransaction']) {
|
75
76
|
return {
|
76
77
|
feeCurrency: args.feeCurrency,
|
77
78
|
gatewayFee: args.gatewayFee ? hexToBigInt(args.gatewayFee) : null,
|
@@ -80,7 +81,7 @@ export const celoFormatters = {
|
|
80
81
|
},
|
81
82
|
}),
|
82
83
|
transactionReceipt: /*#__PURE__*/ defineTransactionReceipt({
|
83
|
-
format(args:
|
84
|
+
format(args: CeloFormatOverrides['RpcTransactionReceipt']) {
|
84
85
|
return {
|
85
86
|
feeCurrency: args.feeCurrency,
|
86
87
|
gatewayFee: args.gatewayFee ? hexToBigInt(args.gatewayFee) : null,
|
@@ -89,7 +90,7 @@ export const celoFormatters = {
|
|
89
90
|
},
|
90
91
|
}),
|
91
92
|
transactionRequest: /*#__PURE__*/ defineTransactionRequest({
|
92
|
-
format(args:
|
93
|
+
format(args: CeloFormatOverrides['TransactionRequest']) {
|
93
94
|
return {
|
94
95
|
feeCurrency: args.feeCurrency,
|
95
96
|
gatewayFee:
|
@@ -23,6 +23,12 @@ type RpcTransaction = RpcTransaction_ & {
|
|
23
23
|
sourceHash?: undefined
|
24
24
|
}
|
25
25
|
|
26
|
+
type Transaction = Transaction_ & {
|
27
|
+
isSystemTx?: undefined
|
28
|
+
mint?: undefined
|
29
|
+
sourceHash?: undefined
|
30
|
+
}
|
31
|
+
|
26
32
|
export type RpcDepositTransaction = TransactionBase<Quantity, Index> &
|
27
33
|
FeeValuesEIP1559<Quantity> & {
|
28
34
|
isSystemTx?: boolean
|
@@ -31,12 +37,6 @@ export type RpcDepositTransaction = TransactionBase<Quantity, Index> &
|
|
31
37
|
type: '0x7e'
|
32
38
|
}
|
33
39
|
|
34
|
-
type Transaction = Transaction_ & {
|
35
|
-
isSystemTx?: undefined
|
36
|
-
mint?: undefined
|
37
|
-
sourceHash?: undefined
|
38
|
-
}
|
39
|
-
|
40
40
|
export type DepositTransaction = TransactionBase &
|
41
41
|
FeeValuesEIP1559 & {
|
42
42
|
isSystemTx?: boolean
|
@@ -45,22 +45,22 @@ export type DepositTransaction = TransactionBase &
|
|
45
45
|
type: 'deposit'
|
46
46
|
}
|
47
47
|
|
48
|
-
type
|
48
|
+
export type OptimismFormatOverrides = {
|
49
49
|
RpcBlock: {
|
50
|
-
transactions: Hash[] |
|
50
|
+
transactions: Hash[] | OptimismFormatOverrides['RpcTransaction'][]
|
51
51
|
}
|
52
52
|
RpcTransaction: RpcTransaction | RpcDepositTransaction
|
53
53
|
Transaction: Transaction | DepositTransaction
|
54
54
|
}
|
55
55
|
|
56
|
-
export const
|
56
|
+
export const formattersOptimism = {
|
57
57
|
block: /*#__PURE__*/ defineBlock({
|
58
|
-
format(args:
|
58
|
+
format(args: OptimismFormatOverrides['RpcBlock']) {
|
59
59
|
const transactions = args.transactions?.map((transaction) => {
|
60
60
|
if (typeof transaction === 'string') return transaction
|
61
61
|
const formatted = formatTransaction(
|
62
62
|
transaction as RpcTransaction,
|
63
|
-
) as
|
63
|
+
) as OptimismFormatOverrides['Transaction']
|
64
64
|
if (formatted.typeHex === '0x7e') {
|
65
65
|
formatted.isSystemTx = transaction.isSystemTx
|
66
66
|
formatted.mint = transaction.mint
|
@@ -70,15 +70,15 @@ export const optimismFormatters = {
|
|
70
70
|
formatted.type = 'deposit'
|
71
71
|
}
|
72
72
|
return formatted
|
73
|
-
}) as Hash[] |
|
73
|
+
}) as Hash[] | OptimismFormatOverrides['Transaction'][]
|
74
74
|
return {
|
75
75
|
transactions,
|
76
76
|
}
|
77
77
|
},
|
78
78
|
}),
|
79
79
|
transaction: /*#__PURE__*/ defineTransaction({
|
80
|
-
format(args:
|
81
|
-
const transaction = {} as
|
80
|
+
format(args: OptimismFormatOverrides['RpcTransaction']) {
|
81
|
+
const transaction = {} as OptimismFormatOverrides['Transaction']
|
82
82
|
if (args.type === '0x7e') {
|
83
83
|
transaction.isSystemTx = args.isSystemTx
|
84
84
|
transaction.mint = args.mint ? hexToBigInt(args.mint) : undefined
|
package/src/chains/index.ts
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
import * as chains from '@wagmi/chains'
|
2
2
|
|
3
3
|
import { defineChain } from '../utils/chain.js'
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
4
|
+
import { formattersCelo } from './formatters/celo.js'
|
5
|
+
import { formattersOptimism } from './formatters/optimism.js'
|
6
|
+
import { serializersCelo } from './serializers/celo.js'
|
7
7
|
|
8
8
|
export const arbitrum = /*#__PURE__*/ defineChain(chains.arbitrum)
|
9
9
|
export const arbitrumGoerli = /*#__PURE__*/ defineChain(chains.arbitrumGoerli)
|
@@ -19,16 +19,16 @@ export const bsc = /*#__PURE__*/ defineChain(chains.bsc)
|
|
19
19
|
export const bscTestnet = /*#__PURE__*/ defineChain(chains.bscTestnet)
|
20
20
|
export const canto = /*#__PURE__*/ defineChain(chains.canto)
|
21
21
|
export const celo = /*#__PURE__*/ defineChain(chains.celo, {
|
22
|
-
formatters:
|
23
|
-
serializers:
|
22
|
+
formatters: formattersCelo,
|
23
|
+
serializers: serializersCelo,
|
24
24
|
})
|
25
25
|
export const celoAlfajores = /*#__PURE__*/ defineChain(chains.celoAlfajores, {
|
26
|
-
formatters:
|
27
|
-
serializers:
|
26
|
+
formatters: formattersCelo,
|
27
|
+
serializers: serializersCelo,
|
28
28
|
})
|
29
29
|
export const celoCannoli = /*#__PURE__*/ defineChain(chains.celoCannoli, {
|
30
|
-
formatters:
|
31
|
-
serializers:
|
30
|
+
formatters: formattersCelo,
|
31
|
+
serializers: serializersCelo,
|
32
32
|
})
|
33
33
|
export const cronos = /*#__PURE__*/ defineChain(chains.cronos)
|
34
34
|
export const crossbell = /*#__PURE__*/ defineChain(chains.crossbell)
|
@@ -69,10 +69,10 @@ export const moonriver = /*#__PURE__*/ defineChain(chains.moonriver)
|
|
69
69
|
export const nexi = /*#__PURE__*/ defineChain(chains.nexi)
|
70
70
|
export const okc = /*#__PURE__*/ defineChain(chains.okc)
|
71
71
|
export const optimism = /*#__PURE__*/ defineChain(chains.optimism, {
|
72
|
-
formatters:
|
72
|
+
formatters: formattersOptimism,
|
73
73
|
})
|
74
74
|
export const optimismGoerli = /*#__PURE__*/ defineChain(chains.optimismGoerli, {
|
75
|
-
formatters:
|
75
|
+
formatters: formattersOptimism,
|
76
76
|
})
|
77
77
|
export const polygon = /*#__PURE__*/ defineChain(chains.polygon)
|
78
78
|
export const polygonMumbai = /*#__PURE__*/ defineChain(chains.polygonMumbai)
|
@@ -6,6 +6,7 @@ import { InvalidChainIdError } from '../../errors/chain.js'
|
|
6
6
|
import { FeeCapTooHighError, TipAboveFeeCapError } from '../../errors/node.js'
|
7
7
|
import type { FeeValuesEIP1559 } from '../../types/fee.js'
|
8
8
|
import type { Signature } from '../../types/misc.js'
|
9
|
+
import type { Serializers } from '../../types/serializer.js'
|
9
10
|
import type {
|
10
11
|
AccessList,
|
11
12
|
TransactionSerializable,
|
@@ -19,30 +20,26 @@ import { toRlp } from '../../utils/encoding/toRlp.js'
|
|
19
20
|
import { serializeAccessList } from '../../utils/transaction/serializeAccessList.js'
|
20
21
|
import {
|
21
22
|
type SerializeTransactionFn,
|
22
|
-
serializeTransaction
|
23
|
+
serializeTransaction,
|
23
24
|
} from '../../utils/transaction/serializeTransaction.js'
|
24
25
|
|
25
|
-
export const
|
26
|
+
export const serializeTransactionCelo: SerializeTransactionFn<
|
26
27
|
TransactionSerializableCelo
|
27
28
|
> = (tx, signature) => {
|
28
|
-
// Handle
|
29
|
-
if (
|
29
|
+
// Handle CIP-42 transactions
|
30
|
+
if (isCIP42(tx))
|
30
31
|
return serializeTransactionCIP42(
|
31
32
|
tx as TransactionSerializableCIP42,
|
32
33
|
signature,
|
33
34
|
)
|
34
35
|
|
35
36
|
// Handle other transaction types
|
36
|
-
return
|
37
|
+
return serializeTransaction(tx as TransactionSerializable, signature)
|
37
38
|
}
|
38
39
|
|
39
|
-
export
|
40
|
-
transaction:
|
41
|
-
}
|
42
|
-
|
43
|
-
export const celoSerializers: CeloSerializers = {
|
44
|
-
transaction: serializeTransaction,
|
45
|
-
}
|
40
|
+
export const serializersCelo = {
|
41
|
+
transaction: serializeTransactionCelo,
|
42
|
+
} as const satisfies Serializers
|
46
43
|
|
47
44
|
//////////////////////////////////////////////////////////////////////////////
|
48
45
|
// Types
|
@@ -126,14 +123,13 @@ function serializeTransactionCIP42(
|
|
126
123
|
// Utilities
|
127
124
|
|
128
125
|
// process as CIP42 if any of these fields are present. realistically gatewayfee is not used but is part of spec
|
129
|
-
function
|
130
|
-
const maybeCIP42 = tx as TransactionSerializableCIP42
|
126
|
+
function isCIP42(transaction: TransactionSerializableCelo) {
|
131
127
|
if (
|
132
|
-
'maxFeePerGas' in
|
133
|
-
'maxPriorityFeePerGas' in
|
134
|
-
('feeCurrency' in
|
135
|
-
'gatewayFee' in
|
136
|
-
'gatewayFeeRecipient' in
|
128
|
+
'maxFeePerGas' in transaction &&
|
129
|
+
'maxPriorityFeePerGas' in transaction &&
|
130
|
+
('feeCurrency' in transaction ||
|
131
|
+
'gatewayFee' in transaction ||
|
132
|
+
'gatewayFeeRecipient' in transaction)
|
137
133
|
)
|
138
134
|
return true
|
139
135
|
return false
|
@@ -1,7 +1,6 @@
|
|
1
|
-
import type { Address
|
1
|
+
import type { Address } from 'abitype'
|
2
2
|
|
3
3
|
import type { Account, JsonRpcAccount } from '../accounts/types.js'
|
4
|
-
import type { ParseAccount } from '../types/account.js'
|
5
4
|
import type { Chain } from '../types/chain.js'
|
6
5
|
import type {
|
7
6
|
EIP1193RequestFn,
|
@@ -13,60 +12,82 @@ import { parseAccount } from '../utils/accounts.js'
|
|
13
12
|
import { uid } from '../utils/uid.js'
|
14
13
|
import type { Transport } from './transports/createTransport.js'
|
15
14
|
|
16
|
-
export type MulticallBatchOptions = {
|
17
|
-
/** The maximum size (in bytes) for each calldata chunk. @default 1_024 */
|
18
|
-
batchSize?: number
|
19
|
-
/** The maximum number of milliseconds to wait before sending a batch. @default 0 */
|
20
|
-
wait?: number
|
21
|
-
}
|
22
|
-
|
23
15
|
export type ClientConfig<
|
24
|
-
|
25
|
-
|
26
|
-
|
16
|
+
transport extends Transport = Transport,
|
17
|
+
chain extends Chain | undefined = Chain | undefined,
|
18
|
+
accountOrAddress extends Account | Address | undefined =
|
27
19
|
| Account
|
28
20
|
| Address
|
29
21
|
| undefined,
|
30
22
|
> = {
|
31
23
|
/** The Account to use for the Client. This will be used for Actions that require an account as an argument. */
|
32
|
-
account?:
|
24
|
+
account?: accountOrAddress extends Account | Address
|
25
|
+
? accountOrAddress | Account | Address // `accountOrAddress` defined, add for inference
|
26
|
+
: Account | Address | undefined // `accountOrAddress` undefined, show possible types for autocomplete
|
33
27
|
/** Flags for batch settings. */
|
34
|
-
batch?:
|
35
|
-
|
36
|
-
|
37
|
-
|
28
|
+
batch?:
|
29
|
+
| {
|
30
|
+
/** Toggle to enable `eth_call` multicall aggregation. */
|
31
|
+
multicall?: boolean | Prettify<MulticallBatchOptions> | undefined
|
32
|
+
}
|
33
|
+
| undefined
|
38
34
|
/** Chain for the client. */
|
39
|
-
chain?:
|
35
|
+
chain?: chain extends Chain
|
36
|
+
? chain // `chain` defined, add for inference
|
37
|
+
: Chain | undefined // `chain` undefined, show possible types for autocomplete
|
40
38
|
/** A key for the client. */
|
41
|
-
key?: string
|
39
|
+
key?: string | undefined
|
42
40
|
/** A name for the client. */
|
43
|
-
name?: string
|
41
|
+
name?: string | undefined
|
44
42
|
/**
|
45
43
|
* Frequency (in ms) for polling enabled actions & events.
|
46
44
|
* @default 4_000
|
47
45
|
*/
|
48
|
-
pollingInterval?: number
|
46
|
+
pollingInterval?: number | undefined
|
49
47
|
/** The RPC transport */
|
50
|
-
transport:
|
48
|
+
transport: transport
|
51
49
|
/** The type of client. */
|
52
|
-
type?: string
|
50
|
+
type?: string | undefined
|
53
51
|
}
|
54
52
|
|
53
|
+
// TODO: Move `transport` to slot index 2 since `chain` and `account` used more frequently.
|
54
|
+
// Otherwise, we end up with a lot of `Client<Transport, chain, account>` in actions.
|
55
|
+
export type Client<
|
56
|
+
transport extends Transport = Transport,
|
57
|
+
chain extends Chain | undefined = Chain | undefined,
|
58
|
+
account extends Account | undefined = Account | undefined,
|
59
|
+
rpcSchema extends RpcSchema | undefined = undefined,
|
60
|
+
extended extends Extended | undefined = Extended | undefined,
|
61
|
+
> = Prettify<
|
62
|
+
Prettify<Client_Base<transport, chain, account, rpcSchema>> & {
|
63
|
+
extend: <const client extends Extended>(
|
64
|
+
fn: (
|
65
|
+
client: Client<transport, chain, account, rpcSchema, extended>,
|
66
|
+
) => client,
|
67
|
+
) => Prettify<
|
68
|
+
Client<
|
69
|
+
transport,
|
70
|
+
chain,
|
71
|
+
account,
|
72
|
+
rpcSchema,
|
73
|
+
Prettify<client> & (extended extends Extended ? extended : unknown)
|
74
|
+
>
|
75
|
+
>
|
76
|
+
} & (extended extends Extended ? extended : unknown)
|
77
|
+
>
|
78
|
+
|
55
79
|
type Client_Base<
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
80
|
+
transport extends Transport = Transport,
|
81
|
+
chain extends Chain | undefined = Chain | undefined,
|
82
|
+
account extends Account | undefined = Account | undefined,
|
83
|
+
rpcSchema extends RpcSchema | undefined = undefined,
|
60
84
|
> = {
|
61
85
|
/** The Account of the Client. */
|
62
|
-
account:
|
86
|
+
account: account
|
63
87
|
/** Flags for batch settings. */
|
64
|
-
batch?:
|
65
|
-
/** Toggle to enable `eth_call` multicall aggregation. */
|
66
|
-
multicall?: boolean | MulticallBatchOptions
|
67
|
-
}
|
88
|
+
batch?: ClientConfig['batch']
|
68
89
|
/** Chain for the client. */
|
69
|
-
chain:
|
90
|
+
chain: chain
|
70
91
|
/** A key for the client. */
|
71
92
|
key: string
|
72
93
|
/** A name for the client. */
|
@@ -74,86 +95,89 @@ type Client_Base<
|
|
74
95
|
/** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */
|
75
96
|
pollingInterval: number
|
76
97
|
/** Request function wrapped with friendly error handling */
|
77
|
-
request:
|
78
|
-
?
|
79
|
-
|
98
|
+
request: EIP1193RequestFn<
|
99
|
+
rpcSchema extends undefined ? EIP1474Methods : rpcSchema
|
100
|
+
>
|
80
101
|
/** The RPC transport */
|
81
|
-
transport: ReturnType<
|
102
|
+
transport: ReturnType<transport>['config'] & ReturnType<transport>['value']
|
82
103
|
/** The type of client. */
|
83
104
|
type: string
|
84
105
|
/** A unique ID for the client. */
|
85
106
|
uid: string
|
86
107
|
}
|
87
108
|
|
88
|
-
type Extended =
|
89
|
-
|
90
|
-
}
|
109
|
+
type Extended = Prettify<
|
110
|
+
// disallow redefining base properties
|
111
|
+
{ [K in keyof Client_Base]?: undefined } & {
|
112
|
+
[key: string]: unknown
|
113
|
+
}
|
114
|
+
>
|
91
115
|
|
92
|
-
export type
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
> = Client_Base<TTransport, TChain, TAccount, TRpcSchema> & {
|
99
|
-
extend: <TNextExtended extends Extended = Extended>(
|
100
|
-
fn: (
|
101
|
-
client: Client<TTransport, TChain, TAccount, TRpcSchema, TExtended>,
|
102
|
-
) => Narrow<TNextExtended>,
|
103
|
-
) => Client<
|
104
|
-
TTransport,
|
105
|
-
TChain,
|
106
|
-
TAccount,
|
107
|
-
TRpcSchema,
|
108
|
-
(TExtended extends Extended ? TExtended : {}) & TNextExtended
|
109
|
-
>
|
110
|
-
} & (TExtended extends Extended ? TExtended : {})
|
116
|
+
export type MulticallBatchOptions = {
|
117
|
+
/** The maximum size (in bytes) for each calldata chunk. @default 1_024 */
|
118
|
+
batchSize?: number | undefined
|
119
|
+
/** The maximum number of milliseconds to wait before sending a batch. @default 0 */
|
120
|
+
wait?: number | undefined
|
121
|
+
}
|
111
122
|
|
112
123
|
/**
|
113
|
-
*
|
124
|
+
* Creates a base client with the given transport.
|
114
125
|
*/
|
115
126
|
export function createClient<
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
>(
|
120
|
-
|
121
|
-
|
122
|
-
chain,
|
123
|
-
key = 'base',
|
124
|
-
name = 'Base Client',
|
125
|
-
pollingInterval = 4_000,
|
127
|
+
transport extends Transport,
|
128
|
+
chain extends Chain | undefined = undefined,
|
129
|
+
accountOrAddress extends Account | Address | undefined = undefined,
|
130
|
+
>(
|
131
|
+
parameters: ClientConfig<transport, chain, accountOrAddress>,
|
132
|
+
): Client<
|
126
133
|
transport,
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
134
|
+
chain,
|
135
|
+
accountOrAddress extends Address
|
136
|
+
? Prettify<JsonRpcAccount<accountOrAddress>>
|
137
|
+
: accountOrAddress
|
138
|
+
>
|
139
|
+
|
140
|
+
export function createClient(parameters: ClientConfig): Client {
|
141
|
+
const {
|
142
|
+
batch,
|
143
|
+
key = 'base',
|
144
|
+
name = 'Base Client',
|
145
|
+
pollingInterval = 4_000,
|
146
|
+
type = 'base',
|
147
|
+
} = parameters
|
148
|
+
|
149
|
+
const chain = parameters.chain
|
150
|
+
const account = parameters.account
|
151
|
+
? parseAccount(parameters.account)
|
152
|
+
: undefined
|
153
|
+
const { config, request, value } = parameters.transport({
|
154
|
+
chain,
|
155
|
+
pollingInterval,
|
156
|
+
})
|
157
|
+
const transport = { ...config, ...value }
|
158
|
+
|
136
159
|
const client = {
|
137
|
-
account
|
138
|
-
? parseAccount(account)
|
139
|
-
: undefined) as ParseAccount<TAccountOrAddress>,
|
160
|
+
account,
|
140
161
|
batch,
|
141
|
-
chain
|
162
|
+
chain,
|
142
163
|
key,
|
143
164
|
name,
|
144
165
|
pollingInterval,
|
145
166
|
request,
|
146
|
-
transport
|
167
|
+
transport,
|
147
168
|
type,
|
148
169
|
uid: uid(),
|
149
170
|
}
|
150
|
-
|
151
|
-
|
152
|
-
|
171
|
+
|
172
|
+
function extend(base: typeof client) {
|
173
|
+
type ExtendFn = (base: typeof client) => unknown
|
174
|
+
return (extendFn: ExtendFn) => {
|
175
|
+
const extended = extendFn(base) as Extended
|
153
176
|
for (const key in client) delete extended[key]
|
154
|
-
const
|
155
|
-
return Object.assign(
|
177
|
+
const combined = { ...base, ...extended }
|
178
|
+
return Object.assign(combined, { extend: extend(combined) })
|
156
179
|
}
|
157
180
|
}
|
181
|
+
|
158
182
|
return Object.assign(client, { extend: extend(client) as any })
|
159
183
|
}
|