type DotnsAbiProfile = "poprules-startingPrice" | "v0.5.8-rc1" | "v0.6.0"; /** One DotNS ABI profile's provenance: the upstream artifact it corresponds to, and how the live probe recognises it. */ interface DotnsAbiProfileInfo { /** * The upstream `paritytech/dotns` tag that introduced this ABI shape, or * `null` when the floor is not established from the artifact diff we ran * (see this profile's own comment above `DOTNS_ABI_PROFILES`). Never * invent a tag here to fill this in — an unverified tag is exactly the * over-claim this field exists to prevent. */ introducedAt: string | null; /** The `dotns-abis-.zip` release asset this profile's ABI shape matches, or `null` when unknown. */ abiPackage: string | null; /** * The view function whose presence (probed live, never read from the * chain as a version) identifies this profile. For the first two * profiles this is a PopRules function; v0.6.0's discriminator * (isPopIssued) lives on DotnsPopController instead, because v0.6.0 is * signature-identical to v0.5.8-rc1 on every PopRules function — see the * module doc comment above for why that forced a different contract. */ discriminator: string; } declare const DOTNS_ABI_PROFILES: Record; /** Inputs to classifyProtocolVersion — the live dry-run results from connect(). */ interface DotnsProtocolProbe { /** * Whether POP_RULES has contract code at all (a prerequisite, not a * verdict) — `false` is a definitive "no code here" and `null` means code * presence could not be verified (the underlying `hasContractCode` read is * itself three-valued for the same reason: its own doc comment says * callers must not read `null` as "no code"). Only `false` short-circuits * classification; `null` falls through to the two live probes below, * because a probe answering is itself positive proof the contract exists * regardless of whether the code-presence read could confirm it. */ hasCode: boolean | null; /** Whether a dry-run call to PopRules.pricingVersion() completed without reverting. */ pricingVersionOk: boolean; /** Whether a dry-run call to PopRules.startingPrice() completed without reverting. */ startingPriceOk: boolean; /** * Whether a dry-run call to DotnsPopController.isPopIssued(