viem 2.21.13 → 2.21.14

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