viem 0.0.0-w-20230711215150 → 0.0.0-w-20230720004551

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 (97) hide show
  1. package/dist/cjs/accounts/utils/signTypedData.js +2 -1
  2. package/dist/cjs/accounts/utils/signTypedData.js.map +1 -1
  3. package/dist/cjs/actions/ens/getEnsAddress.js +4 -7
  4. package/dist/cjs/actions/ens/getEnsAddress.js.map +1 -1
  5. package/dist/cjs/actions/ens/getEnsName.js +6 -20
  6. package/dist/cjs/actions/ens/getEnsName.js.map +1 -1
  7. package/dist/cjs/actions/ens/getEnsText.js +31 -23
  8. package/dist/cjs/actions/ens/getEnsText.js.map +1 -1
  9. package/dist/cjs/actions/wallet/signTypedData.js +6 -15
  10. package/dist/cjs/actions/wallet/signTypedData.js.map +1 -1
  11. package/dist/cjs/chains/index.js +5 -2
  12. package/dist/cjs/chains/index.js.map +1 -1
  13. package/dist/cjs/constants/abis.js +30 -2
  14. package/dist/cjs/constants/abis.js.map +1 -1
  15. package/dist/cjs/errors/version.js +1 -1
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/utils/ens/errors.js +24 -0
  18. package/dist/cjs/utils/ens/errors.js.map +1 -0
  19. package/dist/cjs/utils/signature/hashTypedData.js +5 -6
  20. package/dist/cjs/utils/signature/hashTypedData.js.map +1 -1
  21. package/dist/cjs/utils/signature/recoverTypedDataAddress.js +2 -1
  22. package/dist/cjs/utils/signature/recoverTypedDataAddress.js.map +1 -1
  23. package/dist/cjs/utils/signature/verifyTypedData.js +2 -1
  24. package/dist/cjs/utils/signature/verifyTypedData.js.map +1 -1
  25. package/dist/cjs/utils/typedData.js +5 -6
  26. package/dist/cjs/utils/typedData.js.map +1 -1
  27. package/dist/esm/accounts/utils/signTypedData.js +3 -2
  28. package/dist/esm/accounts/utils/signTypedData.js.map +1 -1
  29. package/dist/esm/actions/ens/getEnsAddress.js +5 -8
  30. package/dist/esm/actions/ens/getEnsAddress.js.map +1 -1
  31. package/dist/esm/actions/ens/getEnsName.js +6 -21
  32. package/dist/esm/actions/ens/getEnsName.js.map +1 -1
  33. package/dist/esm/actions/ens/getEnsText.js +32 -24
  34. package/dist/esm/actions/ens/getEnsText.js.map +1 -1
  35. package/dist/esm/actions/wallet/signTypedData.js +6 -15
  36. package/dist/esm/actions/wallet/signTypedData.js.map +1 -1
  37. package/dist/esm/chains/index.js +3 -0
  38. package/dist/esm/chains/index.js.map +1 -1
  39. package/dist/esm/constants/abis.js +29 -1
  40. package/dist/esm/constants/abis.js.map +1 -1
  41. package/dist/esm/errors/version.js +1 -1
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/utils/ens/errors.js +25 -0
  44. package/dist/esm/utils/ens/errors.js.map +1 -0
  45. package/dist/esm/utils/signature/hashTypedData.js +5 -6
  46. package/dist/esm/utils/signature/hashTypedData.js.map +1 -1
  47. package/dist/esm/utils/signature/recoverTypedDataAddress.js +2 -1
  48. package/dist/esm/utils/signature/recoverTypedDataAddress.js.map +1 -1
  49. package/dist/esm/utils/signature/verifyTypedData.js +2 -1
  50. package/dist/esm/utils/signature/verifyTypedData.js.map +1 -1
  51. package/dist/esm/utils/typedData.js +5 -6
  52. package/dist/esm/utils/typedData.js.map +1 -1
  53. package/dist/types/accounts/types.d.ts +1 -3
  54. package/dist/types/accounts/types.d.ts.map +1 -1
  55. package/dist/types/accounts/utils/signTypedData.d.ts +2 -6
  56. package/dist/types/accounts/utils/signTypedData.d.ts.map +1 -1
  57. package/dist/types/actions/ens/getEnsAddress.d.ts.map +1 -1
  58. package/dist/types/actions/ens/getEnsName.d.ts.map +1 -1
  59. package/dist/types/actions/ens/getEnsText.d.ts.map +1 -1
  60. package/dist/types/actions/wallet/signTypedData.d.ts +2 -6
  61. package/dist/types/actions/wallet/signTypedData.d.ts.map +1 -1
  62. package/dist/types/chains/index.d.ts +160 -37
  63. package/dist/types/chains/index.d.ts.map +1 -1
  64. package/dist/types/constants/abis.d.ts +39 -1
  65. package/dist/types/constants/abis.d.ts.map +1 -1
  66. package/dist/types/errors/version.d.ts +1 -1
  67. package/dist/types/index.d.ts +1 -1
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/types/types/typedData.d.ts +21 -43
  70. package/dist/types/types/typedData.d.ts.map +1 -1
  71. package/dist/types/utils/ens/errors.d.ts +2 -0
  72. package/dist/types/utils/ens/errors.d.ts.map +1 -0
  73. package/dist/types/utils/signature/hashTypedData.d.ts +2 -6
  74. package/dist/types/utils/signature/hashTypedData.d.ts.map +1 -1
  75. package/dist/types/utils/signature/recoverTypedDataAddress.d.ts +2 -6
  76. package/dist/types/utils/signature/recoverTypedDataAddress.d.ts.map +1 -1
  77. package/dist/types/utils/signature/verifyTypedData.d.ts +2 -6
  78. package/dist/types/utils/signature/verifyTypedData.d.ts.map +1 -1
  79. package/dist/types/utils/typedData.d.ts +1 -3
  80. package/dist/types/utils/typedData.d.ts.map +1 -1
  81. package/package.json +3 -3
  82. package/src/accounts/types.ts +3 -4
  83. package/src/accounts/utils/signTypedData.ts +12 -17
  84. package/src/actions/ens/getEnsAddress.ts +4 -13
  85. package/src/actions/ens/getEnsName.ts +6 -27
  86. package/src/actions/ens/getEnsText.ts +32 -23
  87. package/src/actions/wallet/signTypedData.ts +19 -28
  88. package/src/chains/index.ts +3 -0
  89. package/src/constants/abis.ts +31 -1
  90. package/src/errors/version.ts +1 -1
  91. package/src/index.ts +1 -7
  92. package/src/types/typedData.ts +49 -72
  93. package/src/utils/ens/errors.ts +27 -0
  94. package/src/utils/signature/hashTypedData.ts +17 -17
  95. package/src/utils/signature/recoverTypedDataAddress.ts +11 -16
  96. package/src/utils/signature/verifyTypedData.ts +10 -16
  97. package/src/utils/typedData.ts +10 -15
@@ -1,47 +1,25 @@
1
- import type { Narrow, TypedData, TypedDataDomain, TypedDataToPrimitiveTypes } from 'abitype';
2
- export type TypedDataDefinition<TTypedData extends TypedData | {
3
- [key: string]: unknown;
4
- } = TypedData, TPrimaryType extends string = string> = {
5
- primaryType: GetTypedDataPrimaryType<TTypedData, TPrimaryType>;
6
- } & GetTypedDataMessage<TTypedData, TPrimaryType> & GetTypedDataTypes<TTypedData, TPrimaryType> & GetTypedDataDomain<TTypedData, TPrimaryType>;
7
- export type GetTypedDataDomain<TTypedData extends TypedData | {
8
- [key_1: string]: unknown;
9
- } = TypedData, TPrimaryType extends string = string, TSchema = TTypedData extends TypedData ? TypedDataToPrimitiveTypes<TTypedData> : {
10
- [key_2: string]: any;
11
- }, TDomain = TSchema extends {
12
- EIP712Domain: infer Domain;
13
- } ? Domain : TypedDataDomain> = TPrimaryType extends 'EIP712Domain' ? {
14
- domain: TDomain;
15
- } : {
16
- domain?: TDomain;
17
- };
18
- export type GetTypedDataMessage<TTypedData extends TypedData | {
19
- [key_1: string]: unknown;
20
- } = TypedData, TPrimaryType extends string = string, TSchema = TTypedData extends TypedData ? TypedDataToPrimitiveTypes<TTypedData> : {
21
- [key_2: string]: any;
22
- }, TMessage = TSchema[TPrimaryType extends keyof TSchema ? TPrimaryType : keyof TSchema]> = TPrimaryType extends 'EIP712Domain' ? {} : {
23
- [key_3: string]: any;
24
- } extends TMessage ? {
25
- /**
26
- * Data to sign
27
- *
28
- * Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link types} for type inference.
29
- */
1
+ import type { Prettify } from './utils.js';
2
+ import type { TypedData, TypedDataDomain, TypedDataToPrimitiveTypes } from 'abitype';
3
+ export type TypedDataDefinition<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData> = primaryType extends 'EIP712Domain' ? EIP712DomainDefinition<typedData, primaryType> : MessageDefinition<typedData, primaryType>;
4
+ type MessageDefinition<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData = keyof typedData, schema extends Record<string, unknown> = typedData extends TypedData ? TypedDataToPrimitiveTypes<typedData> : Record<string, unknown>, message = schema[primaryType extends keyof schema ? primaryType : keyof schema], primaryTypes = typedData extends TypedData ? keyof typedData : string> = {
5
+ types: typedData;
6
+ } & {
7
+ primaryType: primaryTypes | (primaryType extends primaryTypes ? primaryType : never);
8
+ domain?: (schema extends {
9
+ EIP712Domain: infer domain;
10
+ } ? domain : Prettify<TypedDataDomain>) | undefined;
30
11
  message: {
31
- [key_4: string]: unknown;
32
- };
33
- } : {
34
- /** Data to sign */
35
- message: TMessage;
12
+ [_: string]: any;
13
+ } extends message ? Record<string, unknown> : message;
36
14
  };
37
- export type GetTypedDataPrimaryType<TTypedData extends TypedData | {
38
- [key: string]: unknown;
39
- } = TypedData, TPrimaryType extends string = string> = TTypedData extends TypedData ? keyof TTypedData extends infer AbiFunctionNames ? AbiFunctionNames | (TPrimaryType extends AbiFunctionNames ? TPrimaryType : never) | (TypedData extends TTypedData ? string : never) | 'EIP712Domain' : never : TPrimaryType;
40
- export type GetTypedDataTypes<TTypedData extends TypedData | {
41
- [key: string]: unknown;
42
- } = TypedData, TPrimaryType extends string = string> = TPrimaryType extends 'EIP712Domain' ? {
43
- types?: Narrow<TTypedData>;
44
- } : {
45
- types: Narrow<TTypedData>;
15
+ type EIP712DomainDefinition<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends 'EIP712Domain' = 'EIP712Domain', schema extends Record<string, unknown> = typedData extends TypedData ? TypedDataToPrimitiveTypes<typedData> : Record<string, unknown>> = {
16
+ types?: typedData | undefined;
17
+ } & {
18
+ primaryType: 'EIP712Domain' | primaryType;
19
+ domain: schema extends {
20
+ EIP712Domain: infer domain;
21
+ } ? domain : Prettify<TypedDataDomain>;
22
+ message?: never;
46
23
  };
24
+ export {};
47
25
  //# sourceMappingURL=typedData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../src/types/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,SAAS,EACT,eAAe,EACf,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC;IACF,WAAW,EAAE,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;CAC/D,GAAG,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,GAC/C,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,GAC3C,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAE9C,MAAM,MAAM,kBAAkB,CAC5B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACvE,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,OAAO,GAAG,UAAU,SAAS,SAAS,GAClC,yBAAyB,CAAC,UAAU,CAAC,GACrC;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC5B,OAAO,GAAG,OAAO,SAAS;IAAE,YAAY,EAAE,MAAM,MAAM,CAAA;CAAE,GACpD,MAAM,GACN,eAAe,IACjB,YAAY,SAAS,cAAc,GACnC;IACE,MAAM,EAAE,OAAO,CAAA;CAChB,GACD;IACE,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAEL,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACvE,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,OAAO,GAAG,UAAU,SAAS,SAAS,GAClC,yBAAyB,CAAC,UAAU,CAAC,GACrC;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC5B,QAAQ,GAAG,OAAO,CAAC,YAAY,SAAS,MAAM,OAAO,GACjD,YAAY,GACZ,MAAM,OAAO,CAAC,IAChB,YAAY,SAAS,cAAc,GACnC,EAAE,GACF;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,SAAS,QAAQ,GACzC;IACE;;;;OAIG;IACH,OAAO,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CACtC,GACD;IACE,mBAAmB;IACnB,OAAO,EAAE,QAAQ,CAAA;CAClB,CAAA;AAEL,MAAM,MAAM,uBAAuB,CACjC,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,UAAU,SAAS,SAAS,GAC5B,MAAM,UAAU,SAAS,MAAM,gBAAgB,GAEzC,gBAAgB,GAChB,CAAC,YAAY,SAAS,gBAAgB,GAAG,YAAY,GAAG,KAAK,CAAC,GAC9D,CAAC,SAAS,SAAS,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC,GAC/C,cAAc,GAClB,KAAK,GACP,YAAY,CAAA;AAEhB,MAAM,MAAM,iBAAiB,CAC3B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,YAAY,SAAS,cAAc,GACnC;IACE,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;CAC3B,GACD;IACE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;CAC1B,CAAA"}
1
+ {"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../src/types/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,mBAAmB,CAC7B,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IAEpE,WAAW,SAAS,cAAc,GAClC,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,GAC9C,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AAE7C,KAAK,iBAAiB,CACpB,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,EAErD,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,SAAS,SAAS,GAChE,yBAAyB,CAAC,SAAS,CAAC,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,OAAO,GAAG,MAAM,CAAC,WAAW,SAAS,MAAM,MAAM,GAC7C,WAAW,GACX,MAAM,MAAM,CAAC,EACjB,YAAY,GAAG,SAAS,SAAS,SAAS,GAAG,MAAM,SAAS,GAAG,MAAM,IACnE;IACF,KAAK,EAAE,SAAS,CAAA;CACjB,GAAG;IACF,WAAW,EACP,YAAY,GACZ,CAAC,WAAW,SAAS,YAAY,GAAG,WAAW,GAAG,KAAK,CAAC,CAAA;IAC5D,MAAM,CAAC,EACH,CAAC,MAAM,SAAS;QAAE,YAAY,EAAE,MAAM,MAAM,CAAA;KAAE,GAC1C,MAAM,GACN,QAAQ,CAAC,eAAe,CAAC,CAAC,GAC9B,SAAS,CAAA;IACb,OAAO,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,SAAS,OAAO,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,OAAO,CAAA;CACZ,CAAA;AAED,KAAK,sBAAsB,CACzB,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,cAAc,GAAG,cAAc,EAEnD,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,SAAS,SAAS,GAChE,yBAAyB,CAAC,SAAS,CAAC,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACzB;IACF,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAC9B,GAAG;IACF,WAAW,EAAE,cAAc,GAAG,WAAW,CAAA;IACzC,MAAM,EAAE,MAAM,SAAS;QAAE,YAAY,EAAE,MAAM,MAAM,CAAA;KAAE,GACjD,MAAM,GACN,QAAQ,CAAC,eAAe,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAA;CAChB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function isNullUniversalResolverError(err: unknown, callType: 'resolve' | 'reverse'): boolean;
2
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/utils/ens/errors.ts"],"names":[],"mappings":"AAOA,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,SAAS,GAAG,SAAS,GAC9B,OAAO,CAgBT"}
@@ -1,11 +1,7 @@
1
1
  import type { TypedData } from 'abitype';
2
2
  import type { Hex } from '../../types/misc.js';
3
3
  import type { TypedDataDefinition } from '../../types/typedData.js';
4
- export type HashTypedDataParameters<TTypedData extends TypedData | {
5
- [key: string]: unknown;
6
- } = TypedData, TPrimaryType extends string = string> = TypedDataDefinition<TTypedData, TPrimaryType>;
4
+ export type HashTypedDataParameters<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData> = TypedDataDefinition<typedData, primaryType>;
7
5
  export type HashTypedDataReturnType = Hex;
8
- export declare function hashTypedData<TTypedData extends TypedData | {
9
- [key: string]: unknown;
10
- }, TPrimaryType extends string = string>({ domain: domain_, message, primaryType, types: types_, }: HashTypedDataParameters<TTypedData, TPrimaryType>): HashTypedDataReturnType;
6
+ export declare function hashTypedData<const typedData extends TypedData | Record<string, unknown>, primaryType extends keyof typedData | 'EIP712Domain'>(parameters: HashTypedDataParameters<typedData, primaryType>): HashTypedDataReturnType;
11
7
  //# sourceMappingURL=hashTypedData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashTypedData.d.ts","sourceRoot":"","sources":["../../../../src/utils/signature/hashTypedData.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,SAAS,EAAmB,MAAM,SAAS,CAAA;AAEvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAYnE,MAAM,MAAM,uBAAuB,CACjC,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAEjD,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAEzC,wBAAgB,aAAa,CAC3B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACzD,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,EACA,MAAM,EAAE,OAAO,EACf,OAAO,EACP,WAAW,EACX,KAAK,EAAE,MAAM,GACd,EAAE,uBAAuB,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,uBAAuB,CAgD7E"}
1
+ {"version":3,"file":"hashTypedData.d.ts","sourceRoot":"","sources":["../../../../src/utils/signature/hashTypedData.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,SAAS,EAAmB,MAAM,SAAS,CAAA;AAEvE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAYnE,MAAM,MAAM,uBAAuB,CACjC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AAE/C,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAEzC,wBAAgB,aAAa,CAC3B,KAAK,CAAC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EAEpD,UAAU,EAAE,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,GAC1D,uBAAuB,CAmDzB"}
@@ -1,13 +1,9 @@
1
1
  import type { Address, TypedData } from 'abitype';
2
2
  import type { ByteArray, Hex } from '../../types/misc.js';
3
3
  import type { TypedDataDefinition } from '../../types/typedData.js';
4
- export type RecoverTypedDataAddressParameters<TTypedData extends TypedData | {
5
- [key: string]: unknown;
6
- } = TypedData, TPrimaryType extends string = string> = TypedDataDefinition<TTypedData, TPrimaryType> & {
4
+ export type RecoverTypedDataAddressParameters<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData> = TypedDataDefinition<typedData, primaryType> & {
7
5
  signature: Hex | ByteArray;
8
6
  };
9
7
  export type RecoverTypedDataAddressReturnType = Address;
10
- export declare function recoverTypedDataAddress<TTypedData extends TypedData | {
11
- [key: string]: unknown;
12
- }, TPrimaryType extends string = string>({ domain, message, primaryType, signature, types, }: RecoverTypedDataAddressParameters<TTypedData, TPrimaryType>): Promise<RecoverTypedDataAddressReturnType>;
8
+ export declare function recoverTypedDataAddress<const typedData extends TypedData | Record<string, unknown>, primaryType extends keyof typedData | 'EIP712Domain'>(parameters: RecoverTypedDataAddressParameters<typedData, primaryType>): Promise<RecoverTypedDataAddressReturnType>;
13
9
  //# sourceMappingURL=recoverTypedDataAddress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recoverTypedDataAddress.d.ts","sourceRoot":"","sources":["../../../../src/utils/signature/recoverTypedDataAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAKnE,MAAM,MAAM,iCAAiC,CAC3C,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG;IAClD,SAAS,EAAE,GAAG,GAAG,SAAS,CAAA;CAC3B,CAAA;AACD,MAAM,MAAM,iCAAiC,GAAG,OAAO,CAAA;AAEvD,wBAAsB,uBAAuB,CAC3C,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACzD,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,EACA,MAAM,EACN,OAAO,EACP,WAAW,EACX,SAAS,EACT,KAAK,GACN,EAAE,iCAAiC,CAClC,UAAU,EACV,YAAY,CACb,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAU7C"}
1
+ {"version":3,"file":"recoverTypedDataAddress.d.ts","sourceRoot":"","sources":["../../../../src/utils/signature/recoverTypedDataAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAKnE,MAAM,MAAM,iCAAiC,CAC3C,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;IAChD,SAAS,EAAE,GAAG,GAAG,SAAS,CAAA;CAC3B,CAAA;AACD,MAAM,MAAM,iCAAiC,GAAG,OAAO,CAAA;AAEvD,wBAAsB,uBAAuB,CAC3C,KAAK,CAAC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EAEpD,UAAU,EAAE,iCAAiC,CAAC,SAAS,EAAE,WAAW,CAAC,GACpE,OAAO,CAAC,iCAAiC,CAAC,CAY5C"}
@@ -1,9 +1,7 @@
1
1
  import type { Address, TypedData } from 'abitype';
2
2
  import type { ByteArray, Hex } from '../../types/misc.js';
3
3
  import type { TypedDataDefinition } from '../../types/typedData.js';
4
- export type VerifyTypedDataParameters<TTypedData extends TypedData | {
5
- [key: string]: unknown;
6
- } = TypedData, TPrimaryType extends string = string> = TypedDataDefinition<TTypedData, TPrimaryType> & {
4
+ export type VerifyTypedDataParameters<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData> = TypedDataDefinition<typedData, primaryType> & {
7
5
  /** The address to verify the typed data for. */
8
6
  address: Address;
9
7
  /** The signature to verify */
@@ -22,7 +20,5 @@ export type VerifyTypedDataReturnType = boolean;
22
20
  * @param parameters - {@link VerifyTypedDataParameters}
23
21
  * @returns Whether or not the signature is valid. {@link VerifyTypedDataReturnType}
24
22
  */
25
- export declare function verifyTypedData<TTypedData extends TypedData | {
26
- [key: string]: unknown;
27
- }, TPrimaryType extends string = string>({ address, domain, message, primaryType, signature, types, }: VerifyTypedDataParameters<TTypedData, TPrimaryType>): Promise<VerifyTypedDataReturnType>;
23
+ export declare function verifyTypedData<const typedData extends TypedData | Record<string, unknown>, primaryType extends keyof typedData | 'EIP712Domain'>(parameters: VerifyTypedDataParameters<typedData, primaryType>): Promise<VerifyTypedDataReturnType>;
28
24
  //# sourceMappingURL=verifyTypedData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verifyTypedData.d.ts","sourceRoot":"","sources":["../../../../src/utils/signature/verifyTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AASnE,MAAM,MAAM,yBAAyB,CACnC,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,EACrE,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG;IAClD,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,8BAA8B;IAC9B,SAAS,EAAE,GAAG,GAAG,SAAS,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACzD,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,EACA,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EACX,SAAS,EACT,KAAK,GACN,EAAE,yBAAyB,CAC1B,UAAU,EACV,YAAY,CACb,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAWrC"}
1
+ {"version":3,"file":"verifyTypedData.d.ts","sourceRoot":"","sources":["../../../../src/utils/signature/verifyTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AASnE,MAAM,MAAM,yBAAyB,CACnC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;IAChD,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,8BAA8B;IAC9B,SAAS,EAAE,GAAG,GAAG,SAAS,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,KAAK,CAAC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EAEpD,UAAU,EAAE,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,GAC5D,OAAO,CAAC,yBAAyB,CAAC,CAapC"}
@@ -1,6 +1,4 @@
1
1
  import type { TypedData } from 'abitype';
2
2
  import type { TypedDataDefinition } from '../types/typedData.js';
3
- export declare function validateTypedData<TTypedData extends TypedData | {
4
- [key: string]: unknown;
5
- }, TPrimaryType extends string = string>({ domain, message, primaryType, types: types_, }: TypedDataDefinition<TTypedData, TPrimaryType>): void;
3
+ export declare function validateTypedData<const typedData extends TypedData | Record<string, unknown>, primaryType extends keyof typedData | 'EIP712Domain'>(parameters: TypedDataDefinition<typedData, primaryType>): void;
6
4
  //# sourceMappingURL=typedData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../src/utils/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqC,MAAM,SAAS,CAAA;AAK3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAOhE,wBAAgB,iBAAiB,CAC/B,UAAU,SAAS,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACzD,YAAY,SAAS,MAAM,GAAG,MAAM,EACpC,EACA,MAAM,EACN,OAAO,EACP,WAAW,EACX,KAAK,EAAE,MAAM,GACd,EAAE,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,QAqD/C"}
1
+ {"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../src/utils/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAsB,MAAM,SAAS,CAAA;AAK5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAOhE,wBAAgB,iBAAiB,CAC/B,KAAK,CAAC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EACpD,UAAU,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,QAqDxD"}
package/package.json CHANGED
@@ -7,8 +7,8 @@
7
7
  "@noble/hashes": "1.3.0",
8
8
  "@scure/bip32": "1.3.0",
9
9
  "@scure/bip39": "1.2.0",
10
- "@wagmi/chains": "1.2.0",
11
- "abitype": "0.8.11",
10
+ "@wagmi/chains": "1.6.0",
11
+ "abitype": "0.9.3",
12
12
  "isomorphic-ws": "5.0.0",
13
13
  "ws": "8.12.0"
14
14
  },
@@ -20,7 +20,7 @@
20
20
  "optional": true
21
21
  }
22
22
  },
23
- "version": "0.0.0-w-20230711215150",
23
+ "version": "0.0.0-w-20230720004551",
24
24
  "files": [
25
25
  "dist",
26
26
  "!dist/**/*.tsbuildinfo",
@@ -1,5 +1,4 @@
1
1
  import type { HDKey } from '@scure/bip32'
2
-
3
2
  import type { Address, TypedData } from 'abitype'
4
3
 
5
4
  import type { Hash, Hex, SignableMessage } from '../types/misc.js'
@@ -34,10 +33,10 @@ export type CustomSource = {
34
33
  : Hash
35
34
  >
36
35
  signTypedData: <
37
- TTypedData extends TypedData | { [key: string]: unknown },
38
- TPrimaryType extends string = string,
36
+ const typedData extends TypedData | Record<string, unknown>,
37
+ primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
39
38
  >(
40
- typedData: TypedDataDefinition<TTypedData, TPrimaryType>,
39
+ typedDataDefinition: TypedDataDefinition<typedData, primaryType>,
41
40
  ) => Promise<Hash>
42
41
  }
43
42
 
@@ -2,18 +2,15 @@ import type { TypedData } from 'abitype'
2
2
 
3
3
  import type { Hex } from '../../types/misc.js'
4
4
  import type { TypedDataDefinition } from '../../types/typedData.js'
5
- import {
6
- type HashTypedDataParameters,
7
- hashTypedData,
8
- } from '../../utils/signature/hashTypedData.js'
5
+ import { hashTypedData } from '../../utils/signature/hashTypedData.js'
9
6
 
10
7
  import { sign } from './sign.js'
11
8
  import { signatureToHex } from './signatureToHex.js'
12
9
 
13
10
  export type SignTypedDataParameters<
14
- TTypedData extends TypedData | { [key: string]: unknown } = TypedData,
15
- TPrimaryType extends string = string,
16
- > = TypedDataDefinition<TTypedData, TPrimaryType> & {
11
+ typedData extends TypedData | Record<string, unknown> = TypedData,
12
+ primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
13
+ > = TypedDataDefinition<typedData, primaryType> & {
17
14
  /** The private key to sign with. */
18
15
  privateKey: Hex
19
16
  }
@@ -27,17 +24,15 @@ export type SignTypedDataReturnType = Hex
27
24
  * @returns The signature.
28
25
  */
29
26
  export async function signTypedData<
30
- TTypedData extends TypedData | { [key: string]: unknown },
31
- TPrimaryType extends string = string,
32
- >({
33
- privateKey,
34
- ...typedData
35
- }: SignTypedDataParameters<
36
- TTypedData,
37
- TPrimaryType
38
- >): Promise<SignTypedDataReturnType> {
27
+ const typedData extends TypedData | Record<string, unknown>,
28
+ primaryType extends keyof typedData | 'EIP712Domain',
29
+ >(
30
+ parameters: SignTypedDataParameters<typedData, primaryType>,
31
+ ): Promise<SignTypedDataReturnType> {
32
+ const { privateKey, ...typedData } =
33
+ parameters as unknown as SignTypedDataParameters
39
34
  const signature = await sign({
40
- hash: hashTypedData(typedData as HashTypedDataParameters),
35
+ hash: hashTypedData(typedData),
41
36
  privateKey,
42
37
  })
43
38
  return signatureToHex(signature)
@@ -4,12 +4,8 @@ import type { Client } from '../../clients/createClient.js'
4
4
  import type { Transport } from '../../clients/transports/createTransport.js'
5
5
  import {
6
6
  singleAddressResolverAbi,
7
- universalResolverAbi,
7
+ universalResolverResolveAbi,
8
8
  } from '../../constants/abis.js'
9
- import {
10
- ContractFunctionExecutionError,
11
- ContractFunctionRevertedError,
12
- } from '../../errors/contract.js'
13
9
  import type { Chain } from '../../types/chain.js'
14
10
  import type { Prettify } from '../../types/utils.js'
15
11
  import { decodeFunctionResult } from '../../utils/abi/decodeFunctionResult.js'
@@ -17,6 +13,7 @@ import { encodeFunctionData } from '../../utils/abi/encodeFunctionData.js'
17
13
  import { getChainContractAddress } from '../../utils/chain.js'
18
14
  import { trim } from '../../utils/data/trim.js'
19
15
  import { toHex } from '../../utils/encoding/toHex.js'
16
+ import { isNullUniversalResolverError } from '../../utils/ens/errors.js'
20
17
  import { namehash } from '../../utils/ens/namehash.js'
21
18
  import { packetToBytes } from '../../utils/ens/packetToBytes.js'
22
19
  import {
@@ -89,7 +86,7 @@ export async function getEnsAddress<TChain extends Chain | undefined,>(
89
86
  try {
90
87
  const res = await readContract(client, {
91
88
  address: universalResolverAddress,
92
- abi: universalResolverAbi,
89
+ abi: universalResolverResolveAbi,
93
90
  functionName: 'resolve',
94
91
  args: [
95
92
  toHex(packetToBytes(name)),
@@ -113,13 +110,7 @@ export async function getEnsAddress<TChain extends Chain | undefined,>(
113
110
 
114
111
  return trim(address) === '0x00' ? null : address
115
112
  } catch (err) {
116
- if (err instanceof ContractFunctionExecutionError) {
117
- const reason = (err.cause as ContractFunctionRevertedError)?.reason
118
- if (
119
- reason?.includes('Wildcard on non-extended resolvers is not supported')
120
- )
121
- return null
122
- }
113
+ if (isNullUniversalResolverError(err, 'resolve')) return null
123
114
  throw err
124
115
  }
125
116
  }
@@ -2,15 +2,12 @@ import type { Address } from 'abitype'
2
2
 
3
3
  import type { Client } from '../../clients/createClient.js'
4
4
  import type { Transport } from '../../clients/transports/createTransport.js'
5
- import { panicReasons } from '../../constants/solidity.js'
6
- import {
7
- ContractFunctionExecutionError,
8
- type ContractFunctionRevertedError,
9
- } from '../../errors/contract.js'
5
+ import { universalResolverReverseAbi } from '../../constants/abis.js'
10
6
  import type { Chain } from '../../types/chain.js'
11
7
  import type { Prettify } from '../../types/utils.js'
12
8
  import { getChainContractAddress } from '../../utils/chain.js'
13
9
  import { toHex } from '../../utils/encoding/toHex.js'
10
+ import { isNullUniversalResolverError } from '../../utils/ens/errors.js'
14
11
  import { packetToBytes } from '../../utils/ens/packetToBytes.js'
15
12
  import {
16
13
  type ReadContractParameters,
@@ -81,33 +78,15 @@ export async function getEnsName<TChain extends Chain | undefined>(
81
78
  try {
82
79
  const res = await readContract(client, {
83
80
  address: universalResolverAddress,
84
- abi: [
85
- {
86
- name: 'reverse',
87
- type: 'function',
88
- stateMutability: 'view',
89
- inputs: [{ type: 'bytes', name: 'reverseName' }],
90
- outputs: [
91
- { type: 'string', name: 'resolvedName' },
92
- { type: 'address', name: 'resolvedAddress' },
93
- { type: 'address', name: 'reverseResolver' },
94
- { type: 'address', name: 'resolver' },
95
- ],
96
- },
97
- ],
81
+ abi: universalResolverReverseAbi,
98
82
  functionName: 'reverse',
99
83
  args: [toHex(packetToBytes(reverseNode))],
100
84
  blockNumber,
101
85
  blockTag,
102
86
  })
103
87
  return res[0]
104
- } catch (error) {
105
- if (
106
- error instanceof ContractFunctionExecutionError &&
107
- (error.cause as ContractFunctionRevertedError).reason === panicReasons[50]
108
- )
109
- // No primary name set for address.
110
- return null
111
- throw error
88
+ } catch (err) {
89
+ if (isNullUniversalResolverError(err, 'reverse')) return null
90
+ throw err
112
91
  }
113
92
  }
@@ -2,13 +2,17 @@ import type { Address } from 'abitype'
2
2
 
3
3
  import type { Client } from '../../clients/createClient.js'
4
4
  import type { Transport } from '../../clients/transports/createTransport.js'
5
- import { textResolverAbi, universalResolverAbi } from '../../constants/abis.js'
5
+ import {
6
+ textResolverAbi,
7
+ universalResolverResolveAbi,
8
+ } from '../../constants/abis.js'
6
9
  import type { Chain } from '../../types/chain.js'
7
10
  import type { Prettify } from '../../types/utils.js'
8
11
  import { decodeFunctionResult } from '../../utils/abi/decodeFunctionResult.js'
9
12
  import { encodeFunctionData } from '../../utils/abi/encodeFunctionData.js'
10
13
  import { getChainContractAddress } from '../../utils/chain.js'
11
14
  import { toHex } from '../../utils/encoding/toHex.js'
15
+ import { isNullUniversalResolverError } from '../../utils/ens/errors.js'
12
16
  import { namehash } from '../../utils/ens/namehash.js'
13
17
  import { packetToBytes } from '../../utils/ens/packetToBytes.js'
14
18
  import {
@@ -82,29 +86,34 @@ export async function getEnsText<TChain extends Chain | undefined>(
82
86
  })
83
87
  }
84
88
 
85
- const res = await readContract(client, {
86
- address: universalResolverAddress,
87
- abi: universalResolverAbi,
88
- functionName: 'resolve',
89
- args: [
90
- toHex(packetToBytes(name)),
91
- encodeFunctionData({
92
- abi: textResolverAbi,
93
- functionName: 'text',
94
- args: [namehash(name), key],
95
- }),
96
- ],
97
- blockNumber,
98
- blockTag,
99
- })
89
+ try {
90
+ const res = await readContract(client, {
91
+ address: universalResolverAddress,
92
+ abi: universalResolverResolveAbi,
93
+ functionName: 'resolve',
94
+ args: [
95
+ toHex(packetToBytes(name)),
96
+ encodeFunctionData({
97
+ abi: textResolverAbi,
98
+ functionName: 'text',
99
+ args: [namehash(name), key],
100
+ }),
101
+ ],
102
+ blockNumber,
103
+ blockTag,
104
+ })
100
105
 
101
- if (res[0] === '0x') return null
106
+ if (res[0] === '0x') return null
102
107
 
103
- const record = decodeFunctionResult({
104
- abi: textResolverAbi,
105
- functionName: 'text',
106
- data: res[0],
107
- })
108
+ const record = decodeFunctionResult({
109
+ abi: textResolverAbi,
110
+ functionName: 'text',
111
+ data: res[0],
112
+ })
108
113
 
109
- return record === '' ? null : record
114
+ return record === '' ? null : record
115
+ } catch (err) {
116
+ if (isNullUniversalResolverError(err, 'resolve')) return null
117
+ throw err
118
+ }
110
119
  }
@@ -14,11 +14,11 @@ import { stringify } from '../../utils/stringify.js'
14
14
  import { validateTypedData } from '../../utils/typedData.js'
15
15
 
16
16
  export type SignTypedDataParameters<
17
- TTypedData extends TypedData | { [key: string]: unknown } = TypedData,
18
- TPrimaryType extends string = string,
19
- TAccount extends Account | undefined = undefined,
20
- > = GetAccountParameter<TAccount> &
21
- TypedDataDefinition<TTypedData, TPrimaryType>
17
+ typedData extends TypedData | Record<string, unknown> = TypedData,
18
+ primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
19
+ account extends Account | undefined = undefined,
20
+ > = TypedDataDefinition<typedData, primaryType> &
21
+ ([account] extends [never] ? unknown : GetAccountParameter<account>)
22
22
 
23
23
  export type SignTypedDataReturnType = Hex
24
24
 
@@ -121,20 +121,21 @@ export type SignTypedDataReturnType = Hex
121
121
  * })
122
122
  */
123
123
  export async function signTypedData<
124
- TTypedData extends TypedData | { [key: string]: unknown },
125
- TPrimaryType extends string,
126
- TChain extends Chain | undefined,
127
- TAccount extends Account | undefined,
124
+ const typedData extends TypedData | Record<string, unknown>,
125
+ primaryType extends keyof typedData | 'EIP712Domain',
126
+ chain extends Chain | undefined,
127
+ account extends Account | undefined,
128
128
  >(
129
- client: Client<Transport, TChain, TAccount>,
130
- {
129
+ client: Client<Transport, chain, account>,
130
+ parameters: SignTypedDataParameters<typedData, primaryType, account>,
131
+ ): Promise<SignTypedDataReturnType> {
132
+ const {
131
133
  account: account_ = client.account,
132
134
  domain,
133
135
  message,
134
136
  primaryType,
135
- types: types_,
136
- }: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>,
137
- ): Promise<SignTypedDataReturnType> {
137
+ } = parameters as unknown as SignTypedDataParameters
138
+
138
139
  if (!account_)
139
140
  throw new AccountNotFoundError({
140
141
  docsPath: '/docs/actions/wallet/signTypedData',
@@ -155,28 +156,18 @@ export async function signTypedData<
155
156
  },
156
157
  domain?.salt && { name: 'salt', type: 'bytes32' },
157
158
  ].filter(Boolean),
158
- ...(types_ as TTypedData),
159
+ ...parameters.types,
159
160
  }
160
161
 
161
162
  // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc
162
163
  // as we can't statically check this with TypeScript.
163
- validateTypedData({
164
- domain,
165
- message,
166
- primaryType,
167
- types,
168
- } as TypedDataDefinition)
164
+ validateTypedData({ domain, message, primaryType, types })
169
165
 
170
166
  if (account.type === 'local')
171
- return account.signTypedData({
172
- domain,
173
- primaryType,
174
- types,
175
- message,
176
- } as TypedDataDefinition)
167
+ return account.signTypedData({ domain, message, primaryType, types })
177
168
 
178
169
  const typedData = stringify(
179
- { domain: domain ?? {}, primaryType, types, message },
170
+ { domain: domain ?? {}, message, primaryType, types },
180
171
  (_, value) => (isHex(value) ? value.toLowerCase() : value),
181
172
  )
182
173
  return client.request({
@@ -11,6 +11,7 @@ export const aurora = /*#__PURE__*/ defineChain(chains.aurora)
11
11
  export const auroraTestnet = /*#__PURE__*/ defineChain(chains.auroraTestnet)
12
12
  export const avalanche = /*#__PURE__*/ defineChain(chains.avalanche)
13
13
  export const avalancheFuji = /*#__PURE__*/ defineChain(chains.avalancheFuji)
14
+ export const base = /*#__PURE__*/ defineChain(chains.base)
14
15
  export const baseGoerli = /*#__PURE__*/ defineChain(chains.baseGoerli)
15
16
  export const boba = /*#__PURE__*/ defineChain(chains.boba)
16
17
  export const bronos = /*#__PURE__*/ defineChain(chains.bronos)
@@ -63,6 +64,8 @@ export const localhost = /*#__PURE__*/ defineChain(chains.localhost)
63
64
  export const mainnet = /*#__PURE__*/ defineChain(chains.mainnet)
64
65
  export const metis = /*#__PURE__*/ defineChain(chains.metis)
65
66
  export const metisGoerli = /*#__PURE__*/ defineChain(chains.metisGoerli)
67
+ export const mev = /*#__PURE__*/ defineChain(chains.mev)
68
+ export const mevTestnet = /*#__PURE__*/ defineChain(chains.mevTestnet)
66
69
  export const moonbaseAlpha = /*#__PURE__*/ defineChain(chains.moonbaseAlpha)
67
70
  export const moonbeam = /*#__PURE__*/ defineChain(chains.moonbeam)
68
71
  export const moonriver = /*#__PURE__*/ defineChain(chains.moonriver)
@@ -43,7 +43,21 @@ export const multicall3Abi = [
43
43
  },
44
44
  ] as const
45
45
 
46
- export const universalResolverAbi = [
46
+ const universalResolverErrors = [
47
+ {
48
+ inputs: [],
49
+ name: 'ResolverNotFound',
50
+ type: 'error',
51
+ },
52
+ {
53
+ inputs: [],
54
+ name: 'ResolverWildcardNotSupported',
55
+ type: 'error',
56
+ },
57
+ ] as const
58
+
59
+ export const universalResolverResolveAbi = [
60
+ ...universalResolverErrors,
47
61
  {
48
62
  name: 'resolve',
49
63
  type: 'function',
@@ -59,6 +73,22 @@ export const universalResolverAbi = [
59
73
  },
60
74
  ] as const
61
75
 
76
+ export const universalResolverReverseAbi = [
77
+ ...universalResolverErrors,
78
+ {
79
+ name: 'reverse',
80
+ type: 'function',
81
+ stateMutability: 'view',
82
+ inputs: [{ type: 'bytes', name: 'reverseName' }],
83
+ outputs: [
84
+ { type: 'string', name: 'resolvedName' },
85
+ { type: 'address', name: 'resolvedAddress' },
86
+ { type: 'address', name: 'reverseResolver' },
87
+ { type: 'address', name: 'resolver' },
88
+ ],
89
+ },
90
+ ] as const
91
+
62
92
  export const textResolverAbi = [
63
93
  {
64
94
  name: 'text',
@@ -1 +1 @@
1
- export const version = '1.2.12'
1
+ export const version = '1.2.15'
package/src/index.ts CHANGED
@@ -502,13 +502,7 @@ export type {
502
502
  ExtractFormatterReturnType,
503
503
  } from './types/formatter.js'
504
504
  export type { Serializers } from './types/serializer.js'
505
- export type {
506
- GetTypedDataDomain,
507
- GetTypedDataMessage,
508
- GetTypedDataPrimaryType,
509
- GetTypedDataTypes,
510
- TypedDataDefinition,
511
- } from './types/typedData.js'
505
+ export type { TypedDataDefinition } from './types/typedData.js'
512
506
  export type { GetTransportConfig } from './types/transport.js'
513
507
  export type { HDKey } from '@scure/bip32'
514
508
  export type { Log } from './types/log.js'