@xyo-network/xl1-protocol 5.2.1 → 5.2.2

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/network-model/icons/local/local.svg", "../../src/modules/network-model/icons/mainnet/mainnet.svg", "../../src/modules/network-model/icons/sequence/testnet.svg", "../../src/modules/network-model/lib/Networks.ts", "../../src/modules/network-model/models/Bootstrap.ts", "../../src/modules/network-model/lib/NetworkDataLakeUrls.ts", "../../src/modules/network-model/modules/node/getNetworkNode.ts", "../../src/modules/network-model/manifest/network.json", "../../src/modules/network-model/manifest/networkManifest.ts", "../../src/modules/network-model/modules/node/getNetworkNodes.ts", "../../src/modules/network-model/modules/node/initNetworkNode.ts", "../../src/modules/network-model/staticRest/layout/admissionShadow.ts", "../../src/modules/network-model/staticRest/layout/chainContractManifest.ts", "../../src/modules/network-model/staticRest/layout/chainManifest.ts", "../../src/modules/network-model/staticRest/templates.ts", "../../src/modules/network-model/staticRest/paths/chainState.ts", "../../src/modules/network-model/staticRest/paths/finalized.ts", "../../src/modules/network-model/staticRest/paths/indexPaths.ts", "../../src/modules/network-model/staticRest/paths/transactionInclusionIndex.ts", "../../src/modules/network-model/staticRest/layout/chainParams.ts", "../../src/modules/network-model/staticRest/layout/chainParamsRules.ts", "../../src/modules/network-model/staticRest/layout/evmEventIndex.ts", "../../src/modules/network-model/staticRest/layout/indexManifest.ts", "../../src/modules/network-model/staticRest/layout/networkStakeRewardsIndex.ts", "../../src/modules/network-model/staticRest/layout/slashIndex.ts", "../../src/modules/network-model/staticRest/layout/transactionInclusionIndex.ts", "../../src/modules/network-model/staticRest/layout/trustedPosture.ts", "../../src/modules/network-model/staticRest/paths/evmEventIndex.ts", "../../src/modules/network-model/staticRest/paths/networkStakeRewardsIndex.ts", "../../src/modules/network-model/staticRest/paths/slashIndex.ts", "../../src/modules/network-model/utils/ExplorerLinks.ts"],
4
- "sourcesContent": ["<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><g style=\"opacity:.5;\"><path d=\"M154.71,97c.46,2.59,2.5,4.62,5.1,5.05l14.05,2.34,31.71-46.17c4.57-6.65-3.62-14.62-10.14-9.87l-43.68,31.83,2.97,16.82Z\" style=\"fill:#f47f00;\"/><path d=\"M173.86,151.62l-14.05,2.34c-2.6.43-4.64,2.45-5.1,5.05l-2.97,16.82,43.68,31.83c6.52,4.75,14.71-3.21,10.14-9.87l-31.71-46.17Z\" style=\"fill:#f47f00;\"/><path d=\"M82.14,104.38l14.05-2.34c2.6-.43,4.64-2.45,5.1-5.05l2.97-16.82-43.68-31.83c-6.52-4.75-14.71,3.21-10.14,9.87l31.71,46.17Z\" style=\"fill:#f47f00;\"/><path d=\"M101.29,159c-.46-2.59-2.5-4.62-5.1-5.05l-14.05-2.34-31.71,46.17c-4.57,6.65,3.62,14.62,10.14,9.87l43.68-31.83-2.97-16.82Z\" style=\"fill:#f47f00;\"/></g><path d=\"M107.33,104l15.94-90.32c.93-5.3,8.53-5.3,9.47,0l15.94,90.32c.35,2.01,1.94,3.57,3.95,3.91l92.24,15.35c5.36.89,5.36,8.59,0,9.49l-92.24,15.35c-2.01.33-3.59,1.9-3.95,3.91l-15.94,90.32c-.93,5.3-8.53,5.3-9.47,0l-15.94-90.32c-.35-2.01-1.94-3.57-3.95-3.91l-92.24-15.35c-5.36-.89-5.36-8.59,0-9.49l92.24-15.35c2.01-.33,3.59-1.9,3.95-3.91Z\" style=\"fill:#f47f00;\"/></svg>", "<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><path d=\"M154.71,97c.46,2.59,2.5,4.62,5.1,5.05l14.05,2.34,31.71-46.17c4.57-6.65-3.62-14.62-10.14-9.87l-43.68,31.83,2.97,16.82Z\" style=\"fill:#8d8fc6;\"/><path d=\"M173.86,151.62l-14.05,2.34c-2.6.43-4.64,2.45-5.1,5.05l-2.97,16.82,43.68,31.83c6.52,4.75,14.71-3.21,10.14-9.87l-31.71-46.17Z\" style=\"fill:#eb407a;\"/><path d=\"M82.14,104.38l14.05-2.34c2.6-.43,4.64-2.45,5.1-5.05l2.97-16.82-43.68-31.83c-6.52-4.75-14.71,3.21-10.14,9.87l31.71,46.17Z\" style=\"fill:#579fd6;\"/><path d=\"M101.29,159c-.46-2.59-2.5-4.62-5.1-5.05l-14.05-2.34-31.71,46.17c-4.57,6.65,3.62,14.62,10.14,9.87l43.68-31.83-2.97-16.82Z\" style=\"fill:#f27046;\"/><path d=\"M107.33,104l15.94-90.32c.93-5.3,8.53-5.3,9.47,0l15.94,90.32c.35,2.01,1.94,3.57,3.95,3.91l92.24,15.35c5.36.89,5.36,8.59,0,9.49l-92.24,15.35c-2.01.33-3.59,1.9-3.95,3.91l-15.94,90.32c-.93,5.3-8.53,5.3-9.47,0l-15.94-90.32c-.35-2.01-1.94-3.57-3.95-3.91l-92.24-15.35c-5.36-.89-5.36-8.59,0-9.49l92.24-15.35c2.01-.33,3.59-1.9,3.95-3.91Z\" style=\"fill:#572aff;\"/></svg>", "<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><g style=\"opacity:.5;\"><path d=\"M154.71,97c.46,2.59,2.5,4.62,5.1,5.05l14.05,2.34,31.71-46.17c4.57-6.65-3.62-14.62-10.14-9.87l-43.68,31.83,2.97,16.82Z\" style=\"fill:#579fd6;\"/><path d=\"M173.86,151.62l-14.05,2.34c-2.6.43-4.64,2.45-5.1,5.05l-2.97,16.82,43.68,31.83c6.52,4.75,14.71-3.21,10.14-9.87l-31.71-46.17Z\" style=\"fill:#579fd6;\"/><path d=\"M82.14,104.38l14.05-2.34c2.6-.43,4.64-2.45,5.1-5.05l2.97-16.82-43.68-31.83c-6.52-4.75-14.71,3.21-10.14,9.87l31.71,46.17Z\" style=\"fill:#579fd6;\"/><path d=\"M101.29,159c-.46-2.59-2.5-4.62-5.1-5.05l-14.05-2.34-31.71,46.17c-4.57,6.65,3.62,14.62,10.14,9.87l43.68-31.83-2.97-16.82Z\" style=\"fill:#579fd6;\"/></g><path d=\"M107.33,104l15.94-90.32c.93-5.3,8.53-5.3,9.47,0l15.94,90.32c.35,2.01,1.94,3.57,3.95,3.91l92.24,15.35c5.36.89,5.36,8.59,0,9.49l-92.24,15.35c-2.01.33-3.59,1.9-3.95,3.91l-15.94,90.32c-.93,5.3-8.53,5.3-9.47,0l-15.94-90.32c-.35-2.01-1.94-3.57-3.95-3.91l-92.24-15.35c-5.36-.89-5.36-8.59,0-9.49l92.24-15.35c2.01-.33,3.59-1.9,3.95-3.91Z\" style=\"fill:#579fd6;\"/></svg>", "import { asHex } from '@ariestools/sdk'\n\nimport {\n LocalNetworkIconString, MainNetworkIconString, SequenceNetworkIconString,\n} from '../icons/index.ts'\nimport type { NetworkBootstrap, NetworkId } from '../models/index.ts'\nimport { NetworkBootstrapSchema } from '../models/index.ts'\n\n/** Bootstrap configuration for the XYO Layer 1 mainnet. */\nexport const MainNetwork: NetworkBootstrap = {\n chain: asHex('319e667ced10452a117472811130444ded357f26', true),\n description: 'Main Network for XYO Layer 1',\n icon: MainNetworkIconString,\n id: 'mainnet' as NetworkId,\n name: 'Mainnet',\n schema: NetworkBootstrapSchema,\n symbol: 'XL1',\n url: 'https://api.chain.xyo.network',\n explorerUrl: 'https://explore.xyo.network',\n}\n\n/** Bootstrap configuration for the XYO Layer 1 sequence (test) network. */\nexport const SequenceNetwork: NetworkBootstrap = {\n chain: asHex('4b43a753c8024c0e5000e8ac948ac0063ac624bc', true),\n description: 'Test Network for XYO Layer 1',\n icon: SequenceNetworkIconString,\n id: 'sequence' as NetworkId,\n name: 'Sequence',\n schema: NetworkBootstrapSchema,\n symbol: 'XL1',\n url: 'https://beta.api.chain.xyo.network',\n explorerUrl: 'https://beta.explore.xyo.network',\n}\n\n/** Bootstrap configuration for a local development network. */\nexport const LocalNetwork: NetworkBootstrap = {\n description: 'Local Node',\n icon: LocalNetworkIconString,\n id: 'local' as NetworkId,\n name: 'Local',\n schema: NetworkBootstrapSchema,\n symbol: 'XL1',\n url: 'http://localhost:8080',\n explorerUrl: 'http://localhost:3000',\n}\n\n/** Default set of available XYO Layer 1 networks (mainnet, sequence, local). */\nexport const DefaultNetworks: NetworkBootstrap[] = [MainNetwork, SequenceNetwork, LocalNetwork]\n", "import type { Address } from '@ariestools/sdk'\nimport { AsObjectFactory } from '@ariestools/sdk'\nimport type { Payload } from '@xyo-network/sdk'\nimport { asSchema, isPayloadOfSchemaType } from '@xyo-network/sdk'\n\nimport type { ChainId } from '#protocol-lib'\n\nimport type { NetworkId } from './NetworkId.ts'\n\n/** Connection details for accessing a chain endpoint. */\nexport interface ChainConnection {\n /** Chain Identifier - can be a hex (eth contract address) or a string */\n chain?: ChainId\n /** Name of the chain */\n name: string\n /** URL for accessing the network */\n url: string\n}\n\n/** Schema identifier for network bootstrap payloads. */\nexport const NetworkBootstrapSchema = asSchema('network.xyo.network.bootstrap', true)\n/** Schema type for network bootstrap payloads. */\nexport type NetworkBootstrapSchema = typeof NetworkBootstrapSchema\n\n/** Fields describing a chain fork origin. */\nexport interface ChainForkFields {\n /** Block Number at which the chain was forked from */\n forkedAtLastBlockNumber?: string\n /** Hash in the last block the chain was forked from */\n forkedAtLastHash?: string\n /** Address of the forked chain */\n forkedChainId?: Address\n}\n\n/** Core fields describing an XYO network. */\nexport interface NetworkFields {\n /** Description of the network */\n description: string\n /** URL for accessing the network explorer */\n explorerUrl?: string\n /** string representation of the icon (SVG) */\n icon?: string\n /** Machine-readable identifier */\n id: NetworkId\n /** Schema identifier for this configuration or payload. */\n schema: NetworkBootstrapSchema\n /** Symbol of the network */\n symbol?: string\n}\n\n/** Optional Properties can be found walking the chain to the genesis block */\nexport interface NetworkBootstrapFields extends NetworkFields, ChainForkFields, ChainConnection {}\n\n/** A network bootstrap extended with a flag indicating whether it is a custom network. */\nexport interface Network extends NetworkBootstrap {\n /** Application-defined bootstrap configuration passed through unchanged. */\n custom: boolean\n}\n\n/** Payload type containing all network bootstrap configuration fields. */\nexport type NetworkBootstrap = Payload<NetworkBootstrapFields, NetworkBootstrapSchema>\n\n/** Type guard that checks whether a payload is a NetworkBootstrap. */\nexport const isNetworkBootstrap = isPayloadOfSchemaType<NetworkBootstrap>(NetworkBootstrapSchema)\n\n/** Optionally casts a value to a Network if it is a valid NetworkBootstrap. */\nexport const asOptionalNetwork = AsObjectFactory.createOptional(isNetworkBootstrap)\n", "import type { GatewayName } from '#protocol-lib'\n\nimport {\n LocalNetwork, MainNetwork, SequenceNetwork,\n} from './Networks.ts'\n\n/** Map of network IDs to their corresponding Data Lake API URLs. */\nexport const NetworkDataLakeUrls = {\n [MainNetwork.id]: 'https://api.archivist.xyo.network/dataLake',\n [SequenceNetwork.id]: 'https://beta.api.archivist.xyo.network/dataLake',\n [LocalNetwork.id]: 'http://localhost:8080/dataLake',\n} as const satisfies Record<GatewayName, string>\n", "import type { AttachableNodeInstance, WalletInstance } from '@xyo-network/sdk'\nimport { ManifestWrapper, ModuleFactoryLocator } from '@xyo-network/sdk'\n\nimport { NetworkNodeManifest } from '../../manifest/index.ts'\n\n/**\n * Creates a network node from the network manifest using the provided wallet.\n *\n * @deprecated Bootstrapping an XYO `NodeInstance` via manifest is no longer supported.\n * Use `connectArchivist` from `@xyo-network/xl1-protocol-sdk` for co-located archivist\n * access, or `GatewayBuilder` from `@xyo-network/xl1-gateway` for remote RPC access.\n */\nexport async function getNetworkNode(wallet: WalletInstance): Promise<AttachableNodeInstance> {\n const wrapper = new ManifestWrapper(NetworkNodeManifest, wallet, new ModuleFactoryLocator())\n const [node] = await wrapper.loadNodes()\n return node\n}\n", "{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"44'/60'/1\",\n \"name\": \"Network\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": []\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}", "import type { PackageManifestPayload } from '@xyo-network/sdk'\n\nimport node from './network.json' with { type: 'json' }\n\n/** @deprecated XYO Node manifest bootstrap is no longer used; wire providers via archivist bindings or JsonRpc instead. */\nexport const NetworkNodeManifest = node as unknown as PackageManifestPayload\n", "import type { AttachableNodeInstance } from '@xyo-network/sdk'\n\nconst networkNodeMap = new Map<string, AttachableNodeInstance>()\n\n/** @deprecated Internal cache for deprecated `initNetworkNode`; do not use. */\nexport const getNetworkNodes = () => {\n return networkNodeMap\n}\n", "import type { AttachableNodeInstance, WalletInstance } from '@xyo-network/sdk'\n\nimport type { NetworkBootstrap } from '../../models/index.ts'\nimport { getNetworkNode } from './getNetworkNode.ts'\nimport { getNetworkNodes } from './getNetworkNodes.ts'\n\n/** @deprecated Use `connectArchivist` archivist bindings (`@xyo-network/xl1-protocol-sdk`) or `GatewayBuilder` (`@xyo-network/xl1-gateway`) instead of bootstrapping an XYO NodeInstance. */\nexport const initNetworkNode = async (activeNetwork: NetworkBootstrap, wallet: WalletInstance): Promise<AttachableNodeInstance> => {\n const networkNodeMap = getNetworkNodes()\n if (networkNodeMap.has(activeNetwork.url)) return networkNodeMap.get(activeNetwork.url)!\n\n const activeNetworkNode = await getNetworkNode(wallet)\n networkNodeMap.set(activeNetwork.url, activeNetworkNode)\n\n return activeNetworkNode\n}\n", "import { zodAsFactory, zodIsFactory } from '@ariestools/sdk'\nimport { asSchema } from '@xyo-network/sdk'\nimport { z } from 'zod'\n\n/** Schema id for a published admission shadow report. */\nexport const AdmissionShadowReportSchema = asSchema('network.xyo.s3.admission.shadow', true)\n/** Type literal for the admission shadow report schema. */\nexport type AdmissionShadowReportSchema = typeof AdmissionShadowReportSchema\n\n/** What both admission gates concluded about one candidate. */\nexport const AdmissionShadowAssessmentZod = z.object({\n /** Whether the allow-list admits it. */\n admittedByAllowList: z.boolean(),\n /** The candidate's height. */\n block: z.int().nonnegative(),\n /** The candidate's signed identity. */\n dataHash: z.string(),\n /** The EVM height stake was measured at, when it could be. */\n eStar: z.optional(z.int().nonnegative()),\n /** Whether participation admits it, when that could be established. */\n eligible: z.optional(z.boolean()),\n /** The producer. */\n producer: z.string(),\n /** Why participation refused, when it did. */\n reason: z.optional(z.string()),\n /** False when the participation question could not be put at all. */\n resolvable: z.boolean(),\n})\n\n/** What both admission gates concluded about one candidate. */\nexport type AdmissionShadowAssessment = z.infer<typeof AdmissionShadowAssessmentZod>\n\n/**\n * Zod schema for one published round of shadow admission.\n *\n * Published rather than logged because the point of the posture is that anyone can see what\n * enforcement would have done before it does it. An operator convinced by their own logs has\n * convinced nobody.\n *\n * The back-link is what makes the series walkable without listing: a reader takes the head\n * pointer and follows `previous` as far back as it cares to.\n */\nexport const AdmissionShadowReportZod = z.object({\n /** Every candidate considered this round. */\n assessments: z.array(AdmissionShadowAssessmentZod),\n /** Only those where the two gates disagreed. */\n divergent: z.array(AdmissionShadowAssessmentZod),\n /** The finalized height this round was selected against. */\n head: z.int().nonnegative(),\n /** Height of the previous published report, so the series can be walked backwards. */\n previous: z.optional(z.int().nonnegative()),\n schema: z.literal(AdmissionShadowReportSchema),\n})\n\n/** One published round of shadow admission. */\nexport type AdmissionShadowReportDocument = z.infer<typeof AdmissionShadowReportZod>\n\n/** Type guard that checks if a value is a valid AdmissionShadowReportDocument. */\nexport const isAdmissionShadowReport = zodIsFactory(AdmissionShadowReportZod)\n/** Converts a value to AdmissionShadowReportDocument, throwing if invalid. */\nexport const asAdmissionShadowReport = zodAsFactory(AdmissionShadowReportZod, 'asAdmissionShadowReport')\n\n/** Builds a validated admission shadow report. */\nexport function createAdmissionShadowReport(\n head: number,\n assessments: AdmissionShadowAssessment[],\n divergent: AdmissionShadowAssessment[],\n previous?: number,\n): AdmissionShadowReportDocument {\n return AdmissionShadowReportZod.parse({\n assessments, divergent, head, previous, schema: AdmissionShadowReportSchema,\n })\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod'\n\nimport {\n ChainIdZod, NumberishZod, type XL1BlockNumber,\n} from '#protocol-lib'\n\nconst ChainContractBlockNumberZod = NumberishZod\n .pipe(z.int().nonnegative())\n .transform(value => value as XL1BlockNumber)\n\n/** Schema id for the chain-contract manifest document. */\nexport const ChainContractManifestSchema = 'network.xyo.s3.chain.contract' as const\n/** Type literal for the chain-contract manifest schema. */\nexport type ChainContractManifestSchema = typeof ChainContractManifestSchema\n\n/** Bumped when the manifest shape changes, so readers can detect a mismatch. */\nexport const CHAIN_CONTRACT_MANIFEST_VERSION = 1\n\n/**\n * Zod schema for the static per-chain config at `chainContractByIdPath(chainId)`: the reward\n * contract, staking token, minimum withdrawal window, and (optional) fork edge. Immutable\n * once published \u2014 does not change per block, unlike `chain/head.json`.\n */\nexport const ChainContractManifestZod = z.object({\n /** Self-identifying chain id (matches the path key). Optional for older fixtures. */\n chainId: z.optional(ChainIdZod),\n forkedAtBlockNumber: ChainContractBlockNumberZod.nullable().optional(),\n forkedAtHash: z.string().nullable().optional(),\n forkedChainId: z.nullable(ChainIdZod).optional(),\n minWithdrawalBlocks: NumberishZod.pipe(z.int().nonnegative()),\n rewardsContract: z.string(),\n schema: z.literal(ChainContractManifestSchema),\n stakingTokenAddress: z.string(),\n version: z.int().positive(),\n})\n\n/** The static per-chain contract config at `chainContractByIdPath(chainId)`. */\nexport type ChainContractManifest = z.infer<typeof ChainContractManifestZod>\n\n/** Numeric-input-tolerant shape accepted when creating a chain-contract manifest. */\nexport type ChainContractManifestInput = z.input<typeof ChainContractManifestZod>\n\n/** Type guard that checks if a value is a valid ChainContractManifest. */\nexport const isChainContractManifest = zodIsFactory(ChainContractManifestZod)\n/** Converts a value to ChainContractManifest, throwing if invalid. */\nexport const asChainContractManifest = zodAsFactory(ChainContractManifestZod, 'asChainContractManifest')\n/** Non-validating cast to ChainContractManifest. */\nexport const toChainContractManifest = zodToFactory(ChainContractManifestZod, 'toChainContractManifest')\n\n/** Builds a validated chain-contract manifest. */\nexport function createChainContractManifest(\n config: Omit<ChainContractManifestInput, 'schema' | 'version'>,\n): ChainContractManifest {\n return ChainContractManifestZod.parse({\n ...config,\n schema: ChainContractManifestSchema,\n version: CHAIN_CONTRACT_MANIFEST_VERSION,\n })\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod'\n\nimport { chainManifestPathTemplates } from '../templates.ts'\n\n/** Bumped when the finalized layout changes shape, so readers can detect a mismatch. */\nexport const CHAIN_LAYOUT_VERSION = 1\n\n/** Schema id for the finalized layout manifest document. */\nexport const ChainManifestSchema = 'network.xyo.s3.chain.manifest' as const\n/** Type literal for the chain manifest schema. */\nexport type ChainManifestSchema = typeof ChainManifestSchema\n\n/** Path templates for the finalized + chain-state files. */\nexport const ChainManifestPathsZod = z.object({\n blockByHash: z.string(),\n blockByNumber: z.string(),\n head: z.string(),\n payload: z.string(),\n})\n\n/** Type for chain manifest path templates. */\nexport type ChainManifestPaths = z.infer<typeof ChainManifestPathsZod>\n\n/** Zod schema for the finalized layout descriptor at `manifestPath()`. */\nexport const ChainManifestZod = z.object({\n /** Lowest block number available in the bucket (genesis until pruning exists). */\n earliestBlock: z.int().nonnegative(),\n /** Storage/wire encoding of the published files (also on each object's Content-Encoding). */\n encoding: z.string(),\n paths: ChainManifestPathsZod,\n schema: z.literal(ChainManifestSchema),\n version: z.int().positive(),\n})\n\n/** The finalized layout descriptor at `manifestPath()`. */\nexport type ChainManifest = z.infer<typeof ChainManifestZod>\n\n/** Type guard that checks if a value is a valid ChainManifest. */\nexport const isChainManifest = zodIsFactory(ChainManifestZod)\n/** Converts a value to ChainManifest, throwing if invalid. */\nexport const asChainManifest = zodAsFactory(ChainManifestZod, 'asChainManifest')\n/** Non-validating cast to ChainManifest. */\nexport const toChainManifest = zodToFactory(ChainManifestZod, 'toChainManifest')\n\n/** Builds a validated chain manifest with path templates derived from the path builders. */\nexport function createChainManifest(encoding: string, earliestBlock = 0): ChainManifest {\n return asChainManifest({\n earliestBlock,\n encoding,\n paths: chainManifestPathTemplates(),\n schema: ChainManifestSchema,\n version: CHAIN_LAYOUT_VERSION,\n }, true)\n}\n", "import { asHash } from '@ariestools/sdk'\n\nimport type { IndexSummaryFamily } from '#protocol-lib'\n\nimport { headPath } from './paths/chainState.ts'\nimport {\n blockHashPath, blockNumberPath, payloadPath,\n} from './paths/finalized.ts'\nimport { indexSummaryPath } from './paths/indexPaths.ts'\nimport { transactionInclusionPath } from './paths/transactionInclusionIndex.ts'\n\n/** Sentinel values used when deriving self-describing path templates from concrete builders. */\nconst TEMPLATE_SLOTS = {\n block: 0,\n hash: asHash('0'.repeat(64), true),\n index: 99,\n level: 42,\n} as const\n\n/**\n * Replaces concrete slot literals in a path with named `{placeholder}` segments.\n * Used to derive manifest path templates from the path builders so the two cannot drift.\n */\nexport function toPathTemplate(path: string, slots: { literal: string; name: string }[]): string {\n let result = path\n for (const { literal, name } of slots) {\n if (!result.includes(literal)) {\n throw new Error(`Template slot \"${literal}\" not found in path \"${path}\"`)\n }\n result = result.split(literal).join(`{${name}}`)\n }\n return result\n}\n\n/** Fills `{placeholder}` segments in a manifest path template. Used in conformance tests. */\nexport function interpolatePathTemplate(template: string, values: Record<string, string | number>): string {\n let result = template\n for (const [key, value] of Object.entries(values)) {\n result = result.split(`{${key}}`).join(String(value))\n }\n return result\n}\n\n/** Self-describing template for `blockNumberPath`. */\nexport const blockNumberPathTemplate = (): string =>\n toPathTemplate(blockNumberPath(TEMPLATE_SLOTS.block), [{ literal: String(TEMPLATE_SLOTS.block), name: 'block' }])\n\n/** Self-describing template for `blockHashPath`. */\nexport const blockHashPathTemplate = (): string =>\n toPathTemplate(blockHashPath(TEMPLATE_SLOTS.hash), [{ literal: TEMPLATE_SLOTS.hash, name: 'hash' }])\n\n/** Self-describing template for `payloadPath`. */\nexport const payloadPathTemplate = (): string =>\n toPathTemplate(payloadPath(TEMPLATE_SLOTS.hash), [{ literal: TEMPLATE_SLOTS.hash, name: 'hash' }])\n\n/** Self-describing templates for finalized + chain-state files carried in the chain manifest. */\nexport function chainManifestPathTemplates(): {\n blockByHash: string\n blockByNumber: string\n head: string\n payload: string\n} {\n return {\n blockByHash: blockHashPathTemplate(),\n blockByNumber: blockNumberPathTemplate(),\n head: headPath(),\n payload: payloadPathTemplate(),\n }\n}\n\n/** Self-describing template for one index summary family, e.g. `blocks/{level}/{index}.json`. */\nexport function indexSummaryPathTemplate(family: IndexSummaryFamily): string {\n const path = indexSummaryPath(family, TEMPLATE_SLOTS.level, TEMPLATE_SLOTS.index)\n return toPathTemplate(path, [\n { literal: String(TEMPLATE_SLOTS.level), name: 'level' },\n { literal: String(TEMPLATE_SLOTS.index), name: 'index' },\n ])\n}\n\n/** Self-describing template for the hash-addressed transaction-inclusion lookup. */\nexport function transactionInclusionPathTemplate(): string {\n return toPathTemplate(transactionInclusionPath(TEMPLATE_SLOTS.hash), [\n { literal: TEMPLATE_SLOTS.hash, name: 'hash' },\n ])\n}\n", "/**\n * Path builders for the chain-state (mutable) bucket.\n *\n * Paths are relative \u2014 no leading slash \u2014 and joined to a base URL by the consumer.\n */\n\n/** The mutable head pointer: the current head SignedHydratedBlockWithHashMeta. */\nexport const headPath = (): string => 'chain/head.json'\n\n/**\n * Immutable per-chain contract config (rewards contract, staking token, fork edge).\n * Sparse map keyed by chain id \u2014 the current chain's file is the entry point; fork\n * ancestors are sibling files under the same folder. `chainId` is normalized to lowercase.\n */\nexport const chainContractByIdPath = (chainId: string): string => `chain/contracts/${chainId.toLowerCase()}.json`\n\n/**\n * One immutable version of the chain parameter register. Versions are never rewritten, so a\n * reader that resolved one can keep using it.\n */\nexport const chainParamsVersionPath = (chainId: string, version: number): string =>\n `chain/params/${chainId.toLowerCase()}/v${version}.json`\n\n/** The mutable pointer naming the current register version for a chain. */\nexport const chainParamsHeadPath = (chainId: string): string => `chain/params/${chainId.toLowerCase()}/head.json`\n", "/**\n * Path builders for the finalized (immutable) bucket.\n *\n * Paths are relative \u2014 no leading slash \u2014 and joined to a base URL by the consumer.\n */\n\n/** The finalized layout descriptor (path templates, encoding, version, earliest block). */\nexport const manifestPath = (): string => 'manifest.json'\n\n/** A block by number: SignedHydratedBlockWithHashMeta. */\nexport const blockNumberPath = (block: number): string => `block/number/${block}.json`\n\n/** A block by hash: the same content as its by-number twin. */\nexport const blockHashPath = (hash: string): string => `block/hash/${hash}.json`\n\n/** A payload by hash: WithHashMeta<Payload>. */\nexport const payloadPath = (hash: string): string => `payload/${hash}.json`\n", "import type { IndexSummaryFamily } from '#protocol-lib'\n\n/**\n * Path builders for the index bucket.\n *\n * The index is a separate, single-writer bucket holding completed step summaries for several\n * families. Paths are relative \u2014 no leading slash \u2014 and joined to a base URL by the consumer.\n */\n\n/** A completed frame's summary for a family, e.g. `blocks/2/5.json`. Immutable once written. */\nexport const indexSummaryPath = (family: IndexSummaryFamily, stepLevel: number, stepIndex: number): string =>\n `${family}/${stepLevel}/${stepIndex}.json`\n\n/** The index layout descriptor (families, max step, encoding, version). */\nexport const indexManifestPath = (): string => 'manifest.json'\n\n/** The indexer's progress watermark (highest block the index is complete through). */\nexport const indexHeadPath = (): string => 'head.json'\n", "import type { Hash } from '@ariestools/sdk'\n\nconst TRANSACTION_INCLUSION_ROOT = 'transactions'\n\n/** Path of one immutable transaction-hash to finalized-block inclusion record. */\nexport function transactionInclusionPath(transactionHash: Hash): string {\n return `${TRANSACTION_INCLUSION_ROOT}/by-hash/${transactionHash}.json`\n}\n\n/** Path of the mutable transaction-inclusion progress pointer. */\nexport function transactionInclusionHeadPath(): string {\n return `${TRANSACTION_INCLUSION_ROOT}/head.json`\n}\n\n/** Path of the transaction-inclusion layout descriptor. */\nexport function transactionInclusionManifestPath(): string {\n return `${TRANSACTION_INCLUSION_ROOT}/manifest.json`\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { asSchema } from '@xyo-network/sdk'\nimport { z } from 'zod'\n\nimport { ChainIdZod, NumberishZod } from '#protocol-lib'\nimport { OffenseCodes, RuleIds } from '#protocol-model'\n\n/** Schema id for the chain parameter register document. */\nexport const ChainParamsSchema = asSchema('network.xyo.s3.chain.params', true)\n/** Type literal for the chain parameter register schema. */\nexport type ChainParamsSchema = typeof ChainParamsSchema\n\n/** Bumped when the register shape changes, so readers can detect a mismatch. */\nexport const CHAIN_PARAMS_VERSION = 1\n\n// the register speaks full zod while the shared code list is zod/mini, so the enum is rebuilt here\nconst offenseCodeZod = z.enum(OffenseCodes)\n\n/** Zod schema for a rule identifier. */\nexport const RuleIdZod = z.enum(RuleIds)\n\nconst HeightZod = NumberishZod.pipe(z.int().nonnegative())\nconst HexAmountZod = z.string()\n\n/**\n * Zod schema for one version of the chain parameter register.\n *\n * The register is the control plane: which rules are on, from what height, and the numbers they\n * use. A register that activates nothing describes a network running exactly as it did before\n * any of this existed, which is what makes trusted operation a posture rather than an old build.\n */\nexport const ChainParamsZod = z.object({\n /** Rule id to the height it takes effect. */\n activations: z.partialRecord(RuleIdZod, HeightZod),\n /** Address whose adjudication records are honored. */\n arbiter: z.string(),\n /** Share of a step's reward pool paid to attestors, in basis points. */\n attestationRewardBps: z.int().nonnegative(),\n /** Absolute ceiling on any single bounty, in the smallest unit. */\n bountyCapAtto: HexAmountZod,\n /** Share of a slash offered as a bounty, in basis points. */\n bountyShareBps: z.int().nonnegative(),\n /** Minimum share of every slash that must be burned, in basis points. */\n burnFloorBps: z.int().positive(),\n /** Version of the offense catalog these parameters describe. */\n catalogVersion: z.int().positive(),\n /** Chain these parameters govern. */\n chainId: ChainIdZod,\n /** Window during which counter-evidence may be filed, in EVM blocks. */\n challengeWindowEvmBlocks: z.int().positive(),\n /** Rule id to the height it stops taking effect; re-activation needs a later version. */\n deactivations: z.optional(z.partialRecord(RuleIdZod, HeightZod)),\n /** Maximum age of an offense at report time, in EVM blocks. */\n evidenceFreshnessEvmBlocks: z.int().positive(),\n /** Operational floor on how long evidence is kept, in XL1 blocks. */\n evidenceRetentionXl1Blocks: z.int().positive(),\n /** Delay between a certificate being queued and executable, in EVM blocks. */\n executionDelayEvmBlocks: z.int().positive(),\n /** How far behind its own anchor a block's stake measurement may sit, in EVM blocks. */\n freshnessBandEvmBlocks: z.int().positive(),\n /** Blocks after an activation during which the rule is observed but not enforced. */\n graceBandXl1Blocks: z.int().nonnegative(),\n /** Confirmation depth an anchor must sit behind the EVM head, in EVM blocks. */\n maturityEvmBlocks: z.int().positive(),\n /** Minimum stake a producer must place on itself, in the smallest unit. */\n minProducerSelfBondAtto: HexAmountZod,\n /** Minimum stake on a producer address, in the smallest unit. */\n minProducerStakeAtto: HexAmountZod,\n /** Minimum age stake must reach before it counts toward participation, in EVM blocks. */\n minStakeAgeEvmBlocks: z.int().nonnegative(),\n /** Minimum stake a validator must hold, in the smallest unit. */\n minValidatorStakeAtto: HexAmountZod,\n /** Slack the timing budget carries for operations and stalls, in EVM blocks. */\n opsAllowanceEvmBlocks: z.int().positive(),\n /** Lowest protocol version a block may declare. */\n protocolMin: z.int().positive(),\n /** Refundable deposit a report must escrow, in the smallest unit. */\n reporterDepositAtto: HexAmountZod,\n /** Blocks a reveal must wait after its commitment. */\n revealDelayEvmBlocks: z.int().positive(),\n /** Blocks a reveal must wait after its commitment, on the XL1 clock. */\n revealDelayXl1Blocks: z.int().positive(),\n /** Blocks after which an unrevealed commitment expires. */\n revealWindowEvmBlocks: z.int().positive(),\n /** Blocks after which an unrevealed commitment expires, on the XL1 clock. */\n revealWindowXl1Blocks: z.int().positive(),\n /** Where the allowed block reward comes from. */\n rewardSource: z.enum(['schedule', 'contract']),\n schema: z.literal(ChainParamsSchema),\n /** Offense code to the share of at-risk stake it slashes, in basis points. */\n slashFractionsBps: z.partialRecord(offenseCodeZod, z.int().nonnegative()),\n /** Distinct validator signatures a slash certificate needs. */\n slashQuorumCount: z.int().positive(),\n /** Version of this register document. */\n version: z.int().positive(),\n})\n\n/** One version of the chain parameter register. */\nexport type ChainParams = z.infer<typeof ChainParamsZod>\n\n/** Numeric-input-tolerant shape accepted when creating a register version. */\nexport type ChainParamsInput = z.input<typeof ChainParamsZod>\n\n/** Type guard that checks if a value is a valid ChainParams. */\nexport const isChainParams = zodIsFactory(ChainParamsZod)\n/** Converts a value to ChainParams, throwing if invalid. */\nexport const asChainParams = zodAsFactory(ChainParamsZod, 'asChainParams')\n/** Non-validating cast to ChainParams. */\nexport const toChainParams = zodToFactory(ChainParamsZod, 'toChainParams')\n\n/** Schema id for the register head pointer. */\nexport const ChainParamsHeadSchema = asSchema('network.xyo.s3.chain.params.head', true)\n/** Type literal for the register head schema. */\nexport type ChainParamsHeadSchema = typeof ChainParamsHeadSchema\n\n/** Zod schema for the mutable pointer naming the current register version. */\nexport const ChainParamsHeadZod = z.object({\n /** Hash of the version document, so a reader can tell it got the one the head meant. */\n hash: z.string(),\n schema: z.literal(ChainParamsHeadSchema),\n /** Version number the pointer names. */\n version: z.int().positive(),\n})\n\n/** The mutable pointer naming the current register version. */\nexport type ChainParamsHead = z.infer<typeof ChainParamsHeadZod>\n\n/** Type guard that checks if a value is a valid ChainParamsHead. */\nexport const isChainParamsHead = zodIsFactory(ChainParamsHeadZod)\n/** Converts a value to ChainParamsHead, throwing if invalid. */\nexport const asChainParamsHead = zodAsFactory(ChainParamsHeadZod, 'asChainParamsHead')\n\n/** Builds a validated register version. */\nexport function createChainParams(config: Omit<ChainParamsInput, 'schema'>): ChainParams {\n return ChainParamsZod.parse({ ...config, schema: ChainParamsSchema })\n}\n\n/** Builds a validated register head pointer. */\nexport function createChainParamsHead(version: number, hash: string): ChainParamsHead {\n return ChainParamsHeadZod.parse({\n hash, schema: ChainParamsHeadSchema, version,\n })\n}\n", "import type {\n OffenseCode, RuleActivationState, RuleId,\n} from '#protocol-model'\nimport {\n adjudicableRuleId, isRuleObservedAt, reportableRuleId, ruleActivationStateAt,\n} from '#protocol-model'\n\nimport type { ChainParams } from './chainParams.ts'\n\n/** Whether reports naming an offense at a height may be recorded. */\nexport function isOffenseReportableAt(params: ChainParams, offense: OffenseCode, height: number): boolean {\n return isRuleObservedAt(params, reportableRuleId(offense), height)\n}\n\n/**\n * Where an offense stands for adjudication at a height.\n *\n * Callers need the three-way answer rather than a boolean: inside the grace band a report is\n * still verified and recorded, it simply cannot be confirmed against anyone.\n */\nexport function offenseAdjudicationStateAt(\n params: ChainParams,\n offense: OffenseCode,\n height: number,\n): RuleActivationState {\n return ruleActivationStateAt(params, adjudicableRuleId(offense), height)\n}\n\n/**\n * The lowest protocol version a block at this height may declare, or undefined when nothing is\n * required yet.\n *\n * The floor rides with the anchor rules, since that is the release the version stamp first has to\n * mean something. Before then `block.protocol` is declared but unchecked, and rejecting on it\n * would fail blocks that were valid when they were made.\n * @param params The register version in force\n * @param height The XL1 height being judged\n * @returns The minimum protocol version, or undefined when unenforced\n */\nexport function protocolMinAt(params: ChainParams, height: number): number | undefined {\n return isRuleObservedAt(params, 'anchor-rules', height) ? params.protocolMin : undefined\n}\n\n/**\n * Checks that a new register version may follow the one already published.\n *\n * The register is append-only over history: a version may add rules and move future heights, but\n * never rewrite what was true at a height the chain has already passed. Without that, a rule\n * could be made retroactive and blocks that were valid when produced would become offenses.\n * @param previous The currently published version, when there is one\n * @param next The version being published\n * @param finalizedHeight The current finalized head height\n * @returns The reasons the version may not be published, empty when it may\n */\nexport function chainParamsSuccessionErrors(\n previous: ChainParams | undefined,\n next: ChainParams,\n finalizedHeight: number,\n): string[] {\n if (previous === undefined) return []\n const errors: string[] = []\n if (next.version <= previous.version) {\n errors.push(`version must increase: ${previous.version} -> ${next.version}`)\n }\n if (next.chainId !== previous.chainId) {\n errors.push(`chainId must not change: ${previous.chainId} -> ${next.chainId}`)\n }\n for (const [ruleId, height] of Object.entries(previous.activations)) {\n if (height > finalizedHeight) continue\n if (next.activations[ruleId as RuleId] !== height) {\n errors.push(`activation for '${ruleId}' is already in force at ${height} and must not move`)\n }\n }\n for (const [ruleId, height] of Object.entries(next.deactivations ?? {})) {\n if (height < finalizedHeight) {\n errors.push(`deactivation for '${ruleId}' at ${height} is in the past`)\n }\n }\n return errors\n}\n", "import {\n EthAddressZod, HexRegExMinMaxMixedCaseWithPrefix,\n zodAsFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod/mini'\n\nconst EvmHashZod = z.string().check(z.regex(HexRegExMinMaxMixedCaseWithPrefix(32, 32)))\nconst EvmDataZod = z.string().check(z.regex(/^0x[\\dA-Fa-f]*$/))\n\n/** JSON-safe representation of one raw EVM contract log. */\nexport const EvmEventIndexLogZod = z.object({\n address: EthAddressZod,\n blockHash: EvmHashZod,\n blockNumber: z.number(),\n data: EvmDataZod,\n index: z.number(),\n topics: z.array(EvmHashZod),\n transactionHash: EvmHashZod,\n transactionIndex: z.number(),\n})\n\n/** Type for one raw EVM contract log in the event index. */\nexport type EvmEventIndexLog = z.infer<typeof EvmEventIndexLogZod>\n\n/** One immutable, address-scoped range of finalized EVM logs. */\nexport const EvmEventIndexFrameZod = z.object({\n fromBlock: z.number(),\n logs: z.array(EvmEventIndexLogZod),\n toBlock: z.number(),\n})\n\n/** Type for one immutable event-index frame. */\nexport type EvmEventIndexFrame = z.infer<typeof EvmEventIndexFrameZod>\n\n/** Static description of one contract event index. */\nexport const EvmEventIndexManifestZod = z.object({\n address: EthAddressZod,\n chainId: z.string(),\n deploymentBlock: z.number(),\n frameSize: z.number(),\n layout: z.literal('evm-contract-events-v1'),\n})\n\n/** Type for the event-index manifest document. */\nexport type EvmEventIndexManifest = z.infer<typeof EvmEventIndexManifestZod>\n\n/**\n * Mutable pointer written after all frames through `block` are durable.\n * Wire schema for the `EvmEventIndexHead` runner contract in `#protocol-lib`.\n */\nexport const EvmEventIndexHeadZod = z.object({\n address: EthAddressZod,\n block: z.number(),\n chainId: z.string(),\n hash: EvmHashZod,\n})\n\n/** Converts a value to EvmEventIndexFrame, throwing if invalid. */\nexport const asEvmEventIndexFrame = zodAsFactory(EvmEventIndexFrameZod, 'asEvmEventIndexFrame')\n/** Converts a value to EvmEventIndexHead, throwing if invalid. */\nexport const asEvmEventIndexHead = zodAsFactory(EvmEventIndexHeadZod, 'asEvmEventIndexHead')\n/** Converts a value to EvmEventIndexManifest, throwing if invalid. */\nexport const asEvmEventIndexManifest = zodAsFactory(EvmEventIndexManifestZod, 'asEvmEventIndexManifest')\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod'\n\nimport type { IndexSummaryFamily, IndexWatermark } from '#protocol-lib'\n\nimport { indexSummaryPathTemplate } from '../templates.ts'\n\n/** Bumped when the on-disk index layout changes shape, so readers can detect a mismatch. */\nexport const INDEX_LAYOUT_VERSION = 1\n\n/** Schema id for the index manifest document (the static layout descriptor). */\nexport const IndexManifestSchema = 'network.xyo.s3.index.manifest' as const\n/** Type literal for the index manifest schema. */\nexport type IndexManifestSchema = typeof IndexManifestSchema\n\n/** Schema id for the index head document (the progress watermark). */\nexport const IndexHeadSchema = 'network.xyo.s3.index.head' as const\n/** Type literal for the index head schema. */\nexport type IndexHeadSchema = typeof IndexHeadSchema\n\n/** Per-family descriptor carried in the manifest. */\nexport const IndexManifestFamilyZod = z.object({\n /** Highest step level published for this family. */\n maxStep: z.int().nonnegative(),\n /** Path template for the family's frames, e.g. `blocks/{level}/{index}.json`. */\n path: z.string(),\n})\n\n/** Type for one index manifest family descriptor. */\nexport type IndexManifestFamily = z.infer<typeof IndexManifestFamilyZod>\n\nconst indexFamiliesZod = z.object({\n balances: IndexManifestFamilyZod,\n blocks: IndexManifestFamilyZod,\n schemas: IndexManifestFamilyZod,\n transfers: IndexManifestFamilyZod,\n})\n\n/** Zod schema for the static index layout descriptor at `indexManifestPath()`. */\nexport const IndexManifestZod = z.object({\n families: indexFamiliesZod,\n schema: z.literal(IndexManifestSchema),\n version: z.int().positive(),\n})\n\n/** The static index layout descriptor at `indexManifestPath()`. */\nexport type IndexManifest = z.infer<typeof IndexManifestZod>\n\n/** Type guard that checks if a value is a valid IndexManifest. */\nexport const isIndexManifest = zodIsFactory(IndexManifestZod)\n/** Converts a value to IndexManifest, throwing if invalid. */\nexport const asIndexManifest = zodAsFactory(IndexManifestZod, 'asIndexManifest')\n/** Non-validating cast to IndexManifest. */\nexport const toIndexManifest = zodToFactory(IndexManifestZod, 'toIndexManifest')\n\n/** Completed frame counts per family in the index head watermark. */\nexport const IndexHeadFamiliesZod = z.object({\n balances: z.int().nonnegative(),\n blocks: z.int().nonnegative(),\n schemas: z.int().nonnegative(),\n transfers: z.int().nonnegative(),\n})\n\n/** Zod schema for the index progress watermark at `indexHeadPath()`. */\nexport const IndexHeadZod = z.object({\n /** Highest block the index is complete through. */\n block: z.int().nonnegative(),\n /** Completed frame counts per family. */\n families: IndexHeadFamiliesZod,\n /** Hash of that block. */\n hash: z.string(),\n schema: z.literal(IndexHeadSchema),\n /** ISO-8601 timestamp of the last update. */\n updatedAt: z.string(),\n version: z.int().positive(),\n})\n\n/** The index progress watermark at `indexHeadPath()`. */\nexport type IndexHead = z.infer<typeof IndexHeadZod>\n\n/** Type guard that checks if a value is a valid IndexHead. */\nexport const isIndexHead = zodIsFactory(IndexHeadZod)\n/** Converts a value to IndexHead, throwing if invalid. */\nexport const asIndexHead = zodAsFactory(IndexHeadZod, 'asIndexHead')\n/** Non-validating cast to IndexHead. */\nexport const toIndexHead = zodToFactory(IndexHeadZod, 'toIndexHead')\n\n/** Builds per-family manifest descriptors with path templates derived from the path builders. */\nexport function createIndexManifestFamilies(\n maxSteps: Record<IndexSummaryFamily, number>,\n): Record<IndexSummaryFamily, IndexManifestFamily> {\n return {\n balances: { maxStep: maxSteps.balances, path: indexSummaryPathTemplate('balances') },\n blocks: { maxStep: maxSteps.blocks, path: indexSummaryPathTemplate('blocks') },\n schemas: { maxStep: maxSteps.schemas, path: indexSummaryPathTemplate('schemas') },\n transfers: { maxStep: maxSteps.transfers, path: indexSummaryPathTemplate('transfers') },\n }\n}\n\n/** Builds a validated index manifest with path templates derived from the path builders. */\nexport function createIndexManifest(maxSteps: Record<IndexSummaryFamily, number>): IndexManifest {\n return asIndexManifest({\n families: createIndexManifestFamilies(maxSteps),\n schema: IndexManifestSchema,\n version: INDEX_LAYOUT_VERSION,\n }, true)\n}\n\n/** Builds a validated index head watermark from an indexer progress snapshot. */\nexport function createIndexHead(watermark: IndexWatermark, updatedAt?: string): IndexHead {\n const now = new Date()\n const resolvedUpdatedAt = updatedAt ?? now.toISOString()\n return asIndexHead({\n block: watermark.block,\n families: watermark.families,\n hash: watermark.hash,\n schema: IndexHeadSchema,\n updatedAt: resolvedUpdatedAt,\n version: INDEX_LAYOUT_VERSION,\n }, true)\n}\n", "import {\n HashZod, zodAsFactory, zodIsFactory,\n} from '@ariestools/sdk'\nimport { asSchema } from '@xyo-network/sdk'\nimport { z } from 'zod'\n\n/** Version of the durable network-stake rewards index layout. */\nexport const NETWORK_STAKE_REWARDS_INDEX_LAYOUT = 'network-stake-rewards-v1' as const\n/** Default reward policy identifier for protocol rewards without multipliers. */\nexport const NETWORK_STAKE_REWARDS_UNMULTIPLIED_POLICY = 'unmultiplied-v1' as const\n/** @deprecated Use NETWORK_STAKE_REWARDS_UNMULTIPLIED_POLICY. */\nexport const NETWORK_STAKE_REWARDS_BASE_POLICY = NETWORK_STAKE_REWARDS_UNMULTIPLIED_POLICY\n/** Schema of an immutable cumulative network-stake rewards snapshot payload. */\nexport const NetworkStakeRewardsIndexSnapshotSchema = asSchema('network.xyo.chain.stake.rewards.snapshot', true)\n\nconst DecimalBigIntZod = z.string().regex(/^(?:0|[1-9]\\d*)$/)\n/** Path-safe identifier for a deterministic reward policy. */\nexport const NetworkStakeRewardsPolicyIdZod = z.string().regex(/^[a-z0-9][a-z0-9._-]*$/)\nconst PositionRewardsZod = z.record(z.string().regex(/^(?:0|[1-9]\\d*)$/), DecimalBigIntZod)\nconst BlockRangeZod = z.tuple([z.number().int().nonnegative(), z.number().int().nonnegative()])\nconst StepIdentityJsonZod = z.object({\n block: z.number().int().nonnegative(),\n step: z.number().int().nonnegative(),\n})\n\n/** Static policy and source description for one rewards index tree. */\nexport const NetworkStakeRewardsIndexManifestZod = z.object({\n evmAddress: z.string(),\n evmChainId: z.string(),\n layout: z.literal(NETWORK_STAKE_REWARDS_INDEX_LAYOUT),\n policyId: NetworkStakeRewardsPolicyIdZod,\n stepLevels: z.array(z.number().int().nonnegative()),\n timeAnchor: z.object({\n externalGenesisTime: z.number().optional(),\n maxScanBlocks: z.number().optional(),\n }).optional(),\n})\n\n/** Static policy and source description for one rewards index tree. */\nexport type NetworkStakeRewardsIndexManifest = z.infer<typeof NetworkStakeRewardsIndexManifestZod>\n\n/** Immutable reward allocation for one completed XL1 reward step. */\nexport const NetworkStakeRewardsIndexStepZod = z.object({\n denominator: DecimalBigIntZod,\n externalRange: BlockRangeZod,\n layout: z.literal(NETWORK_STAKE_REWARDS_INDEX_LAYOUT),\n policyId: NetworkStakeRewardsPolicyIdZod,\n positionRewards: PositionRewardsZod,\n step: StepIdentityJsonZod,\n totalReward: DecimalBigIntZod,\n xl1Range: BlockRangeZod,\n})\n\n/** Immutable reward allocation for one completed XL1 reward step. */\nexport type NetworkStakeRewardsIndexStep = z.infer<typeof NetworkStakeRewardsIndexStepZod>\n\n/** Immutable cumulative position totals referenced by a mutable head. */\nexport const NetworkStakeRewardsIndexSnapshotZod = z.object({\n layout: z.literal(NETWORK_STAKE_REWARDS_INDEX_LAYOUT),\n policyId: NetworkStakeRewardsPolicyIdZod,\n positionRewards: PositionRewardsZod,\n schema: z.literal(NetworkStakeRewardsIndexSnapshotSchema),\n stepCount: z.number().int().nonnegative(),\n totalReward: DecimalBigIntZod,\n})\n\n/** Immutable cumulative position totals referenced by a mutable head. */\nexport type NetworkStakeRewardsIndexSnapshot = z.infer<typeof NetworkStakeRewardsIndexSnapshotZod>\n\n/** Mutable pointer written only after every referenced step and snapshot is durable. */\nexport const NetworkStakeRewardsIndexHeadZod = z.object({\n layout: z.literal(NETWORK_STAKE_REWARDS_INDEX_LAYOUT),\n policyId: NetworkStakeRewardsPolicyIdZod,\n positionCount: z.number().int().nonnegative(),\n processedThroughBlock: z.number().int().nonnegative(),\n snapshotHash: HashZod,\n source: z.object({\n evm: z.object({\n block: z.number().int().nonnegative(),\n hash: z.string(),\n }),\n xl1: z.object({\n block: z.number().int().nonnegative(),\n hash: z.string(),\n }),\n }),\n stepCount: z.number().int().nonnegative(),\n})\n\n/** Mutable pointer written only after every referenced step and snapshot is durable. */\nexport type NetworkStakeRewardsIndexHead = z.infer<typeof NetworkStakeRewardsIndexHeadZod>\n\n/** Checks whether a value is a valid rewards index manifest. */\nexport const isNetworkStakeRewardsIndexManifest = zodIsFactory(NetworkStakeRewardsIndexManifestZod)\n/** Converts a value to a rewards index manifest, throwing if invalid. */\nexport const asNetworkStakeRewardsIndexManifest = zodAsFactory(\n NetworkStakeRewardsIndexManifestZod,\n 'asNetworkStakeRewardsIndexManifest',\n)\n/** Converts a value to a rewards index step, throwing if invalid. */\nexport const asNetworkStakeRewardsIndexStep = zodAsFactory(\n NetworkStakeRewardsIndexStepZod,\n 'asNetworkStakeRewardsIndexStep',\n)\n/** Converts a value to a rewards index snapshot, throwing if invalid. */\nexport const asNetworkStakeRewardsIndexSnapshot = zodAsFactory(\n NetworkStakeRewardsIndexSnapshotZod,\n 'asNetworkStakeRewardsIndexSnapshot',\n)\n/** Converts a value to a rewards index head, throwing if invalid. */\nexport const asNetworkStakeRewardsIndexHead = zodAsFactory(\n NetworkStakeRewardsIndexHeadZod,\n 'asNetworkStakeRewardsIndexHead',\n)\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { asSchema } from '@xyo-network/sdk'\nimport { z } from 'zod'\n\nimport { OffenseCodes } from '#protocol-model'\n\n/** Schema id for the slash index head pointer. */\nexport const SlashIndexHeadSchema = asSchema('network.xyo.s3.slash.index.head', true)\n/** Type literal for the slash index head schema. */\nexport type SlashIndexHeadSchema = typeof SlashIndexHeadSchema\n\n/** Bumped when the index layout changes, so readers can detect a mismatch. */\nexport const SLASH_INDEX_VERSION = 1\n\nconst offenseCodeZod = z.enum(OffenseCodes)\n\n/**\n * Zod schema for the slash index head pointer.\n *\n * Written last in every pass. A reader that sees this pointer can rely on everything it names\n * already being there, which is what makes a crashed pass safe to simply re-run: the pointer only\n * ever advances over work that finished.\n */\nexport const SlashIndexHeadZod = z.object({\n /** Highest finalized height the index has folded in. */\n height: z.int().nonnegative(),\n /** Layout version of the objects this head points at. */\n indexVersion: z.int().positive(),\n schema: z.literal(SlashIndexHeadSchema),\n /** When the pass that wrote this ran, on the EVM clock, when it was known. */\n anchor: z.optional(z.int().nonnegative()),\n})\n\n/** The slash index head pointer. */\nexport type SlashIndexHead = z.infer<typeof SlashIndexHeadZod>\n\n/** Type guard that checks if a value is a valid SlashIndexHead. */\nexport const isSlashIndexHead = zodIsFactory(SlashIndexHeadZod)\n/** Converts a value to SlashIndexHead, throwing if invalid. */\nexport const asSlashIndexHead = zodAsFactory(SlashIndexHeadZod, 'asSlashIndexHead')\n/** Non-validating cast to SlashIndexHead. */\nexport const toSlashIndexHead = zodToFactory(SlashIndexHeadZod, 'toSlashIndexHead')\n\n/** Schema id for the per-offense aggregate. */\nexport const SlashIndexKeyRecordSchema = asSchema('network.xyo.s3.slash.index.key', true)\n/** Type literal for the per-offense aggregate schema. */\nexport type SlashIndexKeyRecordSchema = typeof SlashIndexKeyRecordSchema\n\n/**\n * Zod schema for everything recorded about one offense.\n *\n * The aggregates are the only discovery surface, because the published read path cannot list\n * objects. That is why they are allowed to be rewritten while everything else is immutable \u2014 and\n * why every rewrite only appends, so a pass that runs twice converges instead of losing history.\n */\nexport const SlashIndexKeyRecordZod = z.object({\n /** Who is accused. */\n accused: z.string(),\n /** Hash of the adjudication that closed it, when one has. */\n adjudication: z.optional(z.string()),\n /** The canonical height the offense is located at. */\n block: z.int().nonnegative(),\n /** Hashes of challenges filed against reports of it. */\n challenges: z.array(z.string()),\n /** The chain it happened on. */\n chain: z.string(),\n /** How it was resolved, when it has been. */\n outcome: z.optional(z.enum(['confirmed', 'refuted', 'indeterminate', 'invalid'])),\n /** Which offense class. */\n offense: offenseCodeZod,\n /** Hashes of every report filed for it, earliest first. */\n requests: z.array(z.string()),\n schema: z.literal(SlashIndexKeyRecordSchema),\n})\n\n/** Everything recorded about one offense. */\nexport type SlashIndexKeyRecord = z.infer<typeof SlashIndexKeyRecordZod>\n\n/** Type guard that checks if a value is a valid SlashIndexKeyRecord. */\nexport const isSlashIndexKeyRecord = zodIsFactory(SlashIndexKeyRecordZod)\n/** Converts a value to SlashIndexKeyRecord, throwing if invalid. */\nexport const asSlashIndexKeyRecord = zodAsFactory(SlashIndexKeyRecordZod, 'asSlashIndexKeyRecord')\n\n/** Builds a validated slash index head. */\nexport function createSlashIndexHead(height: number, anchor?: number): SlashIndexHead {\n return SlashIndexHeadZod.parse({\n anchor, height, indexVersion: SLASH_INDEX_VERSION, schema: SlashIndexHeadSchema,\n })\n}\n", "import {\n HashZod, zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod'\n\nimport { ChainIdZod, XL1BlockNumberZod } from '#protocol-model'\n\nimport { transactionInclusionPathTemplate } from '../templates.ts'\n\n/** Versioned identifier for the finalized transaction-inclusion index layout. */\nexport const TRANSACTION_INCLUSION_INDEX_LAYOUT = 'transaction-inclusions-v1' as const\n\n/** Static descriptor for the transaction-inclusion index. */\nexport const TransactionInclusionManifestZod = z.object({\n /** XL1 chain whose finalized transactions are indexed. */\n chain: ChainIdZod,\n /** Versioned layout identifier. */\n layout: z.literal(TRANSACTION_INCLUSION_INDEX_LAYOUT),\n /** Hash-addressed path template, for example `transactions/by-hash/{hash}.json`. */\n path: z.string(),\n})\n\n/** Static descriptor for the transaction-inclusion index. */\nexport type TransactionInclusionManifest = z.infer<typeof TransactionInclusionManifestZod>\n\n/** Mutable pointer written after every transaction inclusion through `block` is durable. */\nexport const TransactionInclusionHeadZod = z.object({\n /** Highest finalized block fully represented by the lookup. */\n block: XL1BlockNumberZod,\n /** Hash of the highest finalized block fully represented by the lookup. */\n blockHash: HashZod,\n /** XL1 chain whose finalized transactions are indexed. */\n chain: ChainIdZod,\n /** Number of transaction-inclusion records represented through `block`. */\n entries: z.int().nonnegative(),\n /** Versioned layout identifier. */\n layout: z.literal(TRANSACTION_INCLUSION_INDEX_LAYOUT),\n})\n\n/** Mutable transaction-inclusion progress pointer. */\nexport type TransactionInclusionHead = z.infer<typeof TransactionInclusionHeadZod>\n\n/** Type guard that checks whether a value is a valid transaction-inclusion manifest. */\nexport const isTransactionInclusionManifest = zodIsFactory(TransactionInclusionManifestZod)\n/** Converts a value to a transaction-inclusion manifest, throwing when invalid. */\nexport const asTransactionInclusionManifest = zodAsFactory(\n TransactionInclusionManifestZod,\n 'asTransactionInclusionManifest',\n)\n/** Converts a value to a transaction-inclusion manifest, returning undefined when invalid. */\nexport const toTransactionInclusionManifest = zodToFactory(\n TransactionInclusionManifestZod,\n 'toTransactionInclusionManifest',\n)\n\n/** Type guard that checks whether a value is a valid transaction-inclusion head. */\nexport const isTransactionInclusionHead = zodIsFactory(TransactionInclusionHeadZod)\n/** Converts a value to a transaction-inclusion head, throwing when invalid. */\nexport const asTransactionInclusionHead = zodAsFactory(\n TransactionInclusionHeadZod,\n 'asTransactionInclusionHead',\n)\n/** Converts a value to a transaction-inclusion head, returning undefined when invalid. */\nexport const toTransactionInclusionHead = zodToFactory(\n TransactionInclusionHeadZod,\n 'toTransactionInclusionHead',\n)\n\n/** Builds the static descriptor for a chain's transaction-inclusion index. */\nexport function createTransactionInclusionManifest(\n chain: TransactionInclusionManifest['chain'],\n): TransactionInclusionManifest {\n return asTransactionInclusionManifest({\n chain,\n layout: TRANSACTION_INCLUSION_INDEX_LAYOUT,\n path: transactionInclusionPathTemplate(),\n }, true)\n}\n\n/** Builds the mutable progress pointer for a transaction-inclusion index. */\nexport function createTransactionInclusionHead(\n head: Omit<TransactionInclusionHead, 'layout'>,\n): TransactionInclusionHead {\n return asTransactionInclusionHead({\n ...head,\n layout: TRANSACTION_INCLUSION_INDEX_LAYOUT,\n }, true)\n}\n", "import type { ChainId } from '#protocol-lib'\n\nimport type { ChainParams } from './chainParams.ts'\nimport { createChainParams } from './chainParams.ts'\n\n/**\n * Planning values for the decentralization parameters.\n *\n * These are the numbers the papers propose, not values any network is bound to. They are carried\n * here so a register can be authored without inventing them, and so the one place they live is\n * the one place a governance change edits.\n *\n * The stake amounts are deliberately absent: they are denominated in the staking token's smallest\n * unit and are a governance decision per network, so a default would be a guess wearing a\n * default's clothing.\n */\nexport const DEFAULT_CHAIN_PARAMS = {\n attestationRewardBps: 1000,\n bountyShareBps: 1000,\n burnFloorBps: 9000,\n catalogVersion: 1,\n challengeWindowEvmBlocks: 14_400,\n evidenceFreshnessEvmBlocks: 21_600,\n evidenceRetentionXl1Blocks: 60_000,\n executionDelayEvmBlocks: 7200,\n freshnessBandEvmBlocks: 2048,\n graceBandXl1Blocks: 1440,\n maturityEvmBlocks: 32,\n minStakeAgeEvmBlocks: 100_800,\n opsAllowanceEvmBlocks: 7200,\n protocolMin: 1_003_000,\n revealDelayEvmBlocks: 60,\n revealDelayXl1Blocks: 10,\n revealWindowEvmBlocks: 7200,\n revealWindowXl1Blocks: 1440,\n slashFractionsBps: {\n 'equivocation': 1500,\n 'false-anchor': 750,\n 'false-attestation': 500,\n 'ineligible-production': 100,\n 'invalid-block': 500,\n 'invalid-slash-request': 750,\n 'reward-overmint': 1500,\n },\n slashQuorumCount: 5,\n}\n\n/** What a trusted-posture register needs beyond the planning defaults. */\nexport interface TrustedPostureConfig {\n /** Address whose adjudication records would be honored, once any rule is on. */\n arbiter: string\n /** Absolute bounty ceiling, in the smallest unit. */\n bountyCapAtto?: string\n /** Chain these parameters govern. */\n chainId: ChainId\n /** Minimum producer self-bond, in the smallest unit. */\n minProducerSelfBondAtto?: string\n /** Minimum producer stake, in the smallest unit. */\n minProducerStakeAtto?: string\n /** Minimum validator stake, in the smallest unit. */\n minValidatorStakeAtto?: string\n /** Refundable reporter deposit, in the smallest unit. */\n reporterDepositAtto?: string\n /** Where the allowed block reward comes from. */\n rewardSource?: 'schedule' | 'contract'\n /** Version number; the first published register is 1. */\n version?: number\n}\n\n/**\n * Builds a register describing a network that enforces nothing.\n *\n * This is the first version a network publishes, and it changes nothing about how that network\n * behaves: no rule has an activation height, so every gate reads as inactive and the chain runs\n * exactly as it did before the register existed. What it does provide is the control plane \u2014\n * somewhere for a later version to record an activation, and something for nodes to be reading\n * long before the first rule turns on.\n *\n * The stake amounts default to zero because they are meaningless while nothing consumes them. A\n * network that intends to enforce sets them in the version that first activates admission, when\n * they have been sized against the value an offense could extract.\n * @param config Chain identity and any amounts already decided\n * @returns A register version with no activations\n */\nexport function createTrustedPostureParams(config: TrustedPostureConfig): ChainParams {\n return createChainParams({\n ...DEFAULT_CHAIN_PARAMS,\n activations: {},\n arbiter: config.arbiter,\n bountyCapAtto: config.bountyCapAtto ?? '00',\n chainId: config.chainId,\n minProducerSelfBondAtto: config.minProducerSelfBondAtto ?? '00',\n minProducerStakeAtto: config.minProducerStakeAtto ?? '00',\n minValidatorStakeAtto: config.minValidatorStakeAtto ?? '00',\n reporterDepositAtto: config.reporterDepositAtto ?? '00',\n rewardSource: config.rewardSource ?? 'contract',\n version: config.version ?? 1,\n })\n}\n", "import type { EthAddress } from '@ariestools/sdk'\n\nfunction root(address: EthAddress): string {\n return `evm/events/${address.toLowerCase()}`\n}\n\n/** Path of one immutable event-index frame within the index bucket. */\nexport function evmEventIndexFramePath(address: EthAddress, frameIndex: number): string {\n return `${root(address)}/frames/${frameIndex}.json`\n}\n\n/** Path of the mutable event-index head pointer within the index bucket. */\nexport function evmEventIndexHeadPath(address: EthAddress): string {\n return `${root(address)}/head.json`\n}\n\n/** Path of the event-index manifest within the index bucket. */\nexport function evmEventIndexManifestPath(address: EthAddress): string {\n return `${root(address)}/manifest.json`\n}\n\n/** Path of the mutable partial-frame tail within the index bucket. */\nexport function evmEventIndexTailPath(address: EthAddress): string {\n return `${root(address)}/tail.json`\n}\n", "import type { Hash } from '@ariestools/sdk'\n\nimport type { StepIdentity } from '#protocol-model'\n\nfunction root(policyId: string): string {\n return `rewards/network-stake/v1/${policyId}`\n}\n\n/** Path of the mutable rewards-index head. */\nexport function networkStakeRewardsIndexHeadPath(policyId: string): string {\n return `${root(policyId)}/head.json`\n}\n\n/** Path of the static rewards-index manifest. */\nexport function networkStakeRewardsIndexManifestPath(policyId: string): string {\n return `${root(policyId)}/manifest.json`\n}\n\n/** Path of one immutable cumulative position snapshot. */\nexport function networkStakeRewardsIndexSnapshotPath(policyId: string, snapshotHash: Hash): string {\n return `${root(policyId)}/snapshots/${snapshotHash}.json`\n}\n\n/** Path of one immutable completed-step reward allocation. */\nexport function networkStakeRewardsIndexStepPath(policyId: string, step: StepIdentity): string {\n return `${root(policyId)}/steps/${step.step}/${step.block}.json`\n}\n", "import type { Hash } from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk'\n\nimport type { OffenseCode } from '#protocol-model'\n\nconst ROOT = 'slash/v1'\n\n/** Path of the mutable slash-index head. */\nexport function slashIndexHeadPath(): string {\n return `${ROOT}/head.json`\n}\n\n/** Path of the static slash-index manifest. */\nexport function slashIndexManifestPath(): string {\n return `${ROOT}/manifest.json`\n}\n\n/** Path of one immutable recorded slash request. */\nexport function slashIndexRequestPath(hash: Hash): string {\n return `${ROOT}/requests/by-hash/${hash}.json`\n}\n\n/** Path of one immutable recorded slash commitment. */\nexport function slashIndexCommitPath(hash: Hash): string {\n return `${ROOT}/commits/by-hash/${hash}.json`\n}\n\n/** Path of one immutable recorded slash challenge. */\nexport function slashIndexChallengePath(hash: Hash): string {\n return `${ROOT}/challenges/by-hash/${hash}.json`\n}\n\n/** Path of one immutable recorded slash adjudication. */\nexport function slashIndexAdjudicationPath(hash: Hash): string {\n return `${ROOT}/adjudications/by-hash/${hash}.json`\n}\n\n/**\n * Path of the aggregate for one offense.\n *\n * Keyed by the canonical offense identity rather than by any report, so several reports of the\n * same misconduct converge on one object instead of accumulating as separate accusations.\n */\nexport function slashIndexKeyPath(accused: XyoAddress, offense: OffenseCode, block: number): string {\n return `${ROOT}/keys/${accused.toLowerCase()}/${offense}/${block}.json`\n}\n\n/** Path of one producer's offense history. */\nexport function slashIndexAccusedPath(address: XyoAddress): string {\n return `${ROOT}/accused/${address.toLowerCase()}.json`\n}\n\n/** Path of one reporter's claim history. */\nexport function slashIndexClaimantPath(address: XyoAddress): string {\n return `${ROOT}/claimants/${address.toLowerCase()}.json`\n}\n\n/** Path of one published admission shadow report. */\nexport function admissionShadowPath(height: number): string {\n return `admission/shadow/${height}.json`\n}\n\n/** Path of the mutable pointer to the newest admission shadow report. */\nexport function admissionShadowHeadPath(): string {\n return 'admission/shadow/head.json'\n}\n", "import type { NetworkId } from '../models/index.ts'\n\n/** Builds URLs to pages on an XL1 chain explorer for a specific network. */\nexport class ExplorerLinks {\n /** Explorer origin with trailing slashes removed. */\n readonly explorerUrl: string\n /** Network identifier included in generated links. */\n readonly networkId: NetworkId\n\n /**\n * Creates a link builder for one explorer deployment and network.\n *\n * @param explorerUrl Base explorer URL, with or without trailing slashes.\n * @param networkId Network segment included in every generated URL.\n */\n constructor(explorerUrl: string, networkId: NetworkId) {\n this.explorerUrl = explorerUrl.replace(/\\/+$/, '')\n this.networkId = networkId\n }\n\n /** `{explorerUrl}/xl1/{networkId}/address/{address}` */\n address(address: string): string {\n return `${this.network()}/address/${address}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/addresses` */\n addresses(): string {\n return `${this.network()}/addresses`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/block/{blockHash}` */\n block(blockHash: string): string {\n return `${this.network()}/block/${blockHash}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/block/number/{blockNumber}` */\n blockByNumber(blockNumber: number | string): string {\n return `${this.network()}/block/number/${blockNumber}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/block/{blockHash}/payload/{payloadHash}[/{render}]` */\n blockPayload(blockHash: string, payloadHash: string, render?: string): string {\n const base = `${this.network()}/block/${blockHash}/payload/${payloadHash}`\n return render === undefined ? base : `${base}/${render}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/blocks` */\n blocks(): string {\n return `${this.network()}/blocks`\n }\n\n /** `{explorerUrl}/xl1/{networkId}` */\n network(): string {\n return `${this.explorerUrl}/xl1/${this.networkId}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/transaction/{txHash}` */\n transaction(txHash: string): string {\n return `${this.network()}/transaction/${txHash}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/transaction/{txHash}/payload/{payloadHash}[/{render}]` */\n transactionPayload(txHash: string, payloadHash: string, render?: string): string {\n const base = `${this.network()}/transaction/${txHash}/payload/${payloadHash}`\n return render === undefined ? base : `${base}/${render}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/transactions` */\n transactions(): string {\n return `${this.network()}/transactions`\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><g style=\"opacity:.5;\"><path d=\"M154.71,97c.46,2.59,2.5,4.62,5.1,5.05l14.05,2.34,31.71-46.17c4.57-6.65-3.62-14.62-10.14-9.87l-43.68,31.83,2.97,16.82Z\" style=\"fill:#f47f00;\"/><path d=\"M173.86,151.62l-14.05,2.34c-2.6.43-4.64,2.45-5.1,5.05l-2.97,16.82,43.68,31.83c6.52,4.75,14.71-3.21,10.14-9.87l-31.71-46.17Z\" style=\"fill:#f47f00;\"/><path d=\"M82.14,104.38l14.05-2.34c2.6-.43,4.64-2.45,5.1-5.05l2.97-16.82-43.68-31.83c-6.52-4.75-14.71,3.21-10.14,9.87l31.71,46.17Z\" style=\"fill:#f47f00;\"/><path d=\"M101.29,159c-.46-2.59-2.5-4.62-5.1-5.05l-14.05-2.34-31.71,46.17c-4.57,6.65,3.62,14.62,10.14,9.87l43.68-31.83-2.97-16.82Z\" style=\"fill:#f47f00;\"/></g><path d=\"M107.33,104l15.94-90.32c.93-5.3,8.53-5.3,9.47,0l15.94,90.32c.35,2.01,1.94,3.57,3.95,3.91l92.24,15.35c5.36.89,5.36,8.59,0,9.49l-92.24,15.35c-2.01.33-3.59,1.9-3.95,3.91l-15.94,90.32c-.93,5.3-8.53,5.3-9.47,0l-15.94-90.32c-.35-2.01-1.94-3.57-3.95-3.91l-92.24-15.35c-5.36-.89-5.36-8.59,0-9.49l92.24-15.35c2.01-.33,3.59-1.9,3.95-3.91Z\" style=\"fill:#f47f00;\"/></svg>", "<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><path d=\"M154.71,97c.46,2.59,2.5,4.62,5.1,5.05l14.05,2.34,31.71-46.17c4.57-6.65-3.62-14.62-10.14-9.87l-43.68,31.83,2.97,16.82Z\" style=\"fill:#8d8fc6;\"/><path d=\"M173.86,151.62l-14.05,2.34c-2.6.43-4.64,2.45-5.1,5.05l-2.97,16.82,43.68,31.83c6.52,4.75,14.71-3.21,10.14-9.87l-31.71-46.17Z\" style=\"fill:#eb407a;\"/><path d=\"M82.14,104.38l14.05-2.34c2.6-.43,4.64-2.45,5.1-5.05l2.97-16.82-43.68-31.83c-6.52-4.75-14.71,3.21-10.14,9.87l31.71,46.17Z\" style=\"fill:#579fd6;\"/><path d=\"M101.29,159c-.46-2.59-2.5-4.62-5.1-5.05l-14.05-2.34-31.71,46.17c-4.57,6.65,3.62,14.62,10.14,9.87l43.68-31.83-2.97-16.82Z\" style=\"fill:#f27046;\"/><path d=\"M107.33,104l15.94-90.32c.93-5.3,8.53-5.3,9.47,0l15.94,90.32c.35,2.01,1.94,3.57,3.95,3.91l92.24,15.35c5.36.89,5.36,8.59,0,9.49l-92.24,15.35c-2.01.33-3.59,1.9-3.95,3.91l-15.94,90.32c-.93,5.3-8.53,5.3-9.47,0l-15.94-90.32c-.35-2.01-1.94-3.57-3.95-3.91l-92.24-15.35c-5.36-.89-5.36-8.59,0-9.49l92.24-15.35c2.01-.33,3.59-1.9,3.95-3.91Z\" style=\"fill:#572aff;\"/></svg>", "<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><g style=\"opacity:.5;\"><path d=\"M154.71,97c.46,2.59,2.5,4.62,5.1,5.05l14.05,2.34,31.71-46.17c4.57-6.65-3.62-14.62-10.14-9.87l-43.68,31.83,2.97,16.82Z\" style=\"fill:#579fd6;\"/><path d=\"M173.86,151.62l-14.05,2.34c-2.6.43-4.64,2.45-5.1,5.05l-2.97,16.82,43.68,31.83c6.52,4.75,14.71-3.21,10.14-9.87l-31.71-46.17Z\" style=\"fill:#579fd6;\"/><path d=\"M82.14,104.38l14.05-2.34c2.6-.43,4.64-2.45,5.1-5.05l2.97-16.82-43.68-31.83c-6.52-4.75-14.71,3.21-10.14,9.87l31.71,46.17Z\" style=\"fill:#579fd6;\"/><path d=\"M101.29,159c-.46-2.59-2.5-4.62-5.1-5.05l-14.05-2.34-31.71,46.17c-4.57,6.65,3.62,14.62,10.14,9.87l43.68-31.83-2.97-16.82Z\" style=\"fill:#579fd6;\"/></g><path d=\"M107.33,104l15.94-90.32c.93-5.3,8.53-5.3,9.47,0l15.94,90.32c.35,2.01,1.94,3.57,3.95,3.91l92.24,15.35c5.36.89,5.36,8.59,0,9.49l-92.24,15.35c-2.01.33-3.59,1.9-3.95,3.91l-15.94,90.32c-.93,5.3-8.53,5.3-9.47,0l-15.94-90.32c-.35-2.01-1.94-3.57-3.95-3.91l-92.24-15.35c-5.36-.89-5.36-8.59,0-9.49l92.24-15.35c2.01-.33,3.59-1.9,3.95-3.91Z\" style=\"fill:#579fd6;\"/></svg>", "import { asHex } from '@ariestools/sdk'\n\nimport {\n LocalNetworkIconString, MainNetworkIconString, SequenceNetworkIconString,\n} from '../icons/index.ts'\nimport type { NetworkBootstrap, NetworkId } from '../models/index.ts'\nimport { NetworkBootstrapSchema } from '../models/index.ts'\n\n/** Bootstrap configuration for the XYO Layer 1 mainnet. */\nexport const MainNetwork: NetworkBootstrap = {\n chain: asHex('319e667ced10452a117472811130444ded357f26', true),\n description: 'Main Network for XYO Layer 1',\n icon: MainNetworkIconString,\n id: 'mainnet' as NetworkId,\n name: 'Mainnet',\n schema: NetworkBootstrapSchema,\n symbol: 'XL1',\n url: 'https://api.chain.xyo.network',\n explorerUrl: 'https://explore.xyo.network',\n}\n\n/** Bootstrap configuration for the XYO Layer 1 sequence (test) network. */\nexport const SequenceNetwork: NetworkBootstrap = {\n chain: asHex('4b43a753c8024c0e5000e8ac948ac0063ac624bc', true),\n description: 'Test Network for XYO Layer 1',\n icon: SequenceNetworkIconString,\n id: 'sequence' as NetworkId,\n name: 'Sequence',\n schema: NetworkBootstrapSchema,\n symbol: 'XL1',\n url: 'https://beta.api.chain.xyo.network',\n explorerUrl: 'https://beta.explore.xyo.network',\n}\n\n/** Bootstrap configuration for a local development network. */\nexport const LocalNetwork: NetworkBootstrap = {\n description: 'Local Node',\n icon: LocalNetworkIconString,\n id: 'local' as NetworkId,\n name: 'Local',\n schema: NetworkBootstrapSchema,\n symbol: 'XL1',\n url: 'http://localhost:8080',\n explorerUrl: 'http://localhost:3000',\n}\n\n/** Default set of available XYO Layer 1 networks (mainnet, sequence, local). */\nexport const DefaultNetworks: NetworkBootstrap[] = [MainNetwork, SequenceNetwork, LocalNetwork]\n", "import type { Address } from '@ariestools/sdk'\nimport { AsObjectFactory } from '@ariestools/sdk'\nimport type { Payload } from '@xyo-network/sdk'\nimport { asSchema, isPayloadOfSchemaType } from '@xyo-network/sdk'\n\nimport type { ChainId } from '#protocol-lib'\n\nimport type { NetworkId } from './NetworkId.ts'\n\n/** Connection details for accessing a chain endpoint. */\nexport interface ChainConnection {\n /** Chain Identifier - can be a hex (eth contract address) or a string */\n chain?: ChainId\n /** Name of the chain */\n name: string\n /** URL for accessing the network */\n url: string\n}\n\n/** Schema identifier for network bootstrap payloads. */\nexport const NetworkBootstrapSchema = asSchema('network.xyo.network.bootstrap', true)\n/** Schema type for network bootstrap payloads. */\nexport type NetworkBootstrapSchema = typeof NetworkBootstrapSchema\n\n/** Fields describing a chain fork origin. */\nexport interface ChainForkFields {\n /** Block Number at which the chain was forked from */\n forkedAtLastBlockNumber?: string\n /** Hash in the last block the chain was forked from */\n forkedAtLastHash?: string\n /** Address of the forked chain */\n forkedChainId?: Address\n}\n\n/** Core fields describing an XYO network. */\nexport interface NetworkFields {\n /** Description of the network */\n description: string\n /** URL for accessing the network explorer */\n explorerUrl?: string\n /** string representation of the icon (SVG) */\n icon?: string\n /** Machine-readable identifier */\n id: NetworkId\n /** Schema identifier for this configuration or payload. */\n schema: NetworkBootstrapSchema\n /** Symbol of the network */\n symbol?: string\n}\n\n/** Optional Properties can be found walking the chain to the genesis block */\nexport interface NetworkBootstrapFields extends NetworkFields, ChainForkFields, ChainConnection {}\n\n/** A network bootstrap extended with a flag indicating whether it is a custom network. */\nexport interface Network extends NetworkBootstrap {\n /** Application-defined bootstrap configuration passed through unchanged. */\n custom: boolean\n}\n\n/** Payload type containing all network bootstrap configuration fields. */\nexport type NetworkBootstrap = Payload<NetworkBootstrapFields, NetworkBootstrapSchema>\n\n/** Type guard that checks whether a payload is a NetworkBootstrap. */\nexport const isNetworkBootstrap = isPayloadOfSchemaType<NetworkBootstrap>(NetworkBootstrapSchema)\n\n/** Optionally casts a value to a Network if it is a valid NetworkBootstrap. */\nexport const asOptionalNetwork = AsObjectFactory.createOptional(isNetworkBootstrap)\n", "import type { GatewayName } from '#protocol-lib'\n\nimport {\n LocalNetwork, MainNetwork, SequenceNetwork,\n} from './Networks.ts'\n\n/** Map of network IDs to their corresponding Data Lake API URLs. */\nexport const NetworkDataLakeUrls = {\n [MainNetwork.id]: 'https://api.archivist.xyo.network/dataLake',\n [SequenceNetwork.id]: 'https://beta.api.archivist.xyo.network/dataLake',\n [LocalNetwork.id]: 'http://localhost:8080/dataLake',\n} as const satisfies Record<GatewayName, string>\n", "import type { AttachableNodeInstance, WalletInstance } from '@xyo-network/sdk'\nimport { ManifestWrapper, ModuleFactoryLocator } from '@xyo-network/sdk'\n\nimport { NetworkNodeManifest } from '../../manifest/index.ts'\n\n/**\n * Creates a network node from the network manifest using the provided wallet.\n *\n * @deprecated Bootstrapping an XYO `NodeInstance` via manifest is no longer supported.\n * Use `connectArchivist` from `@xyo-network/xl1-protocol-sdk` for co-located archivist\n * access, or `GatewayBuilder` from `@xyo-network/xl1-gateway` for remote RPC access.\n */\nexport async function getNetworkNode(wallet: WalletInstance): Promise<AttachableNodeInstance> {\n const wrapper = new ManifestWrapper(NetworkNodeManifest, wallet, new ModuleFactoryLocator())\n const [node] = await wrapper.loadNodes()\n return node\n}\n", "{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"44'/60'/1\",\n \"name\": \"Network\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": []\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}", "import type { PackageManifestPayload } from '@xyo-network/sdk'\n\nimport node from './network.json' with { type: 'json' }\n\n/** @deprecated XYO Node manifest bootstrap is no longer used; wire providers via archivist bindings or JsonRpc instead. */\nexport const NetworkNodeManifest = node as unknown as PackageManifestPayload\n", "import type { AttachableNodeInstance } from '@xyo-network/sdk'\n\nconst networkNodeMap = new Map<string, AttachableNodeInstance>()\n\n/** @deprecated Internal cache for deprecated `initNetworkNode`; do not use. */\nexport const getNetworkNodes = () => {\n return networkNodeMap\n}\n", "import type { AttachableNodeInstance, WalletInstance } from '@xyo-network/sdk'\n\nimport type { NetworkBootstrap } from '../../models/index.ts'\nimport { getNetworkNode } from './getNetworkNode.ts'\nimport { getNetworkNodes } from './getNetworkNodes.ts'\n\n/** @deprecated Use `connectArchivist` archivist bindings (`@xyo-network/xl1-protocol-sdk`) or `GatewayBuilder` (`@xyo-network/xl1-gateway`) instead of bootstrapping an XYO NodeInstance. */\nexport const initNetworkNode = async (activeNetwork: NetworkBootstrap, wallet: WalletInstance): Promise<AttachableNodeInstance> => {\n const networkNodeMap = getNetworkNodes()\n if (networkNodeMap.has(activeNetwork.url)) return networkNodeMap.get(activeNetwork.url)!\n\n const activeNetworkNode = await getNetworkNode(wallet)\n networkNodeMap.set(activeNetwork.url, activeNetworkNode)\n\n return activeNetworkNode\n}\n", "import { zodAsFactory, zodIsFactory } from '@ariestools/sdk'\nimport { asSchema } from '@xyo-network/sdk'\nimport { z } from 'zod'\n\n/** Schema id for a published admission shadow report. */\nexport const AdmissionShadowReportSchema = asSchema('network.xyo.s3.admission.shadow', true)\n/** Type literal for the admission shadow report schema. */\nexport type AdmissionShadowReportSchema = typeof AdmissionShadowReportSchema\n\n/** What both admission gates concluded about one candidate. */\nexport const AdmissionShadowAssessmentZod = z.object({\n /** Seasoned active stake measured at the evaluation point, hex atto, when it could be. */\n activeStake: z.optional(z.string()),\n /** Whether the allow-list admits it. */\n admittedByAllowList: z.boolean(),\n /** The candidate's height. */\n block: z.int().nonnegative(),\n /** The candidate's signed identity. */\n dataHash: z.string(),\n /** The EVM height stake was measured at, when it could be. */\n eStar: z.optional(z.int().nonnegative()),\n /** Whether participation admits it, when that could be established. */\n eligible: z.optional(z.boolean()),\n /** Whether the address held a current intent, when that could be established. */\n intentValid: z.optional(z.boolean()),\n /** The producer. */\n producer: z.string(),\n /** Why participation refused, when it did. */\n reason: z.optional(z.string()),\n /** False when the participation question could not be put at all. */\n resolvable: z.boolean(),\n /** The seasoned portion staked by the address on itself, hex atto, when it could be. */\n selfBond: z.optional(z.string()),\n})\n\n/** What both admission gates concluded about one candidate. */\nexport type AdmissionShadowAssessment = z.infer<typeof AdmissionShadowAssessmentZod>\n\n/**\n * Zod schema for one published round of shadow admission.\n *\n * Published rather than logged because the point of the posture is that anyone can see what\n * enforcement would have done before it does it. An operator convinced by their own logs has\n * convinced nobody.\n *\n * The back-link is what makes the series walkable without listing: a reader takes the head\n * pointer and follows `previous` as far back as it cares to.\n */\nexport const AdmissionShadowReportZod = z.object({\n /** Every candidate considered this round. */\n assessments: z.array(AdmissionShadowAssessmentZod),\n /** Only those where the two gates disagreed. */\n divergent: z.array(AdmissionShadowAssessmentZod),\n /** The finalized height this round was selected against. */\n head: z.int().nonnegative(),\n /** The admission posture that produced the round; reports keep flowing when gating starts. */\n mode: z.optional(z.enum(['shadow', 'enforce'])),\n /** Height of the previous published report, so the series can be walked backwards. */\n previous: z.optional(z.int().nonnegative()),\n schema: z.literal(AdmissionShadowReportSchema),\n})\n\n/** One published round of shadow admission. */\nexport type AdmissionShadowReportDocument = z.infer<typeof AdmissionShadowReportZod>\n\n/** Type guard that checks if a value is a valid AdmissionShadowReportDocument. */\nexport const isAdmissionShadowReport = zodIsFactory(AdmissionShadowReportZod)\n/** Converts a value to AdmissionShadowReportDocument, throwing if invalid. */\nexport const asAdmissionShadowReport = zodAsFactory(AdmissionShadowReportZod, 'asAdmissionShadowReport')\n\n/** Builds a validated admission shadow report. */\nexport function createAdmissionShadowReport(\n head: number,\n assessments: AdmissionShadowAssessment[],\n divergent: AdmissionShadowAssessment[],\n previous?: number,\n mode?: AdmissionShadowReportDocument['mode'],\n): AdmissionShadowReportDocument {\n return AdmissionShadowReportZod.parse({\n assessments, divergent, head, mode, previous, schema: AdmissionShadowReportSchema,\n })\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod'\n\nimport {\n ChainIdZod, NumberishZod, type XL1BlockNumber,\n} from '#protocol-lib'\n\nconst ChainContractBlockNumberZod = NumberishZod\n .pipe(z.int().nonnegative())\n .transform(value => value as XL1BlockNumber)\n\n/** Schema id for the chain-contract manifest document. */\nexport const ChainContractManifestSchema = 'network.xyo.s3.chain.contract' as const\n/** Type literal for the chain-contract manifest schema. */\nexport type ChainContractManifestSchema = typeof ChainContractManifestSchema\n\n/** Bumped when the manifest shape changes, so readers can detect a mismatch. */\nexport const CHAIN_CONTRACT_MANIFEST_VERSION = 1\n\n/**\n * Zod schema for the static per-chain config at `chainContractByIdPath(chainId)`: the reward\n * contract, staking token, minimum withdrawal window, and (optional) fork edge. Immutable\n * once published \u2014 does not change per block, unlike `chain/head.json`.\n */\nexport const ChainContractManifestZod = z.object({\n /** Self-identifying chain id (matches the path key). Optional for older fixtures. */\n chainId: z.optional(ChainIdZod),\n forkedAtBlockNumber: ChainContractBlockNumberZod.nullable().optional(),\n forkedAtHash: z.string().nullable().optional(),\n forkedChainId: z.nullable(ChainIdZod).optional(),\n minWithdrawalBlocks: NumberishZod.pipe(z.int().nonnegative()),\n rewardsContract: z.string(),\n schema: z.literal(ChainContractManifestSchema),\n stakingTokenAddress: z.string(),\n version: z.int().positive(),\n})\n\n/** The static per-chain contract config at `chainContractByIdPath(chainId)`. */\nexport type ChainContractManifest = z.infer<typeof ChainContractManifestZod>\n\n/** Numeric-input-tolerant shape accepted when creating a chain-contract manifest. */\nexport type ChainContractManifestInput = z.input<typeof ChainContractManifestZod>\n\n/** Type guard that checks if a value is a valid ChainContractManifest. */\nexport const isChainContractManifest = zodIsFactory(ChainContractManifestZod)\n/** Converts a value to ChainContractManifest, throwing if invalid. */\nexport const asChainContractManifest = zodAsFactory(ChainContractManifestZod, 'asChainContractManifest')\n/** Non-validating cast to ChainContractManifest. */\nexport const toChainContractManifest = zodToFactory(ChainContractManifestZod, 'toChainContractManifest')\n\n/** Builds a validated chain-contract manifest. */\nexport function createChainContractManifest(\n config: Omit<ChainContractManifestInput, 'schema' | 'version'>,\n): ChainContractManifest {\n return ChainContractManifestZod.parse({\n ...config,\n schema: ChainContractManifestSchema,\n version: CHAIN_CONTRACT_MANIFEST_VERSION,\n })\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod'\n\nimport { chainManifestPathTemplates } from '../templates.ts'\n\n/** Bumped when the finalized layout changes shape, so readers can detect a mismatch. */\nexport const CHAIN_LAYOUT_VERSION = 1\n\n/** Schema id for the finalized layout manifest document. */\nexport const ChainManifestSchema = 'network.xyo.s3.chain.manifest' as const\n/** Type literal for the chain manifest schema. */\nexport type ChainManifestSchema = typeof ChainManifestSchema\n\n/** Path templates for the finalized + chain-state files. */\nexport const ChainManifestPathsZod = z.object({\n blockByHash: z.string(),\n blockByNumber: z.string(),\n head: z.string(),\n payload: z.string(),\n})\n\n/** Type for chain manifest path templates. */\nexport type ChainManifestPaths = z.infer<typeof ChainManifestPathsZod>\n\n/** Zod schema for the finalized layout descriptor at `manifestPath()`. */\nexport const ChainManifestZod = z.object({\n /** Lowest block number available in the bucket (genesis until pruning exists). */\n earliestBlock: z.int().nonnegative(),\n /** Storage/wire encoding of the published files (also on each object's Content-Encoding). */\n encoding: z.string(),\n paths: ChainManifestPathsZod,\n schema: z.literal(ChainManifestSchema),\n version: z.int().positive(),\n})\n\n/** The finalized layout descriptor at `manifestPath()`. */\nexport type ChainManifest = z.infer<typeof ChainManifestZod>\n\n/** Type guard that checks if a value is a valid ChainManifest. */\nexport const isChainManifest = zodIsFactory(ChainManifestZod)\n/** Converts a value to ChainManifest, throwing if invalid. */\nexport const asChainManifest = zodAsFactory(ChainManifestZod, 'asChainManifest')\n/** Non-validating cast to ChainManifest. */\nexport const toChainManifest = zodToFactory(ChainManifestZod, 'toChainManifest')\n\n/** Builds a validated chain manifest with path templates derived from the path builders. */\nexport function createChainManifest(encoding: string, earliestBlock = 0): ChainManifest {\n return asChainManifest({\n earliestBlock,\n encoding,\n paths: chainManifestPathTemplates(),\n schema: ChainManifestSchema,\n version: CHAIN_LAYOUT_VERSION,\n }, true)\n}\n", "import { asHash } from '@ariestools/sdk'\n\nimport type { IndexSummaryFamily } from '#protocol-lib'\n\nimport { headPath } from './paths/chainState.ts'\nimport {\n blockHashPath, blockNumberPath, payloadPath,\n} from './paths/finalized.ts'\nimport { indexSummaryPath } from './paths/indexPaths.ts'\nimport { transactionInclusionPath } from './paths/transactionInclusionIndex.ts'\n\n/** Sentinel values used when deriving self-describing path templates from concrete builders. */\nconst TEMPLATE_SLOTS = {\n block: 0,\n hash: asHash('0'.repeat(64), true),\n index: 99,\n level: 42,\n} as const\n\n/**\n * Replaces concrete slot literals in a path with named `{placeholder}` segments.\n * Used to derive manifest path templates from the path builders so the two cannot drift.\n */\nexport function toPathTemplate(path: string, slots: { literal: string; name: string }[]): string {\n let result = path\n for (const { literal, name } of slots) {\n if (!result.includes(literal)) {\n throw new Error(`Template slot \"${literal}\" not found in path \"${path}\"`)\n }\n result = result.split(literal).join(`{${name}}`)\n }\n return result\n}\n\n/** Fills `{placeholder}` segments in a manifest path template. Used in conformance tests. */\nexport function interpolatePathTemplate(template: string, values: Record<string, string | number>): string {\n let result = template\n for (const [key, value] of Object.entries(values)) {\n result = result.split(`{${key}}`).join(String(value))\n }\n return result\n}\n\n/** Self-describing template for `blockNumberPath`. */\nexport const blockNumberPathTemplate = (): string =>\n toPathTemplate(blockNumberPath(TEMPLATE_SLOTS.block), [{ literal: String(TEMPLATE_SLOTS.block), name: 'block' }])\n\n/** Self-describing template for `blockHashPath`. */\nexport const blockHashPathTemplate = (): string =>\n toPathTemplate(blockHashPath(TEMPLATE_SLOTS.hash), [{ literal: TEMPLATE_SLOTS.hash, name: 'hash' }])\n\n/** Self-describing template for `payloadPath`. */\nexport const payloadPathTemplate = (): string =>\n toPathTemplate(payloadPath(TEMPLATE_SLOTS.hash), [{ literal: TEMPLATE_SLOTS.hash, name: 'hash' }])\n\n/** Self-describing templates for finalized + chain-state files carried in the chain manifest. */\nexport function chainManifestPathTemplates(): {\n blockByHash: string\n blockByNumber: string\n head: string\n payload: string\n} {\n return {\n blockByHash: blockHashPathTemplate(),\n blockByNumber: blockNumberPathTemplate(),\n head: headPath(),\n payload: payloadPathTemplate(),\n }\n}\n\n/** Self-describing template for one index summary family, e.g. `blocks/{level}/{index}.json`. */\nexport function indexSummaryPathTemplate(family: IndexSummaryFamily): string {\n const path = indexSummaryPath(family, TEMPLATE_SLOTS.level, TEMPLATE_SLOTS.index)\n return toPathTemplate(path, [\n { literal: String(TEMPLATE_SLOTS.level), name: 'level' },\n { literal: String(TEMPLATE_SLOTS.index), name: 'index' },\n ])\n}\n\n/** Self-describing template for the hash-addressed transaction-inclusion lookup. */\nexport function transactionInclusionPathTemplate(): string {\n return toPathTemplate(transactionInclusionPath(TEMPLATE_SLOTS.hash), [\n { literal: TEMPLATE_SLOTS.hash, name: 'hash' },\n ])\n}\n", "/**\n * Path builders for the chain-state (mutable) bucket.\n *\n * Paths are relative \u2014 no leading slash \u2014 and joined to a base URL by the consumer.\n */\n\n/** The mutable head pointer: the current head SignedHydratedBlockWithHashMeta. */\nexport const headPath = (): string => 'chain/head.json'\n\n/**\n * Immutable per-chain contract config (rewards contract, staking token, fork edge).\n * Sparse map keyed by chain id \u2014 the current chain's file is the entry point; fork\n * ancestors are sibling files under the same folder. `chainId` is normalized to lowercase.\n */\nexport const chainContractByIdPath = (chainId: string): string => `chain/contracts/${chainId.toLowerCase()}.json`\n\n/**\n * One immutable version of the chain parameter register. Versions are never rewritten, so a\n * reader that resolved one can keep using it.\n */\nexport const chainParamsVersionPath = (chainId: string, version: number): string =>\n `chain/params/${chainId.toLowerCase()}/v${version}.json`\n\n/** The mutable pointer naming the current register version for a chain. */\nexport const chainParamsHeadPath = (chainId: string): string => `chain/params/${chainId.toLowerCase()}/head.json`\n", "/**\n * Path builders for the finalized (immutable) bucket.\n *\n * Paths are relative \u2014 no leading slash \u2014 and joined to a base URL by the consumer.\n */\n\n/** The finalized layout descriptor (path templates, encoding, version, earliest block). */\nexport const manifestPath = (): string => 'manifest.json'\n\n/** A block by number: SignedHydratedBlockWithHashMeta. */\nexport const blockNumberPath = (block: number): string => `block/number/${block}.json`\n\n/** A block by hash: the same content as its by-number twin. */\nexport const blockHashPath = (hash: string): string => `block/hash/${hash}.json`\n\n/** A payload by hash: WithHashMeta<Payload>. */\nexport const payloadPath = (hash: string): string => `payload/${hash}.json`\n", "import type { IndexSummaryFamily } from '#protocol-lib'\n\n/**\n * Path builders for the index bucket.\n *\n * The index is a separate, single-writer bucket holding completed step summaries for several\n * families. Paths are relative \u2014 no leading slash \u2014 and joined to a base URL by the consumer.\n */\n\n/** A completed frame's summary for a family, e.g. `blocks/2/5.json`. Immutable once written. */\nexport const indexSummaryPath = (family: IndexSummaryFamily, stepLevel: number, stepIndex: number): string =>\n `${family}/${stepLevel}/${stepIndex}.json`\n\n/** The index layout descriptor (families, max step, encoding, version). */\nexport const indexManifestPath = (): string => 'manifest.json'\n\n/** The indexer's progress watermark (highest block the index is complete through). */\nexport const indexHeadPath = (): string => 'head.json'\n", "import type { Hash } from '@ariestools/sdk'\n\nconst TRANSACTION_INCLUSION_ROOT = 'transactions'\n\n/** Path of one immutable transaction-hash to finalized-block inclusion record. */\nexport function transactionInclusionPath(transactionHash: Hash): string {\n return `${TRANSACTION_INCLUSION_ROOT}/by-hash/${transactionHash}.json`\n}\n\n/** Path of the mutable transaction-inclusion progress pointer. */\nexport function transactionInclusionHeadPath(): string {\n return `${TRANSACTION_INCLUSION_ROOT}/head.json`\n}\n\n/** Path of the transaction-inclusion layout descriptor. */\nexport function transactionInclusionManifestPath(): string {\n return `${TRANSACTION_INCLUSION_ROOT}/manifest.json`\n}\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { asSchema } from '@xyo-network/sdk'\nimport { z } from 'zod'\n\nimport { ChainIdZod, NumberishZod } from '#protocol-lib'\nimport { OffenseCodes, RuleIds } from '#protocol-model'\n\n/** Schema id for the chain parameter register document. */\nexport const ChainParamsSchema = asSchema('network.xyo.s3.chain.params', true)\n/** Type literal for the chain parameter register schema. */\nexport type ChainParamsSchema = typeof ChainParamsSchema\n\n/** Bumped when the register shape changes, so readers can detect a mismatch. */\nexport const CHAIN_PARAMS_VERSION = 1\n\n// the register speaks full zod while the shared code list is zod/mini, so the enum is rebuilt here\nconst offenseCodeZod = z.enum(OffenseCodes)\n\n/** Zod schema for a rule identifier. */\nexport const RuleIdZod = z.enum(RuleIds)\n\nconst HeightZod = NumberishZod.pipe(z.int().nonnegative())\nconst HexAmountZod = z.string()\n\n/**\n * Zod schema for one version of the chain parameter register.\n *\n * The register is the control plane: which rules are on, from what height, and the numbers they\n * use. A register that activates nothing describes a network running exactly as it did before\n * any of this existed, which is what makes trusted operation a posture rather than an old build.\n */\nexport const ChainParamsZod = z.object({\n /** Rule id to the height it takes effect. */\n activations: z.partialRecord(RuleIdZod, HeightZod),\n /** Address whose adjudication records are honored. */\n arbiter: z.string(),\n /** Share of a step's reward pool paid to attestors, in basis points. */\n attestationRewardBps: z.int().nonnegative(),\n /** Absolute ceiling on any single bounty, in the smallest unit. */\n bountyCapAtto: HexAmountZod,\n /** Share of a slash offered as a bounty, in basis points. */\n bountyShareBps: z.int().nonnegative(),\n /** Minimum share of every slash that must be burned, in basis points. */\n burnFloorBps: z.int().positive(),\n /** Version of the offense catalog these parameters describe. */\n catalogVersion: z.int().positive(),\n /** Chain these parameters govern. */\n chainId: ChainIdZod,\n /** Window during which counter-evidence may be filed, in EVM blocks. */\n challengeWindowEvmBlocks: z.int().positive(),\n /** Rule id to the height it stops taking effect; re-activation needs a later version. */\n deactivations: z.optional(z.partialRecord(RuleIdZod, HeightZod)),\n /** Maximum age of an offense at report time, in EVM blocks. */\n evidenceFreshnessEvmBlocks: z.int().positive(),\n /** Operational floor on how long evidence is kept, in XL1 blocks. */\n evidenceRetentionXl1Blocks: z.int().positive(),\n /** Delay between a certificate being queued and executable, in EVM blocks. */\n executionDelayEvmBlocks: z.int().positive(),\n /** How far behind its own anchor a block's stake measurement may sit, in EVM blocks. */\n freshnessBandEvmBlocks: z.int().positive(),\n /** Blocks after an activation during which the rule is observed but not enforced. */\n graceBandXl1Blocks: z.int().nonnegative(),\n /** Confirmation depth an anchor must sit behind the EVM head, in EVM blocks. */\n maturityEvmBlocks: z.int().positive(),\n /** Minimum stake a producer must place on itself, in the smallest unit. */\n minProducerSelfBondAtto: HexAmountZod,\n /** Minimum stake on a producer address, in the smallest unit. */\n minProducerStakeAtto: HexAmountZod,\n /** Minimum age stake must reach before it counts toward participation, in EVM blocks. */\n minStakeAgeEvmBlocks: z.int().nonnegative(),\n /** Minimum stake a validator must hold, in the smallest unit. */\n minValidatorStakeAtto: HexAmountZod,\n /** Slack the timing budget carries for operations and stalls, in EVM blocks. */\n opsAllowanceEvmBlocks: z.int().positive(),\n /** Lowest protocol version a block may declare. */\n protocolMin: z.int().positive(),\n /** Refundable deposit a report must escrow, in the smallest unit. */\n reporterDepositAtto: HexAmountZod,\n /** Blocks a reveal must wait after its commitment. */\n revealDelayEvmBlocks: z.int().positive(),\n /** Blocks a reveal must wait after its commitment, on the XL1 clock. */\n revealDelayXl1Blocks: z.int().positive(),\n /** Blocks after which an unrevealed commitment expires. */\n revealWindowEvmBlocks: z.int().positive(),\n /** Blocks after which an unrevealed commitment expires, on the XL1 clock. */\n revealWindowXl1Blocks: z.int().positive(),\n /** Where the allowed block reward comes from. */\n rewardSource: z.enum(['schedule', 'contract']),\n schema: z.literal(ChainParamsSchema),\n /** Offense code to the share of at-risk stake it slashes, in basis points. */\n slashFractionsBps: z.partialRecord(offenseCodeZod, z.int().nonnegative()),\n /** Distinct validator signatures a slash certificate needs. */\n slashQuorumCount: z.int().positive(),\n /** Version of this register document. */\n version: z.int().positive(),\n})\n\n/** One version of the chain parameter register. */\nexport type ChainParams = z.infer<typeof ChainParamsZod>\n\n/** Numeric-input-tolerant shape accepted when creating a register version. */\nexport type ChainParamsInput = z.input<typeof ChainParamsZod>\n\n/** Type guard that checks if a value is a valid ChainParams. */\nexport const isChainParams = zodIsFactory(ChainParamsZod)\n/** Converts a value to ChainParams, throwing if invalid. */\nexport const asChainParams = zodAsFactory(ChainParamsZod, 'asChainParams')\n/** Non-validating cast to ChainParams. */\nexport const toChainParams = zodToFactory(ChainParamsZod, 'toChainParams')\n\n/** Schema id for the register head pointer. */\nexport const ChainParamsHeadSchema = asSchema('network.xyo.s3.chain.params.head', true)\n/** Type literal for the register head schema. */\nexport type ChainParamsHeadSchema = typeof ChainParamsHeadSchema\n\n/** Zod schema for the mutable pointer naming the current register version. */\nexport const ChainParamsHeadZod = z.object({\n /** Hash of the version document, so a reader can tell it got the one the head meant. */\n hash: z.string(),\n schema: z.literal(ChainParamsHeadSchema),\n /** Version number the pointer names. */\n version: z.int().positive(),\n})\n\n/** The mutable pointer naming the current register version. */\nexport type ChainParamsHead = z.infer<typeof ChainParamsHeadZod>\n\n/** Type guard that checks if a value is a valid ChainParamsHead. */\nexport const isChainParamsHead = zodIsFactory(ChainParamsHeadZod)\n/** Converts a value to ChainParamsHead, throwing if invalid. */\nexport const asChainParamsHead = zodAsFactory(ChainParamsHeadZod, 'asChainParamsHead')\n\n/** Builds a validated register version. */\nexport function createChainParams(config: Omit<ChainParamsInput, 'schema'>): ChainParams {\n return ChainParamsZod.parse({ ...config, schema: ChainParamsSchema })\n}\n\n/** Builds a validated register head pointer. */\nexport function createChainParamsHead(version: number, hash: string): ChainParamsHead {\n return ChainParamsHeadZod.parse({\n hash, schema: ChainParamsHeadSchema, version,\n })\n}\n", "import type {\n OffenseCode, RuleActivationState, RuleId,\n} from '#protocol-model'\nimport {\n adjudicableRuleId, isRuleObservedAt, reportableRuleId, ruleActivationStateAt,\n} from '#protocol-model'\n\nimport type { ChainParams } from './chainParams.ts'\n\n/** Whether reports naming an offense at a height may be recorded. */\nexport function isOffenseReportableAt(params: ChainParams, offense: OffenseCode, height: number): boolean {\n return isRuleObservedAt(params, reportableRuleId(offense), height)\n}\n\n/**\n * Where an offense stands for adjudication at a height.\n *\n * Callers need the three-way answer rather than a boolean: inside the grace band a report is\n * still verified and recorded, it simply cannot be confirmed against anyone.\n */\nexport function offenseAdjudicationStateAt(\n params: ChainParams,\n offense: OffenseCode,\n height: number,\n): RuleActivationState {\n return ruleActivationStateAt(params, adjudicableRuleId(offense), height)\n}\n\n/**\n * The lowest protocol version a block at this height may declare, or undefined when nothing is\n * required yet.\n *\n * The floor rides with the anchor rules, since that is the release the version stamp first has to\n * mean something. Before then `block.protocol` is declared but unchecked, and rejecting on it\n * would fail blocks that were valid when they were made.\n * @param params The register version in force\n * @param height The XL1 height being judged\n * @returns The minimum protocol version, or undefined when unenforced\n */\nexport function protocolMinAt(params: ChainParams, height: number): number | undefined {\n return isRuleObservedAt(params, 'anchor-rules', height) ? params.protocolMin : undefined\n}\n\n/**\n * Checks that a new register version may follow the one already published.\n *\n * The register is append-only over history: a version may add rules and move future heights, but\n * never rewrite what was true at a height the chain has already passed. Without that, a rule\n * could be made retroactive and blocks that were valid when produced would become offenses.\n *\n * The one sanctioned rewrite is re-activation. A rule whose deactivation the chain has passed may\n * return at a new future height, and the spent deactivation is dropped in the same version \u2014 the\n * heights between read as unenforced either way, and only-forward moves mean history can never be\n * judged more strictly than it was lived.\n * @param previous The currently published version, when there is one\n * @param next The version being published\n * @param finalizedHeight The current finalized head height\n * @returns The reasons the version may not be published, empty when it may\n */\nexport function chainParamsSuccessionErrors(\n previous: ChainParams | undefined,\n next: ChainParams,\n finalizedHeight: number,\n): string[] {\n if (previous === undefined) return []\n const errors: string[] = []\n if (next.version <= previous.version) {\n errors.push(`version must increase: ${previous.version} -> ${next.version}`)\n }\n if (next.chainId !== previous.chainId) {\n errors.push(`chainId must not change: ${previous.chainId} -> ${next.chainId}`)\n }\n if (next.protocolMin < previous.protocolMin) {\n errors.push(`protocolMin must not lower: ${previous.protocolMin} -> ${next.protocolMin}`)\n }\n const previousDeactivations = previous.deactivations ?? {}\n const nextDeactivations = next.deactivations ?? {}\n const isReactivation = (ruleId: RuleId): boolean => {\n const deactivation = previousDeactivations[ruleId]\n const nextActivation = next.activations[ruleId]\n return deactivation !== undefined && deactivation <= finalizedHeight\n && nextActivation !== undefined && nextActivation > finalizedHeight\n && nextDeactivations[ruleId] === undefined\n }\n for (const [ruleId, height] of Object.entries(previous.activations)) {\n if (height > finalizedHeight) continue\n if (next.activations[ruleId as RuleId] === height) continue\n if (isReactivation(ruleId as RuleId)) continue\n errors.push(`activation for '${ruleId}' is already in force at ${height} and must not move`)\n }\n for (const [ruleId, height] of Object.entries(previousDeactivations)) {\n if (height > finalizedHeight) continue\n if (nextDeactivations[ruleId as RuleId] === height) continue\n if (isReactivation(ruleId as RuleId)) continue\n // dropping a spent deactivation outside a re-activation would retroactively re-enforce the rule\n errors.push(`deactivation for '${ruleId}' is already in force at ${height} and must not move`)\n }\n for (const [ruleId, height] of Object.entries(nextDeactivations)) {\n if (height < finalizedHeight && previousDeactivations[ruleId as RuleId] !== height) {\n errors.push(`deactivation for '${ruleId}' at ${height} is in the past`)\n }\n }\n return errors\n}\n\n/**\n * Checks the relationships a register version's economics must hold on their own (yellow \u00A711.2).\n *\n * Only register-derivable checks live here. The withdrawal-delay inequality needs the staking\n * contract's delay, so it belongs to the governance runbook that sets these numbers, not to a\n * document check every reader can run.\n * @param params The version being judged\n * @returns The reasons the version is internally inconsistent, empty when it is sound\n */\nexport function chainParamsInvariantErrors(params: ChainParams): string[] {\n const errors: string[] = []\n if (params.burnFloorBps + params.bountyShareBps > 10_000) {\n errors.push(`burnFloorBps + bountyShareBps must not exceed 10000: ${params.burnFloorBps} + ${params.bountyShareBps}`)\n }\n const minValidatorStake = tryBigInt(params.minValidatorStakeAtto)\n const bountyCap = tryBigInt(params.bountyCapAtto)\n if (minValidatorStake === undefined || bountyCap === undefined) {\n errors.push('minValidatorStakeAtto and bountyCapAtto must be parseable amounts')\n return errors\n }\n const counterSlashBps = BigInt(params.slashFractionsBps['invalid-slash-request'] ?? 0)\n const counterSlashMin = (minValidatorStake * counterSlashBps) / 10_000n\n if (counterSlashMin < bountyCap * 2n) {\n errors.push(\n `the counter-slash at minimum validator stake (${counterSlashMin}) must be at least twice bountyCapAtto (${bountyCap})`,\n )\n }\n return errors\n}\n\nfunction tryBigInt(value: string): bigint | undefined {\n try {\n return BigInt(value.startsWith('0x') ? value : `0x${value}`)\n } catch {\n return undefined\n }\n}\n", "import {\n EthAddressZod, HexRegExMinMaxMixedCaseWithPrefix,\n zodAsFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod/mini'\n\nconst EvmHashZod = z.string().check(z.regex(HexRegExMinMaxMixedCaseWithPrefix(32, 32)))\nconst EvmDataZod = z.string().check(z.regex(/^0x[\\dA-Fa-f]*$/))\n\n/** JSON-safe representation of one raw EVM contract log. */\nexport const EvmEventIndexLogZod = z.object({\n address: EthAddressZod,\n blockHash: EvmHashZod,\n blockNumber: z.number(),\n data: EvmDataZod,\n index: z.number(),\n topics: z.array(EvmHashZod),\n transactionHash: EvmHashZod,\n transactionIndex: z.number(),\n})\n\n/** Type for one raw EVM contract log in the event index. */\nexport type EvmEventIndexLog = z.infer<typeof EvmEventIndexLogZod>\n\n/** One immutable, address-scoped range of finalized EVM logs. */\nexport const EvmEventIndexFrameZod = z.object({\n fromBlock: z.number(),\n logs: z.array(EvmEventIndexLogZod),\n toBlock: z.number(),\n})\n\n/** Type for one immutable event-index frame. */\nexport type EvmEventIndexFrame = z.infer<typeof EvmEventIndexFrameZod>\n\n/** Static description of one contract event index. */\nexport const EvmEventIndexManifestZod = z.object({\n address: EthAddressZod,\n chainId: z.string(),\n deploymentBlock: z.number(),\n frameSize: z.number(),\n layout: z.literal('evm-contract-events-v1'),\n})\n\n/** Type for the event-index manifest document. */\nexport type EvmEventIndexManifest = z.infer<typeof EvmEventIndexManifestZod>\n\n/**\n * Mutable pointer written after all frames through `block` are durable.\n * Wire schema for the `EvmEventIndexHead` runner contract in `#protocol-lib`.\n */\nexport const EvmEventIndexHeadZod = z.object({\n address: EthAddressZod,\n block: z.number(),\n chainId: z.string(),\n hash: EvmHashZod,\n})\n\n/** Converts a value to EvmEventIndexFrame, throwing if invalid. */\nexport const asEvmEventIndexFrame = zodAsFactory(EvmEventIndexFrameZod, 'asEvmEventIndexFrame')\n/** Converts a value to EvmEventIndexHead, throwing if invalid. */\nexport const asEvmEventIndexHead = zodAsFactory(EvmEventIndexHeadZod, 'asEvmEventIndexHead')\n/** Converts a value to EvmEventIndexManifest, throwing if invalid. */\nexport const asEvmEventIndexManifest = zodAsFactory(EvmEventIndexManifestZod, 'asEvmEventIndexManifest')\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod'\n\nimport type { IndexSummaryFamily, IndexWatermark } from '#protocol-lib'\n\nimport { indexSummaryPathTemplate } from '../templates.ts'\n\n/** Bumped when the on-disk index layout changes shape, so readers can detect a mismatch. */\nexport const INDEX_LAYOUT_VERSION = 1\n\n/** Schema id for the index manifest document (the static layout descriptor). */\nexport const IndexManifestSchema = 'network.xyo.s3.index.manifest' as const\n/** Type literal for the index manifest schema. */\nexport type IndexManifestSchema = typeof IndexManifestSchema\n\n/** Schema id for the index head document (the progress watermark). */\nexport const IndexHeadSchema = 'network.xyo.s3.index.head' as const\n/** Type literal for the index head schema. */\nexport type IndexHeadSchema = typeof IndexHeadSchema\n\n/** Per-family descriptor carried in the manifest. */\nexport const IndexManifestFamilyZod = z.object({\n /** Highest step level published for this family. */\n maxStep: z.int().nonnegative(),\n /** Path template for the family's frames, e.g. `blocks/{level}/{index}.json`. */\n path: z.string(),\n})\n\n/** Type for one index manifest family descriptor. */\nexport type IndexManifestFamily = z.infer<typeof IndexManifestFamilyZod>\n\nconst indexFamiliesZod = z.object({\n balances: IndexManifestFamilyZod,\n blocks: IndexManifestFamilyZod,\n schemas: IndexManifestFamilyZod,\n transfers: IndexManifestFamilyZod,\n})\n\n/** Zod schema for the static index layout descriptor at `indexManifestPath()`. */\nexport const IndexManifestZod = z.object({\n families: indexFamiliesZod,\n schema: z.literal(IndexManifestSchema),\n version: z.int().positive(),\n})\n\n/** The static index layout descriptor at `indexManifestPath()`. */\nexport type IndexManifest = z.infer<typeof IndexManifestZod>\n\n/** Type guard that checks if a value is a valid IndexManifest. */\nexport const isIndexManifest = zodIsFactory(IndexManifestZod)\n/** Converts a value to IndexManifest, throwing if invalid. */\nexport const asIndexManifest = zodAsFactory(IndexManifestZod, 'asIndexManifest')\n/** Non-validating cast to IndexManifest. */\nexport const toIndexManifest = zodToFactory(IndexManifestZod, 'toIndexManifest')\n\n/** Completed frame counts per family in the index head watermark. */\nexport const IndexHeadFamiliesZod = z.object({\n balances: z.int().nonnegative(),\n blocks: z.int().nonnegative(),\n schemas: z.int().nonnegative(),\n transfers: z.int().nonnegative(),\n})\n\n/** Zod schema for the index progress watermark at `indexHeadPath()`. */\nexport const IndexHeadZod = z.object({\n /** Highest block the index is complete through. */\n block: z.int().nonnegative(),\n /** Completed frame counts per family. */\n families: IndexHeadFamiliesZod,\n /** Hash of that block. */\n hash: z.string(),\n schema: z.literal(IndexHeadSchema),\n /** ISO-8601 timestamp of the last update. */\n updatedAt: z.string(),\n version: z.int().positive(),\n})\n\n/** The index progress watermark at `indexHeadPath()`. */\nexport type IndexHead = z.infer<typeof IndexHeadZod>\n\n/** Type guard that checks if a value is a valid IndexHead. */\nexport const isIndexHead = zodIsFactory(IndexHeadZod)\n/** Converts a value to IndexHead, throwing if invalid. */\nexport const asIndexHead = zodAsFactory(IndexHeadZod, 'asIndexHead')\n/** Non-validating cast to IndexHead. */\nexport const toIndexHead = zodToFactory(IndexHeadZod, 'toIndexHead')\n\n/** Builds per-family manifest descriptors with path templates derived from the path builders. */\nexport function createIndexManifestFamilies(\n maxSteps: Record<IndexSummaryFamily, number>,\n): Record<IndexSummaryFamily, IndexManifestFamily> {\n return {\n balances: { maxStep: maxSteps.balances, path: indexSummaryPathTemplate('balances') },\n blocks: { maxStep: maxSteps.blocks, path: indexSummaryPathTemplate('blocks') },\n schemas: { maxStep: maxSteps.schemas, path: indexSummaryPathTemplate('schemas') },\n transfers: { maxStep: maxSteps.transfers, path: indexSummaryPathTemplate('transfers') },\n }\n}\n\n/** Builds a validated index manifest with path templates derived from the path builders. */\nexport function createIndexManifest(maxSteps: Record<IndexSummaryFamily, number>): IndexManifest {\n return asIndexManifest({\n families: createIndexManifestFamilies(maxSteps),\n schema: IndexManifestSchema,\n version: INDEX_LAYOUT_VERSION,\n }, true)\n}\n\n/** Builds a validated index head watermark from an indexer progress snapshot. */\nexport function createIndexHead(watermark: IndexWatermark, updatedAt?: string): IndexHead {\n const now = new Date()\n const resolvedUpdatedAt = updatedAt ?? now.toISOString()\n return asIndexHead({\n block: watermark.block,\n families: watermark.families,\n hash: watermark.hash,\n schema: IndexHeadSchema,\n updatedAt: resolvedUpdatedAt,\n version: INDEX_LAYOUT_VERSION,\n }, true)\n}\n", "import {\n HashZod, zodAsFactory, zodIsFactory,\n} from '@ariestools/sdk'\nimport { asSchema } from '@xyo-network/sdk'\nimport { z } from 'zod'\n\n/** Version of the durable network-stake rewards index layout. */\nexport const NETWORK_STAKE_REWARDS_INDEX_LAYOUT = 'network-stake-rewards-v1' as const\n/** Default reward policy identifier for protocol rewards without multipliers. */\nexport const NETWORK_STAKE_REWARDS_UNMULTIPLIED_POLICY = 'unmultiplied-v1' as const\n/** @deprecated Use NETWORK_STAKE_REWARDS_UNMULTIPLIED_POLICY. */\nexport const NETWORK_STAKE_REWARDS_BASE_POLICY = NETWORK_STAKE_REWARDS_UNMULTIPLIED_POLICY\n/** Schema of an immutable cumulative network-stake rewards snapshot payload. */\nexport const NetworkStakeRewardsIndexSnapshotSchema = asSchema('network.xyo.chain.stake.rewards.snapshot', true)\n\nconst DecimalBigIntZod = z.string().regex(/^(?:0|[1-9]\\d*)$/)\n/** Path-safe identifier for a deterministic reward policy. */\nexport const NetworkStakeRewardsPolicyIdZod = z.string().regex(/^[a-z0-9][a-z0-9._-]*$/)\nconst PositionRewardsZod = z.record(z.string().regex(/^(?:0|[1-9]\\d*)$/), DecimalBigIntZod)\nconst BlockRangeZod = z.tuple([z.number().int().nonnegative(), z.number().int().nonnegative()])\nconst StepIdentityJsonZod = z.object({\n block: z.number().int().nonnegative(),\n step: z.number().int().nonnegative(),\n})\n\n/** Static policy and source description for one rewards index tree. */\nexport const NetworkStakeRewardsIndexManifestZod = z.object({\n evmAddress: z.string(),\n evmChainId: z.string(),\n layout: z.literal(NETWORK_STAKE_REWARDS_INDEX_LAYOUT),\n policyId: NetworkStakeRewardsPolicyIdZod,\n stepLevels: z.array(z.number().int().nonnegative()),\n timeAnchor: z.object({\n externalGenesisTime: z.number().optional(),\n maxScanBlocks: z.number().optional(),\n }).optional(),\n})\n\n/** Static policy and source description for one rewards index tree. */\nexport type NetworkStakeRewardsIndexManifest = z.infer<typeof NetworkStakeRewardsIndexManifestZod>\n\n/** Immutable reward allocation for one completed XL1 reward step. */\nexport const NetworkStakeRewardsIndexStepZod = z.object({\n denominator: DecimalBigIntZod,\n externalRange: BlockRangeZod,\n layout: z.literal(NETWORK_STAKE_REWARDS_INDEX_LAYOUT),\n policyId: NetworkStakeRewardsPolicyIdZod,\n positionRewards: PositionRewardsZod,\n step: StepIdentityJsonZod,\n totalReward: DecimalBigIntZod,\n xl1Range: BlockRangeZod,\n})\n\n/** Immutable reward allocation for one completed XL1 reward step. */\nexport type NetworkStakeRewardsIndexStep = z.infer<typeof NetworkStakeRewardsIndexStepZod>\n\n/** Immutable cumulative position totals referenced by a mutable head. */\nexport const NetworkStakeRewardsIndexSnapshotZod = z.object({\n layout: z.literal(NETWORK_STAKE_REWARDS_INDEX_LAYOUT),\n policyId: NetworkStakeRewardsPolicyIdZod,\n positionRewards: PositionRewardsZod,\n schema: z.literal(NetworkStakeRewardsIndexSnapshotSchema),\n stepCount: z.number().int().nonnegative(),\n totalReward: DecimalBigIntZod,\n})\n\n/** Immutable cumulative position totals referenced by a mutable head. */\nexport type NetworkStakeRewardsIndexSnapshot = z.infer<typeof NetworkStakeRewardsIndexSnapshotZod>\n\n/** Mutable pointer written only after every referenced step and snapshot is durable. */\nexport const NetworkStakeRewardsIndexHeadZod = z.object({\n layout: z.literal(NETWORK_STAKE_REWARDS_INDEX_LAYOUT),\n policyId: NetworkStakeRewardsPolicyIdZod,\n positionCount: z.number().int().nonnegative(),\n processedThroughBlock: z.number().int().nonnegative(),\n snapshotHash: HashZod,\n source: z.object({\n evm: z.object({\n block: z.number().int().nonnegative(),\n hash: z.string(),\n }),\n xl1: z.object({\n block: z.number().int().nonnegative(),\n hash: z.string(),\n }),\n }),\n stepCount: z.number().int().nonnegative(),\n})\n\n/** Mutable pointer written only after every referenced step and snapshot is durable. */\nexport type NetworkStakeRewardsIndexHead = z.infer<typeof NetworkStakeRewardsIndexHeadZod>\n\n/** Checks whether a value is a valid rewards index manifest. */\nexport const isNetworkStakeRewardsIndexManifest = zodIsFactory(NetworkStakeRewardsIndexManifestZod)\n/** Converts a value to a rewards index manifest, throwing if invalid. */\nexport const asNetworkStakeRewardsIndexManifest = zodAsFactory(\n NetworkStakeRewardsIndexManifestZod,\n 'asNetworkStakeRewardsIndexManifest',\n)\n/** Converts a value to a rewards index step, throwing if invalid. */\nexport const asNetworkStakeRewardsIndexStep = zodAsFactory(\n NetworkStakeRewardsIndexStepZod,\n 'asNetworkStakeRewardsIndexStep',\n)\n/** Converts a value to a rewards index snapshot, throwing if invalid. */\nexport const asNetworkStakeRewardsIndexSnapshot = zodAsFactory(\n NetworkStakeRewardsIndexSnapshotZod,\n 'asNetworkStakeRewardsIndexSnapshot',\n)\n/** Converts a value to a rewards index head, throwing if invalid. */\nexport const asNetworkStakeRewardsIndexHead = zodAsFactory(\n NetworkStakeRewardsIndexHeadZod,\n 'asNetworkStakeRewardsIndexHead',\n)\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { asSchema } from '@xyo-network/sdk'\nimport { z } from 'zod'\n\nimport { OffenseCodes } from '#protocol-model'\n\n/** Schema id for the slash index head pointer. */\nexport const SlashIndexHeadSchema = asSchema('network.xyo.s3.slash.index.head', true)\n/** Type literal for the slash index head schema. */\nexport type SlashIndexHeadSchema = typeof SlashIndexHeadSchema\n\n/** Bumped when the index layout changes, so readers can detect a mismatch. */\nexport const SLASH_INDEX_VERSION = 1\n\nconst offenseCodeZod = z.enum(OffenseCodes)\n\n/**\n * Zod schema for the slash index head pointer.\n *\n * Written last in every pass. A reader that sees this pointer can rely on everything it names\n * already being there, which is what makes a crashed pass safe to simply re-run: the pointer only\n * ever advances over work that finished.\n */\nexport const SlashIndexHeadZod = z.object({\n /** Highest finalized height the index has folded in. */\n height: z.int().nonnegative(),\n /** Layout version of the objects this head points at. */\n indexVersion: z.int().positive(),\n schema: z.literal(SlashIndexHeadSchema),\n /** When the pass that wrote this ran, on the EVM clock, when it was known. */\n anchor: z.optional(z.int().nonnegative()),\n})\n\n/** The slash index head pointer. */\nexport type SlashIndexHead = z.infer<typeof SlashIndexHeadZod>\n\n/** Type guard that checks if a value is a valid SlashIndexHead. */\nexport const isSlashIndexHead = zodIsFactory(SlashIndexHeadZod)\n/** Converts a value to SlashIndexHead, throwing if invalid. */\nexport const asSlashIndexHead = zodAsFactory(SlashIndexHeadZod, 'asSlashIndexHead')\n/** Non-validating cast to SlashIndexHead. */\nexport const toSlashIndexHead = zodToFactory(SlashIndexHeadZod, 'toSlashIndexHead')\n\n/** Schema id for the per-offense aggregate. */\nexport const SlashIndexKeyRecordSchema = asSchema('network.xyo.s3.slash.index.key', true)\n/** Type literal for the per-offense aggregate schema. */\nexport type SlashIndexKeyRecordSchema = typeof SlashIndexKeyRecordSchema\n\n/**\n * Zod schema for everything recorded about one offense.\n *\n * The aggregates are the only discovery surface, because the published read path cannot list\n * objects. That is why they are allowed to be rewritten while everything else is immutable \u2014 and\n * why every rewrite only appends, so a pass that runs twice converges instead of losing history.\n */\nexport const SlashIndexKeyRecordZod = z.object({\n /** Who is accused. */\n accused: z.string(),\n /** Hash of the adjudication that closed it, when one has. */\n adjudication: z.optional(z.string()),\n /** The canonical height the offense is located at. */\n block: z.int().nonnegative(),\n /** Hashes of challenges filed against reports of it. */\n challenges: z.array(z.string()),\n /** The chain it happened on. */\n chain: z.string(),\n /** How it was resolved, when it has been. */\n outcome: z.optional(z.enum(['confirmed', 'refuted', 'indeterminate', 'invalid'])),\n /** Which offense class. */\n offense: offenseCodeZod,\n /** Hashes of every report filed for it, earliest first. */\n requests: z.array(z.string()),\n schema: z.literal(SlashIndexKeyRecordSchema),\n})\n\n/** Everything recorded about one offense. */\nexport type SlashIndexKeyRecord = z.infer<typeof SlashIndexKeyRecordZod>\n\n/** Type guard that checks if a value is a valid SlashIndexKeyRecord. */\nexport const isSlashIndexKeyRecord = zodIsFactory(SlashIndexKeyRecordZod)\n/** Converts a value to SlashIndexKeyRecord, throwing if invalid. */\nexport const asSlashIndexKeyRecord = zodAsFactory(SlashIndexKeyRecordZod, 'asSlashIndexKeyRecord')\n\n/** Builds a validated slash index head. */\nexport function createSlashIndexHead(height: number, anchor?: number): SlashIndexHead {\n return SlashIndexHeadZod.parse({\n anchor, height, indexVersion: SLASH_INDEX_VERSION, schema: SlashIndexHeadSchema,\n })\n}\n", "import {\n HashZod, zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport { z } from 'zod'\n\nimport { ChainIdZod, XL1BlockNumberZod } from '#protocol-model'\n\nimport { transactionInclusionPathTemplate } from '../templates.ts'\n\n/** Versioned identifier for the finalized transaction-inclusion index layout. */\nexport const TRANSACTION_INCLUSION_INDEX_LAYOUT = 'transaction-inclusions-v1' as const\n\n/** Static descriptor for the transaction-inclusion index. */\nexport const TransactionInclusionManifestZod = z.object({\n /** XL1 chain whose finalized transactions are indexed. */\n chain: ChainIdZod,\n /** Versioned layout identifier. */\n layout: z.literal(TRANSACTION_INCLUSION_INDEX_LAYOUT),\n /** Hash-addressed path template, for example `transactions/by-hash/{hash}.json`. */\n path: z.string(),\n})\n\n/** Static descriptor for the transaction-inclusion index. */\nexport type TransactionInclusionManifest = z.infer<typeof TransactionInclusionManifestZod>\n\n/** Mutable pointer written after every transaction inclusion through `block` is durable. */\nexport const TransactionInclusionHeadZod = z.object({\n /** Highest finalized block fully represented by the lookup. */\n block: XL1BlockNumberZod,\n /** Hash of the highest finalized block fully represented by the lookup. */\n blockHash: HashZod,\n /** XL1 chain whose finalized transactions are indexed. */\n chain: ChainIdZod,\n /** Number of transaction-inclusion records represented through `block`. */\n entries: z.int().nonnegative(),\n /** Versioned layout identifier. */\n layout: z.literal(TRANSACTION_INCLUSION_INDEX_LAYOUT),\n})\n\n/** Mutable transaction-inclusion progress pointer. */\nexport type TransactionInclusionHead = z.infer<typeof TransactionInclusionHeadZod>\n\n/** Type guard that checks whether a value is a valid transaction-inclusion manifest. */\nexport const isTransactionInclusionManifest = zodIsFactory(TransactionInclusionManifestZod)\n/** Converts a value to a transaction-inclusion manifest, throwing when invalid. */\nexport const asTransactionInclusionManifest = zodAsFactory(\n TransactionInclusionManifestZod,\n 'asTransactionInclusionManifest',\n)\n/** Converts a value to a transaction-inclusion manifest, returning undefined when invalid. */\nexport const toTransactionInclusionManifest = zodToFactory(\n TransactionInclusionManifestZod,\n 'toTransactionInclusionManifest',\n)\n\n/** Type guard that checks whether a value is a valid transaction-inclusion head. */\nexport const isTransactionInclusionHead = zodIsFactory(TransactionInclusionHeadZod)\n/** Converts a value to a transaction-inclusion head, throwing when invalid. */\nexport const asTransactionInclusionHead = zodAsFactory(\n TransactionInclusionHeadZod,\n 'asTransactionInclusionHead',\n)\n/** Converts a value to a transaction-inclusion head, returning undefined when invalid. */\nexport const toTransactionInclusionHead = zodToFactory(\n TransactionInclusionHeadZod,\n 'toTransactionInclusionHead',\n)\n\n/** Builds the static descriptor for a chain's transaction-inclusion index. */\nexport function createTransactionInclusionManifest(\n chain: TransactionInclusionManifest['chain'],\n): TransactionInclusionManifest {\n return asTransactionInclusionManifest({\n chain,\n layout: TRANSACTION_INCLUSION_INDEX_LAYOUT,\n path: transactionInclusionPathTemplate(),\n }, true)\n}\n\n/** Builds the mutable progress pointer for a transaction-inclusion index. */\nexport function createTransactionInclusionHead(\n head: Omit<TransactionInclusionHead, 'layout'>,\n): TransactionInclusionHead {\n return asTransactionInclusionHead({\n ...head,\n layout: TRANSACTION_INCLUSION_INDEX_LAYOUT,\n }, true)\n}\n", "import type { ChainId } from '#protocol-lib'\n\nimport type { ChainParams } from './chainParams.ts'\nimport { createChainParams } from './chainParams.ts'\n\n/**\n * Planning values for the decentralization parameters.\n *\n * These are the numbers the papers propose, not values any network is bound to. They are carried\n * here so a register can be authored without inventing them, and so the one place they live is\n * the one place a governance change edits.\n *\n * The stake amounts are deliberately absent: they are denominated in the staking token's smallest\n * unit and are a governance decision per network, so a default would be a guess wearing a\n * default's clothing.\n */\nexport const DEFAULT_CHAIN_PARAMS = {\n attestationRewardBps: 1000,\n bountyShareBps: 1000,\n burnFloorBps: 9000,\n catalogVersion: 1,\n challengeWindowEvmBlocks: 14_400,\n evidenceFreshnessEvmBlocks: 21_600,\n evidenceRetentionXl1Blocks: 60_000,\n executionDelayEvmBlocks: 7200,\n freshnessBandEvmBlocks: 2048,\n graceBandXl1Blocks: 1440,\n maturityEvmBlocks: 32,\n minStakeAgeEvmBlocks: 100_800,\n opsAllowanceEvmBlocks: 7200,\n protocolMin: 1_003_000,\n revealDelayEvmBlocks: 60,\n revealDelayXl1Blocks: 10,\n revealWindowEvmBlocks: 7200,\n revealWindowXl1Blocks: 1440,\n slashFractionsBps: {\n 'equivocation': 1500,\n 'false-anchor': 750,\n 'false-attestation': 500,\n 'ineligible-production': 100,\n 'invalid-block': 500,\n 'invalid-slash-request': 750,\n 'reward-overmint': 1500,\n },\n slashQuorumCount: 5,\n}\n\n/** What a trusted-posture register needs beyond the planning defaults. */\nexport interface TrustedPostureConfig {\n /** Address whose adjudication records would be honored, once any rule is on. */\n arbiter: string\n /** Absolute bounty ceiling, in the smallest unit. */\n bountyCapAtto?: string\n /** Chain these parameters govern. */\n chainId: ChainId\n /** Minimum producer self-bond, in the smallest unit. */\n minProducerSelfBondAtto?: string\n /** Minimum producer stake, in the smallest unit. */\n minProducerStakeAtto?: string\n /** Minimum validator stake, in the smallest unit. */\n minValidatorStakeAtto?: string\n /** Refundable reporter deposit, in the smallest unit. */\n reporterDepositAtto?: string\n /** Where the allowed block reward comes from. */\n rewardSource?: 'schedule' | 'contract'\n /** Version number; the first published register is 1. */\n version?: number\n}\n\n/**\n * Builds a register describing a network that enforces nothing.\n *\n * This is the first version a network publishes, and it changes nothing about how that network\n * behaves: no rule has an activation height, so every gate reads as inactive and the chain runs\n * exactly as it did before the register existed. What it does provide is the control plane \u2014\n * somewhere for a later version to record an activation, and something for nodes to be reading\n * long before the first rule turns on.\n *\n * The stake amounts default to zero because they are meaningless while nothing consumes them. A\n * network that intends to enforce sets them in the version that first activates admission, when\n * they have been sized against the value an offense could extract.\n * @param config Chain identity and any amounts already decided\n * @returns A register version with no activations\n */\nexport function createTrustedPostureParams(config: TrustedPostureConfig): ChainParams {\n return createChainParams({\n ...DEFAULT_CHAIN_PARAMS,\n activations: {},\n arbiter: config.arbiter,\n bountyCapAtto: config.bountyCapAtto ?? '00',\n chainId: config.chainId,\n minProducerSelfBondAtto: config.minProducerSelfBondAtto ?? '00',\n minProducerStakeAtto: config.minProducerStakeAtto ?? '00',\n minValidatorStakeAtto: config.minValidatorStakeAtto ?? '00',\n reporterDepositAtto: config.reporterDepositAtto ?? '00',\n rewardSource: config.rewardSource ?? 'contract',\n version: config.version ?? 1,\n })\n}\n", "import type { EthAddress } from '@ariestools/sdk'\n\nfunction root(address: EthAddress): string {\n return `evm/events/${address.toLowerCase()}`\n}\n\n/** Path of one immutable event-index frame within the index bucket. */\nexport function evmEventIndexFramePath(address: EthAddress, frameIndex: number): string {\n return `${root(address)}/frames/${frameIndex}.json`\n}\n\n/** Path of the mutable event-index head pointer within the index bucket. */\nexport function evmEventIndexHeadPath(address: EthAddress): string {\n return `${root(address)}/head.json`\n}\n\n/** Path of the event-index manifest within the index bucket. */\nexport function evmEventIndexManifestPath(address: EthAddress): string {\n return `${root(address)}/manifest.json`\n}\n\n/** Path of the mutable partial-frame tail within the index bucket. */\nexport function evmEventIndexTailPath(address: EthAddress): string {\n return `${root(address)}/tail.json`\n}\n", "import type { Hash } from '@ariestools/sdk'\n\nimport type { StepIdentity } from '#protocol-model'\n\nfunction root(policyId: string): string {\n return `rewards/network-stake/v1/${policyId}`\n}\n\n/** Path of the mutable rewards-index head. */\nexport function networkStakeRewardsIndexHeadPath(policyId: string): string {\n return `${root(policyId)}/head.json`\n}\n\n/** Path of the static rewards-index manifest. */\nexport function networkStakeRewardsIndexManifestPath(policyId: string): string {\n return `${root(policyId)}/manifest.json`\n}\n\n/** Path of one immutable cumulative position snapshot. */\nexport function networkStakeRewardsIndexSnapshotPath(policyId: string, snapshotHash: Hash): string {\n return `${root(policyId)}/snapshots/${snapshotHash}.json`\n}\n\n/** Path of one immutable completed-step reward allocation. */\nexport function networkStakeRewardsIndexStepPath(policyId: string, step: StepIdentity): string {\n return `${root(policyId)}/steps/${step.step}/${step.block}.json`\n}\n", "import type { Hash } from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk'\n\nimport type { OffenseCode } from '#protocol-model'\n\nconst ROOT = 'slash/v1'\n\n/** Path of the mutable slash-index head. */\nexport function slashIndexHeadPath(): string {\n return `${ROOT}/head.json`\n}\n\n/** Path of the static slash-index manifest. */\nexport function slashIndexManifestPath(): string {\n return `${ROOT}/manifest.json`\n}\n\n/** Path of one immutable recorded slash request. */\nexport function slashIndexRequestPath(hash: Hash): string {\n return `${ROOT}/requests/by-hash/${hash}.json`\n}\n\n/** Path of one immutable recorded slash commitment. */\nexport function slashIndexCommitPath(hash: Hash): string {\n return `${ROOT}/commits/by-hash/${hash}.json`\n}\n\n/** Path of one immutable recorded slash challenge. */\nexport function slashIndexChallengePath(hash: Hash): string {\n return `${ROOT}/challenges/by-hash/${hash}.json`\n}\n\n/** Path of one immutable recorded slash adjudication. */\nexport function slashIndexAdjudicationPath(hash: Hash): string {\n return `${ROOT}/adjudications/by-hash/${hash}.json`\n}\n\n/**\n * Path of the aggregate for one offense.\n *\n * Keyed by the canonical offense identity rather than by any report, so several reports of the\n * same misconduct converge on one object instead of accumulating as separate accusations.\n */\nexport function slashIndexKeyPath(accused: XyoAddress, offense: OffenseCode, block: number): string {\n return `${ROOT}/keys/${accused.toLowerCase()}/${offense}/${block}.json`\n}\n\n/** Path of one producer's offense history. */\nexport function slashIndexAccusedPath(address: XyoAddress): string {\n return `${ROOT}/accused/${address.toLowerCase()}.json`\n}\n\n/** Path of one reporter's claim history. */\nexport function slashIndexClaimantPath(address: XyoAddress): string {\n return `${ROOT}/claimants/${address.toLowerCase()}.json`\n}\n\n/** Path of one published admission shadow report. */\nexport function admissionShadowPath(height: number): string {\n return `admission/shadow/${height}.json`\n}\n\n/** Path of the mutable pointer to the newest admission shadow report. */\nexport function admissionShadowHeadPath(): string {\n return 'admission/shadow/head.json'\n}\n", "import type { NetworkId } from '../models/index.ts'\n\n/** Builds URLs to pages on an XL1 chain explorer for a specific network. */\nexport class ExplorerLinks {\n /** Explorer origin with trailing slashes removed. */\n readonly explorerUrl: string\n /** Network identifier included in generated links. */\n readonly networkId: NetworkId\n\n /**\n * Creates a link builder for one explorer deployment and network.\n *\n * @param explorerUrl Base explorer URL, with or without trailing slashes.\n * @param networkId Network segment included in every generated URL.\n */\n constructor(explorerUrl: string, networkId: NetworkId) {\n this.explorerUrl = explorerUrl.replace(/\\/+$/, '')\n this.networkId = networkId\n }\n\n /** `{explorerUrl}/xl1/{networkId}/address/{address}` */\n address(address: string): string {\n return `${this.network()}/address/${address}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/addresses` */\n addresses(): string {\n return `${this.network()}/addresses`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/block/{blockHash}` */\n block(blockHash: string): string {\n return `${this.network()}/block/${blockHash}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/block/number/{blockNumber}` */\n blockByNumber(blockNumber: number | string): string {\n return `${this.network()}/block/number/${blockNumber}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/block/{blockHash}/payload/{payloadHash}[/{render}]` */\n blockPayload(blockHash: string, payloadHash: string, render?: string): string {\n const base = `${this.network()}/block/${blockHash}/payload/${payloadHash}`\n return render === undefined ? base : `${base}/${render}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/blocks` */\n blocks(): string {\n return `${this.network()}/blocks`\n }\n\n /** `{explorerUrl}/xl1/{networkId}` */\n network(): string {\n return `${this.explorerUrl}/xl1/${this.networkId}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/transaction/{txHash}` */\n transaction(txHash: string): string {\n return `${this.network()}/transaction/${txHash}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/transaction/{txHash}/payload/{payloadHash}[/{render}]` */\n transactionPayload(txHash: string, payloadHash: string, render?: string): string {\n const base = `${this.network()}/transaction/${txHash}/payload/${payloadHash}`\n return render === undefined ? base : `${base}/${render}`\n }\n\n /** `{explorerUrl}/xl1/{networkId}/transactions` */\n transactions(): string {\n return `${this.network()}/transactions`\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["networkNodeMap", "asSchema", "zodAsFactory", "zodIsFactory", "z", "zodAsFactory", "zodIsFactory", "zodToFactory", "z", "z", "zodIsFactory", "zodAsFactory", "zodToFactory", "zodAsFactory", "zodIsFactory", "zodToFactory", "asSchema", "z", "ChainIdZod", "NumberishZod", "zodAsFactory", "z", "zodAsFactory", "zodIsFactory", "zodToFactory", "z", "z", "zodIsFactory", "zodAsFactory", "zodToFactory", "zodAsFactory", "zodIsFactory", "asSchema", "z", "zodAsFactory", "zodIsFactory", "zodToFactory", "asSchema", "z", "OffenseCodes", "offenseCodeZod", "HashZod", "zodAsFactory", "zodIsFactory", "zodToFactory", "z", "ChainIdZod", "z", "ChainIdZod", "HashZod", "zodIsFactory", "zodAsFactory", "zodToFactory", "root"]
7
7
  }
@@ -1689,6 +1689,9 @@ var RuleIds = [
1689
1689
  "eligibility-admission",
1690
1690
  "attestation-admission",
1691
1691
  "certificate-execution",
1692
+ // reserved: named by the papers but not yet specified, so a register may record them early
1693
+ "fork-choice-v2",
1694
+ "bridge-value-ceiling",
1692
1695
  ...OffenseCodes.map((code) => `${code}.reportable`),
1693
1696
  ...OffenseCodes.map((code) => `${code}.adjudicable`)
1694
1697
  ];