viem 2.16.1 → 2.16.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/_cjs/chains/definitions/bitTorrent.js +6 -0
  3. package/_cjs/chains/definitions/bitTorrent.js.map +1 -1
  4. package/_cjs/chains/definitions/dchain.js +27 -0
  5. package/_cjs/chains/definitions/dchain.js.map +1 -0
  6. package/_cjs/chains/definitions/dchainTestnet.js +29 -0
  7. package/_cjs/chains/definitions/dchainTestnet.js.map +1 -0
  8. package/_cjs/chains/definitions/etherlink.js +29 -0
  9. package/_cjs/chains/definitions/etherlink.js.map +1 -0
  10. package/_cjs/chains/definitions/morphHolesky.js +24 -0
  11. package/_cjs/chains/definitions/morphHolesky.js.map +1 -0
  12. package/_cjs/chains/definitions/real.js +30 -0
  13. package/_cjs/chains/definitions/real.js.map +1 -0
  14. package/_cjs/chains/definitions/unreal.js +31 -0
  15. package/_cjs/chains/definitions/unreal.js.map +1 -0
  16. package/_cjs/chains/index.js +17 -5
  17. package/_cjs/chains/index.js.map +1 -1
  18. package/_cjs/errors/version.js +1 -1
  19. package/_cjs/experimental/erc7715/actions/grantPermissions.js +94 -0
  20. package/_cjs/experimental/erc7715/actions/grantPermissions.js.map +1 -0
  21. package/_cjs/experimental/erc7715/decorators/erc7715.js +2 -2
  22. package/_cjs/experimental/erc7715/types/policy.js +3 -0
  23. package/_cjs/experimental/erc7715/types/policy.js.map +1 -0
  24. package/_cjs/experimental/index.js +3 -3
  25. package/_esm/chains/definitions/bitTorrent.js +6 -0
  26. package/_esm/chains/definitions/bitTorrent.js.map +1 -1
  27. package/_esm/chains/definitions/dchain.js +24 -0
  28. package/_esm/chains/definitions/dchain.js.map +1 -0
  29. package/_esm/chains/definitions/dchainTestnet.js +26 -0
  30. package/_esm/chains/definitions/dchainTestnet.js.map +1 -0
  31. package/_esm/chains/definitions/etherlink.js +26 -0
  32. package/_esm/chains/definitions/etherlink.js.map +1 -0
  33. package/_esm/chains/definitions/morphHolesky.js +21 -0
  34. package/_esm/chains/definitions/morphHolesky.js.map +1 -0
  35. package/_esm/chains/definitions/real.js +27 -0
  36. package/_esm/chains/definitions/real.js.map +1 -0
  37. package/_esm/chains/definitions/unreal.js +28 -0
  38. package/_esm/chains/definitions/unreal.js.map +1 -0
  39. package/_esm/chains/index.js +6 -0
  40. package/_esm/chains/index.js.map +1 -1
  41. package/_esm/errors/version.js +1 -1
  42. package/_esm/experimental/erc7715/actions/grantPermissions.js +130 -0
  43. package/_esm/experimental/erc7715/actions/grantPermissions.js.map +1 -0
  44. package/_esm/experimental/erc7715/decorators/erc7715.js +3 -3
  45. package/_esm/experimental/erc7715/types/policy.js +2 -0
  46. package/_esm/experimental/erc7715/types/policy.js.map +1 -0
  47. package/_esm/experimental/index.js +1 -1
  48. package/_types/chains/definitions/bitTorrent.d.ts +6 -8
  49. package/_types/chains/definitions/bitTorrent.d.ts.map +1 -1
  50. package/_types/chains/definitions/dchain.d.ts +1049 -0
  51. package/_types/chains/definitions/dchain.d.ts.map +1 -0
  52. package/_types/chains/definitions/dchainTestnet.d.ts +1049 -0
  53. package/_types/chains/definitions/dchainTestnet.d.ts.map +1 -0
  54. package/_types/chains/definitions/etherlink.d.ts +33 -0
  55. package/_types/chains/definitions/etherlink.d.ts.map +1 -0
  56. package/_types/chains/definitions/morphHolesky.d.ts +37 -0
  57. package/_types/chains/definitions/morphHolesky.d.ts.map +1 -0
  58. package/_types/chains/definitions/real.d.ts +34 -0
  59. package/_types/chains/definitions/real.d.ts.map +1 -0
  60. package/_types/chains/definitions/unreal.d.ts +34 -0
  61. package/_types/chains/definitions/unreal.d.ts.map +1 -0
  62. package/_types/chains/index.d.ts +6 -0
  63. package/_types/chains/index.d.ts.map +1 -1
  64. package/_types/errors/version.d.ts +1 -1
  65. package/_types/experimental/erc7715/actions/{issuePermissions.d.ts → grantPermissions.d.ts} +18 -16
  66. package/_types/experimental/erc7715/actions/{issuePermissions.d.ts.map → grantPermissions.d.ts.map} +1 -1
  67. package/_types/experimental/erc7715/decorators/erc7715.d.ts +5 -5
  68. package/_types/experimental/erc7715/types/permission.d.ts +24 -20
  69. package/_types/experimental/erc7715/types/permission.d.ts.map +1 -1
  70. package/_types/experimental/erc7715/types/policy.d.ts +36 -0
  71. package/_types/experimental/erc7715/types/policy.d.ts.map +1 -0
  72. package/_types/experimental/erc7715/types/signer.d.ts +5 -1
  73. package/_types/experimental/erc7715/types/signer.d.ts.map +1 -1
  74. package/_types/experimental/index.d.ts +1 -1
  75. package/_types/index.d.ts +1 -1
  76. package/_types/types/eip1193.d.ts +19 -10
  77. package/_types/types/eip1193.d.ts.map +1 -1
  78. package/chains/definitions/bitTorrent.ts +6 -0
  79. package/chains/definitions/dchain.ts +24 -0
  80. package/chains/definitions/dchainTestnet.ts +27 -0
  81. package/chains/definitions/etherlink.ts +26 -0
  82. package/chains/definitions/morphHolesky.ts +21 -0
  83. package/chains/definitions/real.ts +27 -0
  84. package/chains/definitions/unreal.ts +28 -0
  85. package/chains/index.ts +6 -0
  86. package/errors/version.ts +1 -1
  87. package/experimental/erc7715/actions/{issuePermissions.ts → grantPermissions.ts} +82 -54
  88. package/experimental/erc7715/decorators/erc7715.ts +11 -11
  89. package/experimental/erc7715/types/permission.ts +28 -26
  90. package/experimental/erc7715/types/policy.ts +43 -0
  91. package/experimental/erc7715/types/signer.ts +8 -1
  92. package/experimental/index.ts +4 -4
  93. package/index.ts +2 -2
  94. package/package.json +1 -1
  95. package/types/eip1193.ts +19 -10
  96. package/_cjs/experimental/erc7715/actions/issuePermissions.js +0 -73
  97. package/_cjs/experimental/erc7715/actions/issuePermissions.js.map +0 -1
  98. package/_esm/experimental/erc7715/actions/issuePermissions.js +0 -107
  99. package/_esm/experimental/erc7715/actions/issuePermissions.js.map +0 -1
@@ -1,51 +1,53 @@
1
1
  import type { Address } from 'abitype'
2
2
 
3
3
  import type { OneOf } from '../../../types/utils.js'
4
+ import type { Policy } from './policy.js'
4
5
 
5
6
  /** @internal */
6
- export type NativeTokenLimitPermission<amount = bigint> = {
7
- type: 'native-token-limit'
8
- data: {
9
- amount: amount
10
- }
7
+ export type CustomPermission<data = unknown, type = { custom: string }> = {
8
+ data: data
9
+ type: type
11
10
  }
12
11
 
13
12
  /** @internal */
14
- export type Erc20LimitPermission<amount = bigint> = {
15
- type: 'erc20-limit'
13
+ export type NativeTokenTransferPermission = {
14
+ type: 'native-token-transfer'
16
15
  data: {
17
- erc20Address: Address
18
- amount: amount
16
+ /** Native token ticker (e.g. ETH). */
17
+ ticker: string
19
18
  }
20
19
  }
21
20
 
22
21
  /** @internal */
23
- export type GasLimitPermission<amount = bigint> = {
24
- type: 'gas-limit'
22
+ export type Erc20TokenTransferPermission = {
23
+ type: 'erc20-token-transfer'
25
24
  data: {
26
- amount: amount
25
+ /** ERC20 address. */
26
+ address: Address
27
+ /** Native token ticker (e.g. ETH). */
28
+ ticker: string
27
29
  }
28
30
  }
29
31
 
30
32
  /** @internal */
31
33
  export type ContractCallPermission = {
32
34
  type: 'contract-call'
33
- data: unknown
34
- }
35
-
36
- /** @internal */
37
- export type RateLimitPermission = {
38
- type: 'rate-limit'
39
35
  data: {
40
- count: number
41
- interval: number
36
+ /** Contract address. */
37
+ address: Address
38
+ /** Set of contract signatures to permit. */
39
+ calls: string[]
42
40
  }
43
41
  }
44
42
 
45
- export type Permission<amount = bigint> = OneOf<
46
- | NativeTokenLimitPermission<amount>
47
- | Erc20LimitPermission<amount>
48
- | GasLimitPermission<amount>
43
+ export type Permission<uint256 = bigint> = OneOf<
44
+ | NativeTokenTransferPermission
45
+ | Erc20TokenTransferPermission
49
46
  | ContractCallPermission
50
- | RateLimitPermission
51
- > & { required?: boolean | undefined }
47
+ | CustomPermission
48
+ > & {
49
+ /** Set of policies for the permission. */
50
+ policies: readonly Policy<uint256>[]
51
+ /** Whether or not the wallet must grant the permission. */
52
+ required?: boolean | undefined
53
+ }
@@ -0,0 +1,43 @@
1
+ import type { OneOf } from '../../../types/utils.js'
2
+
3
+ /** @internal */
4
+ export type CustomPolicy<data = unknown> = {
5
+ data: data
6
+ type: { custom: string }
7
+ }
8
+
9
+ /** @internal */
10
+ export type TokenAllowancePolicy<uint256 = bigint> = {
11
+ type: 'token-allowance'
12
+ data: {
13
+ /** Token allowance (in wei). */
14
+ allowance: uint256
15
+ }
16
+ }
17
+
18
+ /** @internal */
19
+ export type GasLimitPolicy<uint256 = bigint> = {
20
+ type: 'gas-limit'
21
+ data: {
22
+ /** Gas limit (in wei). */
23
+ limit: uint256
24
+ }
25
+ }
26
+
27
+ /** @internal */
28
+ export type RateLimitPolicy = {
29
+ type: 'rate-limit'
30
+ data: {
31
+ /** Number of times during each interval. */
32
+ count: number
33
+ /** Interval (in seconds). */
34
+ interval: number
35
+ }
36
+ }
37
+
38
+ export type Policy<amount = bigint> = OneOf<
39
+ | TokenAllowancePolicy<amount>
40
+ | GasLimitPolicy<amount>
41
+ | RateLimitPolicy
42
+ | CustomPolicy
43
+ >
@@ -25,4 +25,11 @@ export type MultiKeySigner = {
25
25
  }
26
26
  }
27
27
 
28
- export type Signer = OneOf<AccountSigner | KeySigner | MultiKeySigner>
28
+ /** @internal */
29
+ export type WalletSigner = {
30
+ type: 'wallet'
31
+ }
32
+
33
+ export type Signer = OneOf<
34
+ AccountSigner | KeySigner | MultiKeySigner | WalletSigner
35
+ >
@@ -67,10 +67,10 @@ export {
67
67
  } from '../utils/signature/serializeErc6492Signature.js'
68
68
 
69
69
  export {
70
- type IssuePermissionsParameters,
71
- type IssuePermissionsReturnType,
72
- issuePermissions,
73
- } from './erc7715/actions/issuePermissions.js'
70
+ type GrantPermissionsParameters,
71
+ type GrantPermissionsReturnType,
72
+ grantPermissions,
73
+ } from './erc7715/actions/grantPermissions.js'
74
74
  export {
75
75
  type WalletActionsErc7715,
76
76
  walletActionsErc7715,
package/index.ts CHANGED
@@ -1021,8 +1021,8 @@ export type {
1021
1021
  WalletCapabilitiesRecord,
1022
1022
  WalletCallReceipt,
1023
1023
  WalletGetCallsStatusReturnType,
1024
- WalletIssuePermissionsParameters,
1025
- WalletIssuePermissionsReturnType,
1024
+ WalletGrantPermissionsParameters,
1025
+ WalletGrantPermissionsReturnType,
1026
1026
  WalletSendCallsParameters,
1027
1027
  WalletPermissionCaveat,
1028
1028
  WalletPermission,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.16.1",
4
+ "version": "2.16.3",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
package/types/eip1193.ts CHANGED
@@ -131,28 +131,37 @@ export type WalletCallReceipt<quantity = Hex, status = Hex> = {
131
131
  transactionHash: Hex
132
132
  }
133
133
 
134
- export type WalletIssuePermissionsParameters = {
134
+ export type WalletGrantPermissionsParameters = {
135
135
  signer?:
136
136
  | {
137
137
  type: string
138
- data: unknown
138
+ data?: unknown | undefined
139
139
  }
140
140
  | undefined
141
141
  permissions: readonly {
142
- type: string
143
142
  data: unknown
144
- required: boolean
143
+ policies: readonly {
144
+ data: unknown
145
+ type: string
146
+ }[]
147
+ required?: boolean | undefined
148
+ type: string
145
149
  }[]
146
150
  expiry: number
147
151
  }
148
152
 
149
- export type WalletIssuePermissionsReturnType = {
153
+ export type WalletGrantPermissionsReturnType = {
150
154
  expiry: number
151
155
  factory?: `0x${string}` | undefined
152
156
  factoryData?: string | undefined
153
157
  grantedPermissions: readonly {
158
+ data: unknown
159
+ policies: readonly {
160
+ data: unknown
161
+ type: string
162
+ }[]
163
+ required?: boolean | undefined
154
164
  type: string
155
- data: any
156
165
  }[]
157
166
  permissionsContext: string
158
167
  signerData?:
@@ -1404,13 +1413,13 @@ export type WalletRpcSchema = [
1404
1413
  * @description Requests permissions from a wallet
1405
1414
  * @link https://eips.ethereum.org/EIPS/eip-7715
1406
1415
  * @example
1407
- * provider.request({ method: 'wallet_issuePermissions', params: [{ ... }] })
1416
+ * provider.request({ method: 'wallet_grantPermissions', params: [{ ... }] })
1408
1417
  * // => { ... }
1409
1418
  */
1410
1419
  {
1411
- Method: 'wallet_issuePermissions'
1412
- Parameters?: [WalletIssuePermissionsParameters]
1413
- ReturnType: Prettify<WalletIssuePermissionsReturnType>
1420
+ Method: 'wallet_grantPermissions'
1421
+ Parameters?: [WalletGrantPermissionsParameters]
1422
+ ReturnType: Prettify<WalletGrantPermissionsReturnType>
1414
1423
  },
1415
1424
  /**
1416
1425
  * @description Requests the given permissions from the user.
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.issuePermissions = issuePermissions;
4
- const toHex_js_1 = require("../../../utils/encoding/toHex.js");
5
- async function issuePermissions(client, parameters) {
6
- const { expiry, permissions, signer } = parameters;
7
- const result = await client.request({
8
- method: 'wallet_issuePermissions',
9
- params: [parseParameters({ expiry, permissions, signer })],
10
- }, { retryCount: 0 });
11
- return parseResult(result);
12
- }
13
- function parseParameters(parameters) {
14
- const { account, expiry, permissions, signer: signer_ } = parameters;
15
- const signer = (() => {
16
- if (!account && !signer_)
17
- return undefined;
18
- if (account) {
19
- if (typeof account === 'string')
20
- return {
21
- type: 'account',
22
- data: {
23
- id: account,
24
- },
25
- };
26
- return {
27
- type: 'account',
28
- data: {
29
- id: account.address,
30
- },
31
- };
32
- }
33
- return signer_;
34
- })();
35
- return {
36
- expiry,
37
- permissions: permissions.map((permission) => ({
38
- ...permission,
39
- ...(permission.data && typeof permission.data === 'object'
40
- ? {
41
- data: {
42
- ...permission.data,
43
- ...('amount' in permission.data &&
44
- typeof permission.data.amount === 'bigint'
45
- ? { amount: (0, toHex_js_1.numberToHex)(permission.data.amount) }
46
- : {}),
47
- },
48
- }
49
- : {}),
50
- required: permission.required ?? false,
51
- })),
52
- ...(signer ? { signer } : {}),
53
- };
54
- }
55
- function parseResult(result) {
56
- return {
57
- expiry: result.expiry,
58
- ...(result.factory ? { factory: result.factory } : {}),
59
- ...(result.factoryData ? { factoryData: result.factoryData } : {}),
60
- grantedPermissions: result.grantedPermissions.map((permission) => ({
61
- ...permission,
62
- data: {
63
- ...permission.data,
64
- ...('amount' in permission.data
65
- ? { amount: BigInt(permission.data.amount) }
66
- : {}),
67
- },
68
- })),
69
- permissionsContext: result.permissionsContext,
70
- ...(result.signerData ? { signerData: result.signerData } : {}),
71
- };
72
- }
73
- //# sourceMappingURL=issuePermissions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issuePermissions.js","sourceRoot":"","sources":["../../../../experimental/erc7715/actions/issuePermissions.ts"],"names":[],"mappings":"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"}
@@ -1,107 +0,0 @@
1
- import { numberToHex } from '../../../utils/encoding/toHex.js';
2
- /**
3
- * Request permissions from a wallet to perform actions on behalf of a user.
4
- *
5
- * - Docs: https://viem.sh/experimental/erc7715/issuePermissions
6
- *
7
- * @example
8
- * import { createWalletClient, custom } from 'viem'
9
- * import { mainnet } from 'viem/chains'
10
- * import { issuePermissions } from 'viem/experimental'
11
- *
12
- * const client = createWalletClient({
13
- * chain: mainnet,
14
- * transport: custom(window.ethereum),
15
- * })
16
- *
17
- * const result = await issuePermissions(client, {
18
- * expiry: 1716846083638,
19
- * permissions: [
20
- * {
21
- * type: 'contract-call',
22
- * data: {
23
- * address: '0x0000000000000000000000000000000000000000',
24
- * },
25
- * },
26
- * {
27
- * type: 'native-token-limit',
28
- * data: {
29
- * amount: 69420n,
30
- * },
31
- * required: true,
32
- * },
33
- * ],
34
- * })
35
- */
36
- export async function issuePermissions(client, parameters) {
37
- const { expiry, permissions, signer } = parameters;
38
- const result = await client.request({
39
- method: 'wallet_issuePermissions',
40
- params: [parseParameters({ expiry, permissions, signer })],
41
- }, { retryCount: 0 });
42
- return parseResult(result);
43
- }
44
- function parseParameters(parameters) {
45
- const { account, expiry, permissions, signer: signer_ } = parameters;
46
- const signer = (() => {
47
- if (!account && !signer_)
48
- return undefined;
49
- if (account) {
50
- // Address as signer.
51
- if (typeof account === 'string')
52
- return {
53
- type: 'account',
54
- data: {
55
- id: account,
56
- },
57
- };
58
- // Viem Account as signer.
59
- return {
60
- type: 'account',
61
- data: {
62
- id: account.address,
63
- },
64
- };
65
- }
66
- // ERC-7715 Signer as signer.
67
- return signer_;
68
- })();
69
- return {
70
- expiry,
71
- permissions: permissions.map((permission) => ({
72
- ...permission,
73
- ...(permission.data && typeof permission.data === 'object'
74
- ? {
75
- data: {
76
- ...permission.data,
77
- ...('amount' in permission.data &&
78
- typeof permission.data.amount === 'bigint'
79
- ? { amount: numberToHex(permission.data.amount) }
80
- : {}),
81
- },
82
- }
83
- : {}),
84
- required: permission.required ?? false,
85
- })),
86
- ...(signer ? { signer } : {}),
87
- };
88
- }
89
- function parseResult(result) {
90
- return {
91
- expiry: result.expiry,
92
- ...(result.factory ? { factory: result.factory } : {}),
93
- ...(result.factoryData ? { factoryData: result.factoryData } : {}),
94
- grantedPermissions: result.grantedPermissions.map((permission) => ({
95
- ...permission,
96
- data: {
97
- ...permission.data,
98
- ...('amount' in permission.data
99
- ? { amount: BigInt(permission.data.amount) }
100
- : {}),
101
- },
102
- })),
103
- permissionsContext: result.permissionsContext,
104
- ...(result.signerData ? { signerData: result.signerData } : {}),
105
- };
106
- }
107
- //# sourceMappingURL=issuePermissions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issuePermissions.js","sourceRoot":"","sources":["../../../../experimental/erc7715/actions/issuePermissions.ts"],"names":[],"mappings":"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"}