@ensdomains/ensjs 2.1.0 → 3.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +651 -99
- package/dist/cjs/GqlManager.d.ts +6 -0
- package/dist/cjs/GqlManager.js +42 -0
- package/dist/cjs/contracts/baseRegistrar.d.ts +3 -0
- package/dist/cjs/contracts/baseRegistrar.js +4 -0
- package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
- package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +4 -0
- package/dist/cjs/contracts/ethRegistrarController.d.ts +3 -0
- package/dist/cjs/contracts/ethRegistrarController.js +4 -0
- package/dist/cjs/contracts/getContractAddress.d.ts +3 -0
- package/dist/cjs/contracts/getContractAddress.js +46 -0
- package/dist/cjs/contracts/index.d.ts +16 -0
- package/dist/cjs/contracts/index.js +37 -0
- package/dist/cjs/contracts/multicall.d.ts +3 -0
- package/dist/cjs/contracts/multicall.js +22 -0
- package/dist/cjs/contracts/nameWrapper.d.ts +3 -0
- package/dist/cjs/contracts/nameWrapper.js +4 -0
- package/dist/cjs/contracts/publicResolver.d.ts +3 -0
- package/dist/cjs/contracts/publicResolver.js +4 -0
- package/dist/cjs/contracts/registry.d.ts +3 -0
- package/dist/cjs/contracts/registry.js +4 -0
- package/dist/cjs/contracts/reverseRegistrar.d.ts +3 -0
- package/dist/cjs/contracts/reverseRegistrar.js +4 -0
- package/dist/cjs/contracts/types.d.ts +2 -0
- package/dist/cjs/contracts/types.js +2 -0
- package/dist/cjs/contracts/universalResolver.d.ts +3 -0
- package/dist/cjs/contracts/universalResolver.js +4 -0
- package/dist/cjs/functions/batch.d.ts +9 -0
- package/dist/cjs/functions/batch.js +21 -0
- package/dist/cjs/functions/batchWrappers.d.ts +29 -0
- package/dist/cjs/functions/batchWrappers.js +71 -0
- package/dist/cjs/functions/burnFuses.d.ts +3 -0
- package/dist/cjs/functions/burnFuses.js +18 -0
- package/dist/cjs/functions/createSubname.d.ts +19 -0
- package/dist/cjs/functions/createSubname.js +44 -0
- package/dist/cjs/functions/deleteSubname.d.ts +4 -0
- package/dist/cjs/functions/deleteSubname.js +6 -0
- package/dist/cjs/functions/getDNSOwner.d.ts +7 -0
- package/dist/cjs/functions/getDNSOwner.js +81 -0
- package/dist/cjs/functions/getExpiry.d.ts +12 -0
- package/dist/cjs/functions/getExpiry.js +45 -0
- package/dist/cjs/functions/getFuses.d.ts +17 -0
- package/dist/cjs/functions/getFuses.js +62 -0
- package/dist/cjs/functions/getHistory.d.ts +54 -0
- package/dist/cjs/functions/getHistory.js +279 -0
- package/dist/cjs/functions/getName.d.ts +19 -0
- package/dist/cjs/functions/getName.js +34 -0
- package/dist/cjs/functions/getNames.d.ts +40 -0
- package/dist/cjs/functions/getNames.js +222 -0
- package/dist/cjs/functions/getOwner.d.ts +14 -0
- package/dist/cjs/functions/getOwner.js +140 -0
- package/dist/cjs/functions/getPrice.d.ts +13 -0
- package/dist/cjs/functions/getPrice.js +50 -0
- package/dist/cjs/functions/getProfile.d.ts +30 -0
- package/dist/cjs/functions/getProfile.js +302 -0
- package/dist/cjs/functions/getRecords.d.ts +32 -0
- package/dist/cjs/functions/getRecords.js +11 -0
- package/dist/cjs/functions/getResolver.d.ts +9 -0
- package/dist/cjs/functions/getResolver.js +24 -0
- package/dist/cjs/functions/getSpecificRecord.d.ts +73 -0
- package/dist/cjs/functions/getSpecificRecord.js +268 -0
- package/dist/cjs/functions/getSubnames.d.ts +26 -0
- package/dist/cjs/functions/getSubnames.js +154 -0
- package/dist/cjs/functions/initialGetters.d.ts +11 -0
- package/dist/cjs/functions/initialGetters.js +40 -0
- package/dist/cjs/functions/setName.d.ts +4 -0
- package/dist/cjs/functions/setName.js +17 -0
- package/dist/cjs/functions/setRecords.d.ts +3 -0
- package/dist/cjs/functions/setRecords.js +22 -0
- package/dist/cjs/functions/setResolver.d.ts +4 -0
- package/dist/cjs/functions/setResolver.js +28 -0
- package/dist/cjs/functions/transferName.d.ts +5 -0
- package/dist/cjs/functions/transferName.js +34 -0
- package/dist/cjs/functions/transferSubname.d.ts +5 -0
- package/dist/cjs/functions/transferSubname.js +28 -0
- package/dist/cjs/functions/unwrapName.d.ts +4 -0
- package/dist/cjs/functions/unwrapName.js +28 -0
- package/dist/cjs/functions/wrapName.d.ts +6 -0
- package/dist/cjs/functions/wrapName.js +64 -0
- package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +487 -0
- package/dist/cjs/generated/BaseRegistrarImplementation.js +2 -0
- package/dist/cjs/generated/DNSRegistrar.d.ts +220 -0
- package/dist/cjs/generated/DNSRegistrar.js +2 -0
- package/dist/cjs/generated/DNSSECImpl.d.ts +402 -0
- package/dist/cjs/generated/DNSSECImpl.js +2 -0
- package/dist/cjs/generated/DefaultReverseResolver.d.ts +66 -0
- package/dist/cjs/generated/DefaultReverseResolver.js +2 -0
- package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +144 -0
- package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +2 -0
- package/dist/cjs/generated/ENSRegistry.d.ts +259 -0
- package/dist/cjs/generated/ENSRegistry.js +2 -0
- package/dist/cjs/generated/ETHRegistrarController.d.ts +319 -0
- package/dist/cjs/generated/ETHRegistrarController.js +2 -0
- package/dist/cjs/generated/Multicall.d.ts +292 -0
- package/dist/cjs/generated/Multicall.js +2 -0
- package/dist/cjs/generated/NameWrapper.d.ts +675 -0
- package/dist/cjs/generated/NameWrapper.js +2 -0
- package/dist/cjs/generated/P256SHA256Algorithm.d.ts +72 -0
- package/dist/cjs/generated/P256SHA256Algorithm.js +2 -0
- package/dist/cjs/generated/PublicResolver.d.ts +542 -0
- package/dist/cjs/generated/PublicResolver.js +2 -0
- package/dist/cjs/generated/RSASHA1Algorithm.d.ts +42 -0
- package/dist/cjs/generated/RSASHA1Algorithm.js +2 -0
- package/dist/cjs/generated/RSASHA256Algorithm.d.ts +42 -0
- package/dist/cjs/generated/RSASHA256Algorithm.js +2 -0
- package/dist/cjs/generated/ReverseRegistrar.d.ts +259 -0
- package/dist/cjs/generated/ReverseRegistrar.js +2 -0
- package/dist/cjs/generated/Root.d.ts +173 -0
- package/dist/cjs/generated/Root.js +2 -0
- package/dist/cjs/generated/SHA1Digest.d.ts +67 -0
- package/dist/cjs/generated/SHA1Digest.js +2 -0
- package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +72 -0
- package/dist/cjs/generated/SHA1NSEC3Digest.js +2 -0
- package/dist/cjs/generated/SHA256Digest.d.ts +67 -0
- package/dist/cjs/generated/SHA256Digest.js +2 -0
- package/dist/cjs/generated/StaticMetadataService.d.ts +42 -0
- package/dist/cjs/generated/StaticMetadataService.js +2 -0
- package/dist/cjs/generated/TLDPublicSuffixList.d.ts +42 -0
- package/dist/cjs/generated/TLDPublicSuffixList.js +2 -0
- package/dist/cjs/generated/UniversalResolver.d.ts +82 -0
- package/dist/cjs/generated/UniversalResolver.js +2 -0
- package/dist/cjs/generated/common.d.ts +21 -0
- package/dist/cjs/generated/common.js +2 -0
- package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
- package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +770 -0
- package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +79 -0
- package/dist/cjs/generated/factories/DNSRegistrar__factory.js +296 -0
- package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +68 -0
- package/dist/cjs/generated/factories/DNSSECImpl__factory.js +501 -0
- package/dist/cjs/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
- package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +87 -0
- package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +56 -0
- package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +171 -0
- package/dist/cjs/generated/factories/ENSRegistry__factory.d.ts +52 -0
- package/dist/cjs/generated/factories/ENSRegistry__factory.js +439 -0
- package/dist/cjs/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
- package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +511 -0
- package/dist/cjs/generated/factories/Multicall__factory.d.ts +42 -0
- package/dist/cjs/generated/factories/Multicall__factory.js +457 -0
- package/dist/cjs/generated/factories/NameWrapper__factory.d.ts +57 -0
- package/dist/cjs/generated/factories/NameWrapper__factory.js +1200 -0
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +34 -0
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +71 -0
- package/dist/cjs/generated/factories/PublicResolver__factory.d.ts +46 -0
- package/dist/cjs/generated/factories/PublicResolver__factory.js +892 -0
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +34 -0
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +71 -0
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +34 -0
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +71 -0
- package/dist/cjs/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
- package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +340 -0
- package/dist/cjs/generated/factories/Root__factory.d.ts +52 -0
- package/dist/cjs/generated/factories/Root__factory.js +243 -0
- package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +34 -0
- package/dist/cjs/generated/factories/SHA1Digest__factory.js +66 -0
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +34 -0
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +71 -0
- package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +34 -0
- package/dist/cjs/generated/factories/SHA256Digest__factory.js +66 -0
- package/dist/cjs/generated/factories/StaticMetadataService__factory.d.ts +32 -0
- package/dist/cjs/generated/factories/StaticMetadataService__factory.js +49 -0
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +34 -0
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +61 -0
- package/dist/cjs/generated/factories/UniversalResolver__factory.d.ts +42 -0
- package/dist/cjs/generated/factories/UniversalResolver__factory.js +204 -0
- package/dist/cjs/generated/factories/index.d.ts +6 -0
- package/dist/cjs/generated/factories/index.js +18 -0
- package/dist/cjs/generated/index.d.ts +13 -0
- package/dist/cjs/generated/index.js +39 -0
- package/dist/cjs/index.d.ts +471 -0
- package/dist/cjs/index.js +228 -0
- package/dist/cjs/utils/contentHash.d.ts +28 -0
- package/dist/cjs/utils/contentHash.js +164 -0
- package/dist/cjs/utils/createReverseNode.d.ts +2 -0
- package/dist/cjs/utils/createReverseNode.js +3 -0
- package/dist/cjs/utils/format.d.ts +3 -0
- package/dist/cjs/utils/format.js +9 -0
- package/dist/cjs/utils/fuses.d.ts +20 -0
- package/dist/cjs/utils/fuses.js +24 -0
- package/dist/cjs/utils/generateFuseInput.d.ts +3 -0
- package/dist/cjs/utils/generateFuseInput.js +19 -0
- package/dist/cjs/utils/hexEncodedName.d.ts +1 -0
- package/dist/cjs/utils/hexEncodedName.js +9 -0
- package/dist/cjs/utils/labels.d.ts +14 -0
- package/dist/cjs/utils/labels.js +112 -0
- package/dist/cjs/utils/makeHashIndexes.d.ts +2 -0
- package/dist/cjs/utils/makeHashIndexes.js +8 -0
- package/dist/cjs/utils/normalise.d.ts +2 -0
- package/dist/cjs/utils/normalise.js +28 -0
- package/dist/cjs/utils/recordHelpers.d.ts +13 -0
- package/dist/cjs/utils/recordHelpers.js +44 -0
- package/dist/cjs/utils/registerHelpers.d.ts +26 -0
- package/dist/cjs/utils/registerHelpers.js +52 -0
- package/dist/cjs/utils/singleCall.d.ts +9 -0
- package/dist/cjs/utils/singleCall.js +7 -0
- package/dist/cjs/utils/validation.d.ts +8 -0
- package/dist/cjs/utils/validation.js +73 -0
- package/dist/esm/GqlManager.d.ts +6 -0
- package/dist/esm/GqlManager.js +18 -0
- package/dist/esm/contracts/baseRegistrar.d.ts +3 -0
- package/dist/esm/contracts/baseRegistrar.js +2 -0
- package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +3 -0
- package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +2 -0
- package/dist/esm/contracts/ethRegistrarController.d.ts +3 -0
- package/dist/esm/contracts/ethRegistrarController.js +2 -0
- package/dist/esm/contracts/getContractAddress.d.ts +3 -0
- package/dist/esm/contracts/getContractAddress.js +42 -0
- package/dist/esm/contracts/index.d.ts +16 -0
- package/dist/esm/contracts/index.js +29 -0
- package/dist/esm/contracts/multicall.d.ts +3 -0
- package/dist/esm/contracts/multicall.js +20 -0
- package/dist/esm/contracts/nameWrapper.d.ts +3 -0
- package/dist/esm/contracts/nameWrapper.js +2 -0
- package/dist/esm/contracts/publicResolver.d.ts +3 -0
- package/dist/esm/contracts/publicResolver.js +2 -0
- package/dist/esm/contracts/registry.d.ts +3 -0
- package/dist/esm/contracts/registry.js +2 -0
- package/dist/esm/contracts/reverseRegistrar.d.ts +3 -0
- package/dist/esm/contracts/reverseRegistrar.js +2 -0
- package/dist/esm/contracts/types.d.ts +2 -0
- package/dist/esm/contracts/types.js +1 -0
- package/dist/esm/contracts/universalResolver.d.ts +3 -0
- package/dist/esm/contracts/universalResolver.js +2 -0
- package/dist/esm/functions/batch.d.ts +9 -0
- package/dist/esm/functions/batch.js +19 -0
- package/dist/esm/functions/batchWrappers.d.ts +29 -0
- package/dist/esm/functions/batchWrappers.js +68 -0
- package/dist/esm/functions/burnFuses.d.ts +3 -0
- package/dist/esm/functions/burnFuses.js +12 -0
- package/dist/esm/functions/createSubname.d.ts +19 -0
- package/dist/esm/functions/createSubname.js +38 -0
- package/dist/esm/functions/deleteSubname.d.ts +4 -0
- package/dist/esm/functions/deleteSubname.js +3 -0
- package/dist/esm/functions/getDNSOwner.d.ts +7 -0
- package/dist/esm/functions/getDNSOwner.js +51 -0
- package/dist/esm/functions/getExpiry.d.ts +12 -0
- package/dist/esm/functions/getExpiry.js +43 -0
- package/dist/esm/functions/getFuses.d.ts +17 -0
- package/dist/esm/functions/getFuses.js +60 -0
- package/dist/esm/functions/getHistory.d.ts +54 -0
- package/dist/esm/functions/getHistory.js +273 -0
- package/dist/esm/functions/getName.d.ts +19 -0
- package/dist/esm/functions/getName.js +32 -0
- package/dist/esm/functions/getNames.d.ts +40 -0
- package/dist/esm/functions/getNames.js +220 -0
- package/dist/esm/functions/getOwner.d.ts +14 -0
- package/dist/esm/functions/getOwner.js +138 -0
- package/dist/esm/functions/getPrice.d.ts +13 -0
- package/dist/esm/functions/getPrice.js +48 -0
- package/dist/esm/functions/getProfile.d.ts +30 -0
- package/dist/esm/functions/getProfile.js +299 -0
- package/dist/esm/functions/getRecords.d.ts +32 -0
- package/dist/esm/functions/getRecords.js +8 -0
- package/dist/esm/functions/getResolver.d.ts +9 -0
- package/dist/esm/functions/getResolver.js +22 -0
- package/dist/esm/functions/getSpecificRecord.d.ts +73 -0
- package/dist/esm/functions/getSpecificRecord.js +265 -0
- package/dist/esm/functions/getSubnames.d.ts +26 -0
- package/dist/esm/functions/getSubnames.js +152 -0
- package/dist/esm/functions/initialGetters.d.ts +11 -0
- package/dist/esm/functions/initialGetters.js +11 -0
- package/dist/esm/functions/setName.d.ts +4 -0
- package/dist/esm/functions/setName.js +14 -0
- package/dist/esm/functions/setRecords.d.ts +3 -0
- package/dist/esm/functions/setRecords.js +19 -0
- package/dist/esm/functions/setResolver.d.ts +4 -0
- package/dist/esm/functions/setResolver.js +25 -0
- package/dist/esm/functions/transferName.d.ts +5 -0
- package/dist/esm/functions/transferName.js +31 -0
- package/dist/esm/functions/transferSubname.d.ts +5 -0
- package/dist/esm/functions/transferSubname.js +25 -0
- package/dist/esm/functions/unwrapName.d.ts +4 -0
- package/dist/esm/functions/unwrapName.js +25 -0
- package/dist/esm/functions/wrapName.d.ts +6 -0
- package/dist/esm/functions/wrapName.js +58 -0
- package/dist/esm/generated/BaseRegistrarImplementation.d.ts +487 -0
- package/dist/esm/generated/BaseRegistrarImplementation.js +1 -0
- package/dist/esm/generated/DNSRegistrar.d.ts +220 -0
- package/dist/esm/generated/DNSRegistrar.js +1 -0
- package/dist/esm/generated/DNSSECImpl.d.ts +402 -0
- package/dist/esm/generated/DNSSECImpl.js +1 -0
- package/dist/esm/generated/DefaultReverseResolver.d.ts +66 -0
- package/dist/esm/generated/DefaultReverseResolver.js +1 -0
- package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +144 -0
- package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +1 -0
- package/dist/esm/generated/ENSRegistry.d.ts +259 -0
- package/dist/esm/generated/ENSRegistry.js +1 -0
- package/dist/esm/generated/ETHRegistrarController.d.ts +319 -0
- package/dist/esm/generated/ETHRegistrarController.js +1 -0
- package/dist/esm/generated/Multicall.d.ts +292 -0
- package/dist/esm/generated/Multicall.js +1 -0
- package/dist/esm/generated/NameWrapper.d.ts +675 -0
- package/dist/esm/generated/NameWrapper.js +1 -0
- package/dist/esm/generated/P256SHA256Algorithm.d.ts +72 -0
- package/dist/esm/generated/P256SHA256Algorithm.js +1 -0
- package/dist/esm/generated/PublicResolver.d.ts +542 -0
- package/dist/esm/generated/PublicResolver.js +1 -0
- package/dist/esm/generated/RSASHA1Algorithm.d.ts +42 -0
- package/dist/esm/generated/RSASHA1Algorithm.js +1 -0
- package/dist/esm/generated/RSASHA256Algorithm.d.ts +42 -0
- package/dist/esm/generated/RSASHA256Algorithm.js +1 -0
- package/dist/esm/generated/ReverseRegistrar.d.ts +259 -0
- package/dist/esm/generated/ReverseRegistrar.js +1 -0
- package/dist/esm/generated/Root.d.ts +173 -0
- package/dist/esm/generated/Root.js +1 -0
- package/dist/esm/generated/SHA1Digest.d.ts +67 -0
- package/dist/esm/generated/SHA1Digest.js +1 -0
- package/dist/esm/generated/SHA1NSEC3Digest.d.ts +72 -0
- package/dist/esm/generated/SHA1NSEC3Digest.js +1 -0
- package/dist/esm/generated/SHA256Digest.d.ts +67 -0
- package/dist/esm/generated/SHA256Digest.js +1 -0
- package/dist/esm/generated/StaticMetadataService.d.ts +42 -0
- package/dist/esm/generated/StaticMetadataService.js +1 -0
- package/dist/esm/generated/TLDPublicSuffixList.d.ts +42 -0
- package/dist/esm/generated/TLDPublicSuffixList.js +1 -0
- package/dist/esm/generated/UniversalResolver.d.ts +82 -0
- package/dist/esm/generated/UniversalResolver.js +1 -0
- package/dist/esm/generated/common.d.ts +21 -0
- package/dist/esm/generated/common.js +1 -0
- package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.d.ts +52 -0
- package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.js +766 -0
- package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +79 -0
- package/dist/esm/generated/factories/DNSRegistrar__factory.js +292 -0
- package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +68 -0
- package/dist/esm/generated/factories/DNSSECImpl__factory.js +497 -0
- package/dist/esm/generated/factories/DefaultReverseResolver__factory.d.ts +36 -0
- package/dist/esm/generated/factories/DefaultReverseResolver__factory.js +83 -0
- package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +56 -0
- package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +167 -0
- package/dist/esm/generated/factories/ENSRegistry__factory.d.ts +52 -0
- package/dist/esm/generated/factories/ENSRegistry__factory.js +435 -0
- package/dist/esm/generated/factories/ETHRegistrarController__factory.d.ts +66 -0
- package/dist/esm/generated/factories/ETHRegistrarController__factory.js +507 -0
- package/dist/esm/generated/factories/Multicall__factory.d.ts +42 -0
- package/dist/esm/generated/factories/Multicall__factory.js +453 -0
- package/dist/esm/generated/factories/NameWrapper__factory.d.ts +57 -0
- package/dist/esm/generated/factories/NameWrapper__factory.js +1196 -0
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +34 -0
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +67 -0
- package/dist/esm/generated/factories/PublicResolver__factory.d.ts +46 -0
- package/dist/esm/generated/factories/PublicResolver__factory.js +888 -0
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +34 -0
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +67 -0
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +34 -0
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +67 -0
- package/dist/esm/generated/factories/ReverseRegistrar__factory.d.ts +46 -0
- package/dist/esm/generated/factories/ReverseRegistrar__factory.js +336 -0
- package/dist/esm/generated/factories/Root__factory.d.ts +52 -0
- package/dist/esm/generated/factories/Root__factory.js +239 -0
- package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +34 -0
- package/dist/esm/generated/factories/SHA1Digest__factory.js +62 -0
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +34 -0
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +67 -0
- package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +34 -0
- package/dist/esm/generated/factories/SHA256Digest__factory.js +62 -0
- package/dist/esm/generated/factories/StaticMetadataService__factory.d.ts +32 -0
- package/dist/esm/generated/factories/StaticMetadataService__factory.js +45 -0
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +34 -0
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +57 -0
- package/dist/esm/generated/factories/UniversalResolver__factory.d.ts +42 -0
- package/dist/esm/generated/factories/UniversalResolver__factory.js +200 -0
- package/dist/esm/generated/factories/index.d.ts +6 -0
- package/dist/esm/generated/factories/index.js +9 -0
- package/dist/esm/generated/index.d.ts +13 -0
- package/dist/esm/generated/index.js +7 -0
- package/dist/esm/index.d.ts +471 -0
- package/dist/esm/index.js +193 -0
- package/dist/esm/utils/contentHash.d.ts +28 -0
- package/dist/esm/utils/contentHash.js +153 -0
- package/dist/esm/utils/createReverseNode.d.ts +2 -0
- package/dist/esm/utils/createReverseNode.js +1 -0
- package/dist/esm/utils/format.d.ts +3 -0
- package/dist/esm/utils/format.js +3 -0
- package/dist/esm/utils/fuses.d.ts +20 -0
- package/dist/esm/utils/fuses.js +21 -0
- package/dist/esm/utils/generateFuseInput.d.ts +3 -0
- package/dist/esm/utils/generateFuseInput.js +14 -0
- package/dist/esm/utils/hexEncodedName.d.ts +1 -0
- package/dist/esm/utils/hexEncodedName.js +2 -0
- package/dist/esm/utils/labels.d.ts +14 -0
- package/dist/esm/utils/labels.js +95 -0
- package/dist/esm/utils/makeHashIndexes.d.ts +2 -0
- package/dist/esm/utils/makeHashIndexes.js +3 -0
- package/dist/esm/utils/normalise.d.ts +2 -0
- package/dist/esm/utils/normalise.js +20 -0
- package/dist/esm/utils/recordHelpers.d.ts +13 -0
- package/dist/esm/utils/recordHelpers.js +39 -0
- package/dist/esm/utils/registerHelpers.d.ts +26 -0
- package/dist/esm/utils/registerHelpers.js +43 -0
- package/dist/esm/utils/singleCall.d.ts +9 -0
- package/dist/esm/utils/singleCall.js +5 -0
- package/dist/esm/utils/validation.d.ts +8 -0
- package/dist/esm/utils/validation.js +67 -0
- package/package.json +77 -49
- package/src/@types/@ensdomains/content-hash.d.ts +1 -0
- package/src/@types/@ensdomains/ens-contracts.d.ts +1 -0
- package/src/@types/FuseOptions.d.ts +9 -0
- package/src/@types/dns-packet/index.d.ts +114 -0
- package/src/@types/dns-packet.d.ts +1 -0
- package/src/@types/idna-uts46-hx.d.ts +1 -0
- package/src/ABIs/ETHRegistrarController.json +494 -0
- package/src/ABIs/NameWrapper.json +1183 -0
- package/src/ABIs/PublicResolver.json +875 -0
- package/src/ABIs/ReverseRegistrar.json +323 -0
- package/src/ABIs/StaticMetadataService.json +32 -0
- package/src/ABIs/UniversalResolver.json +187 -0
- package/src/GqlManager.ts +18 -0
- package/src/contracts/baseRegistrar.ts +5 -0
- package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +5 -0
- package/src/contracts/ethRegistrarController.ts +5 -0
- package/src/contracts/getContractAddress.ts +52 -0
- package/src/contracts/index.ts +68 -0
- package/src/contracts/multicall.ts +24 -0
- package/src/contracts/nameWrapper.ts +5 -0
- package/src/contracts/publicResolver.ts +5 -0
- package/src/contracts/registry.ts +5 -0
- package/src/contracts/reverseRegistrar.ts +5 -0
- package/src/contracts/types.ts +11 -0
- package/src/contracts/universalResolver.ts +5 -0
- package/src/functions/batch.test.ts +36 -0
- package/src/functions/batch.ts +36 -0
- package/src/functions/batchWrappers.test.ts +31 -0
- package/src/functions/batchWrappers.ts +91 -0
- package/src/functions/burnFuses.test.ts +44 -0
- package/src/functions/burnFuses.ts +23 -0
- package/src/functions/createSubname.test.ts +58 -0
- package/src/functions/createSubname.ts +83 -0
- package/src/functions/deleteSubname.test.ts +71 -0
- package/src/functions/deleteSubname.ts +19 -0
- package/src/functions/getDNSOwner.test.ts +122 -0
- package/src/functions/getDNSOwner.ts +61 -0
- package/src/functions/getExpiry.test.ts +37 -0
- package/src/functions/getExpiry.ts +63 -0
- package/src/functions/getFuses.test.ts +103 -0
- package/src/functions/getFuses.ts +76 -0
- package/src/functions/getHistory.test.ts +101 -0
- package/src/functions/getHistory.ts +347 -0
- package/src/functions/getName.test.ts +47 -0
- package/src/functions/getName.ts +41 -0
- package/src/functions/getNames.test.ts +247 -0
- package/src/functions/getNames.ts +275 -0
- package/src/functions/getOwner.test.ts +71 -0
- package/src/functions/getOwner.ts +202 -0
- package/src/functions/getPrice.ts +71 -0
- package/src/functions/getProfile.test.ts +120 -0
- package/src/functions/getProfile.ts +543 -0
- package/src/functions/getRecords.ts +22 -0
- package/src/functions/getResolver.test.ts +19 -0
- package/src/functions/getResolver.ts +32 -0
- package/src/functions/getSpecificRecord.test.ts +76 -0
- package/src/functions/getSpecificRecord.ts +365 -0
- package/src/functions/getSubnames.test.ts +31 -0
- package/src/functions/getSubnames.ts +190 -0
- package/src/functions/initialGetters.ts +11 -0
- package/src/functions/makeCommitment.test.ts +23 -0
- package/src/functions/normalise.test.ts +22 -0
- package/src/functions/setName.test.ts +58 -0
- package/src/functions/setName.ts +34 -0
- package/src/functions/setRecords.test.ts +58 -0
- package/src/functions/setRecords.ts +38 -0
- package/src/functions/setResolver.test.ts +60 -0
- package/src/functions/setResolver.ts +40 -0
- package/src/functions/transferName.test.ts +81 -0
- package/src/functions/transferName.ts +57 -0
- package/src/functions/transferSubname.test.ts +73 -0
- package/src/functions/transferSubname.ts +38 -0
- package/src/functions/unwrapName.test.ts +68 -0
- package/src/functions/unwrapName.ts +39 -0
- package/src/functions/wrapName.test.ts +64 -0
- package/src/functions/wrapName.ts +128 -0
- package/src/generated/BaseRegistrarImplementation.ts +1122 -0
- package/src/generated/DNSRegistrar.ts +445 -0
- package/src/generated/DNSSECImpl.ts +770 -0
- package/src/generated/DefaultReverseResolver.ts +137 -0
- package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +285 -0
- package/src/generated/ENSRegistry.ts +618 -0
- package/src/generated/ETHRegistrarController.ts +743 -0
- package/src/generated/Multicall.ts +582 -0
- package/src/generated/NameWrapper.ts +1694 -0
- package/src/generated/P256SHA256Algorithm.ts +139 -0
- package/src/generated/PublicResolver.ts +1326 -0
- package/src/generated/RSASHA1Algorithm.ts +109 -0
- package/src/generated/RSASHA256Algorithm.ts +109 -0
- package/src/generated/ReverseRegistrar.ts +556 -0
- package/src/generated/Root.ts +377 -0
- package/src/generated/SHA1Digest.ts +129 -0
- package/src/generated/SHA1NSEC3Digest.ts +140 -0
- package/src/generated/SHA256Digest.ts +129 -0
- package/src/generated/StaticMetadataService.ts +85 -0
- package/src/generated/TLDPublicSuffixList.ts +99 -0
- package/src/generated/UniversalResolver.ts +260 -0
- package/src/generated/common.ts +44 -0
- package/src/generated/factories/BaseRegistrarImplementation__factory.ts +781 -0
- package/src/generated/factories/DNSRegistrar__factory.ts +329 -0
- package/src/generated/factories/DNSSECImpl__factory.ts +527 -0
- package/src/generated/factories/DefaultReverseResolver__factory.ts +98 -0
- package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +186 -0
- package/src/generated/factories/ENSRegistry__factory.ts +443 -0
- package/src/generated/factories/ETHRegistrarController__factory.ts +522 -0
- package/src/generated/factories/Multicall__factory.ts +461 -0
- package/src/generated/factories/NameWrapper__factory.ts +1204 -0
- package/src/generated/factories/P256SHA256Algorithm__factory.ts +91 -0
- package/src/generated/factories/PublicResolver__factory.ts +899 -0
- package/src/generated/factories/RSASHA1Algorithm__factory.ts +91 -0
- package/src/generated/factories/RSASHA256Algorithm__factory.ts +91 -0
- package/src/generated/factories/ReverseRegistrar__factory.ts +347 -0
- package/src/generated/factories/Root__factory.ts +244 -0
- package/src/generated/factories/SHA1Digest__factory.ts +83 -0
- package/src/generated/factories/SHA1NSEC3Digest__factory.ts +91 -0
- package/src/generated/factories/SHA256Digest__factory.ts +83 -0
- package/src/generated/factories/StaticMetadataService__factory.ts +60 -0
- package/src/generated/factories/TLDPublicSuffixList__factory.ts +81 -0
- package/src/generated/factories/UniversalResolver__factory.ts +211 -0
- package/src/generated/factories/index.ts +9 -0
- package/src/generated/index.ts +16 -0
- package/src/index.ts +516 -0
- package/src/tests/setup.ts +53 -0
- package/src/tests/withProvider.test.ts +28 -0
- package/src/utils/contentHash.ts +151 -0
- package/src/utils/createReverseNode.ts +2 -0
- package/src/utils/format.ts +8 -0
- package/src/utils/fuses.ts +23 -0
- package/src/utils/generateFuseInput.ts +18 -0
- package/src/utils/hexEncodedName.ts +4 -0
- package/src/utils/labels.ts +119 -0
- package/src/utils/makeHashIndexes.ts +9 -0
- package/src/utils/normalise.ts +27 -0
- package/src/utils/recordHelpers.ts +72 -0
- package/src/utils/registerHelpers.ts +87 -0
- package/src/utils/singleCall.ts +16 -0
- package/src/utils/validation.ts +73 -0
- package/dist/constants/interfaces.js +0 -13
- package/dist/index.js +0 -1135
- package/dist/utils/contents.js +0 -126
- package/dist/utils/index.js +0 -192
- package/dist/utils/labelhash.js +0 -55
- package/dist/utils/namehash.js +0 -39
- package/dist/utils/records.js +0 -56
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
|
+
import { Multicall__factory } from '../generated/factories/Multicall__factory'
|
|
3
|
+
|
|
4
|
+
const ABI = [
|
|
5
|
+
'function aggregate(tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes[] returnData)',
|
|
6
|
+
'function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
|
|
7
|
+
'function aggregate3Value(tuple(address target, bool allowFailure, uint256 value, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
|
|
8
|
+
'function blockAndAggregate(tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes32 blockHash, tuple(bool success, bytes returnData)[] returnData)',
|
|
9
|
+
'function getBasefee() view returns (uint256 basefee)',
|
|
10
|
+
'function getBlockHash(uint256 blockNumber) view returns (bytes32 blockHash)',
|
|
11
|
+
'function getBlockNumber() view returns (uint256 blockNumber)',
|
|
12
|
+
'function getChainId() view returns (uint256 chainid)',
|
|
13
|
+
'function getCurrentBlockCoinbase() view returns (address coinbase)',
|
|
14
|
+
'function getCurrentBlockDifficulty() view returns (uint256 difficulty)',
|
|
15
|
+
'function getCurrentBlockGasLimit() view returns (uint256 gaslimit)',
|
|
16
|
+
'function getCurrentBlockTimestamp() view returns (uint256 timestamp)',
|
|
17
|
+
'function getEthBalance(address addr) view returns (uint256 balance)',
|
|
18
|
+
'function getLastBlockHash() view returns (bytes32 blockHash)',
|
|
19
|
+
'function tryAggregate(bool requireSuccess, tuple(address target, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
|
|
20
|
+
'function tryBlockAndAggregate(bool requireSuccess, tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes32 blockHash, tuple(bool success, bytes returnData)[] returnData)',
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
|
|
24
|
+
Multicall__factory.connect(address, provider)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type SupportedNetworkId = '1' | '3' | '4' | '5' | '1337'
|
|
2
|
+
|
|
3
|
+
export type ContractName =
|
|
4
|
+
| 'BaseRegistrarImplementation'
|
|
5
|
+
| 'ETHRegistrarController'
|
|
6
|
+
| 'Multicall'
|
|
7
|
+
| 'NameWrapper'
|
|
8
|
+
| 'PublicResolver'
|
|
9
|
+
| 'ENSRegistryWithFallback'
|
|
10
|
+
| 'ReverseRegistrar'
|
|
11
|
+
| 'UniversalResolver'
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ENS } from '..'
|
|
2
|
+
import setup from '../tests/setup'
|
|
3
|
+
|
|
4
|
+
let ENSInstance: ENS
|
|
5
|
+
|
|
6
|
+
beforeAll(async () => {
|
|
7
|
+
;({ ENSInstance } = await setup())
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
describe('batch', () => {
|
|
11
|
+
it('should batch calls together', async () => {
|
|
12
|
+
const result = await ENSInstance.batch(
|
|
13
|
+
ENSInstance.getText.batch('jefflau.eth', 'description'),
|
|
14
|
+
ENSInstance.getAddr.batch('jefflau.eth'),
|
|
15
|
+
ENSInstance.getName.batch('0x866B3c4994e1416B7C738B9818b31dC246b95eEE'),
|
|
16
|
+
)
|
|
17
|
+
expect(result).toBeTruthy()
|
|
18
|
+
if (result) {
|
|
19
|
+
expect(result[0]).toBe('Hello2')
|
|
20
|
+
expect(result[1]).toBe('0x866B3c4994e1416B7C738B9818b31dC246b95eEE')
|
|
21
|
+
expect(result[2]).toMatchObject({
|
|
22
|
+
name: 'jefflau.eth',
|
|
23
|
+
match: true,
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
it('should batch a single call', async () => {
|
|
28
|
+
const result = await ENSInstance.batch(
|
|
29
|
+
ENSInstance.getText.batch('jefflau.eth', 'description'),
|
|
30
|
+
)
|
|
31
|
+
expect(result).toBeTruthy()
|
|
32
|
+
if (result) {
|
|
33
|
+
expect(result[0]).toBe('Hello2')
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
})
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BatchFunctionResult, ENSArgs, RawFunction } from '..'
|
|
2
|
+
|
|
3
|
+
const raw = async (
|
|
4
|
+
{ multicallWrapper }: ENSArgs<'multicallWrapper'>,
|
|
5
|
+
...items: BatchFunctionResult<RawFunction>[]
|
|
6
|
+
) => {
|
|
7
|
+
const rawDataArr: { to: string; data: string }[] = await Promise.all(
|
|
8
|
+
items.map(({ args, raw }, i: number) => {
|
|
9
|
+
if (!raw) {
|
|
10
|
+
throw new Error(`Function ${i} is not batchable`)
|
|
11
|
+
}
|
|
12
|
+
return raw(...args)
|
|
13
|
+
}),
|
|
14
|
+
)
|
|
15
|
+
return multicallWrapper.raw(rawDataArr)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const decode = async (
|
|
19
|
+
{ multicallWrapper }: ENSArgs<'multicallWrapper'>,
|
|
20
|
+
data: string,
|
|
21
|
+
...items: BatchFunctionResult<RawFunction>[]
|
|
22
|
+
): Promise<any[] | undefined> => {
|
|
23
|
+
const response = await multicallWrapper.decode(data)
|
|
24
|
+
if (!response) return
|
|
25
|
+
|
|
26
|
+
return Promise.all(
|
|
27
|
+
response.map((ret: any, i: number) =>
|
|
28
|
+
items[i].decode(ret.returnData, ...items[i].args),
|
|
29
|
+
),
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default {
|
|
34
|
+
raw,
|
|
35
|
+
decode,
|
|
36
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ENS } from '..'
|
|
2
|
+
import setup from '../tests/setup'
|
|
3
|
+
|
|
4
|
+
let ENSInstance: ENS
|
|
5
|
+
|
|
6
|
+
beforeAll(async () => {
|
|
7
|
+
;({ ENSInstance } = await setup())
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
describe('batchWrappers', () => {
|
|
11
|
+
it('should batch calls together', async () => {
|
|
12
|
+
const batch = await ENSInstance.resolverMulticallWrapper.raw([
|
|
13
|
+
await ENSInstance._getText.raw('jefflau.eth', 'description'),
|
|
14
|
+
await ENSInstance._getText.raw('jefflau.eth', 'url'),
|
|
15
|
+
await ENSInstance._getAddr.raw('jefflau.eth'),
|
|
16
|
+
])
|
|
17
|
+
const universalResponse = await ENSInstance.universalWrapper(
|
|
18
|
+
'jefflau.eth',
|
|
19
|
+
batch.data,
|
|
20
|
+
)
|
|
21
|
+
const [batchDecoded] = await ENSInstance.resolverMulticallWrapper.decode(
|
|
22
|
+
universalResponse?.data,
|
|
23
|
+
)
|
|
24
|
+
const decoded1 = await ENSInstance._getText.decode(batchDecoded[0])
|
|
25
|
+
const decoded2 = await ENSInstance._getText.decode(batchDecoded[1])
|
|
26
|
+
const decoded3 = await ENSInstance._getAddr.decode(batchDecoded[2])
|
|
27
|
+
expect(decoded1).toBe('Hello2')
|
|
28
|
+
expect(decoded2).toBe('twitter.com')
|
|
29
|
+
expect(decoded3).toBe('0x866B3c4994e1416B7C738B9818b31dC246b95eEE')
|
|
30
|
+
})
|
|
31
|
+
})
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
|
+
import { ENSArgs } from '..'
|
|
3
|
+
import { hexEncodeName } from '../utils/hexEncodedName'
|
|
4
|
+
|
|
5
|
+
export const universalWrapper = {
|
|
6
|
+
raw: async (
|
|
7
|
+
{ contracts }: ENSArgs<'contracts'>,
|
|
8
|
+
name: string,
|
|
9
|
+
data: string,
|
|
10
|
+
) => {
|
|
11
|
+
const universalResolver = await contracts?.getUniversalResolver()!
|
|
12
|
+
return {
|
|
13
|
+
to: universalResolver.address,
|
|
14
|
+
data: universalResolver.interface.encodeFunctionData('resolve', [
|
|
15
|
+
hexEncodeName(name),
|
|
16
|
+
data,
|
|
17
|
+
]),
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
decode: async ({ contracts }: ENSArgs<'contracts'>, data: string) => {
|
|
21
|
+
const universalResolver = await contracts?.getUniversalResolver()!
|
|
22
|
+
const response = universalResolver.interface.decodeFunctionResult(
|
|
23
|
+
'resolve',
|
|
24
|
+
data,
|
|
25
|
+
)
|
|
26
|
+
if (!response || !response[0]) {
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
return { data: response[0], resolver: response[1] }
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const resolverMulticallWrapper = {
|
|
34
|
+
raw: async (
|
|
35
|
+
{ contracts }: ENSArgs<'contracts'>,
|
|
36
|
+
data: { to: string; data: string }[],
|
|
37
|
+
) => {
|
|
38
|
+
const publicResolver = await contracts?.getPublicResolver()!
|
|
39
|
+
const formattedDataArr = data.map((item) => (item as any).data)
|
|
40
|
+
return {
|
|
41
|
+
to: publicResolver.address,
|
|
42
|
+
data: publicResolver.interface.encodeFunctionData('multicall', [
|
|
43
|
+
formattedDataArr,
|
|
44
|
+
]),
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
decode: async ({ contracts }: ENSArgs<'contracts'>, data: string) => {
|
|
48
|
+
const publicResolver = await contracts?.getPublicResolver()!
|
|
49
|
+
const response = publicResolver.interface.decodeFunctionResult(
|
|
50
|
+
'multicall',
|
|
51
|
+
data,
|
|
52
|
+
)
|
|
53
|
+
if (!response) {
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
return response
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const multicallWrapper = {
|
|
61
|
+
raw: async function (
|
|
62
|
+
{ contracts }: ENSArgs<'contracts'>,
|
|
63
|
+
transactions: ethers.providers.TransactionRequest[],
|
|
64
|
+
requireSuccess: boolean = false,
|
|
65
|
+
) {
|
|
66
|
+
const multicall = await contracts?.getMulticall()!
|
|
67
|
+
return {
|
|
68
|
+
to: multicall.address,
|
|
69
|
+
data: multicall.interface.encodeFunctionData('tryAggregate', [
|
|
70
|
+
requireSuccess,
|
|
71
|
+
transactions.map((tx) => ({
|
|
72
|
+
target: tx.to!,
|
|
73
|
+
callData: tx.data!,
|
|
74
|
+
})),
|
|
75
|
+
]),
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
decode: async function ({ contracts }: ENSArgs<'contracts'>, data: string) {
|
|
79
|
+
if (!data) return
|
|
80
|
+
const multicall = await contracts?.getMulticall()!
|
|
81
|
+
try {
|
|
82
|
+
const [result] = multicall.interface.decodeFunctionResult(
|
|
83
|
+
'tryAggregate',
|
|
84
|
+
data,
|
|
85
|
+
)
|
|
86
|
+
return result
|
|
87
|
+
} catch {
|
|
88
|
+
return
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { BigNumber, ethers } from 'ethers'
|
|
2
|
+
import { ENS } from '..'
|
|
3
|
+
import { namehash } from '../utils/normalise'
|
|
4
|
+
import setup from '../tests/setup'
|
|
5
|
+
|
|
6
|
+
let ENSInstance: ENS
|
|
7
|
+
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
8
|
+
let provider: ethers.providers.JsonRpcProvider
|
|
9
|
+
let accounts: string[]
|
|
10
|
+
|
|
11
|
+
beforeAll(async () => {
|
|
12
|
+
;({ ENSInstance, revert, provider } = await setup())
|
|
13
|
+
accounts = await provider.listAccounts()
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
afterAll(async () => {
|
|
17
|
+
await revert()
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
describe('burnFuses', () => {
|
|
21
|
+
beforeEach(async () => {
|
|
22
|
+
await revert()
|
|
23
|
+
})
|
|
24
|
+
it('should return a burnFuses transaction and succeed', async () => {
|
|
25
|
+
const wrapNameTx = await ENSInstance.wrapName(
|
|
26
|
+
'parthtejpal.eth',
|
|
27
|
+
accounts[0],
|
|
28
|
+
)
|
|
29
|
+
await wrapNameTx.wait()
|
|
30
|
+
|
|
31
|
+
const tx = await ENSInstance.burnFuses('parthtejpal.eth', {
|
|
32
|
+
cannotUnwrap: true,
|
|
33
|
+
cannotCreateSubdomain: true,
|
|
34
|
+
cannotSetTtl: true,
|
|
35
|
+
})
|
|
36
|
+
expect(tx).toBeTruthy()
|
|
37
|
+
await tx.wait()
|
|
38
|
+
|
|
39
|
+
const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
|
|
40
|
+
const result = await nameWrapper.getFuses(namehash('parthtejpal.eth'))
|
|
41
|
+
const fuseBN = result.fuses as BigNumber
|
|
42
|
+
expect(fuseBN.toHexString()).toBe('0x71')
|
|
43
|
+
})
|
|
44
|
+
})
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ENSArgs } from '..'
|
|
2
|
+
import { FuseOptions } from '../@types/FuseOptions'
|
|
3
|
+
import generateFuseInput from '../utils/generateFuseInput'
|
|
4
|
+
import { namehash } from '../utils/normalise'
|
|
5
|
+
|
|
6
|
+
export default async function (
|
|
7
|
+
{ contracts, provider }: ENSArgs<'contracts' | 'provider'>,
|
|
8
|
+
name: string,
|
|
9
|
+
fusesToBurn: FuseOptions,
|
|
10
|
+
) {
|
|
11
|
+
const signer = provider?.getSigner()
|
|
12
|
+
|
|
13
|
+
if (!signer) {
|
|
14
|
+
throw new Error('No signer found')
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const nameWrapper = (await contracts?.getNameWrapper()!).connect(signer)
|
|
18
|
+
const hash = namehash(name)
|
|
19
|
+
|
|
20
|
+
const encodedFuses = generateFuseInput(fusesToBurn)
|
|
21
|
+
|
|
22
|
+
return nameWrapper.burnFuses(hash, encodedFuses)
|
|
23
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
|
+
import { ENS } from '..'
|
|
3
|
+
import { namehash } from '../utils/normalise'
|
|
4
|
+
import setup from '../tests/setup'
|
|
5
|
+
|
|
6
|
+
let ENSInstance: ENS
|
|
7
|
+
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
8
|
+
let createSnapshot: Awaited<ReturnType<typeof setup>>['createSnapshot']
|
|
9
|
+
let provider: ethers.providers.JsonRpcProvider
|
|
10
|
+
let accounts: string[]
|
|
11
|
+
|
|
12
|
+
beforeAll(async () => {
|
|
13
|
+
;({ ENSInstance, revert, createSnapshot, provider } = await setup())
|
|
14
|
+
accounts = await provider.listAccounts()
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
afterAll(async () => {
|
|
18
|
+
await revert()
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
describe('createSubname', () => {
|
|
22
|
+
beforeEach(async () => {
|
|
23
|
+
await revert()
|
|
24
|
+
})
|
|
25
|
+
it('should allow creating a subname on the registry', async () => {
|
|
26
|
+
const tx = await ENSInstance.createSubname({
|
|
27
|
+
contract: 'registry',
|
|
28
|
+
name: 'test.parthtejpal.eth',
|
|
29
|
+
owner: accounts[0],
|
|
30
|
+
options: { addressOrIndex: 0 },
|
|
31
|
+
})
|
|
32
|
+
expect(tx).toBeTruthy()
|
|
33
|
+
await tx.wait()
|
|
34
|
+
|
|
35
|
+
const registry = await ENSInstance.contracts!.getRegistry()!
|
|
36
|
+
const result = await registry.owner(namehash('test.parthtejpal.eth'))
|
|
37
|
+
expect(result).toBe(accounts[0])
|
|
38
|
+
})
|
|
39
|
+
it('should allow creating a subname on the namewrapper', async () => {
|
|
40
|
+
const wrapNameTx = await ENSInstance.wrapName(
|
|
41
|
+
'parthtejpal.eth',
|
|
42
|
+
accounts[0],
|
|
43
|
+
)
|
|
44
|
+
await wrapNameTx.wait()
|
|
45
|
+
const tx = await ENSInstance.createSubname({
|
|
46
|
+
contract: 'nameWrapper',
|
|
47
|
+
name: 'test.parthtejpal.eth',
|
|
48
|
+
owner: accounts[0],
|
|
49
|
+
options: { addressOrIndex: 0 },
|
|
50
|
+
})
|
|
51
|
+
expect(tx).toBeTruthy()
|
|
52
|
+
await tx.wait()
|
|
53
|
+
|
|
54
|
+
const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
|
|
55
|
+
const result = await nameWrapper.ownerOf(namehash('test.parthtejpal.eth'))
|
|
56
|
+
expect(result).toBe(accounts[0])
|
|
57
|
+
})
|
|
58
|
+
})
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
|
+
import { ENSArgs } from '..'
|
|
3
|
+
import { FuseOptions } from '../@types/FuseOptions'
|
|
4
|
+
import generateFuseInput from '../utils/generateFuseInput'
|
|
5
|
+
import { namehash } from '../utils/normalise'
|
|
6
|
+
|
|
7
|
+
type BaseArgs = {
|
|
8
|
+
name: string
|
|
9
|
+
owner: string
|
|
10
|
+
resolverAddress?: string
|
|
11
|
+
contract: 'registry' | 'nameWrapper'
|
|
12
|
+
options?: { addressOrIndex?: string | number }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
type NameWrapperArgs = {
|
|
16
|
+
contract: 'nameWrapper'
|
|
17
|
+
fuses?: FuseOptions
|
|
18
|
+
} & BaseArgs
|
|
19
|
+
|
|
20
|
+
type Args = BaseArgs | NameWrapperArgs
|
|
21
|
+
|
|
22
|
+
export default async function (
|
|
23
|
+
{ contracts, provider }: ENSArgs<'contracts' | 'provider'>,
|
|
24
|
+
{ name, owner, resolverAddress, contract, options, ...wrapperArgs }: Args,
|
|
25
|
+
) {
|
|
26
|
+
const signer = provider?.getSigner(options?.addressOrIndex)
|
|
27
|
+
|
|
28
|
+
if (!signer) {
|
|
29
|
+
throw new Error('No signer found')
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const labels = name.split('.')
|
|
33
|
+
|
|
34
|
+
if (labels.length === 1) {
|
|
35
|
+
throw new Error('Subnames in ENS.js can only be created for 2LDs, not TLDs')
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if ('fuses' in wrapperArgs && contract === 'registry') {
|
|
39
|
+
throw new Error('Fuses can only be set on a wrapped name')
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (!resolverAddress) {
|
|
43
|
+
resolverAddress = (await contracts?.getPublicResolver())!.address
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const label = labels.shift() as string
|
|
47
|
+
const labelhash = ethers.utils.solidityKeccak256(['string'], [label])
|
|
48
|
+
const parentNodehash = namehash(labels.join('.'))
|
|
49
|
+
|
|
50
|
+
switch (contract) {
|
|
51
|
+
case 'registry': {
|
|
52
|
+
const registry = (await contracts?.getRegistry()!).connect(signer)
|
|
53
|
+
|
|
54
|
+
return registry.setSubnodeRecord(
|
|
55
|
+
parentNodehash,
|
|
56
|
+
labelhash,
|
|
57
|
+
owner,
|
|
58
|
+
resolverAddress,
|
|
59
|
+
0,
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
case 'nameWrapper': {
|
|
63
|
+
const nameWrapper = (await contracts?.getNameWrapper()!).connect(signer)
|
|
64
|
+
|
|
65
|
+
const generatedFuses =
|
|
66
|
+
'fuses' in wrapperArgs && wrapperArgs.fuses
|
|
67
|
+
? generateFuseInput(wrapperArgs.fuses)
|
|
68
|
+
: '0'
|
|
69
|
+
|
|
70
|
+
return nameWrapper.setSubnodeRecord(
|
|
71
|
+
parentNodehash,
|
|
72
|
+
label,
|
|
73
|
+
owner,
|
|
74
|
+
resolverAddress,
|
|
75
|
+
0,
|
|
76
|
+
generatedFuses,
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
default: {
|
|
80
|
+
throw new Error(`Unknown contract: ${contract}`)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
|
+
import { ENS } from '..'
|
|
3
|
+
import { namehash } from '../utils/normalise'
|
|
4
|
+
import setup from '../tests/setup'
|
|
5
|
+
|
|
6
|
+
let ENSInstance: ENS
|
|
7
|
+
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
8
|
+
let provider: ethers.providers.JsonRpcProvider
|
|
9
|
+
let accounts: string[]
|
|
10
|
+
|
|
11
|
+
beforeAll(async () => {
|
|
12
|
+
;({ ENSInstance, revert, provider } = await setup())
|
|
13
|
+
accounts = await provider.listAccounts()
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
afterAll(async () => {
|
|
17
|
+
await revert()
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
describe('deleteSubname', () => {
|
|
21
|
+
beforeEach(async () => {
|
|
22
|
+
await revert()
|
|
23
|
+
})
|
|
24
|
+
it('should allow deleting a subname on the registry', async () => {
|
|
25
|
+
const createSubnameTx = await ENSInstance.createSubname({
|
|
26
|
+
contract: 'registry',
|
|
27
|
+
name: 'test.parthtejpal.eth',
|
|
28
|
+
owner: accounts[0],
|
|
29
|
+
options: { addressOrIndex: 0 },
|
|
30
|
+
})
|
|
31
|
+
await createSubnameTx.wait()
|
|
32
|
+
|
|
33
|
+
const tx = await ENSInstance.deleteSubname(
|
|
34
|
+
'test.parthtejpal.eth',
|
|
35
|
+
'registry',
|
|
36
|
+
{ addressOrIndex: 0 },
|
|
37
|
+
)
|
|
38
|
+
expect(tx).toBeTruthy()
|
|
39
|
+
await tx.wait()
|
|
40
|
+
|
|
41
|
+
const registry = await ENSInstance.contracts!.getRegistry()!
|
|
42
|
+
const result = await registry.owner(namehash('test.parthtejpal.eth'))
|
|
43
|
+
expect(result).toBe('0x0000000000000000000000000000000000000000')
|
|
44
|
+
})
|
|
45
|
+
it('should allow deleting a subname on the nameWrapper', async () => {
|
|
46
|
+
const wrapNameTx = await ENSInstance.wrapName(
|
|
47
|
+
'parthtejpal.eth',
|
|
48
|
+
accounts[0],
|
|
49
|
+
)
|
|
50
|
+
await wrapNameTx.wait()
|
|
51
|
+
const createSubnameTx = await ENSInstance.createSubname({
|
|
52
|
+
contract: 'nameWrapper',
|
|
53
|
+
name: 'test.parthtejpal.eth',
|
|
54
|
+
owner: accounts[0],
|
|
55
|
+
options: { addressOrIndex: 0 },
|
|
56
|
+
})
|
|
57
|
+
await createSubnameTx.wait()
|
|
58
|
+
|
|
59
|
+
const tx = await ENSInstance.deleteSubname(
|
|
60
|
+
'test.parthtejpal.eth',
|
|
61
|
+
'nameWrapper',
|
|
62
|
+
{ addressOrIndex: 0 },
|
|
63
|
+
)
|
|
64
|
+
expect(tx).toBeTruthy()
|
|
65
|
+
await tx.wait()
|
|
66
|
+
|
|
67
|
+
const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
|
|
68
|
+
const result = await nameWrapper.ownerOf(namehash('test.parthtejpal.eth'))
|
|
69
|
+
expect(result).toBe('0x0000000000000000000000000000000000000000')
|
|
70
|
+
})
|
|
71
|
+
})
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ENSArgs } from '..'
|
|
2
|
+
|
|
3
|
+
export default async function (
|
|
4
|
+
{
|
|
5
|
+
contracts,
|
|
6
|
+
provider,
|
|
7
|
+
transferSubname,
|
|
8
|
+
}: ENSArgs<'contracts' | 'provider' | 'transferSubname'>,
|
|
9
|
+
name: string,
|
|
10
|
+
contract: 'registry' | 'nameWrapper',
|
|
11
|
+
options?: { addressOrIndex?: string | number },
|
|
12
|
+
) {
|
|
13
|
+
return transferSubname(
|
|
14
|
+
name,
|
|
15
|
+
contract,
|
|
16
|
+
'0x0000000000000000000000000000000000000000',
|
|
17
|
+
options,
|
|
18
|
+
)
|
|
19
|
+
}
|