AccountId is currently a dead-end leaf (chainId + address only). Make it chainable so contracts (resolvers, registries, registrars, list NFTs, etc.) can be walked into their ENS state — "contracts have names too".
Proposed (additive, non-breaking):
AccountId.account: Account! — bridge a CAIP-10 id to the address-keyed Account hub, unlocking domains, efp, resolve, etc.
AccountId.resolve with a chain-defaulted primaryName — the AccountId's chainId supplies the default coinType (via evmChainIdToCoinType), so accountId.resolve.primaryName {} resolves the primary name on the AccountId's own chain (override still allowed).
Follow-up (breaking, minor): convert clear actor Address fields to Account (Event.sender/from/to, EfpList.owner/user/manager, EfpAccountMetadata.address), matching the existing Domain.owner convention.
AccountIdis currently a dead-end leaf (chainId+addressonly). Make it chainable so contracts (resolvers, registries, registrars, list NFTs, etc.) can be walked into their ENS state — "contracts have names too".Proposed (additive, non-breaking):
AccountId.account: Account!— bridge a CAIP-10 id to the address-keyedAccounthub, unlockingdomains,efp,resolve, etc.AccountId.resolvewith a chain-defaultedprimaryName— the AccountId'schainIdsupplies the default coinType (viaevmChainIdToCoinType), soaccountId.resolve.primaryName {}resolves the primary name on the AccountId's own chain (override still allowed).Follow-up (breaking, minor): convert clear actor
Addressfields toAccount(Event.sender/from/to,EfpList.owner/user/manager,EfpAccountMetadata.address), matching the existingDomain.ownerconvention.