@ensforge/core 0.1.0 → 0.2.0
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/README.md +6 -4
- package/dist/action/index.d.ts +1 -1
- package/dist/actions/batch/execute-write-plan.d.ts.map +1 -1
- package/dist/actions/batch/execute-write-plan.js +20 -2
- package/dist/actions/batch/execute-write-plan.js.map +1 -1
- package/dist/actions/capabilities/get-name-capabilities/index.d.ts +1 -1
- package/dist/actions/capabilities/get-operator-approval/index.d.ts +1 -1
- package/dist/actions/capabilities/get-record-permissions/index.d.ts.map +1 -1
- package/dist/actions/capabilities/get-record-permissions/index.js +13 -1
- package/dist/actions/capabilities/get-record-permissions/index.js.map +1 -1
- package/dist/actions/capabilities/get-required-authorization/index.d.ts +1 -1
- package/dist/actions/capabilities/get-resolver-capabilities/index.d.ts +1 -1
- package/dist/actions/capabilities/get-write-target/index.d.ts +1 -1
- package/dist/actions/dns/get-dns-claim-status/index.d.ts +1 -1
- package/dist/actions/dns/get-dns-import-plan/index.d.ts +1 -1
- package/dist/actions/dns/get-zone-hash/index.d.ts +1 -1
- package/dist/actions/dns/has-dns-records/index.d.ts +1 -1
- package/dist/actions/dns/types.d.ts +3 -3
- package/dist/actions/dns/types.d.ts.map +1 -1
- package/dist/actions/dns/types.js.map +1 -1
- package/dist/actions/events/get-ens-events/index.d.ts +4 -4
- package/dist/actions/events/get-name-history/index.d.ts +4 -4
- package/dist/actions/events/types.d.ts +1 -1
- package/dist/actions/index.d.ts +25 -25
- package/dist/actions/migration/get-migration-eligibility/index.d.ts +1 -1
- package/dist/actions/migration/get-migration-plan/index.d.ts +2 -2
- package/dist/actions/migration/mutation.js +1 -1
- package/dist/actions/name/get-expiry/types.d.ts +2 -2
- package/dist/actions/name/get-name-state/index.d.ts +6 -6
- package/dist/actions/name/get-name-state/types.d.ts +2 -2
- package/dist/actions/name/get-name-status/index.d.ts +1 -1
- package/dist/actions/name/get-owner/index.d.ts +1 -1
- package/dist/actions/name/get-owner/types.d.ts +2 -2
- package/dist/actions/records/get-abi/types.d.ts +2 -2
- package/dist/actions/records/get-address/types.d.ts +2 -2
- package/dist/actions/records/get-avatar/types.d.ts +2 -2
- package/dist/actions/records/get-content-hash/types.d.ts +2 -2
- package/dist/actions/records/get-data/types.d.ts +2 -2
- package/dist/actions/records/get-interface/types.d.ts +2 -2
- package/dist/actions/records/get-name/types.d.ts +2 -2
- package/dist/actions/records/get-pubkey/types.d.ts +2 -2
- package/dist/actions/records/get-records/types.d.ts +3 -3
- package/dist/actions/records/get-text/types.d.ts +2 -2
- package/dist/actions/records/set-records/index.js +1 -1
- package/dist/actions/registration/get-commitment-status/index.d.ts +1 -1
- package/dist/actions/registration/get-registration-parameters/index.d.ts +1 -1
- package/dist/actions/registration/get-registration-plan/index.d.ts +9 -9
- package/dist/actions/registration/get-registration-price/index.d.ts +9 -9
- package/dist/actions/registration/get-renewal-price/index.d.ts +9 -9
- package/dist/actions/registration/is-payment-token-supported/index.d.ts +1 -1
- package/dist/actions/registration/renew-names/index.js +2 -2
- package/dist/actions/registration/renew-names/index.js.map +1 -1
- package/dist/actions/registration/renewal-mutation.d.ts +0 -1
- package/dist/actions/registration/renewal-mutation.d.ts.map +1 -1
- package/dist/actions/registration/renewal-mutation.js +27 -71
- package/dist/actions/registration/renewal-mutation.js.map +1 -1
- package/dist/actions/registration/types.d.ts +3 -3
- package/dist/actions/registration/types.d.ts.map +1 -1
- package/dist/actions/registration/types.js.map +1 -1
- package/dist/actions/resolution/create-resolver/index.d.ts +2 -0
- package/dist/actions/resolution/create-resolver/index.d.ts.map +1 -1
- package/dist/actions/resolution/create-resolver/index.js +39 -21
- package/dist/actions/resolution/create-resolver/index.js.map +1 -1
- package/dist/actions/resolution/create-resolver/prepare.d.ts.map +1 -1
- package/dist/actions/resolution/create-resolver/prepare.js +7 -5
- package/dist/actions/resolution/create-resolver/prepare.js.map +1 -1
- package/dist/actions/resolution/get-alias/index.d.ts.map +1 -1
- package/dist/actions/resolution/get-alias/index.js.map +1 -1
- package/dist/actions/resolution/get-resolver/types.d.ts +2 -2
- package/dist/actions/resolution/get-resolver-version/index.d.ts +1 -1
- package/dist/actions/resolution/resolve/types.d.ts +2 -2
- package/dist/actions/resolution/resolve-batch/index.d.ts +1 -1
- package/dist/actions/resolution/set-resolver/index.js +1 -1
- package/dist/actions/resolution/upgrade-resolver/index.js +1 -1
- package/dist/actions/reverse/get-primary-name/types.d.ts +2 -2
- package/dist/actions/subnames/intents.js +4 -24
- package/dist/actions/subnames/intents.js.map +1 -1
- package/dist/actions/wrapping/intents.js +1 -1
- package/dist/batch.d.ts +10 -0
- package/dist/batch.js +11 -0
- package/dist/{actions/capabilities/index.d.ts → capabilities.d.ts} +15 -15
- package/dist/capabilities.js +17 -0
- package/dist/config/config.d.ts +3 -10
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js.map +1 -1
- package/dist/config/create-config.d.ts.map +1 -1
- package/dist/config/create-config.js +4 -56
- package/dist/config/create-config.js.map +1 -1
- package/dist/config/index.d.ts +2 -2
- package/dist/dns.d.ts +14 -0
- package/dist/dns.js +13 -0
- package/dist/errors/index.d.ts +2 -2
- package/dist/{actions/events/index.d.ts → events.d.ts} +4 -4
- package/dist/events.js +6 -0
- package/dist/index.d.ts +16 -16
- package/dist/index.js +3 -2
- package/dist/internal/config/create-config.js +54 -0
- package/dist/internal/config/create-config.js.map +1 -0
- package/dist/internal/errors/viem-error.d.ts +1 -1
- package/dist/internal/errors/write-error.js +6 -2
- package/dist/internal/errors/write-error.js.map +1 -1
- package/dist/internal/gateway/ccip-request.js +5 -1
- package/dist/internal/gateway/ccip-request.js.map +1 -1
- package/dist/internal/read/execution-context.d.ts +1 -1
- package/dist/internal/write/execute-sequential.js +41 -13
- package/dist/internal/write/execute-sequential.js.map +1 -1
- package/dist/internal/write/prepare-write-intents.js +1 -1
- package/dist/internal/write/resolver-write-action.js +1 -1
- package/dist/internal/write/resume-sequential.js +62 -0
- package/dist/internal/write/resume-sequential.js.map +1 -0
- package/dist/internal/write/single-write-action.js +1 -1
- package/dist/{actions/migration/index.d.ts → migration.d.ts} +8 -8
- package/dist/migration.js +10 -0
- package/dist/{actions/name/index.d.ts → name.d.ts} +18 -18
- package/dist/name.js +20 -0
- package/dist/{actions/ownership/index.d.ts → ownership.d.ts} +8 -8
- package/dist/ownership.js +8 -0
- package/dist/{actions/permissions/index.d.ts → permissions.d.ts} +12 -12
- package/dist/permissions.js +8 -0
- package/dist/{actions/records/index.d.ts → records.d.ts} +46 -46
- package/dist/records.js +34 -0
- package/dist/{actions/registration/index.d.ts → registration.d.ts} +15 -15
- package/dist/registration.js +16 -0
- package/dist/{actions/resolution/index.d.ts → resolution.d.ts} +20 -20
- package/dist/resolution.js +15 -0
- package/dist/{actions/reverse/index.d.ts → reverse.d.ts} +7 -7
- package/dist/reverse.js +8 -0
- package/dist/{actions/subnames/index.d.ts → subnames.d.ts} +5 -5
- package/dist/subnames.js +6 -0
- package/dist/testing/create-test-config.js +2 -2
- package/dist/wagmi/config.d.ts +9 -0
- package/dist/wagmi/config.d.ts.map +1 -0
- package/dist/wagmi/create-config.d.ts +7 -0
- package/dist/wagmi/create-config.d.ts.map +1 -0
- package/dist/wagmi/create-config.js +20 -0
- package/dist/wagmi/create-config.js.map +1 -0
- package/dist/wagmi.d.ts +3 -0
- package/dist/wagmi.js +3 -0
- package/dist/{actions/wrapping/index.d.ts → wrapping.d.ts} +10 -10
- package/dist/wrapping.js +7 -0
- package/dist/write/types.d.ts +2 -2
- package/package.json +25 -3
- package/dist/actions/batch/index.d.ts +0 -10
- package/dist/actions/dns/index.d.ts +0 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/actions/resolution/create-resolver/index.ts"],"sourcesContent":["import { Effect
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/actions/resolution/create-resolver/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport { verifiableFactoryV2ProxyLogicAbi } from \"@ensforge/contracts/v2\";\nimport { concatHex, encodeAbiParameters, getCreate2Address, keccak256 } from \"viem\";\n\nimport { defineAction, defineExtendedAction } from \"../../../action/action.js\";\nimport type { EnsforgeConfig } from \"../../../config/config.js\";\nimport { ContractError } from \"../../../errors/contract-error.js\";\nimport { WritePlanError } from \"../../../errors/write-plan-error.js\";\nimport { EthereumClient } from \"../../../internal/client/ethereum-client.js\";\nimport { provideConfig } from \"../../../internal/config/context.js\";\nimport { resolveWalletContext } from \"../../../internal/services/wallet-client.js\";\nimport { executeSequential } from \"../../../internal/write/execute-sequential.js\";\nimport type { EthereumAddress } from \"../../../schemas/identity.js\";\nimport { createResolverIntent } from \"./prepare.js\";\nimport type {\n CreateResolverError,\n CreateResolverParameters,\n CreateResolverResult,\n} from \"./types.js\";\n\nexport const predictResolverAddressEffect = Effect.fn(\"ensforge.predictResolverAddress\")(function* (\n config: EnsforgeConfig,\n parameters: CreateResolverParameters,\n) {\n const deployment = config.deployments;\n if (deployment.protocol !== \"v2\") {\n return yield* new WritePlanError({\n code: \"INVALID_CALL_PLAN\",\n message: \"Permissioned Resolver prediction requires an ENSv2 deployment\",\n cause: deployment,\n });\n }\n const wallet = yield* provideConfig(\n config,\n resolveWalletContext({\n ...(parameters.walletClient === undefined ? {} : { walletClient: parameters.walletClient }),\n ...(parameters.account === undefined ? {} : { account: parameters.account }),\n }),\n );\n const sender = typeof wallet.account === \"string\" ? wallet.account : wallet.account.address;\n const factory = deployment.v2.contracts.verifiableFactory;\n const proxyLogic = yield* provideConfig(\n config,\n Effect.gen(function* () {\n const ethereum = yield* EthereumClient;\n return yield* ethereum.readContractDirect({\n address: factory,\n abi: verifiableFactoryV2ProxyLogicAbi,\n functionName: \"proxyLogic\",\n });\n }),\n );\n\n return yield* Effect.try({\n try: () => {\n const salt = keccak256(\n encodeAbiParameters([{ type: \"address\" }, { type: \"uint256\" }], [sender, parameters.salt]),\n );\n const bytecode = concatHex([\n \"0x3d604d80600a3d3981f3363d3d373d3d3d363d73\",\n proxyLogic,\n \"0x5af43d82803e903d91602b57fd5bf3\",\n salt,\n ]);\n return getCreate2Address({ from: factory, salt, bytecode });\n },\n catch: (cause) =>\n new ContractError({\n code: \"ENCODE_FAILED\",\n message: \"Unable to derive the Permissioned Resolver proxy address\",\n cause,\n }),\n });\n});\n\nexport const predictResolverAddress = defineAction<\n CreateResolverParameters,\n typeof EthereumAddress.Type,\n CreateResolverError\n>(predictResolverAddressEffect);\n\nconst implementation = Effect.fn(\"ensforge.createResolver\")(function* (\n config: EnsforgeConfig,\n parameters: CreateResolverParameters,\n) {\n const resolver = yield* predictResolverAddressEffect(config, parameters);\n const result = yield* executeSequential(config, {\n calls: [createResolverIntent(parameters)],\n ...(parameters.walletClient === undefined ? {} : { walletClient: parameters.walletClient }),\n ...(parameters.account === undefined ? {} : { account: parameters.account }),\n ...(parameters.confirmation === undefined ? {} : { confirmation: parameters.confirmation }),\n });\n const call = result.calls[0];\n if (call === undefined) {\n return yield* new WritePlanError({\n code: \"INVALID_CALL_PLAN\",\n message: \"createResolver did not produce an execution result\",\n cause: result,\n });\n }\n const deployment = config.deployments;\n if (deployment.protocol !== \"v2\") {\n return yield* new WritePlanError({\n code: \"INVALID_CALL_PLAN\",\n message: \"Permissioned Resolver creation requires an ENSv2 deployment\",\n cause: deployment,\n });\n }\n return {\n status: \"deployed\",\n resolver,\n implementation: deployment.v2.implementations.permissionedResolver,\n factory: deployment.v2.contracts.verifiableFactory,\n call,\n } satisfies CreateResolverResult;\n});\n\nconst action = defineExtendedAction<\n CreateResolverParameters,\n CreateResolverResult,\n CreateResolverError\n>(implementation);\n\nexport const createResolver = Object.freeze(\n Object.defineProperty(action, \"call\", {\n value: createResolverIntent,\n enumerable: true,\n configurable: false,\n writable: false,\n }),\n) as typeof action & { readonly call: typeof createResolverIntent };\n\nexport { prepareCreateResolver } from \"./prepare.js\";\nexport type {\n CreateResolverError,\n CreateResolverIntent,\n CreateResolverParameters,\n CreateResolverResult,\n} from \"./types.js\";\n"],"mappings":";;;;;;;;;;;;;AAqBA,MAAa,+BAA+B,OAAO,GAAG,iCAAiC,CAAC,CAAC,WACvF,QACA,YACA;CACA,MAAM,aAAa,OAAO;CAC1B,IAAI,WAAW,aAAa,MAC1B,OAAO,OAAO,IAAI,eAAe;EAC/B,MAAM;EACN,SAAS;EACT,OAAO;CACT,CAAC;CAEH,MAAM,SAAS,OAAO,cACpB,QACA,qBAAqB;EACnB,GAAI,WAAW,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,WAAW,aAAa;EACzF,GAAI,WAAW,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,WAAW,QAAQ;CAC5E,CAAC,CACH;CACA,MAAM,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU,OAAO,QAAQ;CACpF,MAAM,UAAU,WAAW,GAAG,UAAU;CACxC,MAAM,aAAa,OAAO,cACxB,QACA,OAAO,IAAI,aAAa;EAEtB,OAAO,QAAO,OADU,eACF,CAAC,mBAAmB;GACxC,SAAS;GACT,KAAK;GACL,cAAc;EAChB,CAAC;CACH,CAAC,CACH;CAEA,OAAO,OAAO,OAAO,IAAI;EACvB,WAAW;GACT,MAAM,OAAO,UACX,oBAAoB,CAAC,EAAE,MAAM,UAAU,GAAG,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC,QAAQ,WAAW,IAAI,CAAC,CAC3F;GACA,MAAM,WAAW,UAAU;IACzB;IACA;IACA;IACA;GACF,CAAC;GACD,OAAO,kBAAkB;IAAE,MAAM;IAAS;IAAM;GAAS,CAAC;EAC5D;EACA,QAAQ,UACN,IAAI,cAAc;GAChB,MAAM;GACN,SAAS;GACT;EACF,CAAC;CACL,CAAC;AACH,CAAC;AAED,MAAa,yBAAyB,aAIpC,4BAA4B;AAE9B,MAAM,iBAAiB,OAAO,GAAG,yBAAyB,CAAC,CAAC,WAC1D,QACA,YACA;CACA,MAAM,WAAW,OAAO,6BAA6B,QAAQ,UAAU;CACvE,MAAM,SAAS,OAAO,kBAAkB,QAAQ;EAC9C,OAAO,CAAC,qBAAqB,UAAU,CAAC;EACxC,GAAI,WAAW,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,WAAW,aAAa;EACzF,GAAI,WAAW,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,WAAW,QAAQ;EAC1E,GAAI,WAAW,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,WAAW,aAAa;CAC3F,CAAC;CACD,MAAM,OAAO,OAAO,MAAM;CAC1B,IAAI,SAAS,QACX,OAAO,OAAO,IAAI,eAAe;EAC/B,MAAM;EACN,SAAS;EACT,OAAO;CACT,CAAC;CAEH,MAAM,aAAa,OAAO;CAC1B,IAAI,WAAW,aAAa,MAC1B,OAAO,OAAO,IAAI,eAAe;EAC/B,MAAM;EACN,SAAS;EACT,OAAO;CACT,CAAC;CAEH,OAAO;EACL,QAAQ;EACR;EACA,gBAAgB,WAAW,GAAG,gBAAgB;EAC9C,SAAS,WAAW,GAAG,UAAU;EACjC;CACF;AACF,CAAC;AAED,MAAM,SAAS,qBAIb,cAAc;AAEhB,MAAa,iBAAiB,OAAO,OACnC,OAAO,eAAe,QAAQ,QAAQ;CACpC,OAAO;CACP,YAAY;CACZ,cAAc;CACd,UAAU;AACZ,CAAC,CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.d.ts","names":[],"sources":["../../../../src/actions/resolution/create-resolver/prepare.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","names":[],"sources":["../../../../src/actions/resolution/create-resolver/prepare.ts"],"mappings":";;;;;cAyEa,uBAAwB,YAAY,6BAAwB,eAAA,qBAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { makeWriteIntent } from "../../../action/write-intent.js";
|
|
2
1
|
import { Hex as Hex$1 } from "../../../schemas/hex.js";
|
|
3
2
|
import { ContractError } from "../../../errors/contract-error.js";
|
|
4
3
|
import { WritePlanError } from "../../../errors/write-plan-error.js";
|
|
4
|
+
import { makeWriteIntent } from "../../../action/write-intent.js";
|
|
5
5
|
import { CodecError } from "../../../errors/codec-error.js";
|
|
6
6
|
import { EthereumAddress } from "../../../schemas/identity.js";
|
|
7
7
|
import { Effect, Schema } from "effect";
|
|
@@ -31,13 +31,15 @@ const prepareCreateResolver = Effect.fn("ensforge.createResolver.prepare")(funct
|
|
|
31
31
|
});
|
|
32
32
|
const data = yield* Effect.try({
|
|
33
33
|
try: () => {
|
|
34
|
+
const roles = parameters.roles ?? enhancedAccessControlRoles.allRoles;
|
|
34
35
|
const initialization = encodeFunctionData({
|
|
35
36
|
abi: permissionedResolverInitializableV2InterfaceInitializeAbi,
|
|
36
37
|
functionName: "initialize",
|
|
37
|
-
args: [
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
args: [
|
|
39
|
+
admin,
|
|
40
|
+
roles,
|
|
41
|
+
setters
|
|
42
|
+
]
|
|
41
43
|
});
|
|
42
44
|
return encodeFunctionData({
|
|
43
45
|
abi: verifiableFactoryV2DeployProxyAbi,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.js","names":["Hex"],"sources":["../../../../src/actions/resolution/create-resolver/prepare.ts"],"sourcesContent":["import { Effect, Schema } from \"effect\";\n\nimport {\n enhancedAccessControlRoles,\n permissionedResolverInitializableV2InterfaceInitializeAbi,\n verifiableFactoryV2DeployProxyAbi,\n} from \"@ensforge/contracts/v2\";\nimport { encodeFunctionData } from \"viem\";\n\nimport { makeWriteIntent, type EnsWriteIntentPreparer } from \"../../../action/write-intent.js\";\nimport { CodecError } from \"../../../errors/codec-error.js\";\nimport { ContractError } from \"../../../errors/contract-error.js\";\nimport { WritePlanError } from \"../../../errors/write-plan-error.js\";\nimport { Hex } from \"../../../schemas/hex.js\";\nimport { EthereumAddress } from \"../../../schemas/identity.js\";\nimport type { CallExecutionResult, WriteError } from \"../../../write/types.js\";\nimport type { CreateResolverParameters } from \"./types.js\";\n\nexport const prepareCreateResolver: EnsWriteIntentPreparer<CreateResolverParameters, WriteError> =\n Effect.fn(\"ensforge.createResolver.prepare\")(function* (config, parameters, context) {\n const profile = config.deployments;\n if (profile.protocol !== \"v2\") {\n return yield* new WritePlanError({\n code: \"INVALID_CALL_PLAN\",\n message: \"Permissioned Resolver creation requires an ENSv2 deployment\",\n cause: profile,\n });\n }\n const account = typeof context.account === \"string\" ? context.account : context.account.address;\n const admin = yield* Effect.try({\n try: () => Schema.decodeUnknownSync(EthereumAddress)(parameters.admin ?? account),\n catch: () =>\n new CodecError({\n code: \"INVALID_ADDRESS\",\n message: \"Invalid Permissioned Resolver administrator address\",\n }),\n });\n const setters = parameters.setters ?? [];\n if (setters.some((setter) => !Schema.is(Hex)(setter))) {\n return yield* new CodecError({\n code: \"INVALID_HEX\",\n message: \"Invalid Permissioned Resolver initialization setter\",\n });\n }\n const data = yield* Effect.try({\n try: () => {\n const initialization = encodeFunctionData({\n abi: permissionedResolverInitializableV2InterfaceInitializeAbi,\n functionName: \"initialize\",\n args: [
|
|
1
|
+
{"version":3,"file":"prepare.js","names":["Hex"],"sources":["../../../../src/actions/resolution/create-resolver/prepare.ts"],"sourcesContent":["import { Effect, Schema } from \"effect\";\n\nimport {\n enhancedAccessControlRoles,\n permissionedResolverInitializableV2InterfaceInitializeAbi,\n verifiableFactoryV2DeployProxyAbi,\n} from \"@ensforge/contracts/v2\";\nimport { encodeFunctionData } from \"viem\";\n\nimport { makeWriteIntent, type EnsWriteIntentPreparer } from \"../../../action/write-intent.js\";\nimport { CodecError } from \"../../../errors/codec-error.js\";\nimport { ContractError } from \"../../../errors/contract-error.js\";\nimport { WritePlanError } from \"../../../errors/write-plan-error.js\";\nimport { Hex } from \"../../../schemas/hex.js\";\nimport { EthereumAddress } from \"../../../schemas/identity.js\";\nimport type { CallExecutionResult, WriteError } from \"../../../write/types.js\";\nimport type { CreateResolverParameters } from \"./types.js\";\n\nexport const prepareCreateResolver: EnsWriteIntentPreparer<CreateResolverParameters, WriteError> =\n Effect.fn(\"ensforge.createResolver.prepare\")(function* (config, parameters, context) {\n const profile = config.deployments;\n if (profile.protocol !== \"v2\") {\n return yield* new WritePlanError({\n code: \"INVALID_CALL_PLAN\",\n message: \"Permissioned Resolver creation requires an ENSv2 deployment\",\n cause: profile,\n });\n }\n const account = typeof context.account === \"string\" ? context.account : context.account.address;\n const admin = yield* Effect.try({\n try: () => Schema.decodeUnknownSync(EthereumAddress)(parameters.admin ?? account),\n catch: () =>\n new CodecError({\n code: \"INVALID_ADDRESS\",\n message: \"Invalid Permissioned Resolver administrator address\",\n }),\n });\n const setters = parameters.setters ?? [];\n if (setters.some((setter) => !Schema.is(Hex)(setter))) {\n return yield* new CodecError({\n code: \"INVALID_HEX\",\n message: \"Invalid Permissioned Resolver initialization setter\",\n });\n }\n const data = yield* Effect.try({\n try: () => {\n const roles = parameters.roles ?? enhancedAccessControlRoles.allRoles;\n const initialization = encodeFunctionData({\n abi: permissionedResolverInitializableV2InterfaceInitializeAbi,\n functionName: \"initialize\",\n args: [admin, roles, setters],\n });\n return encodeFunctionData({\n abi: verifiableFactoryV2DeployProxyAbi,\n functionName: \"deployProxy\",\n args: [profile.v2.implementations.permissionedResolver, parameters.salt, initialization],\n });\n },\n catch: (cause) =>\n new ContractError({\n code: \"ENCODE_FAILED\",\n message: \"Unable to encode the Permissioned Resolver deployment\",\n cause,\n }),\n });\n return {\n to: profile.v2.contracts.verifiableFactory,\n data,\n value: 0n,\n protocol: \"v2\",\n };\n });\n\nexport const createResolverIntent = (parameters: CreateResolverParameters) =>\n makeWriteIntent<CreateResolverParameters, CallExecutionResult, WriteError>(\n \"createResolver\",\n parameters,\n prepareCreateResolver,\n );\n"],"mappings":";;;;;;;;;;;AAkBA,MAAa,wBACX,OAAO,GAAG,iCAAiC,CAAC,CAAC,WAAW,QAAQ,YAAY,SAAS;CACnF,MAAM,UAAU,OAAO;CACvB,IAAI,QAAQ,aAAa,MACvB,OAAO,OAAO,IAAI,eAAe;EAC/B,MAAM;EACN,SAAS;EACT,OAAO;CACT,CAAC;CAEH,MAAM,UAAU,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU,QAAQ,QAAQ;CACxF,MAAM,QAAQ,OAAO,OAAO,IAAI;EAC9B,WAAW,OAAO,kBAAkB,eAAe,CAAC,CAAC,WAAW,SAAS,OAAO;EAChF,aACE,IAAI,WAAW;GACb,MAAM;GACN,SAAS;EACX,CAAC;CACL,CAAC;CACD,MAAM,UAAU,WAAW,WAAW,CAAC;CACvC,IAAI,QAAQ,MAAM,WAAW,CAAC,OAAO,GAAGA,KAAG,CAAC,CAAC,MAAM,CAAC,GAClD,OAAO,OAAO,IAAI,WAAW;EAC3B,MAAM;EACN,SAAS;CACX,CAAC;CAEH,MAAM,OAAO,OAAO,OAAO,IAAI;EAC7B,WAAW;GACT,MAAM,QAAQ,WAAW,SAAS,2BAA2B;GAC7D,MAAM,iBAAiB,mBAAmB;IACxC,KAAK;IACL,cAAc;IACd,MAAM;KAAC;KAAO;KAAO;IAAO;GAC9B,CAAC;GACD,OAAO,mBAAmB;IACxB,KAAK;IACL,cAAc;IACd,MAAM;KAAC,QAAQ,GAAG,gBAAgB;KAAsB,WAAW;KAAM;IAAc;GACzF,CAAC;EACH;EACA,QAAQ,UACN,IAAI,cAAc;GAChB,MAAM;GACN,SAAS;GACT;EACF,CAAC;CACL,CAAC;CACD,OAAO;EACL,IAAI,QAAQ,GAAG,UAAU;EACzB;EACA,OAAO;EACP,UAAU;CACZ;AACF,CAAC;AAEH,MAAa,wBAAwB,eACnC,gBACE,kBACA,YACA,qBACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/actions/resolution/get-alias/index.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/actions/resolution/get-alias/index.ts"],"mappings":";;;;cA+Ea,UAEZ,cAFoB;;;;;;;;;;;GAEpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/actions/resolution/get-alias/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport {\n permissionedResolverV2InterfaceGetAliasAbi,\n resolverInterfaceIds,\n} from \"@ensforge/contracts/v2\";\n\nimport { defineReadAction } from \"../../../action/read-request.js\";\nimport type { EnsforgeConfig } from \"../../../config/config.js\";\nimport { CodecError } from \"../../../errors/codec-error.js\";\nimport { supportsInterface } from \"../../../internal/capabilities/interface-support.js\";\nimport { EthereumClient } from \"../../../internal/client/ethereum-client.js\";\nimport { executeRead } from \"../../../internal/read/execute-read.js\";\nimport { dnsDecodeName, dnsEncodeName } from \"../../../names/dns.js\";\nimport { normalizeName } from \"../../../names/normalize.js\";\nimport { findResolver } from \"../get-resolver/find.js\";\nimport type { AliasResult, GetAliasError, GetAliasParameters } from \"./types.js\";\n\nconst getAliasEffect = Effect.fn(\"ensforge.getAlias\")(function* (\n config: EnsforgeConfig,\n parameters: GetAliasParameters,\n) {\n const name = yield* normalizeName.effect(parameters.name);\n return yield* executeRead(\n config,\n parameters,\n Effect.gen(function* () {\n const discovery = yield* findResolver(name);\n if (discovery === null) {\n return {\n supported: false,\n name,\n resolver: null,\n reason: \"RESOLVER_NOT_FOUND\",\n } as const satisfies AliasResult;\n }\n
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/actions/resolution/get-alias/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport {\n permissionedResolverV2InterfaceGetAliasAbi,\n resolverInterfaceIds,\n} from \"@ensforge/contracts/v2\";\n\nimport { defineReadAction } from \"../../../action/read-request.js\";\nimport type { EnsforgeConfig } from \"../../../config/config.js\";\nimport { CodecError } from \"../../../errors/codec-error.js\";\nimport { supportsInterface } from \"../../../internal/capabilities/interface-support.js\";\nimport { EthereumClient } from \"../../../internal/client/ethereum-client.js\";\nimport { executeRead } from \"../../../internal/read/execute-read.js\";\nimport { dnsDecodeName, dnsEncodeName } from \"../../../names/dns.js\";\nimport { normalizeName } from \"../../../names/normalize.js\";\nimport { findResolver } from \"../get-resolver/find.js\";\nimport type { AliasResult, GetAliasError, GetAliasParameters } from \"./types.js\";\n\nconst getAliasEffect = Effect.fn(\"ensforge.getAlias\")(function* (\n config: EnsforgeConfig,\n parameters: GetAliasParameters,\n) {\n const name = yield* normalizeName.effect(parameters.name);\n return yield* executeRead(\n config,\n parameters,\n Effect.gen(function* () {\n const discovery = yield* findResolver(name);\n if (discovery === null) {\n return {\n supported: false,\n name,\n resolver: null,\n reason: \"RESOLVER_NOT_FOUND\",\n } as const satisfies AliasResult;\n }\n const permissioned = yield* supportsInterface(\n discovery.address,\n resolverInterfaceIds.permissionedResolver,\n );\n if (!permissioned) {\n return {\n supported: false,\n name,\n resolver: discovery.address,\n reason: \"ALIASING_UNSUPPORTED\",\n } as const satisfies AliasResult;\n }\n const ethereum = yield* EthereumClient;\n const raw = yield* ethereum.readContract({\n address: discovery.address,\n abi: permissionedResolverV2InterfaceGetAliasAbi,\n functionName: \"getAlias\",\n args: [yield* dnsEncodeName.effect(name)],\n });\n const target =\n raw === \"0x\"\n ? null\n : yield* Effect.try({\n try: () => dnsDecodeName(raw),\n catch: (cause) =>\n cause instanceof CodecError\n ? cause\n : new CodecError({\n code: \"INVALID_DNS_NAME\",\n message: `Unable to decode the resolver alias for ${name}`,\n }),\n });\n return {\n supported: true,\n name,\n resolver: discovery.address,\n target,\n raw,\n } as const satisfies AliasResult;\n }),\n );\n});\n\nexport const getAlias = defineReadAction<GetAliasParameters, AliasResult, GetAliasError>(\n getAliasEffect,\n);\n\nexport { AliasResult, type GetAliasError, type GetAliasParameters } from \"./types.js\";\n"],"mappings":";;;;;;;;;;;;;AAkBA,MAAM,iBAAiB,OAAO,GAAG,mBAAmB,CAAC,CAAC,WACpD,QACA,YACA;CACA,MAAM,OAAO,OAAO,cAAc,OAAO,WAAW,IAAI;CACxD,OAAO,OAAO,YACZ,QACA,YACA,OAAO,IAAI,aAAa;EACtB,MAAM,YAAY,OAAO,aAAa,IAAI;EAC1C,IAAI,cAAc,MAChB,OAAO;GACL,WAAW;GACX;GACA,UAAU;GACV,QAAQ;EACV;EAMF,IAAI,EAAC,OAJuB,kBAC1B,UAAU,SACV,qBAAqB,oBACvB,IAEE,OAAO;GACL,WAAW;GACX;GACA,UAAU,UAAU;GACpB,QAAQ;EACV;EAGF,MAAM,MAAM,QAAO,OADK,eACG,CAAC,aAAa;GACvC,SAAS,UAAU;GACnB,KAAK;GACL,cAAc;GACd,MAAM,CAAC,OAAO,cAAc,OAAO,IAAI,CAAC;EAC1C,CAAC;EACD,MAAM,SACJ,QAAQ,OACJ,OACA,OAAO,OAAO,IAAI;GAChB,WAAW,cAAc,GAAG;GAC5B,QAAQ,UACN,iBAAiB,aACb,QACA,IAAI,WAAW;IACb,MAAM;IACN,SAAS,2CAA2C;GACtD,CAAC;EACT,CAAC;EACP,OAAO;GACL,WAAW;GACX;GACA,UAAU,UAAU;GACpB;GACA;EACF;CACF,CAAC,CACH;AACF,CAAC;AAED,MAAa,WAAW,iBACtB,cACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { RpcError } from "../../../errors/rpc-error.js";
|
|
1
2
|
import { BlockParameters } from "../../../action/block.js";
|
|
2
|
-
import { CodecError } from "../../../errors/codec-error.js";
|
|
3
3
|
import { ContractError } from "../../../errors/contract-error.js";
|
|
4
|
+
import { CodecError } from "../../../errors/codec-error.js";
|
|
4
5
|
import { NameError } from "../../../errors/name-error.js";
|
|
5
|
-
import { RpcError } from "../../../errors/rpc-error.js";
|
|
6
6
|
import { EthereumAddress } from "../../../schemas/identity.js";
|
|
7
7
|
//#region src/actions/resolution/get-resolver/types.d.ts
|
|
8
8
|
type GetResolverParameters = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EnsReadAction } from "../../../action/read-request.js";
|
|
2
2
|
import { GetResolverError } from "../get-resolver/types.js";
|
|
3
3
|
import { GetResolverVersionError, GetResolverVersionParameters, ResolverVersionResult } from "./types.js";
|
|
4
|
-
import "
|
|
4
|
+
import "../../../resolution.js";
|
|
5
5
|
import "../../../index.js";
|
|
6
6
|
//#region src/actions/resolution/get-resolver-version/index.d.ts
|
|
7
7
|
declare const getResolverVersion: EnsReadAction<GetResolverVersionParameters, {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { RpcError } from "../../../errors/rpc-error.js";
|
|
1
2
|
import { BlockParameters } from "../../../action/block.js";
|
|
2
|
-
import { CodecError } from "../../../errors/codec-error.js";
|
|
3
3
|
import { ContractError } from "../../../errors/contract-error.js";
|
|
4
|
+
import { CodecError } from "../../../errors/codec-error.js";
|
|
4
5
|
import { NameError } from "../../../errors/name-error.js";
|
|
5
|
-
import { RpcError } from "../../../errors/rpc-error.js";
|
|
6
6
|
import { GatewayError } from "../../../errors/gateway-error.js";
|
|
7
7
|
import { Schema } from "effect";
|
|
8
8
|
//#region src/actions/resolution/resolve/types.d.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EnsReadAction } from "../../../action/read-request.js";
|
|
2
2
|
import { ResolveError } from "../resolve/types.js";
|
|
3
3
|
import { ResolveBatchCall, ResolveBatchError, ResolveBatchParameters, ResolveBatchResult } from "./types.js";
|
|
4
|
-
import "
|
|
4
|
+
import "../../../resolution.js";
|
|
5
5
|
import "../../../index.js";
|
|
6
6
|
//#region src/actions/resolution/resolve-batch/index.d.ts
|
|
7
7
|
declare const resolveBatch: EnsReadAction<ResolveBatchParameters, ResolveBatchResult, ResolveError>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineWriteAction, makeWriteIntent } from "../../../action/write-intent.js";
|
|
2
1
|
import { ContractError } from "../../../errors/contract-error.js";
|
|
3
2
|
import { WritePlanError } from "../../../errors/write-plan-error.js";
|
|
3
|
+
import { defineWriteAction, makeWriteIntent } from "../../../action/write-intent.js";
|
|
4
4
|
import { executeSequential } from "../../../internal/write/execute-sequential.js";
|
|
5
5
|
import { CodecError } from "../../../errors/codec-error.js";
|
|
6
6
|
import { EthereumAddress } from "../../../schemas/identity.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { defineExtendedAction } from "../../../action/action.js";
|
|
2
|
-
import { makeWriteIntent } from "../../../action/write-intent.js";
|
|
3
2
|
import { Hex as Hex$1 } from "../../../schemas/hex.js";
|
|
4
3
|
import { ContractError } from "../../../errors/contract-error.js";
|
|
5
4
|
import { executeRead } from "../../../internal/read/execute-read.js";
|
|
6
5
|
import { WritePlanError } from "../../../errors/write-plan-error.js";
|
|
7
6
|
import { resolveWalletContext } from "../../../internal/services/wallet-client.js";
|
|
7
|
+
import { makeWriteIntent } from "../../../action/write-intent.js";
|
|
8
8
|
import { executeSequential } from "../../../internal/write/execute-sequential.js";
|
|
9
9
|
import { EthereumClient } from "../../../internal/client/ethereum-client.js";
|
|
10
10
|
import { CodecError } from "../../../errors/codec-error.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { RpcError } from "../../../errors/rpc-error.js";
|
|
1
2
|
import { BlockParameters } from "../../../action/block.js";
|
|
2
|
-
import { CodecError } from "../../../errors/codec-error.js";
|
|
3
3
|
import { ContractError } from "../../../errors/contract-error.js";
|
|
4
|
+
import { CodecError } from "../../../errors/codec-error.js";
|
|
4
5
|
import { NameError } from "../../../errors/name-error.js";
|
|
5
|
-
import { RpcError } from "../../../errors/rpc-error.js";
|
|
6
6
|
import { Schema } from "effect";
|
|
7
7
|
//#region src/actions/reverse/get-primary-name/types.d.ts
|
|
8
8
|
declare const PrimaryNameResult: Schema.NullOr<Schema.Struct<{
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { makeWriteIntent } from "../../action/write-intent.js";
|
|
2
1
|
import { ContractError } from "../../errors/contract-error.js";
|
|
2
|
+
import { makeWriteIntent } from "../../action/write-intent.js";
|
|
3
3
|
import { Effect } from "effect";
|
|
4
4
|
import { encodeFunctionData } from "viem";
|
|
5
5
|
import { ensRegistryV1SetSubnodeRecordAbi, nameWrapperV1SetSubnodeRecordAbi } from "@ensforge/contracts/v1";
|
|
6
|
-
import { permissionedRegistryV2InterfaceRegisterAbi, permissionedRegistryV2InterfaceSetSubregistryAbi, userRegistryV2SetParentAbi, verifiableFactoryV2DeployProxyAbi } from "@ensforge/contracts/v2";
|
|
6
|
+
import { permissionedRegistryV2InterfaceRegisterAbi, permissionedRegistryV2InterfaceSetSubregistryAbi, userRegistryV2InitializeAbi, userRegistryV2SetParentAbi, verifiableFactoryV2DeployProxyAbi } from "@ensforge/contracts/v2";
|
|
7
7
|
|
|
8
8
|
//#region src/actions/subnames/intents.ts
|
|
9
9
|
const prepareEncoded = Effect.fn("ensforge.subname.prepareEncoded")((_config, parameters) => Effect.succeed({
|
|
@@ -53,31 +53,11 @@ const v1CreateSubnameIntent = Effect.fn("ensforge.v1CreateSubnameIntent")(functi
|
|
|
53
53
|
});
|
|
54
54
|
});
|
|
55
55
|
const deployUserRegistryIntent = Effect.fn("ensforge.deployUserRegistryIntent")(function* (parameters) {
|
|
56
|
-
const initializeAbi = [{
|
|
57
|
-
type: "function",
|
|
58
|
-
name: "initialize",
|
|
59
|
-
stateMutability: "nonpayable",
|
|
60
|
-
inputs: [{
|
|
61
|
-
name: "grants",
|
|
62
|
-
type: "tuple[]",
|
|
63
|
-
components: [{
|
|
64
|
-
name: "account",
|
|
65
|
-
type: "address"
|
|
66
|
-
}, {
|
|
67
|
-
name: "roleBitmap",
|
|
68
|
-
type: "uint256"
|
|
69
|
-
}]
|
|
70
|
-
}],
|
|
71
|
-
outputs: []
|
|
72
|
-
}];
|
|
73
56
|
const data = yield* encode("the ENSv2 User Registry deployment", () => {
|
|
74
57
|
const initialization = encodeFunctionData({
|
|
75
|
-
abi:
|
|
58
|
+
abi: userRegistryV2InitializeAbi,
|
|
76
59
|
functionName: "initialize",
|
|
77
|
-
args: [
|
|
78
|
-
account: parameters.owner,
|
|
79
|
-
roleBitmap: parameters.roles
|
|
80
|
-
}]]
|
|
60
|
+
args: [parameters.owner, parameters.roles]
|
|
81
61
|
});
|
|
82
62
|
return encodeFunctionData({
|
|
83
63
|
abi: verifiableFactoryV2DeployProxyAbi,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intents.js","names":[],"sources":["../../../src/actions/subnames/intents.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport {\n ensRegistryV1SetSubnodeRecordAbi,\n nameWrapperV1SetSubnodeRecordAbi,\n} from \"@ensforge/contracts/v1\";\nimport {\n permissionedRegistryV2InterfaceRegisterAbi,\n permissionedRegistryV2InterfaceSetSubregistryAbi,\n userRegistryV2SetParentAbi,\n verifiableFactoryV2DeployProxyAbi,\n} from \"@ensforge/contracts/v2\";\nimport { encodeFunctionData } from \"viem\";\n\nimport { makeWriteIntent, type EnsWriteIntentPreparer } from \"../../action/write-intent.js\";\nimport { ContractError } from \"../../errors/contract-error.js\";\nimport type { EthereumAddress } from \"../../schemas/identity.js\";\nimport type { EnsProtocol } from \"../../schemas/protocol.js\";\nimport type { CallExecutionResult, WriteError } from \"../../write/types.js\";\n\ninterface EncodedIntentParameters {\n readonly operation: string;\n readonly protocol: EnsProtocol;\n readonly to: EthereumAddress;\n readonly data: `0x${string}`;\n}\n\nconst prepareEncoded: EnsWriteIntentPreparer<EncodedIntentParameters, WriteError> = Effect.fn(\n \"ensforge.subname.prepareEncoded\",\n)((_config, parameters) =>\n Effect.succeed({\n to: parameters.to,\n data: parameters.data,\n value: 0n,\n protocol: parameters.protocol,\n }),\n);\n\nconst encodedIntent = (parameters: EncodedIntentParameters) =>\n makeWriteIntent<EncodedIntentParameters, CallExecutionResult, WriteError>(\n parameters.operation,\n parameters,\n prepareEncoded,\n );\n\nconst encode = (operation: string, thunk: () => `0x${string}`) =>\n Effect.try({\n try: thunk,\n catch: (cause) =>\n new ContractError({\n code: \"ENCODE_FAILED\",\n message: `Unable to encode ${operation}`,\n cause,\n }),\n });\n\nexport const v1CreateSubnameIntent = Effect.fn(\"ensforge.v1CreateSubnameIntent\")(\n function* (parameters: {\n readonly registry: EthereumAddress;\n readonly wrapper: EthereumAddress;\n readonly parentWrapped: boolean;\n readonly parentNode: `0x${string}`;\n readonly label: string;\n readonly labelhash: `0x${string}`;\n readonly owner: EthereumAddress;\n readonly resolver: EthereumAddress;\n readonly ttl: bigint;\n readonly fuses: number;\n readonly expiry: bigint;\n }) {\n const data = yield* encode(\"the V1 subname creation\", () =>\n parameters.parentWrapped\n ? encodeFunctionData({\n abi: nameWrapperV1SetSubnodeRecordAbi,\n functionName: \"setSubnodeRecord\",\n args: [\n parameters.parentNode,\n parameters.label,\n parameters.owner,\n parameters.resolver,\n parameters.ttl,\n parameters.fuses,\n parameters.expiry,\n ],\n })\n : encodeFunctionData({\n abi: ensRegistryV1SetSubnodeRecordAbi,\n functionName: \"setSubnodeRecord\",\n args: [\n parameters.parentNode,\n parameters.labelhash,\n parameters.owner,\n parameters.resolver,\n parameters.ttl,\n ],\n }),\n );\n return encodedIntent({\n operation: \"createSubname\",\n protocol: \"v1\",\n to: parameters.parentWrapped ? parameters.wrapper : parameters.registry,\n data,\n });\n },\n);\n\nexport const deployUserRegistryIntent = Effect.fn(\"ensforge.deployUserRegistryIntent\")(\n function* (parameters: {\n readonly factory: EthereumAddress;\n readonly implementation: EthereumAddress;\n readonly owner: EthereumAddress;\n readonly roles: bigint;\n readonly salt: bigint;\n }) {\n const
|
|
1
|
+
{"version":3,"file":"intents.js","names":[],"sources":["../../../src/actions/subnames/intents.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport {\n ensRegistryV1SetSubnodeRecordAbi,\n nameWrapperV1SetSubnodeRecordAbi,\n} from \"@ensforge/contracts/v1\";\nimport {\n permissionedRegistryV2InterfaceRegisterAbi,\n permissionedRegistryV2InterfaceSetSubregistryAbi,\n userRegistryV2InitializeAbi,\n userRegistryV2SetParentAbi,\n verifiableFactoryV2DeployProxyAbi,\n} from \"@ensforge/contracts/v2\";\nimport { encodeFunctionData } from \"viem\";\n\nimport { makeWriteIntent, type EnsWriteIntentPreparer } from \"../../action/write-intent.js\";\nimport { ContractError } from \"../../errors/contract-error.js\";\nimport type { EthereumAddress } from \"../../schemas/identity.js\";\nimport type { EnsProtocol } from \"../../schemas/protocol.js\";\nimport type { CallExecutionResult, WriteError } from \"../../write/types.js\";\n\ninterface EncodedIntentParameters {\n readonly operation: string;\n readonly protocol: EnsProtocol;\n readonly to: EthereumAddress;\n readonly data: `0x${string}`;\n}\n\nconst prepareEncoded: EnsWriteIntentPreparer<EncodedIntentParameters, WriteError> = Effect.fn(\n \"ensforge.subname.prepareEncoded\",\n)((_config, parameters) =>\n Effect.succeed({\n to: parameters.to,\n data: parameters.data,\n value: 0n,\n protocol: parameters.protocol,\n }),\n);\n\nconst encodedIntent = (parameters: EncodedIntentParameters) =>\n makeWriteIntent<EncodedIntentParameters, CallExecutionResult, WriteError>(\n parameters.operation,\n parameters,\n prepareEncoded,\n );\n\nconst encode = (operation: string, thunk: () => `0x${string}`) =>\n Effect.try({\n try: thunk,\n catch: (cause) =>\n new ContractError({\n code: \"ENCODE_FAILED\",\n message: `Unable to encode ${operation}`,\n cause,\n }),\n });\n\nexport const v1CreateSubnameIntent = Effect.fn(\"ensforge.v1CreateSubnameIntent\")(\n function* (parameters: {\n readonly registry: EthereumAddress;\n readonly wrapper: EthereumAddress;\n readonly parentWrapped: boolean;\n readonly parentNode: `0x${string}`;\n readonly label: string;\n readonly labelhash: `0x${string}`;\n readonly owner: EthereumAddress;\n readonly resolver: EthereumAddress;\n readonly ttl: bigint;\n readonly fuses: number;\n readonly expiry: bigint;\n }) {\n const data = yield* encode(\"the V1 subname creation\", () =>\n parameters.parentWrapped\n ? encodeFunctionData({\n abi: nameWrapperV1SetSubnodeRecordAbi,\n functionName: \"setSubnodeRecord\",\n args: [\n parameters.parentNode,\n parameters.label,\n parameters.owner,\n parameters.resolver,\n parameters.ttl,\n parameters.fuses,\n parameters.expiry,\n ],\n })\n : encodeFunctionData({\n abi: ensRegistryV1SetSubnodeRecordAbi,\n functionName: \"setSubnodeRecord\",\n args: [\n parameters.parentNode,\n parameters.labelhash,\n parameters.owner,\n parameters.resolver,\n parameters.ttl,\n ],\n }),\n );\n return encodedIntent({\n operation: \"createSubname\",\n protocol: \"v1\",\n to: parameters.parentWrapped ? parameters.wrapper : parameters.registry,\n data,\n });\n },\n);\n\nexport const deployUserRegistryIntent = Effect.fn(\"ensforge.deployUserRegistryIntent\")(\n function* (parameters: {\n readonly factory: EthereumAddress;\n readonly implementation: EthereumAddress;\n readonly owner: EthereumAddress;\n readonly roles: bigint;\n readonly salt: bigint;\n }) {\n const data = yield* encode(\"the ENSv2 User Registry deployment\", () => {\n const initialization = encodeFunctionData({\n abi: userRegistryV2InitializeAbi,\n functionName: \"initialize\",\n args: [parameters.owner, parameters.roles],\n });\n return encodeFunctionData({\n abi: verifiableFactoryV2DeployProxyAbi,\n functionName: \"deployProxy\",\n args: [parameters.implementation, parameters.salt, initialization],\n });\n });\n return encodedIntent({\n operation: \"createSubregistry\",\n protocol: \"v2\",\n to: parameters.factory,\n data,\n });\n },\n);\n\nexport const setRegistryParentIntent = Effect.fn(\"ensforge.setRegistryParentIntent\")(\n function* (parameters: {\n readonly registry: EthereumAddress;\n readonly parentRegistry: EthereumAddress;\n readonly parentLabel: string;\n }) {\n const data = yield* encode(\"the ENSv2 registry parent update\", () =>\n encodeFunctionData({\n abi: userRegistryV2SetParentAbi,\n functionName: \"setParent\",\n args: [parameters.parentRegistry, parameters.parentLabel],\n }),\n );\n return encodedIntent({\n operation: \"setSubregistryParent\",\n protocol: \"v2\",\n to: parameters.registry,\n data,\n });\n },\n);\n\nexport const attachSubregistryIntent = Effect.fn(\"ensforge.attachSubregistryIntent\")(\n function* (parameters: {\n readonly parentRegistry: EthereumAddress;\n readonly parentTokenId: bigint;\n readonly subregistry: EthereumAddress;\n }) {\n const data = yield* encode(\"the ENSv2 subregistry attachment\", () =>\n encodeFunctionData({\n abi: permissionedRegistryV2InterfaceSetSubregistryAbi,\n functionName: \"setSubregistry\",\n args: [parameters.parentTokenId, parameters.subregistry],\n }),\n );\n return encodedIntent({\n operation: \"attachSubregistry\",\n protocol: \"v2\",\n to: parameters.parentRegistry,\n data,\n });\n },\n);\n\nexport const registerV2SubnameIntent = Effect.fn(\"ensforge.registerV2SubnameIntent\")(\n function* (parameters: {\n readonly registry: EthereumAddress;\n readonly label: string;\n readonly owner: EthereumAddress;\n readonly resolver: EthereumAddress;\n readonly roles: bigint;\n readonly expiry: bigint;\n }) {\n const data = yield* encode(\"the ENSv2 subname registration\", () =>\n encodeFunctionData({\n abi: permissionedRegistryV2InterfaceRegisterAbi,\n functionName: \"register\",\n args: [\n parameters.label,\n parameters.owner,\n \"0x0000000000000000000000000000000000000000\",\n parameters.resolver,\n parameters.roles,\n parameters.expiry,\n ],\n }),\n );\n return encodedIntent({\n operation: \"createSubname\",\n protocol: \"v2\",\n to: parameters.registry,\n data,\n });\n },\n);\n"],"mappings":";;;;;;;;AA4BA,MAAM,iBAA8E,OAAO,GACzF,iCACF,CAAC,EAAE,SAAS,eACV,OAAO,QAAQ;CACb,IAAI,WAAW;CACf,MAAM,WAAW;CACjB,OAAO;CACP,UAAU,WAAW;AACvB,CAAC,CACH;AAEA,MAAM,iBAAiB,eACrB,gBACE,WAAW,WACX,YACA,cACF;AAEF,MAAM,UAAU,WAAmB,UACjC,OAAO,IAAI;CACT,KAAK;CACL,QAAQ,UACN,IAAI,cAAc;EAChB,MAAM;EACN,SAAS,oBAAoB;EAC7B;CACF,CAAC;AACL,CAAC;AAEH,MAAa,wBAAwB,OAAO,GAAG,gCAAgC,CAAC,CAC9E,WAAW,YAYR;CACD,MAAM,OAAO,OAAO,OAAO,iCACzB,WAAW,gBACP,mBAAmB;EACjB,KAAK;EACL,cAAc;EACd,MAAM;GACJ,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;EACb;CACF,CAAC,IACD,mBAAmB;EACjB,KAAK;EACL,cAAc;EACd,MAAM;GACJ,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;EACb;CACF,CAAC,CACP;CACA,OAAO,cAAc;EACnB,WAAW;EACX,UAAU;EACV,IAAI,WAAW,gBAAgB,WAAW,UAAU,WAAW;EAC/D;CACF,CAAC;AACH,CACF;AAEA,MAAa,2BAA2B,OAAO,GAAG,mCAAmC,CAAC,CACpF,WAAW,YAMR;CACD,MAAM,OAAO,OAAO,OAAO,4CAA4C;EACrE,MAAM,iBAAiB,mBAAmB;GACxC,KAAK;GACL,cAAc;GACd,MAAM,CAAC,WAAW,OAAO,WAAW,KAAK;EAC3C,CAAC;EACD,OAAO,mBAAmB;GACxB,KAAK;GACL,cAAc;GACd,MAAM;IAAC,WAAW;IAAgB,WAAW;IAAM;GAAc;EACnE,CAAC;CACH,CAAC;CACD,OAAO,cAAc;EACnB,WAAW;EACX,UAAU;EACV,IAAI,WAAW;EACf;CACF,CAAC;AACH,CACF;AAEA,MAAa,0BAA0B,OAAO,GAAG,kCAAkC,CAAC,CAClF,WAAW,YAIR;CACD,MAAM,OAAO,OAAO,OAAO,0CACzB,mBAAmB;EACjB,KAAK;EACL,cAAc;EACd,MAAM,CAAC,WAAW,gBAAgB,WAAW,WAAW;CAC1D,CAAC,CACH;CACA,OAAO,cAAc;EACnB,WAAW;EACX,UAAU;EACV,IAAI,WAAW;EACf;CACF,CAAC;AACH,CACF;AAEA,MAAa,0BAA0B,OAAO,GAAG,kCAAkC,CAAC,CAClF,WAAW,YAIR;CACD,MAAM,OAAO,OAAO,OAAO,0CACzB,mBAAmB;EACjB,KAAK;EACL,cAAc;EACd,MAAM,CAAC,WAAW,eAAe,WAAW,WAAW;CACzD,CAAC,CACH;CACA,OAAO,cAAc;EACnB,WAAW;EACX,UAAU;EACV,IAAI,WAAW;EACf;CACF,CAAC;AACH,CACF;AAEA,MAAa,0BAA0B,OAAO,GAAG,kCAAkC,CAAC,CAClF,WAAW,YAOR;CACD,MAAM,OAAO,OAAO,OAAO,wCACzB,mBAAmB;EACjB,KAAK;EACL,cAAc;EACd,MAAM;GACJ,WAAW;GACX,WAAW;GACX;GACA,WAAW;GACX,WAAW;GACX,WAAW;EACb;CACF,CAAC,CACH;CACA,OAAO,cAAc;EACnB,WAAW;EACX,UAAU;EACV,IAAI,WAAW;EACf;CACF,CAAC;AACH,CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { makeWriteIntent } from "../../action/write-intent.js";
|
|
2
1
|
import { ContractError } from "../../errors/contract-error.js";
|
|
2
|
+
import { makeWriteIntent } from "../../action/write-intent.js";
|
|
3
3
|
import { Effect } from "effect";
|
|
4
4
|
import { encodeFunctionData } from "viem";
|
|
5
5
|
import { baseRegistrarV1ApproveAbi, nameWrapperV1WrapAbi, nameWrapperV1WrapETH2LDAbi } from "@ensforge/contracts/v1";
|
package/dist/batch.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReadBatch, ReadBatchError, ReadBatchOptions, ReadBatchOutcome, ReadBatchResult, ReadBatchSettled, ReadBatchSettledResult, readBatch, readBatchSettled } from "./actions/batch/read-batch.js";
|
|
2
|
+
import { executeWritePlan } from "./actions/batch/execute-write-plan.js";
|
|
3
|
+
import { estimateCalls } from "./actions/batch/estimate-calls.js";
|
|
4
|
+
import { getWalletCapabilities } from "./actions/batch/get-wallet-capabilities.js";
|
|
5
|
+
import { getCallsStatus } from "./actions/batch/get-calls-status.js";
|
|
6
|
+
import { prepareCalls } from "./actions/batch/prepare-calls.js";
|
|
7
|
+
import { sendCalls } from "./actions/batch/send-calls.js";
|
|
8
|
+
import { resumeCalls } from "./actions/batch/resume-calls.js";
|
|
9
|
+
import { simulateCalls } from "./actions/batch/simulate-calls.js";
|
|
10
|
+
export { type ReadBatch, type ReadBatchError, type ReadBatchOptions, type ReadBatchOutcome, type ReadBatchResult, type ReadBatchSettled, type ReadBatchSettledResult, estimateCalls, executeWritePlan, getCallsStatus, getWalletCapabilities, prepareCalls, readBatch, readBatchSettled, resumeCalls, sendCalls, simulateCalls };
|
package/dist/batch.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { readBatch, readBatchSettled } from "./actions/batch/read-batch.js";
|
|
2
|
+
import { resumeCalls } from "./actions/batch/resume-calls.js";
|
|
3
|
+
import { getWalletCapabilities } from "./actions/batch/get-wallet-capabilities.js";
|
|
4
|
+
import { sendCalls } from "./actions/batch/send-calls.js";
|
|
5
|
+
import { executeWritePlan } from "./actions/batch/execute-write-plan.js";
|
|
6
|
+
import { estimateCalls } from "./actions/batch/estimate-calls.js";
|
|
7
|
+
import { getCallsStatus } from "./actions/batch/get-calls-status.js";
|
|
8
|
+
import { prepareCalls } from "./actions/batch/prepare-calls.js";
|
|
9
|
+
import { simulateCalls } from "./actions/batch/simulate-calls.js";
|
|
10
|
+
|
|
11
|
+
export { estimateCalls, executeWritePlan, getCallsStatus, getWalletCapabilities, prepareCalls, readBatch, readBatchSettled, resumeCalls, sendCalls, simulateCalls };
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { AccountCapabilityParameters, AuthorizationDecision, AuthorizationRequirement, AuthorizationSource, CapabilityError, HasRegistryRolesResult, HasResolverRolesResult, NameCapabilities, NameCapabilityParameters, OperatorApprovalResult, OperatorApprovalTarget, RecordOperation, RecordPermission, RecordPermissionsResult, RegistryCapabilities, RegistryOperation, RegistryRolesResult, RequiredAuthorizationResult, ResolverCapabilities, ResolverDelegateApprovalResult, ResolverProfiles, ResolverRolesResult, TokenApprovalResult, WrapperPermissionsResult, WriteOperation, WriteTarget } from "./types.js";
|
|
2
|
-
import { GetNameCapabilitiesParameters, getNameCapabilities } from "./get-name-capabilities/index.js";
|
|
3
|
-
import { getRegistryCapabilities } from "./get-registry-capabilities/index.js";
|
|
4
|
-
import { getRegistryRoles } from "./get-registry-roles/index.js";
|
|
5
|
-
import { GetRecordPermissionsParameters, getRecordPermissions } from "./get-record-permissions/index.js";
|
|
6
|
-
import { GetRequiredAuthorizationParameters, getRequiredAuthorization } from "./get-required-authorization/index.js";
|
|
7
|
-
import { GetOperatorApprovalParameters, getOperatorApproval } from "./get-operator-approval/index.js";
|
|
8
|
-
import { getResolverCapabilities } from "./get-resolver-capabilities/index.js";
|
|
9
|
-
import { GetResolverDelegateApprovalParameters, getResolverDelegateApproval } from "./get-resolver-delegate-approval/index.js";
|
|
10
|
-
import { GetResolverRolesParameters, getResolverRoles } from "./get-resolver-roles/index.js";
|
|
11
|
-
import { getTokenApproval } from "./get-token-approval/index.js";
|
|
12
|
-
import { getWrapperPermissions } from "./get-wrapper-permissions/index.js";
|
|
13
|
-
import { GetWriteTargetParameters, getWriteTarget } from "./get-write-target/index.js";
|
|
14
|
-
import { HasRegistryRolesParameters, hasRegistryRoles } from "./has-registry-roles/index.js";
|
|
15
|
-
import { HasResolverRolesParameters, hasResolverRoles } from "./has-resolver-roles/index.js";
|
|
1
|
+
import { AccountCapabilityParameters, AuthorizationDecision, AuthorizationRequirement, AuthorizationSource, CapabilityError, HasRegistryRolesResult, HasResolverRolesResult, NameCapabilities, NameCapabilityParameters, OperatorApprovalResult, OperatorApprovalTarget, RecordOperation, RecordPermission, RecordPermissionsResult, RegistryCapabilities, RegistryOperation, RegistryRolesResult, RequiredAuthorizationResult, ResolverCapabilities, ResolverDelegateApprovalResult, ResolverProfiles, ResolverRolesResult, TokenApprovalResult, WrapperPermissionsResult, WriteOperation, WriteTarget } from "./actions/capabilities/types.js";
|
|
2
|
+
import { GetNameCapabilitiesParameters, getNameCapabilities } from "./actions/capabilities/get-name-capabilities/index.js";
|
|
3
|
+
import { getRegistryCapabilities } from "./actions/capabilities/get-registry-capabilities/index.js";
|
|
4
|
+
import { getRegistryRoles } from "./actions/capabilities/get-registry-roles/index.js";
|
|
5
|
+
import { GetRecordPermissionsParameters, getRecordPermissions } from "./actions/capabilities/get-record-permissions/index.js";
|
|
6
|
+
import { GetRequiredAuthorizationParameters, getRequiredAuthorization } from "./actions/capabilities/get-required-authorization/index.js";
|
|
7
|
+
import { GetOperatorApprovalParameters, getOperatorApproval } from "./actions/capabilities/get-operator-approval/index.js";
|
|
8
|
+
import { getResolverCapabilities } from "./actions/capabilities/get-resolver-capabilities/index.js";
|
|
9
|
+
import { GetResolverDelegateApprovalParameters, getResolverDelegateApproval } from "./actions/capabilities/get-resolver-delegate-approval/index.js";
|
|
10
|
+
import { GetResolverRolesParameters, getResolverRoles } from "./actions/capabilities/get-resolver-roles/index.js";
|
|
11
|
+
import { getTokenApproval } from "./actions/capabilities/get-token-approval/index.js";
|
|
12
|
+
import { getWrapperPermissions } from "./actions/capabilities/get-wrapper-permissions/index.js";
|
|
13
|
+
import { GetWriteTargetParameters, getWriteTarget } from "./actions/capabilities/get-write-target/index.js";
|
|
14
|
+
import { HasRegistryRolesParameters, hasRegistryRoles } from "./actions/capabilities/has-registry-roles/index.js";
|
|
15
|
+
import { HasResolverRolesParameters, hasResolverRoles } from "./actions/capabilities/has-resolver-roles/index.js";
|
|
16
16
|
export { AccountCapabilityParameters, AuthorizationDecision, AuthorizationRequirement, AuthorizationSource, CapabilityError, type CapabilityError as GetNameCapabilitiesError, GetNameCapabilitiesParameters, type CapabilityError as GetOperatorApprovalError, GetOperatorApprovalParameters, type CapabilityError as GetRecordPermissionsError, GetRecordPermissionsParameters, type CapabilityError as GetRegistryCapabilitiesError, type NameCapabilityParameters as GetRegistryCapabilitiesParameters, type CapabilityError as GetRegistryRolesError, type AccountCapabilityParameters as GetRegistryRolesParameters, type CapabilityError as GetRequiredAuthorizationError, GetRequiredAuthorizationParameters, type CapabilityError as GetResolverCapabilitiesError, type NameCapabilityParameters as GetResolverCapabilitiesParameters, type CapabilityError as GetResolverDelegateApprovalError, GetResolverDelegateApprovalParameters, type CapabilityError as GetResolverRolesError, GetResolverRolesParameters, type CapabilityError as GetTokenApprovalError, type NameCapabilityParameters as GetTokenApprovalParameters, type CapabilityError as GetWrapperPermissionsError, type AccountCapabilityParameters as GetWrapperPermissionsParameters, type CapabilityError as GetWriteTargetError, GetWriteTargetParameters, type CapabilityError as HasRegistryRolesError, HasRegistryRolesParameters, HasRegistryRolesResult, type CapabilityError as HasResolverRolesError, HasResolverRolesParameters, HasResolverRolesResult, NameCapabilities, NameCapabilityParameters, OperatorApprovalResult, OperatorApprovalTarget, RecordOperation, RecordPermission, RecordPermissionsResult, RegistryCapabilities, RegistryOperation, RegistryRolesResult, RequiredAuthorizationResult, ResolverCapabilities, ResolverDelegateApprovalResult, ResolverProfiles, ResolverRolesResult, TokenApprovalResult, WrapperPermissionsResult, WriteOperation, WriteTarget, getNameCapabilities, getOperatorApproval, getRecordPermissions, getRegistryCapabilities, getRegistryRoles, getRequiredAuthorization, getResolverCapabilities, getResolverDelegateApproval, getResolverRoles, getTokenApproval, getWrapperPermissions, getWriteTarget, hasRegistryRoles, hasResolverRoles };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getResolverCapabilities } from "./actions/capabilities/get-resolver-capabilities/index.js";
|
|
2
|
+
import { getRecordPermissions } from "./actions/capabilities/get-record-permissions/index.js";
|
|
3
|
+
import { getRegistryCapabilities } from "./actions/capabilities/get-registry-capabilities/index.js";
|
|
4
|
+
import { getOperatorApproval } from "./actions/capabilities/get-operator-approval/index.js";
|
|
5
|
+
import { getTokenApproval } from "./actions/capabilities/get-token-approval/index.js";
|
|
6
|
+
import { getWrapperPermissions } from "./actions/capabilities/get-wrapper-permissions/index.js";
|
|
7
|
+
import { getWriteTarget } from "./actions/capabilities/get-write-target/index.js";
|
|
8
|
+
import { hasRegistryRoles } from "./actions/capabilities/has-registry-roles/index.js";
|
|
9
|
+
import { getRequiredAuthorization } from "./actions/capabilities/get-required-authorization/index.js";
|
|
10
|
+
import { getNameCapabilities } from "./actions/capabilities/get-name-capabilities/index.js";
|
|
11
|
+
import { getRegistryRoles } from "./actions/capabilities/get-registry-roles/index.js";
|
|
12
|
+
import { getResolverDelegateApproval } from "./actions/capabilities/get-resolver-delegate-approval/index.js";
|
|
13
|
+
import { getResolverRoles } from "./actions/capabilities/get-resolver-roles/index.js";
|
|
14
|
+
import { hasResolverRoles } from "./actions/capabilities/has-resolver-roles/index.js";
|
|
15
|
+
import { AuthorizationDecision, AuthorizationRequirement, AuthorizationSource, HasRegistryRolesResult, HasResolverRolesResult, NameCapabilities, OperatorApprovalResult, OperatorApprovalTarget, RecordOperation, RecordPermission, RecordPermissionsResult, RegistryCapabilities, RegistryOperation, RegistryRolesResult, RequiredAuthorizationResult, ResolverCapabilities, ResolverDelegateApprovalResult, ResolverProfiles, ResolverRolesResult, TokenApprovalResult, WrapperPermissionsResult, WriteOperation, WriteTarget } from "./actions/capabilities/types.js";
|
|
16
|
+
|
|
17
|
+
export { AuthorizationDecision, AuthorizationRequirement, AuthorizationSource, HasRegistryRolesResult, HasResolverRolesResult, NameCapabilities, OperatorApprovalResult, OperatorApprovalTarget, RecordOperation, RecordPermission, RecordPermissionsResult, RegistryCapabilities, RegistryOperation, RegistryRolesResult, RequiredAuthorizationResult, ResolverCapabilities, ResolverDelegateApprovalResult, ResolverProfiles, ResolverRolesResult, TokenApprovalResult, WrapperPermissionsResult, WriteOperation, WriteTarget, getNameCapabilities, getOperatorApproval, getRecordPermissions, getRegistryCapabilities, getRegistryRoles, getRequiredAuthorization, getResolverCapabilities, getResolverDelegateApproval, getResolverRoles, getTokenApproval, getWrapperPermissions, getWriteTarget, hasRegistryRoles, hasResolverRoles };
|
package/dist/config/config.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ import { ReadOptions, ResolvedReadOptions } from "./read-options.js";
|
|
|
5
5
|
import { ResolvedWriteOptions, WriteOptions } from "./write-options.js";
|
|
6
6
|
import { PublicClient, WalletClient } from "viem";
|
|
7
7
|
import { EnsV1Deployment, EnsV2Deployment } from "@ensforge/contracts/deployments";
|
|
8
|
-
import { Config } from "wagmi";
|
|
9
8
|
//#region src/config/config.d.ts
|
|
10
9
|
declare const EnsforgeConfigTypeId: unique symbol;
|
|
11
10
|
type EnsDeployment = EnsV1Deployment | EnsV2Deployment;
|
|
@@ -27,15 +26,9 @@ interface SharedCreateConfigParameters {
|
|
|
27
26
|
interface CreateViemConfigParameters extends SharedCreateConfigParameters {
|
|
28
27
|
readonly publicClient: PublicClient;
|
|
29
28
|
readonly walletClient?: WalletClient;
|
|
30
|
-
readonly wagmiConfig?: never;
|
|
31
29
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
readonly publicClient?: never;
|
|
35
|
-
readonly walletClient?: never;
|
|
36
|
-
}
|
|
37
|
-
type CreateConfigParameters = CreateViemConfigParameters | CreateWagmiConfigParameters;
|
|
38
|
-
/** Immutable, single-network configuration consumed by every Ensforge action. */
|
|
30
|
+
type CreateConfigParameters = CreateViemConfigParameters;
|
|
31
|
+
/** Immutable, single-network configuration consumed by every ensforge action. */
|
|
39
32
|
interface EnsforgeConfig {
|
|
40
33
|
readonly [EnsforgeConfigTypeId]: typeof EnsforgeConfigTypeId;
|
|
41
34
|
readonly network: EnsNetwork;
|
|
@@ -48,5 +41,5 @@ interface EnsforgeConfig {
|
|
|
48
41
|
readonly deployments: EnsDeploymentProfile;
|
|
49
42
|
}
|
|
50
43
|
//#endregion
|
|
51
|
-
export { CreateConfigParameters, CreateViemConfigParameters,
|
|
44
|
+
export { CreateConfigParameters, CreateViemConfigParameters, EnsDeployment, EnsDeploymentProfile, EnsforgeConfig, EnsforgeConfigTypeId, SharedCreateConfigParameters };
|
|
52
45
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","names":[],"sources":["../../src/config/config.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","names":[],"sources":["../../src/config/config.ts"],"mappings":";;;;;;;;cASa;KAED,gBAAgB,kBAAkB;KAElC;WAEG,UAAU,QAAQ;WAClB,IAAI;WACJ;;WAGA,UAAU,QAAQ;WAClB,KAAK;WACL,IAAI;;UAGF;WACN,SAAS;WACT,QAAQ;WACR,SAAS;WACT,WAAW;;UAGL,mCAAmC;WACzC,cAAc;WACd,eAAe;;KAGd,yBAAyB;;UAMpB;YACL,8BAA8B;WAC/B,SAAS;WACT,SAAS;WACT,cAAc;WACd,eAAe;WACf,OAAO;WACP,QAAQ;WACR,UAAU;WACV,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","names":[],"sources":["../../src/config/config.ts"],"sourcesContent":["import type { EnsV1Deployment, EnsV2Deployment } from \"@ensforge/contracts/deployments\";\nimport type { PublicClient, WalletClient } from \"viem\";\
|
|
1
|
+
{"version":3,"file":"config.js","names":[],"sources":["../../src/config/config.ts"],"sourcesContent":["import type { EnsV1Deployment, EnsV2Deployment } from \"@ensforge/contracts/deployments\";\nimport type { PublicClient, WalletClient } from \"viem\";\n\nimport type { EnsProtocol } from \"../schemas/protocol.js\";\nimport type { GatewayOptions, ResolvedGatewayOptions } from \"./gateway-options.js\";\nimport type { EnsChainId, EnsNetwork } from \"./network.js\";\nimport type { ReadOptions, ResolvedReadOptions } from \"./read-options.js\";\nimport type { ResolvedWriteOptions, WriteOptions } from \"./write-options.js\";\n\nexport const EnsforgeConfigTypeId: unique symbol = Symbol.for(\"@ensforge/core/EnsforgeConfig\");\n\nexport type EnsDeployment = EnsV1Deployment | EnsV2Deployment;\n\nexport type EnsDeploymentProfile =\n | {\n readonly protocol: Extract<EnsProtocol, \"v1\">;\n readonly v1: EnsV1Deployment;\n readonly v2?: never;\n }\n | {\n readonly protocol: Extract<EnsProtocol, \"v2\">;\n readonly v1?: EnsV1Deployment;\n readonly v2: EnsV2Deployment;\n };\n\nexport interface SharedCreateConfigParameters {\n readonly network: EnsNetwork;\n readonly reads?: ReadOptions;\n readonly writes?: WriteOptions;\n readonly gateways?: GatewayOptions;\n}\n\nexport interface CreateViemConfigParameters extends SharedCreateConfigParameters {\n readonly publicClient: PublicClient;\n readonly walletClient?: WalletClient;\n}\n\nexport type CreateConfigParameters = CreateViemConfigParameters;\n\nexport type EnsRuntimeNetwork = EnsNetwork | \"devnet\";\nexport type EnsRuntimeChainId = EnsChainId | 31337;\n\n/** Immutable, single-network configuration consumed by every ensforge action. */\nexport interface EnsforgeConfig {\n readonly [EnsforgeConfigTypeId]: typeof EnsforgeConfigTypeId;\n readonly network: EnsNetwork;\n readonly chainId: EnsChainId;\n readonly publicClient: PublicClient;\n readonly walletClient?: WalletClient;\n readonly reads: ResolvedReadOptions;\n readonly writes: ResolvedWriteOptions;\n readonly gateways: ResolvedGatewayOptions;\n readonly deployments: EnsDeploymentProfile;\n}\n"],"mappings":";AASA,MAAa,uBAAsC,OAAO,IAAI,+BAA+B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-config.d.ts","names":[],"sources":["../../src/config/create-config.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"create-config.d.ts","names":[],"sources":["../../src/config/create-config.ts"],"mappings":";;cAIa,eAAgB,YAAY,2BAAyB"}
|
|
@@ -1,65 +1,13 @@
|
|
|
1
|
-
import { attachConfigContext } from "../internal/config/context.js";
|
|
2
1
|
import { ConfigError } from "../errors/config-error.js";
|
|
3
|
-
import {
|
|
4
|
-
import { getNetworkProfile } from "../internal/config/network-profile.js";
|
|
5
|
-
import { validateClientChain, validateDeployments } from "../internal/config/validation.js";
|
|
6
|
-
import { getWagmiPublicClient, makeWagmiWalletClientResolver } from "../internal/config/wagmi-clients.js";
|
|
7
|
-
import { makeServicesContext } from "../internal/services/context.js";
|
|
8
|
-
import { EnsforgeConfigTypeId } from "./config.js";
|
|
9
|
-
import { resolveGatewayOptions } from "./gateway-options.js";
|
|
10
|
-
import { EnsNetworkSchema, ensChainIds } from "./network.js";
|
|
11
|
-
import { resolveWriteOptions } from "./write-options.js";
|
|
12
|
-
import { Schema } from "effect";
|
|
2
|
+
import { createConfigFromClients } from "../internal/config/create-config.js";
|
|
13
3
|
|
|
14
4
|
//#region src/config/create-config.ts
|
|
15
5
|
const createConfig = (parameters) => {
|
|
16
|
-
if (
|
|
17
|
-
code: "UNSUPPORTED_NETWORK",
|
|
18
|
-
message: `Unsupported ENS network: ${parameters.network}`
|
|
19
|
-
});
|
|
20
|
-
const network = parameters.network;
|
|
21
|
-
const chainId = ensChainIds[network];
|
|
22
|
-
const deployments = getNetworkProfile(network);
|
|
23
|
-
const reads = resolveReadOptions(parameters.reads);
|
|
24
|
-
const writes = resolveWriteOptions(parameters.writes);
|
|
25
|
-
const gateways = resolveGatewayOptions(parameters.gateways);
|
|
26
|
-
const wagmiConfig = parameters.wagmiConfig;
|
|
27
|
-
if (wagmiConfig !== void 0 && (parameters.publicClient !== void 0 || parameters.walletClient !== void 0)) throw new ConfigError({
|
|
28
|
-
code: "INVALID_CLIENT_CONFIGURATION",
|
|
29
|
-
message: "Provide either a Wagmi config or Viem clients, not both"
|
|
30
|
-
});
|
|
31
|
-
if (wagmiConfig === void 0 && parameters.publicClient === void 0) throw new ConfigError({
|
|
6
|
+
if (parameters.publicClient === void 0) throw new ConfigError({
|
|
32
7
|
code: "INVALID_CLIENT_CONFIGURATION",
|
|
33
|
-
message: "Provide
|
|
8
|
+
message: "Provide a Viem public client"
|
|
34
9
|
});
|
|
35
|
-
|
|
36
|
-
const walletClient = parameters.walletClient;
|
|
37
|
-
const walletClientResolver = wagmiConfig === void 0 ? void 0 : makeWagmiWalletClientResolver(wagmiConfig, network, chainId);
|
|
38
|
-
validateClientChain(publicClient, "public", network, chainId);
|
|
39
|
-
if (walletClient !== void 0) validateClientChain(walletClient, "wallet", network, chainId);
|
|
40
|
-
validateDeployments(deployments, chainId);
|
|
41
|
-
const serviceValues = {
|
|
42
|
-
network,
|
|
43
|
-
chainId,
|
|
44
|
-
publicClient,
|
|
45
|
-
reads,
|
|
46
|
-
gateways,
|
|
47
|
-
deployments,
|
|
48
|
-
...walletClient === void 0 ? {} : { walletClient },
|
|
49
|
-
...walletClientResolver === void 0 ? {} : { walletClientResolver }
|
|
50
|
-
};
|
|
51
|
-
const config = attachConfigContext({
|
|
52
|
-
[EnsforgeConfigTypeId]: EnsforgeConfigTypeId,
|
|
53
|
-
network,
|
|
54
|
-
chainId,
|
|
55
|
-
publicClient,
|
|
56
|
-
reads,
|
|
57
|
-
writes,
|
|
58
|
-
gateways,
|
|
59
|
-
deployments,
|
|
60
|
-
...walletClient === void 0 ? {} : { walletClient }
|
|
61
|
-
}, makeServicesContext(serviceValues));
|
|
62
|
-
return Object.freeze(config);
|
|
10
|
+
return createConfigFromClients(parameters, parameters.publicClient, parameters.walletClient === void 0 ? {} : { walletClient: parameters.walletClient });
|
|
63
11
|
};
|
|
64
12
|
|
|
65
13
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-config.js","names":[],"sources":["../../src/config/create-config.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"create-config.js","names":[],"sources":["../../src/config/create-config.ts"],"sourcesContent":["import { ConfigError } from \"../errors/config-error.js\";\nimport { createConfigFromClients } from \"../internal/config/create-config.js\";\nimport type { CreateConfigParameters, EnsforgeConfig } from \"./config.js\";\n\nexport const createConfig = (parameters: CreateConfigParameters): EnsforgeConfig => {\n if (parameters.publicClient === undefined) {\n throw new ConfigError({\n code: \"INVALID_CLIENT_CONFIGURATION\",\n message: \"Provide a Viem public client\",\n });\n }\n\n return createConfigFromClients(\n parameters,\n parameters.publicClient,\n parameters.walletClient === undefined ? {} : { walletClient: parameters.walletClient },\n );\n};\n"],"mappings":";;;;AAIA,MAAa,gBAAgB,eAAuD;CAClF,IAAI,WAAW,iBAAiB,QAC9B,MAAM,IAAI,YAAY;EACpB,MAAM;EACN,SAAS;CACX,CAAC;CAGH,OAAO,wBACL,YACA,WAAW,cACX,WAAW,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,WAAW,aAAa,CACvF;AACF"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ import { GatewayOptions, ResolvedGatewayOptions, defaultGatewayOptions } from ".
|
|
|
2
2
|
import { EnsChainId, EnsNetwork, ensNetworks } from "./network.js";
|
|
3
3
|
import { ReadOptions, ResolvedReadOptions, defaultReadOptions } from "./read-options.js";
|
|
4
4
|
import { ConfirmationPolicy, ResolvedWriteOptions, SimulationPolicy, WriteOptions, defaultWriteOptions } from "./write-options.js";
|
|
5
|
-
import { CreateConfigParameters, CreateViemConfigParameters,
|
|
5
|
+
import { CreateConfigParameters, CreateViemConfigParameters, EnsDeployment, EnsDeploymentProfile, EnsforgeConfig, EnsforgeConfigTypeId, SharedCreateConfigParameters } from "./config.js";
|
|
6
6
|
import { createConfig } from "./create-config.js";
|
|
7
|
-
export { ConfirmationPolicy, type CreateConfigParameters, type CreateViemConfigParameters, type
|
|
7
|
+
export { ConfirmationPolicy, type CreateConfigParameters, type CreateViemConfigParameters, type EnsChainId, type EnsDeployment, type EnsDeploymentProfile, type EnsNetwork, type EnsforgeConfig, EnsforgeConfigTypeId, type GatewayOptions, type ReadOptions, type ResolvedGatewayOptions, type ResolvedReadOptions, type ResolvedWriteOptions, type SharedCreateConfigParameters, SimulationPolicy, type WriteOptions, createConfig, defaultGatewayOptions, defaultReadOptions, defaultWriteOptions, ensNetworks };
|
package/dist/dns.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ClaimDnsNameError, ClaimDnsNameIntent, ClaimDnsNameParameters, ClaimDnsNameResult, DnsClaimStatus, DnsImportPlan, DnsReadError, DnsRecordQuery, DnsRecordResult, DnsRecordsExistence, DnsRecordsResult, DnsResource, DnsWriteWalletParameters, DnssecProof, DnssecProofChain, GetDnsRecordParameters, GetDnsRecordsParameters, ImportDnsNameError, ImportDnsNameParameters, ImportDnsNameResult, ZoneHashResult } from "./actions/dns/types.js";
|
|
2
|
+
import { claimDnsName } from "./actions/dns/claim-dns-name/index.js";
|
|
3
|
+
import { importDnsName } from "./actions/dns/import-dns-name/index.js";
|
|
4
|
+
import { SetDnsRecordsError, SetDnsRecordsParameters, SetDnsRecordsResult } from "./actions/dns/set-dns-records/types.js";
|
|
5
|
+
import { setDnsRecords } from "./actions/dns/set-dns-records/index.js";
|
|
6
|
+
import { SetZoneHashError, SetZoneHashParameters, SetZoneHashResult } from "./actions/dns/set-zone-hash/types.js";
|
|
7
|
+
import { setZoneHash } from "./actions/dns/set-zone-hash/index.js";
|
|
8
|
+
import { GetDnsClaimStatusParameters, getDnsClaimStatus } from "./actions/dns/get-dns-claim-status/index.js";
|
|
9
|
+
import { GetDnsImportPlanParameters, getDnsImportPlan } from "./actions/dns/get-dns-import-plan/index.js";
|
|
10
|
+
import { getDnsRecord } from "./actions/dns/get-dns-record/index.js";
|
|
11
|
+
import { getDnsRecords } from "./actions/dns/get-dns-records/index.js";
|
|
12
|
+
import { GetZoneHashParameters, getZoneHash } from "./actions/dns/get-zone-hash/index.js";
|
|
13
|
+
import { HasDnsRecordsParameters, hasDnsRecords } from "./actions/dns/has-dns-records/index.js";
|
|
14
|
+
export { type ClaimDnsNameError, type ClaimDnsNameIntent, type ClaimDnsNameParameters, type ClaimDnsNameResult, DnsClaimStatus, DnsImportPlan, type DnsReadError, type DnsRecordQuery, DnsRecordResult, DnsRecordsExistence, DnsRecordsResult, DnsResource, type DnsWriteWalletParameters, DnssecProof, DnssecProofChain, type DnsReadError as GetDnsClaimStatusError, type GetDnsClaimStatusParameters, type DnsReadError as GetDnsImportPlanError, type GetDnsImportPlanParameters, type DnsReadError as GetDnsRecordError, type GetDnsRecordParameters, type DnsReadError as GetDnsRecordsError, type GetDnsRecordsParameters, type DnsReadError as GetZoneHashError, type GetZoneHashParameters, type DnsReadError as HasDnsRecordsError, type HasDnsRecordsParameters, type ImportDnsNameError, type ImportDnsNameParameters, type ImportDnsNameResult, type SetDnsRecordsError, type SetDnsRecordsParameters, type SetDnsRecordsResult, type SetZoneHashError, type SetZoneHashParameters, type SetZoneHashResult, ZoneHashResult, claimDnsName, getDnsClaimStatus, getDnsImportPlan, getDnsRecord, getDnsRecords, getZoneHash, hasDnsRecords, importDnsName, setDnsRecords, setZoneHash };
|
package/dist/dns.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DnsClaimStatus, DnsImportPlan, DnsRecordResult, DnsRecordsExistence, DnsRecordsResult, DnsResource, DnssecProof, DnssecProofChain, ZoneHashResult } from "./actions/dns/types.js";
|
|
2
|
+
import { claimDnsName } from "./actions/dns/claim-dns-name/index.js";
|
|
3
|
+
import { getDnsClaimStatus } from "./actions/dns/get-dns-claim-status/index.js";
|
|
4
|
+
import { getDnsImportPlan } from "./actions/dns/get-dns-import-plan/index.js";
|
|
5
|
+
import { importDnsName } from "./actions/dns/import-dns-name/index.js";
|
|
6
|
+
import { setDnsRecords } from "./actions/dns/set-dns-records/index.js";
|
|
7
|
+
import { setZoneHash } from "./actions/dns/set-zone-hash/index.js";
|
|
8
|
+
import { getDnsRecord } from "./actions/dns/get-dns-record/index.js";
|
|
9
|
+
import { getDnsRecords } from "./actions/dns/get-dns-records/index.js";
|
|
10
|
+
import { getZoneHash } from "./actions/dns/get-zone-hash/index.js";
|
|
11
|
+
import { hasDnsRecords } from "./actions/dns/has-dns-records/index.js";
|
|
12
|
+
|
|
13
|
+
export { DnsClaimStatus, DnsImportPlan, DnsRecordResult, DnsRecordsExistence, DnsRecordsResult, DnsResource, DnssecProof, DnssecProofChain, ZoneHashResult, claimDnsName, getDnsClaimStatus, getDnsImportPlan, getDnsRecord, getDnsRecords, getZoneHash, hasDnsRecords, importDnsName, setDnsRecords, setZoneHash };
|