@ensdomains/ensjs 3.0.0-alpha.10 → 3.0.0-alpha.11

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 (234) hide show
  1. package/dist/cjs/contracts/baseRegistrar.d.ts +1 -1
  2. package/dist/cjs/contracts/index.d.ts +3 -3
  3. package/dist/cjs/contracts/multicall.d.ts +1 -1
  4. package/dist/cjs/contracts/registry.d.ts +1 -1
  5. package/dist/cjs/functions/burnFuses.js +1 -1
  6. package/dist/cjs/functions/createSubname.d.ts +3 -1
  7. package/dist/cjs/functions/createSubname.js +4 -2
  8. package/dist/cjs/functions/deleteSubname.d.ts +1 -1
  9. package/dist/cjs/functions/deleteSubname.js +3 -2
  10. package/dist/cjs/functions/getExpiry.d.ts +9 -2
  11. package/dist/cjs/functions/getExpiry.js +52 -7
  12. package/dist/cjs/functions/getFuses.d.ts +2 -3
  13. package/dist/cjs/functions/getFuses.js +4 -13
  14. package/dist/cjs/functions/getSpecificRecord.js +8 -1
  15. package/dist/cjs/functions/getSubnames.d.ts +1 -1
  16. package/dist/cjs/functions/getSubnames.js +1 -1
  17. package/dist/cjs/functions/transferSubname.d.ts +12 -3
  18. package/dist/cjs/functions/transferSubname.js +5 -3
  19. package/dist/cjs/functions/wrapName.d.ts +3 -1
  20. package/dist/cjs/functions/wrapName.js +35 -29
  21. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +222 -201
  22. package/dist/cjs/generated/DNSRegistrar.d.ts +68 -64
  23. package/dist/cjs/generated/DNSSECImpl.d.ts +111 -111
  24. package/dist/cjs/generated/DefaultReverseResolver.d.ts +17 -17
  25. package/dist/cjs/generated/ENSRegistry.d.ts +126 -111
  26. package/dist/cjs/generated/ETHRegistrarController.d.ts +111 -109
  27. package/dist/cjs/generated/Multicall.d.ts +60 -60
  28. package/dist/cjs/generated/NameWrapper.d.ts +493 -354
  29. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +11 -7
  30. package/dist/cjs/generated/PublicResolver.d.ts +259 -235
  31. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +11 -7
  32. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +11 -7
  33. package/dist/cjs/generated/ReverseRegistrar.d.ts +112 -103
  34. package/dist/cjs/generated/Root.d.ts +77 -77
  35. package/dist/cjs/generated/SHA1Digest.d.ts +7 -7
  36. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +11 -7
  37. package/dist/cjs/generated/SHA256Digest.d.ts +7 -7
  38. package/dist/cjs/generated/StaticMetadataService.d.ts +7 -7
  39. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +7 -7
  40. package/dist/cjs/generated/UniversalResolver.d.ts +31 -31
  41. package/dist/cjs/generated/common.d.ts +1 -0
  42. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  43. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +3 -26
  44. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  45. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +3 -26
  46. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +14 -4
  47. package/dist/cjs/generated/factories/NameWrapper__factory.js +210 -79
  48. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  49. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +3 -26
  50. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  51. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +3 -26
  52. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  53. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +3 -26
  54. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +3 -15
  55. package/dist/cjs/generated/factories/SHA1Digest__factory.js +3 -26
  56. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  57. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +3 -26
  58. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +3 -15
  59. package/dist/cjs/generated/factories/SHA256Digest__factory.js +3 -26
  60. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  61. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +3 -26
  62. package/dist/cjs/generated/factories/index.d.ts +14 -0
  63. package/dist/cjs/generated/factories/index.js +29 -1
  64. package/dist/cjs/generated/index.d.ts +29 -1
  65. package/dist/cjs/generated/index.js +31 -3
  66. package/dist/cjs/index.d.ts +12 -6
  67. package/dist/cjs/index.js +3 -2
  68. package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
  69. package/dist/cjs/utils/wrapperExpiry.js +30 -0
  70. package/dist/esm/contracts/baseRegistrar.d.ts +1 -1
  71. package/dist/esm/contracts/index.d.ts +3 -3
  72. package/dist/esm/contracts/multicall.d.ts +1 -1
  73. package/dist/esm/contracts/registry.d.ts +1 -1
  74. package/dist/esm/functions/burnFuses.js +1 -1
  75. package/dist/esm/functions/createSubname.d.ts +3 -1
  76. package/dist/esm/functions/createSubname.js +4 -2
  77. package/dist/esm/functions/deleteSubname.d.ts +1 -1
  78. package/dist/esm/functions/deleteSubname.js +3 -2
  79. package/dist/esm/functions/getExpiry.d.ts +9 -2
  80. package/dist/esm/functions/getExpiry.js +52 -7
  81. package/dist/esm/functions/getFuses.d.ts +2 -3
  82. package/dist/esm/functions/getFuses.js +5 -14
  83. package/dist/esm/functions/getSpecificRecord.js +8 -1
  84. package/dist/esm/functions/getSubnames.d.ts +1 -1
  85. package/dist/esm/functions/getSubnames.js +1 -1
  86. package/dist/esm/functions/transferSubname.d.ts +12 -3
  87. package/dist/esm/functions/transferSubname.js +5 -3
  88. package/dist/esm/functions/wrapName.d.ts +3 -1
  89. package/dist/esm/functions/wrapName.js +35 -29
  90. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +222 -201
  91. package/dist/esm/generated/DNSRegistrar.d.ts +68 -64
  92. package/dist/esm/generated/DNSSECImpl.d.ts +111 -111
  93. package/dist/esm/generated/DefaultReverseResolver.d.ts +17 -17
  94. package/dist/esm/generated/ENSRegistry.d.ts +126 -111
  95. package/dist/esm/generated/ETHRegistrarController.d.ts +111 -109
  96. package/dist/esm/generated/Multicall.d.ts +60 -60
  97. package/dist/esm/generated/NameWrapper.d.ts +493 -354
  98. package/dist/esm/generated/P256SHA256Algorithm.d.ts +11 -7
  99. package/dist/esm/generated/PublicResolver.d.ts +259 -235
  100. package/dist/esm/generated/RSASHA1Algorithm.d.ts +11 -7
  101. package/dist/esm/generated/RSASHA256Algorithm.d.ts +11 -7
  102. package/dist/esm/generated/ReverseRegistrar.d.ts +112 -103
  103. package/dist/esm/generated/Root.d.ts +77 -77
  104. package/dist/esm/generated/SHA1Digest.d.ts +7 -7
  105. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +11 -7
  106. package/dist/esm/generated/SHA256Digest.d.ts +7 -7
  107. package/dist/esm/generated/StaticMetadataService.d.ts +7 -7
  108. package/dist/esm/generated/TLDPublicSuffixList.d.ts +7 -7
  109. package/dist/esm/generated/UniversalResolver.d.ts +31 -31
  110. package/dist/esm/generated/common.d.ts +1 -0
  111. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  112. package/dist/esm/generated/factories/DNSRegistrar__factory.js +2 -25
  113. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  114. package/dist/esm/generated/factories/DNSSECImpl__factory.js +2 -25
  115. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +14 -4
  116. package/dist/esm/generated/factories/NameWrapper__factory.js +210 -79
  117. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  118. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +2 -25
  119. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  120. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +2 -25
  121. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  122. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +2 -25
  123. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +3 -15
  124. package/dist/esm/generated/factories/SHA1Digest__factory.js +2 -25
  125. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  126. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +2 -25
  127. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +3 -15
  128. package/dist/esm/generated/factories/SHA256Digest__factory.js +2 -25
  129. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  130. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +2 -25
  131. package/dist/esm/generated/factories/index.d.ts +14 -0
  132. package/dist/esm/generated/factories/index.js +14 -0
  133. package/dist/esm/generated/index.d.ts +29 -1
  134. package/dist/esm/generated/index.js +15 -1
  135. package/dist/esm/index.d.ts +12 -6
  136. package/dist/esm/index.js +3 -2
  137. package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
  138. package/dist/esm/utils/wrapperExpiry.js +26 -0
  139. package/package.json +12 -10
  140. package/src/ABIs/Multicall.json +452 -0
  141. package/src/contracts/index.ts +1 -1
  142. package/src/functions/batch.test.ts +6 -6
  143. package/src/functions/batchWrappers.test.ts +5 -5
  144. package/src/functions/burnFuses.test.ts +5 -10
  145. package/src/functions/burnFuses.ts +1 -1
  146. package/src/functions/createSubname.test.ts +6 -10
  147. package/src/functions/createSubname.ts +14 -2
  148. package/src/functions/deleteSubname.test.ts +9 -28
  149. package/src/functions/deleteSubname.ts +3 -2
  150. package/src/functions/getDNSOwner.test.ts +1 -5
  151. package/src/functions/getExpiry.test.ts +26 -4
  152. package/src/functions/getExpiry.ts +87 -9
  153. package/src/functions/getFuses.test.ts +10 -33
  154. package/src/functions/getFuses.ts +10 -16
  155. package/src/functions/getHistory.test.ts +23 -11
  156. package/src/functions/getName.test.ts +4 -4
  157. package/src/functions/getNames.test.ts +97 -68
  158. package/src/functions/getOwner.test.ts +10 -25
  159. package/src/functions/getProfile.test.ts +32 -24
  160. package/src/functions/getResolver.test.ts +2 -6
  161. package/src/functions/getSpecificRecord.test.ts +16 -13
  162. package/src/functions/getSpecificRecord.ts +10 -4
  163. package/src/functions/getSubnames.test.ts +21 -17
  164. package/src/functions/getSubnames.ts +9 -2
  165. package/src/functions/makeCommitment.test.ts +2 -2
  166. package/src/functions/setName.test.ts +10 -11
  167. package/src/functions/setRecord.test.ts +12 -9
  168. package/src/functions/setRecords.test.ts +6 -5
  169. package/src/functions/setResolver.test.ts +6 -9
  170. package/src/functions/transferName.test.ts +13 -27
  171. package/src/functions/transferSubname.test.ts +11 -30
  172. package/src/functions/transferSubname.ts +28 -10
  173. package/src/functions/unwrapName.test.ts +13 -28
  174. package/src/functions/wrapName.test.ts +109 -34
  175. package/src/functions/wrapName.ts +45 -29
  176. package/src/generated/BaseRegistrarImplementation.ts +382 -296
  177. package/src/generated/DNSRegistrar.ts +103 -89
  178. package/src/generated/DNSSECImpl.ts +180 -149
  179. package/src/generated/DefaultReverseResolver.ts +37 -21
  180. package/src/generated/ENSRegistry.ts +257 -184
  181. package/src/generated/ETHRegistrarController.ts +252 -191
  182. package/src/generated/Multicall.ts +73 -57
  183. package/src/generated/NameWrapper.ts +979 -649
  184. package/src/generated/P256SHA256Algorithm.ts +21 -16
  185. package/src/generated/PublicResolver.ts +452 -362
  186. package/src/generated/RSASHA1Algorithm.ts +21 -16
  187. package/src/generated/RSASHA256Algorithm.ts +21 -16
  188. package/src/generated/ReverseRegistrar.ts +193 -141
  189. package/src/generated/Root.ts +146 -86
  190. package/src/generated/SHA1Digest.ts +12 -11
  191. package/src/generated/SHA1NSEC3Digest.ts +21 -16
  192. package/src/generated/SHA256Digest.ts +12 -11
  193. package/src/generated/StaticMetadataService.ts +22 -6
  194. package/src/generated/TLDPublicSuffixList.ts +10 -6
  195. package/src/generated/UniversalResolver.ts +44 -40
  196. package/src/generated/common.ts +2 -0
  197. package/src/generated/factories/DNSRegistrar__factory.ts +4 -56
  198. package/src/generated/factories/DNSSECImpl__factory.ts +4 -49
  199. package/src/generated/factories/ETHRegistrarController__factory.ts +14 -4
  200. package/src/generated/factories/NameWrapper__factory.ts +210 -79
  201. package/src/generated/factories/P256SHA256Algorithm__factory.ts +4 -40
  202. package/src/generated/factories/RSASHA1Algorithm__factory.ts +4 -40
  203. package/src/generated/factories/RSASHA256Algorithm__factory.ts +4 -40
  204. package/src/generated/factories/SHA1Digest__factory.ts +4 -40
  205. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +4 -40
  206. package/src/generated/factories/SHA256Digest__factory.ts +4 -40
  207. package/src/generated/factories/TLDPublicSuffixList__factory.ts +4 -40
  208. package/src/generated/factories/index.ts +14 -0
  209. package/src/generated/index.ts +29 -1
  210. package/src/index.ts +3 -2
  211. package/src/tests/setup.ts +18 -13
  212. package/src/tests/withProvider.test.ts +2 -2
  213. package/src/utils/wrapperExpiry.ts +31 -0
  214. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  215. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
  216. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  217. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
  218. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  219. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
  220. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  221. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
  222. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  223. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
  224. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  225. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
  226. package/src/ABIs/ETHRegistrarController.json +0 -494
  227. package/src/ABIs/NameWrapper.json +0 -1183
  228. package/src/ABIs/PublicResolver.json +0 -875
  229. package/src/ABIs/ReverseRegistrar.json +0 -323
  230. package/src/ABIs/StaticMetadataService.json +0 -32
  231. package/src/ABIs/UniversalResolver.json +0 -187
  232. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
  233. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
  234. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
@@ -1,3 +1,3 @@
1
1
  import { ethers } from 'ethers';
2
- declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated/BaseRegistrarImplementation").BaseRegistrarImplementation;
2
+ declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated").BaseRegistrarImplementation;
3
3
  export default _default;
@@ -7,10 +7,10 @@ export default class ContractManager {
7
7
  private generateContractGetter;
8
8
  getPublicResolver: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").PublicResolver>;
9
9
  getUniversalResolver: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").UniversalResolver>;
10
- getRegistry: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated/ENSRegistry").ENSRegistry>;
10
+ getRegistry: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").ENSRegistry>;
11
11
  getReverseRegistrar: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").ReverseRegistrar>;
12
12
  getNameWrapper: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").NameWrapper>;
13
- getBaseRegistrar: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated/BaseRegistrarImplementation").BaseRegistrarImplementation>;
13
+ getBaseRegistrar: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").BaseRegistrarImplementation>;
14
14
  getEthRegistrarController: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").ETHRegistrarController>;
15
- getMulticall: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated/Multicall").Multicall>;
15
+ getMulticall: (passedProvider?: any, address?: string | undefined) => Promise<import("../generated").Multicall>;
16
16
  }
@@ -1,3 +1,3 @@
1
1
  import { ethers } from 'ethers';
2
- declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated/Multicall").Multicall;
2
+ declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated").Multicall;
3
3
  export default _default;
@@ -1,3 +1,3 @@
1
1
  import { ethers } from 'ethers';
2
- declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated/ENSRegistry").ENSRegistry;
2
+ declare const _default: (provider: ethers.providers.JsonRpcProvider, address: string) => import("../generated").ENSRegistry;
3
3
  export default _default;
@@ -9,6 +9,6 @@ async function default_1({ contracts, signer }, name, { fusesToBurn, }) {
9
9
  const nameWrapper = (await contracts?.getNameWrapper()).connect(signer);
10
10
  const hash = (0, normalise_1.namehash)(name);
11
11
  const encodedFuses = (0, generateFuseInput_1.default)(fusesToBurn);
12
- return nameWrapper.populateTransaction.burnFuses(hash, encodedFuses);
12
+ return nameWrapper.populateTransaction.setFuses(hash, encodedFuses);
13
13
  }
14
14
  exports.default = default_1;
@@ -1,6 +1,7 @@
1
1
  import { ethers } from 'ethers';
2
2
  import { ENSArgs } from '..';
3
3
  import { FuseOptions } from '../@types/FuseOptions';
4
+ import { Expiry } from '../utils/wrapperExpiry';
4
5
  declare type BaseArgs = {
5
6
  owner: string;
6
7
  resolverAddress?: string;
@@ -9,7 +10,8 @@ declare type BaseArgs = {
9
10
  declare type NameWrapperArgs = {
10
11
  contract: 'nameWrapper';
11
12
  fuses?: FuseOptions;
13
+ expiry?: Expiry;
12
14
  } & BaseArgs;
13
15
  declare type Args = BaseArgs | NameWrapperArgs;
14
- export default function ({ contracts, signer }: ENSArgs<'contracts' | 'signer'>, name: string, { owner, resolverAddress, contract, ...wrapperArgs }: Args): Promise<ethers.PopulatedTransaction>;
16
+ export default function ({ contracts, signer, getExpiry, }: ENSArgs<'contracts' | 'signer' | 'getExpiry'>, name: string, { owner, resolverAddress, contract, ...wrapperArgs }: Args): Promise<ethers.PopulatedTransaction>;
15
17
  export {};
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const ethers_1 = require("ethers");
7
7
  const generateFuseInput_1 = __importDefault(require("../utils/generateFuseInput"));
8
8
  const normalise_1 = require("../utils/normalise");
9
- async function default_1({ contracts, signer }, name, { owner, resolverAddress, contract, ...wrapperArgs }) {
9
+ const wrapperExpiry_1 = require("../utils/wrapperExpiry");
10
+ async function default_1({ contracts, signer, getExpiry, }, name, { owner, resolverAddress, contract, ...wrapperArgs }) {
10
11
  const labels = name.split('.');
11
12
  if (labels.length === 1) {
12
13
  throw new Error('Subnames in ENS.js can only be created for 2LDs, not TLDs');
@@ -27,10 +28,11 @@ async function default_1({ contracts, signer }, name, { owner, resolverAddress,
27
28
  }
28
29
  case 'nameWrapper': {
29
30
  const nameWrapper = (await contracts?.getNameWrapper()).connect(signer);
31
+ const expiry = await (0, wrapperExpiry_1.makeExpiry)({ getExpiry }, name, 'expiry' in wrapperArgs ? wrapperArgs.expiry : undefined);
30
32
  const generatedFuses = 'fuses' in wrapperArgs && wrapperArgs.fuses
31
33
  ? (0, generateFuseInput_1.default)(wrapperArgs.fuses)
32
34
  : '0';
33
- return nameWrapper.populateTransaction.setSubnodeRecord(parentNodehash, label, owner, resolverAddress, 0, generatedFuses);
35
+ return nameWrapper.populateTransaction.setSubnodeRecord(parentNodehash, label, owner, resolverAddress, 0, generatedFuses, expiry);
34
36
  }
35
37
  default: {
36
38
  throw new Error(`Unknown contract: ${contract}`);
@@ -1,4 +1,4 @@
1
1
  import { ENSArgs } from '..';
2
- export default function ({ transferSubname }: ENSArgs<'transferSubname'>, name: string, { contract, }: {
2
+ export default function ({ transferSubname, signer }: ENSArgs<'transferSubname' | 'signer'>, name: string, { contract, }: {
3
3
  contract: 'registry' | 'nameWrapper';
4
4
  }): Promise<import("ethers").PopulatedTransaction>;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- async function default_1({ transferSubname }, name, { contract, }) {
3
+ async function default_1({ transferSubname, signer }, name, { contract, }) {
4
4
  return transferSubname.populateTransaction(name, {
5
5
  contract,
6
- address: '0x0000000000000000000000000000000000000000',
6
+ owner: '0x0000000000000000000000000000000000000000',
7
+ signer,
7
8
  });
8
9
  }
9
10
  exports.default = default_1;
@@ -1,10 +1,17 @@
1
1
  import { ENSArgs } from '..';
2
+ declare type ContractOption = 'registrar' | 'nameWrapper';
3
+ declare type Args = {
4
+ contract?: ContractOption;
5
+ };
2
6
  declare const _default: {
3
- raw: ({ contracts, multicallWrapper }: ENSArgs<"contracts" | "multicallWrapper">, name: string) => Promise<{
7
+ raw: (ensArgs: ENSArgs<"contracts" | "multicallWrapper">, name: string, { contract }?: Args) => Promise<{
4
8
  to: string;
5
9
  data: string;
6
10
  }>;
7
- decode: ({ contracts, multicallWrapper }: ENSArgs<"contracts" | "multicallWrapper">, data: string) => Promise<{
11
+ decode: (ensArgs: ENSArgs<"contracts" | "multicallWrapper">, data: string, name: string, { contract }?: Args) => Promise<{
12
+ expiry: Date;
13
+ gracePeriod: null;
14
+ } | {
8
15
  expiry: Date | null;
9
16
  gracePeriod: number;
10
17
  } | undefined>;
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const utils_1 = require("ethers/lib/utils");
4
- const raw = async ({ contracts, multicallWrapper }, name) => {
5
- const baseRegistrar = await contracts?.getBaseRegistrar();
6
- const labels = name.split('.');
4
+ const normalise_1 = require("../utils/normalise");
5
+ const getRegistrarExpiry = async ({ contracts, multicallWrapper }, labels) => {
7
6
  if (labels.length > 2 || labels[1] !== 'eth') {
8
- throw new Error('Only .eth names have expiry dates');
7
+ throw new Error('Only .eth names have expiry dates on the registrar');
9
8
  }
9
+ const baseRegistrar = await contracts?.getBaseRegistrar();
10
10
  const expiryCall = baseRegistrar.interface.encodeFunctionData('nameExpires', [
11
11
  (0, utils_1.solidityKeccak256)(['string'], [labels[0]]),
12
12
  ]);
@@ -22,9 +22,32 @@ const raw = async ({ contracts, multicallWrapper }, name) => {
22
22
  },
23
23
  ]);
24
24
  };
25
- const decode = async ({ contracts, multicallWrapper }, data) => {
26
- if (data === null)
27
- return;
25
+ const getWrapperExpiry = async ({ contracts }, labels) => {
26
+ const nameWrapper = await contracts?.getNameWrapper();
27
+ const expiryCall = nameWrapper.interface.encodeFunctionData('getData', [
28
+ (0, normalise_1.namehash)(labels.join('.')),
29
+ ]);
30
+ return {
31
+ to: nameWrapper.address,
32
+ data: expiryCall,
33
+ };
34
+ };
35
+ const getContractToUse = (contract, labels) => {
36
+ if (contract)
37
+ return contract;
38
+ if (labels.length === 2 && labels[1] === 'eth') {
39
+ return 'registrar';
40
+ }
41
+ return 'nameWrapper';
42
+ };
43
+ const raw = async (ensArgs, name, { contract } = {}) => {
44
+ const labels = name.split('.');
45
+ const contractToUse = getContractToUse(contract, labels);
46
+ return contractToUse === 'nameWrapper'
47
+ ? getWrapperExpiry(ensArgs, labels)
48
+ : getRegistrarExpiry(ensArgs, labels);
49
+ };
50
+ const decodeRegistrarExpiry = async ({ contracts, multicallWrapper }, data) => {
28
51
  const result = await multicallWrapper.decode(data);
29
52
  const baseRegistrar = await contracts?.getBaseRegistrar();
30
53
  try {
@@ -39,6 +62,28 @@ const decode = async ({ contracts, multicallWrapper }, data) => {
39
62
  return;
40
63
  }
41
64
  };
65
+ const decodeWrapperExpiry = async ({ contracts }, data) => {
66
+ const nameWrapper = await contracts?.getNameWrapper();
67
+ try {
68
+ const [_owner, _fuses, expiry] = nameWrapper.interface.decodeFunctionResult('getData', data);
69
+ return {
70
+ expiry: new Date(expiry * 1000),
71
+ gracePeriod: null,
72
+ };
73
+ }
74
+ catch {
75
+ return;
76
+ }
77
+ };
78
+ const decode = async (ensArgs, data, name, { contract } = {}) => {
79
+ if (data === null)
80
+ return;
81
+ const labels = name.split('.');
82
+ const contractToUse = getContractToUse(contract, labels);
83
+ return contractToUse === 'nameWrapper'
84
+ ? decodeWrapperExpiry(ensArgs, data)
85
+ : decodeRegistrarExpiry(ensArgs, data);
86
+ };
42
87
  exports.default = {
43
88
  raw,
44
89
  decode,
@@ -7,10 +7,9 @@ declare const _default: {
7
7
  }>;
8
8
  decode: ({ contracts }: ENSArgs<"contracts">, data: string, name: string) => Promise<{
9
9
  fuseObj: {
10
- [k: string]: any;
10
+ [k: string]: boolean;
11
11
  };
12
- vulnerability: any;
13
- vulnerableNode: null;
12
+ expiryDate: Date;
14
13
  rawFuses: BigNumber;
15
14
  } | undefined>;
16
15
  };
@@ -22,7 +22,8 @@ const raw = async ({ contracts }, name) => {
22
22
  const decode = async ({ contracts }, data, name) => {
23
23
  const nameWrapper = await contracts?.getNameWrapper();
24
24
  try {
25
- const [fuses, vulnerability, vulnerableNode] = nameWrapper.interface.decodeFunctionResult('getFuses', data);
25
+ const [_fuses, expiry] = nameWrapper.interface.decodeFunctionResult('getFuses', data);
26
+ const fuses = ethers_1.BigNumber.from(_fuses);
26
27
  const fuseObj = Object.fromEntries(Object.keys(fuses_1.testable).map((fuseEnum) => [
27
28
  fuseEnum
28
29
  .toLowerCase()
@@ -35,20 +36,10 @@ const decode = async ({ contracts }, data, name) => {
35
36
  else {
36
37
  fuseObj.canDoEverything = false;
37
38
  }
38
- let returnVulnerableNode = null;
39
- if (ethers_1.utils.hexStripZeros(vulnerableNode) !== '0x') {
40
- name.split('.').forEach((label, index, arr) => {
41
- const node = arr.slice(index).join('.');
42
- const nodehash = (0, normalise_1.namehash)(node);
43
- if (nodehash === vulnerableNode) {
44
- returnVulnerableNode = node;
45
- }
46
- });
47
- }
39
+ const expiryDate = new Date(expiry * 1000);
48
40
  return {
49
41
  fuseObj,
50
- vulnerability: NameSafety[vulnerability] || vulnerability,
51
- vulnerableNode: returnVulnerableNode,
42
+ expiryDate,
52
43
  rawFuses: fuses,
53
44
  };
54
45
  }
@@ -16,8 +16,15 @@ exports._getContentHash = {
16
16
  };
17
17
  },
18
18
  decode: async ({ contracts }, data) => {
19
+ let response;
19
20
  const publicResolver = await contracts?.getPublicResolver();
20
- const [response] = publicResolver.interface.decodeFunctionResult('contenthash', data);
21
+ try {
22
+ ;
23
+ [response] = publicResolver.interface.decodeFunctionResult('contenthash', data);
24
+ }
25
+ catch {
26
+ return;
27
+ }
21
28
  if (!response) {
22
29
  return;
23
30
  }
@@ -16,7 +16,7 @@ declare type Params = {
16
16
  pageSize?: number;
17
17
  orderDirection?: 'asc' | 'desc';
18
18
  orderBy?: 'createdAt' | 'labelName';
19
- lastSubnames: Array<any>;
19
+ lastSubnames?: Array<any>;
20
20
  isLargeQuery?: boolean;
21
21
  };
22
22
  declare const getSubnames: (injected: ENSArgs<'gqlInstance'>, functionArgs: Params) => Promise<{
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const format_1 = require("../utils/format");
4
4
  const labels_1 = require("../utils/labels");
5
5
  const normalise_1 = require("../utils/normalise");
6
- const largeQuery = async ({ gqlInstance }, { name, page, pageSize = 10, orderDirection, orderBy, lastSubnames }) => {
6
+ const largeQuery = async ({ gqlInstance }, { name, page, pageSize = 10, orderDirection, orderBy, lastSubnames = [], }) => {
7
7
  const client = gqlInstance.client;
8
8
  let finalQuery = gqlInstance.gql `
9
9
  query getSubnames(
@@ -1,6 +1,15 @@
1
1
  import { ethers } from 'ethers';
2
2
  import { ENSArgs } from '..';
3
- export default function ({ contracts, signer }: ENSArgs<'contracts' | 'signer'>, name: string, { contract, address, }: {
3
+ import { Expiry } from '../utils/wrapperExpiry';
4
+ declare type BaseArgs = {
5
+ owner: string;
6
+ resolverAddress?: string;
4
7
  contract: 'registry' | 'nameWrapper';
5
- address: string;
6
- }): Promise<ethers.PopulatedTransaction>;
8
+ };
9
+ declare type NameWrapperArgs = {
10
+ contract: 'nameWrapper';
11
+ expiry?: Expiry;
12
+ } & BaseArgs;
13
+ declare type Args = BaseArgs | NameWrapperArgs;
14
+ export default function ({ contracts, signer, getExpiry, }: ENSArgs<'contracts' | 'signer' | 'getExpiry'>, name: string, { contract, owner, resolverAddress, ...wrapperArgs }: Args): Promise<ethers.PopulatedTransaction>;
15
+ export {};
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const ethers_1 = require("ethers");
4
4
  const normalise_1 = require("../utils/normalise");
5
- async function default_1({ contracts, signer }, name, { contract, address, }) {
5
+ const wrapperExpiry_1 = require("../utils/wrapperExpiry");
6
+ async function default_1({ contracts, signer, getExpiry, }, name, { contract, owner, resolverAddress, ...wrapperArgs }) {
6
7
  const labels = name.split('.');
7
8
  const label = labels.shift();
8
9
  const labelhash = ethers_1.ethers.utils.solidityKeccak256(['string'], [label]);
@@ -10,11 +11,12 @@ async function default_1({ contracts, signer }, name, { contract, address, }) {
10
11
  switch (contract) {
11
12
  case 'registry': {
12
13
  const registry = (await contracts?.getRegistry()).connect(signer);
13
- return registry.populateTransaction.setSubnodeOwner(parentNodehash, labelhash, address);
14
+ return registry.populateTransaction.setSubnodeOwner(parentNodehash, labelhash, owner);
14
15
  }
15
16
  case 'nameWrapper': {
16
17
  const nameWrapper = (await contracts?.getNameWrapper()).connect(signer);
17
- return nameWrapper.populateTransaction.setSubnodeOwner(parentNodehash, label, address, '0');
18
+ const expiry = await (0, wrapperExpiry_1.makeExpiry)({ getExpiry }, labels.join('.'), 'expiry' in wrapperArgs ? wrapperArgs.expiry : undefined);
19
+ return nameWrapper.populateTransaction.setSubnodeOwner(parentNodehash, label, owner, '0', expiry);
18
20
  }
19
21
  default: {
20
22
  throw new Error(`Unknown contract: ${contract}`);
@@ -1,8 +1,10 @@
1
1
  import { ethers } from 'ethers';
2
2
  import { ENSArgs } from '..';
3
3
  import type { FuseOptions } from '../@types/FuseOptions';
4
- export default function ({ contracts, signer, populate }: ENSArgs<'contracts' | 'signer' | 'populate'>, name: string, { wrappedOwner, fuseOptions, resolverAddress, }: {
4
+ import { Expiry } from '../utils/wrapperExpiry';
5
+ export default function ({ contracts, signer, getExpiry, }: ENSArgs<'contracts' | 'signer' | 'getExpiry'>, name: string, { wrappedOwner, fuseOptions, expiry, resolverAddress, }: {
5
6
  wrappedOwner: string;
6
7
  fuseOptions?: FuseOptions | string | number;
8
+ expiry?: Expiry;
7
9
  resolverAddress?: string;
8
10
  }): Promise<ethers.PopulatedTransaction>;
@@ -6,55 +6,61 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const ethers_1 = require("ethers");
7
7
  const generateFuseInput_1 = __importDefault(require("../utils/generateFuseInput"));
8
8
  const hexEncodedName_1 = require("../utils/hexEncodedName");
9
- async function wrapETH({ contracts }, labels, wrappedOwner, decodedFuses, resolverAddress, signer, address) {
9
+ const wrapperExpiry_1 = require("../utils/wrapperExpiry");
10
+ async function wrapETH({ contracts }, labels, wrappedOwner, expiry, decodedFuses, resolverAddress, signer, address) {
10
11
  const nameWrapper = await contracts?.getNameWrapper();
11
12
  const baseRegistrar = (await contracts?.getBaseRegistrar()).connect(signer);
12
13
  const labelhash = ethers_1.ethers.utils.solidityKeccak256(['string'], [labels[0]]);
13
- const data = ethers_1.ethers.utils.defaultAbiCoder.encode(['string', 'address', 'uint32', 'uint64', 'address'], [labels[0], wrappedOwner, '0x0', decodedFuses, resolverAddress]);
14
+ const data = ethers_1.ethers.utils.defaultAbiCoder.encode(['string', 'address', 'uint32', 'uint64', 'address'], [labels[0], wrappedOwner, decodedFuses, expiry, resolverAddress]);
14
15
  return baseRegistrar.populateTransaction['safeTransferFrom(address,address,uint256,bytes)'](address, nameWrapper.address, labelhash, data);
15
16
  }
16
- async function wrapOther({ contracts }, name, wrappedOwner, decodedFuses, resolverAddress, address, signer) {
17
+ async function wrapOther({ contracts }, name, wrappedOwner, resolverAddress, address, signer) {
17
18
  const nameWrapper = (await contracts?.getNameWrapper()).connect(signer);
18
19
  const registry = await contracts?.getRegistry();
19
20
  const hasApproval = await registry.isApprovedForAll(address, nameWrapper.address);
20
21
  if (!hasApproval) {
21
22
  throw new Error('NameWrapper must have approval to wrap a name from this address.');
22
23
  }
23
- return nameWrapper.populateTransaction.wrap((0, hexEncodedName_1.hexEncodeName)(name), wrappedOwner, decodedFuses, resolverAddress);
24
+ return nameWrapper.populateTransaction.wrap((0, hexEncodedName_1.hexEncodeName)(name), wrappedOwner, resolverAddress);
24
25
  }
25
- async function default_1({ contracts, signer, populate }, name, { wrappedOwner, fuseOptions, resolverAddress, }) {
26
+ async function default_1({ contracts, signer, getExpiry, }, name, { wrappedOwner, fuseOptions, expiry, resolverAddress, }) {
26
27
  const address = await signer.getAddress();
27
28
  let decodedFuses;
28
- switch (typeof fuseOptions) {
29
- case 'object': {
30
- decodedFuses = (0, generateFuseInput_1.default)(fuseOptions);
31
- break;
32
- }
33
- case 'number': {
34
- decodedFuses = fuseOptions.toString(16);
35
- break;
36
- }
37
- case 'string': {
38
- decodedFuses = fuseOptions;
39
- break;
40
- }
41
- case 'undefined': {
42
- decodedFuses = '0';
43
- break;
44
- }
45
- default: {
46
- throw new Error(`Invalid fuseOptions type: ${typeof fuseOptions}`);
47
- }
48
- }
49
29
  const publicResolver = await contracts?.getPublicResolver();
50
30
  if (!resolverAddress)
51
31
  resolverAddress = publicResolver.address;
52
32
  const labels = name.split('.');
53
- if (labels.length < 3 && labels[labels.length - 1] === 'eth') {
54
- return wrapETH({ contracts }, labels, wrappedOwner, decodedFuses, resolverAddress, signer, address);
33
+ if (labels.length === 2 && labels[1] === 'eth') {
34
+ switch (typeof fuseOptions) {
35
+ case 'object': {
36
+ decodedFuses = (0, generateFuseInput_1.default)(fuseOptions);
37
+ break;
38
+ }
39
+ case 'number': {
40
+ decodedFuses = fuseOptions.toString(16);
41
+ break;
42
+ }
43
+ case 'string': {
44
+ decodedFuses = fuseOptions;
45
+ break;
46
+ }
47
+ case 'undefined': {
48
+ decodedFuses = '0';
49
+ break;
50
+ }
51
+ default: {
52
+ throw new Error(`Invalid fuseOptions type: ${typeof fuseOptions}`);
53
+ }
54
+ }
55
+ const expiryToUse = await (0, wrapperExpiry_1.makeExpiry)({ getExpiry }, name, expiry);
56
+ return wrapETH({ contracts }, labels, wrappedOwner, expiryToUse, decodedFuses, resolverAddress, signer, address);
55
57
  }
56
58
  else {
57
- return wrapOther({ contracts }, name, wrappedOwner, decodedFuses, resolverAddress, address, signer);
59
+ if (fuseOptions)
60
+ throw new Error('Fuses can not be initially set when wrapping a non .eth name');
61
+ if (expiry)
62
+ throw new Error('Expiry can not be initially set when wrapping a non .eth name');
63
+ return wrapOther({ contracts }, name, wrappedOwner, resolverAddress, address, signer);
58
64
  }
59
65
  }
60
66
  exports.default = default_1;