viem 2.16.1 → 2.16.2

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 (64) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/_cjs/chains/definitions/dchain.js +27 -0
  3. package/_cjs/chains/definitions/dchain.js.map +1 -0
  4. package/_cjs/chains/definitions/dchainTestnet.js +29 -0
  5. package/_cjs/chains/definitions/dchainTestnet.js.map +1 -0
  6. package/_cjs/chains/index.js +9 -5
  7. package/_cjs/chains/index.js.map +1 -1
  8. package/_cjs/errors/version.js +1 -1
  9. package/_cjs/experimental/erc7715/actions/grantPermissions.js +94 -0
  10. package/_cjs/experimental/erc7715/actions/grantPermissions.js.map +1 -0
  11. package/_cjs/experimental/erc7715/decorators/erc7715.js +2 -2
  12. package/_cjs/experimental/erc7715/types/policy.js +3 -0
  13. package/_cjs/experimental/erc7715/types/policy.js.map +1 -0
  14. package/_cjs/experimental/index.js +3 -3
  15. package/_esm/chains/definitions/dchain.js +24 -0
  16. package/_esm/chains/definitions/dchain.js.map +1 -0
  17. package/_esm/chains/definitions/dchainTestnet.js +26 -0
  18. package/_esm/chains/definitions/dchainTestnet.js.map +1 -0
  19. package/_esm/chains/index.js +2 -0
  20. package/_esm/chains/index.js.map +1 -1
  21. package/_esm/errors/version.js +1 -1
  22. package/_esm/experimental/erc7715/actions/grantPermissions.js +130 -0
  23. package/_esm/experimental/erc7715/actions/grantPermissions.js.map +1 -0
  24. package/_esm/experimental/erc7715/decorators/erc7715.js +3 -3
  25. package/_esm/experimental/erc7715/types/policy.js +2 -0
  26. package/_esm/experimental/erc7715/types/policy.js.map +1 -0
  27. package/_esm/experimental/index.js +1 -1
  28. package/_types/chains/definitions/dchain.d.ts +1049 -0
  29. package/_types/chains/definitions/dchain.d.ts.map +1 -0
  30. package/_types/chains/definitions/dchainTestnet.d.ts +1049 -0
  31. package/_types/chains/definitions/dchainTestnet.d.ts.map +1 -0
  32. package/_types/chains/index.d.ts +2 -0
  33. package/_types/chains/index.d.ts.map +1 -1
  34. package/_types/errors/version.d.ts +1 -1
  35. package/_types/experimental/erc7715/actions/{issuePermissions.d.ts → grantPermissions.d.ts} +18 -16
  36. package/_types/experimental/erc7715/actions/{issuePermissions.d.ts.map → grantPermissions.d.ts.map} +1 -1
  37. package/_types/experimental/erc7715/decorators/erc7715.d.ts +5 -5
  38. package/_types/experimental/erc7715/types/permission.d.ts +24 -20
  39. package/_types/experimental/erc7715/types/permission.d.ts.map +1 -1
  40. package/_types/experimental/erc7715/types/policy.d.ts +36 -0
  41. package/_types/experimental/erc7715/types/policy.d.ts.map +1 -0
  42. package/_types/experimental/erc7715/types/signer.d.ts +5 -1
  43. package/_types/experimental/erc7715/types/signer.d.ts.map +1 -1
  44. package/_types/experimental/index.d.ts +1 -1
  45. package/_types/index.d.ts +1 -1
  46. package/_types/types/eip1193.d.ts +19 -10
  47. package/_types/types/eip1193.d.ts.map +1 -1
  48. package/chains/definitions/dchain.ts +24 -0
  49. package/chains/definitions/dchainTestnet.ts +27 -0
  50. package/chains/index.ts +2 -0
  51. package/errors/version.ts +1 -1
  52. package/experimental/erc7715/actions/{issuePermissions.ts → grantPermissions.ts} +82 -54
  53. package/experimental/erc7715/decorators/erc7715.ts +11 -11
  54. package/experimental/erc7715/types/permission.ts +28 -26
  55. package/experimental/erc7715/types/policy.ts +43 -0
  56. package/experimental/erc7715/types/signer.ts +8 -1
  57. package/experimental/index.ts +4 -4
  58. package/index.ts +2 -2
  59. package/package.json +1 -1
  60. package/types/eip1193.ts +19 -10
  61. package/_cjs/experimental/erc7715/actions/issuePermissions.js +0 -73
  62. package/_cjs/experimental/erc7715/actions/issuePermissions.js.map +0 -1
  63. package/_esm/experimental/erc7715/actions/issuePermissions.js +0 -107
  64. package/_esm/experimental/erc7715/actions/issuePermissions.js.map +0 -1
@@ -2,14 +2,14 @@ import type { Address } from 'abitype'
2
2
  import type { Client } from '../../../clients/createClient.js'
3
3
  import type { Transport } from '../../../clients/transports/createTransport.js'
4
4
  import type { Account } from '../../../types/account.js'
5
- import type { WalletIssuePermissionsReturnType } from '../../../types/eip1193.js'
5
+ import type { WalletGrantPermissionsReturnType } from '../../../types/eip1193.js'
6
6
  import type { Hex } from '../../../types/misc.js'
7
7
  import type { OneOf } from '../../../types/utils.js'
8
- import { numberToHex } from '../../../utils/encoding/toHex.js'
8
+ import { numberToHex, parseAccount } from '../../../utils/index.js'
9
9
  import type { Permission } from '../types/permission.js'
10
10
  import type { Signer } from '../types/signer.js'
11
11
 
12
- export type IssuePermissionsParameters = {
12
+ export type GrantPermissionsParameters = {
13
13
  /** Timestamp (in seconds) that specifies the time by which this session MUST expire. */
14
14
  expiry: number
15
15
  /** Set of permissions to grant to the user. */
@@ -25,7 +25,7 @@ export type IssuePermissionsParameters = {
25
25
  }
26
26
  >
27
27
 
28
- export type IssuePermissionsReturnType = {
28
+ export type GrantPermissionsReturnType = {
29
29
  /** Timestamp (in seconds) that specifies the time by which this session MUST expire. */
30
30
  expiry: number
31
31
  /** ERC-4337 Factory to deploy smart contract account. */
@@ -33,7 +33,7 @@ export type IssuePermissionsReturnType = {
33
33
  /** Calldata to use when calling the ERC-4337 Factory. */
34
34
  factoryData?: string | undefined
35
35
  /** Set of granted permissions. */
36
- grantedPermissions: Omit<Permission, 'required'>[]
36
+ grantedPermissions: readonly Permission[]
37
37
  /** Permissions identifier. */
38
38
  permissionsContext: string
39
39
  /** Signer attached to the permissions. */
@@ -48,76 +48,80 @@ export type IssuePermissionsReturnType = {
48
48
  /**
49
49
  * Request permissions from a wallet to perform actions on behalf of a user.
50
50
  *
51
- * - Docs: https://viem.sh/experimental/erc7715/issuePermissions
51
+ * - Docs: https://viem.sh/experimental/erc7715/grantPermissions
52
52
  *
53
53
  * @example
54
54
  * import { createWalletClient, custom } from 'viem'
55
55
  * import { mainnet } from 'viem/chains'
56
- * import { issuePermissions } from 'viem/experimental'
56
+ * import { grantPermissions } from 'viem/experimental'
57
57
  *
58
58
  * const client = createWalletClient({
59
59
  * chain: mainnet,
60
60
  * transport: custom(window.ethereum),
61
61
  * })
62
62
  *
63
- * const result = await issuePermissions(client, {
63
+ * const result = await grantPermissions(client, {
64
64
  * expiry: 1716846083638,
65
65
  * permissions: [
66
66
  * {
67
- * type: 'contract-call',
67
+ * type: 'native-token-transfer',
68
68
  * data: {
69
- * address: '0x0000000000000000000000000000000000000000',
70
- * },
71
- * },
72
- * {
73
- * type: 'native-token-limit',
74
- * data: {
75
- * amount: 69420n,
69
+ * ticker: 'ETH',
76
70
  * },
71
+ * policies: [
72
+ * {
73
+ * type: 'token-allowance',
74
+ * data: {
75
+ * allowance: parseEther('1'),
76
+ * },
77
+ * }
78
+ * ],
77
79
  * required: true,
78
80
  * },
79
81
  * ],
80
82
  * })
81
83
  */
82
- export async function issuePermissions(
84
+ export async function grantPermissions(
83
85
  client: Client<Transport>,
84
- parameters: IssuePermissionsParameters,
85
- ): Promise<IssuePermissionsReturnType> {
86
- const { expiry, permissions, signer } = parameters
86
+ parameters: GrantPermissionsParameters,
87
+ ): Promise<GrantPermissionsReturnType> {
88
+ const { account, expiry, permissions, signer } = parameters
87
89
  const result = await client.request(
88
90
  {
89
- method: 'wallet_issuePermissions',
90
- params: [parseParameters({ expiry, permissions, signer })],
91
+ method: 'wallet_grantPermissions',
92
+ params: [
93
+ formatParameters({ account, expiry, permissions, signer } as any),
94
+ ],
91
95
  },
92
96
  { retryCount: 0 },
93
97
  )
94
- return parseResult(result) as IssuePermissionsReturnType
98
+ return formatRequest(result) as GrantPermissionsReturnType
95
99
  }
96
100
 
97
- function parseParameters(parameters: IssuePermissionsParameters) {
98
- const { account, expiry, permissions, signer: signer_ } = parameters
101
+ function formatParameters(parameters: GrantPermissionsParameters) {
102
+ const { expiry, permissions, signer: signer_ } = parameters
103
+
104
+ const account = parameters.account
105
+ ? parseAccount(parameters.account)
106
+ : undefined
99
107
 
100
108
  const signer = (() => {
101
109
  if (!account && !signer_) return undefined
102
110
 
103
- if (account) {
104
- // Address as signer.
105
- if (typeof account === 'string')
106
- return {
107
- type: 'account',
108
- data: {
109
- id: account,
110
- },
111
- }
111
+ // JSON-RPC Account as signer.
112
+ if (account?.type === 'json-rpc')
113
+ return {
114
+ type: 'wallet',
115
+ }
112
116
 
113
- // Viem Account as signer.
117
+ // Local Account as signer.
118
+ if (account?.type === 'local')
114
119
  return {
115
120
  type: 'account',
116
121
  data: {
117
122
  id: account.address,
118
123
  },
119
124
  }
120
- }
121
125
 
122
126
  // ERC-7715 Signer as signer.
123
127
  return signer_
@@ -127,36 +131,60 @@ function parseParameters(parameters: IssuePermissionsParameters) {
127
131
  expiry,
128
132
  permissions: permissions.map((permission) => ({
129
133
  ...permission,
130
- ...(permission.data && typeof permission.data === 'object'
131
- ? {
132
- data: {
133
- ...permission.data,
134
- ...('amount' in permission.data &&
135
- typeof permission.data.amount === 'bigint'
136
- ? { amount: numberToHex(permission.data.amount) }
137
- : {}),
138
- },
139
- }
140
- : {}),
134
+ policies: permission.policies.map((policy) => {
135
+ const data = (() => {
136
+ if (policy.type === 'token-allowance')
137
+ return {
138
+ allowance: numberToHex(policy.data.allowance),
139
+ }
140
+ if (policy.type === 'gas-limit')
141
+ return {
142
+ limit: numberToHex(policy.data.limit),
143
+ }
144
+ return policy.data
145
+ })()
146
+
147
+ return {
148
+ data,
149
+ type:
150
+ typeof policy.type === 'string' ? policy.type : policy.type.custom,
151
+ }
152
+ }),
141
153
  required: permission.required ?? false,
154
+ type:
155
+ typeof permission.type === 'string'
156
+ ? permission.type
157
+ : permission.type.custom,
142
158
  })),
143
159
  ...(signer ? { signer } : {}),
144
160
  }
145
161
  }
146
162
 
147
- function parseResult(result: WalletIssuePermissionsReturnType) {
163
+ function formatRequest(result: WalletGrantPermissionsReturnType) {
148
164
  return {
149
165
  expiry: result.expiry,
150
166
  ...(result.factory ? { factory: result.factory } : {}),
151
167
  ...(result.factoryData ? { factoryData: result.factoryData } : {}),
152
168
  grantedPermissions: result.grantedPermissions.map((permission) => ({
153
169
  ...permission,
154
- data: {
155
- ...permission.data,
156
- ...('amount' in permission.data
157
- ? { amount: BigInt(permission.data.amount) }
158
- : {}),
159
- },
170
+ policies: permission.policies.map((policy) => {
171
+ const data = (() => {
172
+ if (policy.type === 'token-allowance')
173
+ return {
174
+ allowance: BigInt((policy.data as any).allowance),
175
+ }
176
+ if (policy.type === 'gas-limit')
177
+ return {
178
+ limit: BigInt((policy.data as any).limit),
179
+ }
180
+ return policy.data
181
+ })()
182
+
183
+ return {
184
+ data,
185
+ type: policy.type,
186
+ }
187
+ }),
160
188
  })),
161
189
  permissionsContext: result.permissionsContext,
162
190
  ...(result.signerData ? { signerData: result.signerData } : {}),
@@ -3,16 +3,16 @@ import type { Transport } from '../../../clients/transports/createTransport.js'
3
3
  import type { Account } from '../../../types/account.js'
4
4
  import type { Chain } from '../../../types/chain.js'
5
5
  import {
6
- type IssuePermissionsParameters,
7
- type IssuePermissionsReturnType,
8
- issuePermissions,
9
- } from '../actions/issuePermissions.js'
6
+ type GrantPermissionsParameters,
7
+ type GrantPermissionsReturnType,
8
+ grantPermissions,
9
+ } from '../actions/grantPermissions.js'
10
10
 
11
11
  export type WalletActionsErc7715 = {
12
12
  /**
13
13
  * Request permissions from a wallet to perform actions on behalf of a user.
14
14
  *
15
- * - Docs: https://viem.sh/experimental/erc7715/issuePermissions
15
+ * - Docs: https://viem.sh/experimental/erc7715/grantPermissions
16
16
  *
17
17
  * @example
18
18
  * import { createWalletClient, custom } from 'viem'
@@ -24,7 +24,7 @@ export type WalletActionsErc7715 = {
24
24
  * transport: custom(window.ethereum),
25
25
  * }).extend(walletActionsErc7715())
26
26
  *
27
- * const result = await client.issuePermissions({
27
+ * const result = await client.grantPermissions({
28
28
  * expiry: 1716846083638,
29
29
  * permissions: [
30
30
  * {
@@ -43,9 +43,9 @@ export type WalletActionsErc7715 = {
43
43
  * ],
44
44
  * })
45
45
  */
46
- issuePermissions: (
47
- parameters: IssuePermissionsParameters,
48
- ) => Promise<IssuePermissionsReturnType>
46
+ grantPermissions: (
47
+ parameters: GrantPermissionsParameters,
48
+ ) => Promise<GrantPermissionsReturnType>
49
49
  }
50
50
 
51
51
  /**
@@ -63,7 +63,7 @@ export type WalletActionsErc7715 = {
63
63
  * transport: http(),
64
64
  * }).extend(walletActionsErc7715())
65
65
  *
66
- * const result = await walletClient.issuePermissions({...})
66
+ * const result = await walletClient.grantPermissions({...})
67
67
  */
68
68
  export function walletActionsErc7715() {
69
69
  return <
@@ -74,7 +74,7 @@ export function walletActionsErc7715() {
74
74
  client: Client<transport, chain, account>,
75
75
  ): WalletActionsErc7715 => {
76
76
  return {
77
- issuePermissions: (parameters) => issuePermissions(client, parameters),
77
+ grantPermissions: (parameters) => grantPermissions(client, parameters),
78
78
  }
79
79
  }
80
80
  }
@@ -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.2",
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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"}