viem 2.16.1 → 2.16.2

Sign up to get free protection for your applications and to get access to all the features.
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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"}