viem 2.21.13 → 2.21.14

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # viem
2
2
 
3
+ ## 2.21.14
4
+
5
+ ### Patch Changes
6
+
7
+ - [`c7c737a4`](https://github.com/wevm/viem/commit/c7c737a472a7b5a46b12340071f9e9480d3975dd) Thanks [@jxom](https://github.com/jxom)! - Added `delegate` parameter to `signAuthorization`.
8
+
3
9
  ## 2.21.13
4
10
 
5
11
  ### Patch Changes
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '2.21.13';
4
+ exports.version = '2.21.14';
5
5
  //# sourceMappingURL=version.js.map
@@ -5,14 +5,16 @@ const parseAccount_js_1 = require("../../../accounts/utils/parseAccount.js");
5
5
  const getChainId_js_1 = require("../../../actions/public/getChainId.js");
6
6
  const getTransactionCount_js_1 = require("../../../actions/public/getTransactionCount.js");
7
7
  const account_js_1 = require("../../../errors/account.js");
8
+ const isAddressEqual_js_1 = require("../../../utils/address/isAddressEqual.js");
8
9
  const getAction_js_1 = require("../../../utils/getAction.js");
9
10
  async function signAuthorization(client, parameters) {
10
- const { account: account_ = client.account, contractAddress, chainId, nonce, } = parameters;
11
+ const { account: account_ = client.account, contractAddress, chainId, nonce, delegate: delegate_, } = parameters;
11
12
  if (!account_)
12
13
  throw new account_js_1.AccountNotFoundError({
13
14
  docsPath: '/experimental/eip7702/signAuthorization',
14
15
  });
15
16
  const account = (0, parseAccount_js_1.parseAccount)(account_);
17
+ const delegate = delegate_ ? (0, parseAccount_js_1.parseAccount)(delegate_) : undefined;
16
18
  if (!account.experimental_signAuthorization)
17
19
  throw new account_js_1.AccountTypeNotSupportedError({
18
20
  docsPath: '/experimental/eip7702/signAuthorization',
@@ -35,6 +37,8 @@ async function signAuthorization(client, parameters) {
35
37
  address: account.address,
36
38
  blockTag: 'pending',
37
39
  });
40
+ if (!delegate || (0, isAddressEqual_js_1.isAddressEqual)(account.address, delegate.address))
41
+ authorization.nonce += 1;
38
42
  }
39
43
  return account.experimental_signAuthorization(authorization);
40
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signAuthorization.js","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":";;AAmFA,8CAoDC;AAtID,6EAGgD;AAKhD,yEAAkE;AAClE,2FAAoF;AAGpF,2DAKmC;AAMnC,8DAAuD;AA2DhD,KAAK,UAAU,iBAAiB,CAIrC,MAAyC,EACzC,UAAgD;IAEhD,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,eAAe,EACf,OAAO,EACP,KAAK,GACN,GAAG,UAAU,CAAA;IAEd,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,iCAAoB,CAAC;YAC7B,QAAQ,EAAE,yCAAyC;SACpD,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,IAAA,8BAAY,EAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,OAAO,CAAC,8BAA8B;QACzC,MAAM,IAAI,yCAA4B,CAAC;YACrC,QAAQ,EAAE,yCAAyC;YACnD,YAAY,EAAE;gBACZ,oEAAoE;aACrE;YACD,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IAEJ,MAAM,aAAa,GAAG;QACpB,eAAe;QACf,OAAO;QACP,KAAK;KACW,CAAA;IAElB,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,WAAW;QAC9C,aAAa,CAAC,OAAO;YACnB,MAAM,CAAC,KAAK,EAAE,EAAE;gBAChB,CAAC,MAAM,IAAA,wBAAS,EAAC,MAAM,EAAE,0BAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3D,IAAI,OAAO,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC/C,aAAa,CAAC,KAAK,GAAG,MAAM,IAAA,wBAAS,EACnC,MAAM,EACN,4CAAmB,EACnB,qBAAqB,CACtB,CAAC;YACA,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"file":"signAuthorization.js","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":";;AAyFA,8CAyDC;AAhJD,6EAGgD;AAKhD,yEAAkE;AAClE,2FAAoF;AAGpF,2DAKmC;AAKnC,gFAAyE;AAEzE,8DAAuD;AA+DhD,KAAK,UAAU,iBAAiB,CAIrC,MAAyC,EACzC,UAAgD;IAEhD,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,eAAe,EACf,OAAO,EACP,KAAK,EACL,QAAQ,EAAE,SAAS,GACpB,GAAG,UAAU,CAAA;IAEd,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,iCAAoB,CAAC;YAC7B,QAAQ,EAAE,yCAAyC;SACpD,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,IAAA,8BAAY,EAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,8BAAY,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhE,IAAI,CAAC,OAAO,CAAC,8BAA8B;QACzC,MAAM,IAAI,yCAA4B,CAAC;YACrC,QAAQ,EAAE,yCAAyC;YACnD,YAAY,EAAE;gBACZ,oEAAoE;aACrE;YACD,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IAEJ,MAAM,aAAa,GAAG;QACpB,eAAe;QACf,OAAO;QACP,KAAK;KACW,CAAA;IAElB,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,WAAW;QAC9C,aAAa,CAAC,OAAO;YACnB,MAAM,CAAC,KAAK,EAAE,EAAE;gBAChB,CAAC,MAAM,IAAA,wBAAS,EAAC,MAAM,EAAE,0BAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3D,IAAI,OAAO,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC/C,aAAa,CAAC,KAAK,GAAG,MAAM,IAAA,wBAAS,EACnC,MAAM,EACN,4CAAmB,EACnB,qBAAqB,CACtB,CAAC;YACA,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,IAAI,IAAA,kCAAc,EAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;YAChE,aAAa,CAAC,KAAK,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAA;AAC9D,CAAC"}
@@ -1,2 +1,2 @@
1
- export const version = '2.21.13';
1
+ export const version = '2.21.14';
2
2
  //# sourceMappingURL=version.js.map
@@ -2,6 +2,7 @@ import { parseAccount, } from '../../../accounts/utils/parseAccount.js';
2
2
  import { getChainId } from '../../../actions/public/getChainId.js';
3
3
  import { getTransactionCount } from '../../../actions/public/getTransactionCount.js';
4
4
  import { AccountNotFoundError, AccountTypeNotSupportedError, } from '../../../errors/account.js';
5
+ import { isAddressEqual } from '../../../utils/address/isAddressEqual.js';
5
6
  import { getAction } from '../../../utils/getAction.js';
6
7
  /**
7
8
  * Signs an [EIP-7702 Authorization](https://eips.ethereum.org/EIPS/eip-7702) object.
@@ -46,12 +47,13 @@ import { getAction } from '../../../utils/getAction.js';
46
47
  * })
47
48
  */
48
49
  export async function signAuthorization(client, parameters) {
49
- const { account: account_ = client.account, contractAddress, chainId, nonce, } = parameters;
50
+ const { account: account_ = client.account, contractAddress, chainId, nonce, delegate: delegate_, } = parameters;
50
51
  if (!account_)
51
52
  throw new AccountNotFoundError({
52
53
  docsPath: '/experimental/eip7702/signAuthorization',
53
54
  });
54
55
  const account = parseAccount(account_);
56
+ const delegate = delegate_ ? parseAccount(delegate_) : undefined;
55
57
  if (!account.experimental_signAuthorization)
56
58
  throw new AccountTypeNotSupportedError({
57
59
  docsPath: '/experimental/eip7702/signAuthorization',
@@ -74,6 +76,8 @@ export async function signAuthorization(client, parameters) {
74
76
  address: account.address,
75
77
  blockTag: 'pending',
76
78
  });
79
+ if (!delegate || isAddressEqual(account.address, delegate.address))
80
+ authorization.nonce += 1;
77
81
  }
78
82
  return account.experimental_signAuthorization(authorization);
79
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signAuthorization.js","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,GACb,MAAM,yCAAyC,CAAA;AAKhD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAA;AAGpF,OAAO,EACL,oBAAoB,EAEpB,4BAA4B,GAE7B,MAAM,4BAA4B,CAAA;AAMnC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAiBvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAIrC,MAAyC,EACzC,UAAgD;IAEhD,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,eAAe,EACf,OAAO,EACP,KAAK,GACN,GAAG,UAAU,CAAA;IAEd,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,oBAAoB,CAAC;YAC7B,QAAQ,EAAE,yCAAyC;SACpD,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,OAAO,CAAC,8BAA8B;QACzC,MAAM,IAAI,4BAA4B,CAAC;YACrC,QAAQ,EAAE,yCAAyC;YACnD,YAAY,EAAE;gBACZ,oEAAoE;aACrE;YACD,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IAEJ,MAAM,aAAa,GAAG;QACpB,eAAe;QACf,OAAO;QACP,KAAK;KACW,CAAA;IAElB,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,WAAW;QAC9C,aAAa,CAAC,OAAO;YACnB,MAAM,CAAC,KAAK,EAAE,EAAE;gBAChB,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3D,IAAI,OAAO,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC/C,aAAa,CAAC,KAAK,GAAG,MAAM,SAAS,CACnC,MAAM,EACN,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;YACA,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"file":"signAuthorization.js","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,YAAY,GACb,MAAM,yCAAyC,CAAA;AAKhD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAA;AAGpF,OAAO,EACL,oBAAoB,EAEpB,4BAA4B,GAE7B,MAAM,4BAA4B,CAAA;AAKnC,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAqBvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAIrC,MAAyC,EACzC,UAAgD;IAEhD,MAAM,EACJ,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,EAClC,eAAe,EACf,OAAO,EACP,KAAK,EACL,QAAQ,EAAE,SAAS,GACpB,GAAG,UAAU,CAAA;IAEd,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,oBAAoB,CAAC;YAC7B,QAAQ,EAAE,yCAAyC;SACpD,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhE,IAAI,CAAC,OAAO,CAAC,8BAA8B;QACzC,MAAM,IAAI,4BAA4B,CAAC;YACrC,QAAQ,EAAE,yCAAyC;YACnD,YAAY,EAAE;gBACZ,oEAAoE;aACrE;YACD,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;IAEJ,MAAM,aAAa,GAAG;QACpB,eAAe;QACf,OAAO;QACP,KAAK;KACW,CAAA;IAElB,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,WAAW;QAC9C,aAAa,CAAC,OAAO;YACnB,MAAM,CAAC,KAAK,EAAE,EAAE;gBAChB,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3D,IAAI,OAAO,aAAa,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC/C,aAAa,CAAC,KAAK,GAAG,MAAM,SAAS,CACnC,MAAM,EACN,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;YACA,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;YAChE,aAAa,CAAC,KAAK,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAA;AAC9D,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "2.21.13";
1
+ export declare const version = "2.21.14";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,4 @@
1
+ import type { Address } from 'abitype';
1
2
  import type { Account } from '../../../accounts/types.js';
2
3
  import { type ParseAccountErrorType } from '../../../accounts/utils/parseAccount.js';
3
4
  import type { SignAuthorizationErrorType as SignAuthorizationErrorType_account, SignAuthorizationReturnType as SignAuthorizationReturnType_account } from '../../../accounts/utils/signAuthorization.js';
@@ -10,7 +11,10 @@ import type { Chain } from '../../../types/chain.js';
10
11
  import type { PartialBy } from '../../../types/utils.js';
11
12
  import type { RequestErrorType } from '../../../utils/buildRequest.js';
12
13
  import type { Authorization } from '../types/authorization.js';
13
- export type SignAuthorizationParameters<account extends Account | undefined = Account | undefined> = GetAccountParameter<account> & PartialBy<Authorization, 'chainId' | 'nonce'>;
14
+ export type SignAuthorizationParameters<account extends Account | undefined = Account | undefined> = GetAccountParameter<account> & PartialBy<Authorization, 'chainId' | 'nonce'> & {
15
+ /** Delegate of the EIP-7702 Authorization Transaction. @default `account` */
16
+ delegate?: Address | Account | undefined;
17
+ };
14
18
  export type SignAuthorizationReturnType = SignAuthorizationReturnType_account;
15
19
  export type SignAuthorizationErrorType = ParseAccountErrorType | RequestErrorType | AccountNotFoundErrorType | AccountTypeNotSupportedErrorType | SignAuthorizationErrorType_account | ErrorType;
16
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"signAuthorization.d.ts","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EACV,0BAA0B,IAAI,kCAAkC,EAChE,2BAA2B,IAAI,mCAAmC,EACnE,MAAM,8CAA8C,CAAA;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAC/E,OAAO,EAEL,KAAK,wBAAwB,EAE7B,KAAK,gCAAgC,EACtC,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,IACvD,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,aAAa,EAAE,SAAS,GAAG,OAAO,CAAC,CAAA;AAEhF,MAAM,MAAM,2BAA2B,GAAG,mCAAmC,CAAA;AAE7E,MAAM,MAAM,0BAA0B,GAClC,qBAAqB,GACrB,gBAAgB,GAChB,wBAAwB,GACxB,gCAAgC,GAChC,kCAAkC,GAClC,SAAS,CAAA;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC/B,OAAO,SAAS,OAAO,GAAG,SAAS,EAEnC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC/C,OAAO,CAAC,2BAA2B,CAAC,CA8CtC"}
1
+ {"version":3,"file":"signAuthorization.d.ts","sourceRoot":"","sources":["../../../../experimental/eip7702/actions/signAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EACV,0BAA0B,IAAI,kCAAkC,EAChE,2BAA2B,IAAI,mCAAmC,EACnE,MAAM,8CAA8C,CAAA;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAC/E,OAAO,EAEL,KAAK,wBAAwB,EAE7B,KAAK,gCAAgC,EACtC,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,IACvD,mBAAmB,CAAC,OAAO,CAAC,GAC9B,SAAS,CAAC,aAAa,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IAC9C,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;CACzC,CAAA;AAEH,MAAM,MAAM,2BAA2B,GAAG,mCAAmC,CAAA;AAE7E,MAAM,MAAM,0BAA0B,GAClC,qBAAqB,GACrB,gBAAgB,GAChB,wBAAwB,GACxB,gCAAgC,GAChC,kCAAkC,GAClC,SAAS,CAAA;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC/B,OAAO,SAAS,OAAO,GAAG,SAAS,EAEnC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,EACzC,UAAU,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC/C,OAAO,CAAC,2BAA2B,CAAC,CAmDtC"}
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.21.13'
1
+ export const version = '2.21.14'
@@ -1,3 +1,4 @@
1
+ import type { Address } from 'abitype'
1
2
  import type { Account } from '../../../accounts/types.js'
2
3
  import {
3
4
  type ParseAccountErrorType,
@@ -21,13 +22,18 @@ import type { ErrorType } from '../../../errors/utils.js'
21
22
  import type { GetAccountParameter } from '../../../types/account.js'
22
23
  import type { Chain } from '../../../types/chain.js'
23
24
  import type { PartialBy } from '../../../types/utils.js'
25
+ import { isAddressEqual } from '../../../utils/address/isAddressEqual.js'
24
26
  import type { RequestErrorType } from '../../../utils/buildRequest.js'
25
27
  import { getAction } from '../../../utils/getAction.js'
26
28
  import type { Authorization } from '../types/authorization.js'
27
29
 
28
30
  export type SignAuthorizationParameters<
29
31
  account extends Account | undefined = Account | undefined,
30
- > = GetAccountParameter<account> & PartialBy<Authorization, 'chainId' | 'nonce'>
32
+ > = GetAccountParameter<account> &
33
+ PartialBy<Authorization, 'chainId' | 'nonce'> & {
34
+ /** Delegate of the EIP-7702 Authorization Transaction. @default `account` */
35
+ delegate?: Address | Account | undefined
36
+ }
31
37
 
32
38
  export type SignAuthorizationReturnType = SignAuthorizationReturnType_account
33
39
 
@@ -93,6 +99,7 @@ export async function signAuthorization<
93
99
  contractAddress,
94
100
  chainId,
95
101
  nonce,
102
+ delegate: delegate_,
96
103
  } = parameters
97
104
 
98
105
  if (!account_)
@@ -101,6 +108,8 @@ export async function signAuthorization<
101
108
  })
102
109
  const account = parseAccount(account_)
103
110
 
111
+ const delegate = delegate_ ? parseAccount(delegate_) : undefined
112
+
104
113
  if (!account.experimental_signAuthorization)
105
114
  throw new AccountTypeNotSupportedError({
106
115
  docsPath: '/experimental/eip7702/signAuthorization',
@@ -130,6 +139,8 @@ export async function signAuthorization<
130
139
  address: account.address,
131
140
  blockTag: 'pending',
132
141
  })
142
+ if (!delegate || isAddressEqual(account.address, delegate.address))
143
+ authorization.nonce += 1
133
144
  }
134
145
 
135
146
  return account.experimental_signAuthorization(authorization)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.21.13",
4
+ "version": "2.21.14",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",