@xyo-network/xl1-protocol-sdk 1.16.6 → 1.16.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/index.mjs +2 -1
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/simple/gateway/SimpleXyoGatewayRunner.d.ts +1 -0
- package/dist/neutral/simple/gateway/SimpleXyoGatewayRunner.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/simple/gateway/SimpleXyoGatewayRunner.ts +2 -1
package/dist/neutral/index.mjs
CHANGED
|
@@ -1860,8 +1860,9 @@ var SimpleXyoGatewayRunner = class {
|
|
|
1860
1860
|
signedTx
|
|
1861
1861
|
];
|
|
1862
1862
|
}
|
|
1863
|
+
/** @deprecated use connectionInstance instead */
|
|
1863
1864
|
connection() {
|
|
1864
|
-
|
|
1865
|
+
return this.gateway.connection();
|
|
1865
1866
|
}
|
|
1866
1867
|
removeDataLake(index) {
|
|
1867
1868
|
this._dataLakes[index] = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/block/hydrate/allHashesPresent.ts","../../src/block/hydrate/blockPayloadsFromHydratedBlock.ts","../../src/block/hydrate/flattenHydratedBlock.ts","../../src/block/hydrate/flattenHydratedBlocks.ts","../../src/block/hydrate/hydrateBlock.ts","../../src/block/hydrate/transactionsFromHydratedBlock.ts","../../src/block/hydrate/tryHydrateBlock.ts","../../src/block/primitives/blockFromBlockNumber.ts","../../src/model/ChainContext/ChainContext.ts","../../src/driver/cache/LruCacheMap.ts","../../src/driver/memory/MemoryMap.ts","../../src/model/StakeEvents.ts","../../src/block/primitives/frames/calculateFramesFromRange.ts","../../src/block/primitives/frames/deepCalculateFramesFromRange.ts","../../src/block/primitives/hashFromBlockNumber.ts","../../src/block/primitives/model.ts","../../src/block/primitives/toStepIdentityString.ts","../../src/block/primitives/transfers/transfersStepSummaryFromRange.ts","../../src/payloads/AddressPairPayload.ts","../../src/payloads/netBalancesForPayloads.ts","../../src/payloads/netTransfersForPayloads.ts","../../src/payloads/summary/BalancesStepSummary.ts","../../src/payloads/summary/StepSummary.ts","../../src/payloads/summary/TransfersSummary.ts","../../src/SignedBigInt.ts","../../src/block/primitives/transfers/transfersSummary.ts","../../src/config/Config.ts","../../src/config/Api.ts","../../src/validation/block/error.ts","../../src/validation/lib/isLocalhost.ts","../../src/validation/lib/getUrl.ts","../../src/validation/schema/Address.ts","../../src/validation/schema/Mnemonic.ts","../../src/config/App.ts","../../src/config/Bridge.ts","../../src/config/Chain.ts","../../src/config/Evm.ts","../../src/config/Log.ts","../../src/config/Mempool.ts","../../src/config/Producer.ts","../../src/config/RewardRedemptionApi.ts","../../src/config/storage/driver/Mongo.ts","../../src/config/storage/Storage.ts","../../src/config/Telemetry.ts","../../src/config/Validation.ts","../../src/config/UsageMeta.ts","../../src/constants.ts","../../src/eip-712/Payloads/EIP712Data.ts","../../src/eip-712/Types.ts","../../src/eip-712/Payloads/EIP712Signature.ts","../../src/eip-712/sign.ts","../../src/eip-712/verify.ts","../../src/multipliers.ts","../../src/primitives/readPayloadMapFromStore.ts","../../src/primitives/step/completedStepRewardAddress.ts","../../src/primitives/step/derivedReceiveAddress.ts","../../src/primitives/step/stepBlockRange.ts","../../src/primitives/step/stepTransferIndex.ts","../../src/primitives/summary/balances/balancesStepSummaryFromRange.ts","../../src/primitives/summary/balances/balancesSummary.ts","../../src/primitives/timeBudget.ts","../../src/primitives/transaction/elevatedPayloads.ts","../../src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts","../../src/simple/client/SimpleXyoClient.ts","../../src/simple/datalake/SimpleDataLakeViewer.ts","../../src/simple/datalake/SimpleDataLakeRunner.ts","../../src/simple/gateway/SimpleXyoGateway.ts","../../src/simple/gateway/SimpleXyoGatewayRunner.ts","../../src/transaction/buildTransaction.ts","../../src/transaction/buildUnsignedTransaction.ts","../../src/transaction/confirmSubmittedTransaction.ts","../../src/transaction/hydrateTransaction.ts","../../src/transaction/primitives/transactionBlockByteCount.ts","../../src/transaction/primitives/transactionElevatedPayloads.ts","../../src/transaction/primitives/transactionOperations.ts","../../src/transaction/primitives/transactionRequiredGas.ts","../../src/transaction/script.ts","../../src/transaction/signTransaction.ts","../../src/simple/network/SimpleXyoNetwork.ts","../../src/simple/network/lib/FailedNetworkStatusPayloads.ts","../../src/simple/network/lib/StatusNetworks.ts","../../src/simple/permissions/SimpleXyoPermissions.ts","../../src/simple/permissions/store/MemoryPermissions.ts","../../src/simple/runner/SimpleXyoRunner.ts","../../src/simple/signer/SimpleXyoSigner.ts","../../src/time/primitives/xl1BlockNumberToEthBlockNumber.ts","../../src/wallet/generateXyoBaseWalletFromPhrase.ts","../../src/wallet/paths.ts"],"sourcesContent":["import type { Hash } from '@xylabs/hex'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\n\nexport function allHashesPresent(hashes: Hash[], payloads: WithStorageMeta<Payload>[]): boolean {\n const payloadHashes = new Set(payloads.map(p => p._hash))\n return hashes.every(hash => payloadHashes.has(hash))\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const blockPayloadsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<Payload>[] => {\n return block[0].payload_hashes.map(hash => assertEx(\n block[1].find(p => p._hash === hash),\n () => `missing payload ${hash}`,\n )).filter(x => !isTransactionBoundWitnessWithStorageMeta(x))\n}\n","import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\n\nexport const flattenHydratedBlock = (hydratedBlock: HydratedBlock): WithStorageMeta<Payload>[] => {\n const [blk, blkPayloads] = hydratedBlock\n return [...blkPayloads, blk]\n}\n","import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\n\nimport { flattenHydratedBlock } from './flattenHydratedBlock.ts'\n\nexport const flattenHydratedBlocks = (hydratedBlocks: HydratedBlock[]): WithStorageMeta<Payload>[] =>\n hydratedBlocks.flatMap(blk => flattenHydratedBlock(blk))\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { asBlockBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport type { ChainStoreRead } from '../../model/index.ts'\nimport { allHashesPresent } from './allHashesPresent.ts'\n\nexport const hydrateBlock = async (\n { chainMap }: ChainStoreRead,\n hash: Hash,\n maxDepth: number = 1,\n minDepth = maxDepth,\n): Promise<HydratedBlock> => {\n assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')\n assertEx(minDepth >= 0, () => 'minDepth must be greater than or equal to 0')\n assertEx(maxDepth >= minDepth, () => 'maxDepth must be greater than or equal to minDepth')\n\n const bw = assertEx(asBlockBoundWitnessWithStorageMeta(\n assertEx(await chainMap.get(hash), () => `block ${hash} not found`),\n ), () => `hash ${hash} is not a BlockBoundWitness`)\n\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await chainMap.getMany(bw.payload_hashes)\n if (minDepth === 1) assertEx(allHashesPresent(bw.payload_hashes, blkPayloads), () => `Unable to find all payloads for block ${hash}`)\n if (maxDepth === 1) return [bw, blkPayloads]\n const transactions = blkPayloads.filter(isTransactionBoundWitnessWithStorageMeta)\n const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)\n const transactionsPayloads = await chainMap.getMany(transactionsPayloadHashes)\n assertEx(allHashesPresent(transactionsPayloadHashes, transactionsPayloads), () => `Unable to find all payloads for transactions in block ${hash}`)\n const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))\n const allPayloads = await chainMap.getMany([...allPayloadsHashes])\n const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))\n if (maxDepth === 2) assertEx(allHashesPresent(\n [...allPayloadsHashes],\n allPayloadsFiltered,\n ), () => `Unable to find all payloads for transactions in block ${hash}`)\n return [bw, allPayloadsFiltered]\n}\n","import { filterAs } from '@xylabs/array'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport { asTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const transactionsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<TransactionBoundWitness>[] => {\n return filterAs(block[1], asTransactionBoundWitnessWithStorageMeta)\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const tryHydrateBlock = async (\n archivist: ReadArchivist,\n hash: Hash,\n maxDepth: number = 1,\n): Promise<HydratedBlock | undefined> => {\n assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')\n const bw = (await archivist.get([hash])).find(isBlockBoundWitnessWithStorageMeta)\n if (!bw) return undefined\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await archivist.get(bw.payload_hashes)\n if (maxDepth === 1) return [bw, blkPayloads]\n const transactions = blkPayloads.filter(isTransactionBoundWitnessWithStorageMeta)\n const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)\n const transactionsPayloads = await archivist.get(transactionsPayloadHashes)\n const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))\n const allPayloads = await archivist.get([...allPayloadsHashes])\n const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))\n return [bw, allPayloadsFiltered]\n}\n","import { asHash, type Hash } from '@xylabs/hex'\nimport { toSafeJsonString } from '@xylabs/object'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness, XL1BlockNumber } from '@xyo-network/xl1-protocol'\nimport { asBlockBoundWitnessWithStorageMeta, StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { type ChainContextRead, withContextCacheResponse } from '../../model/index.ts'\n\nexport async function blockFromBlockNumber(context: ChainContextRead, blockNumber: XL1BlockNumber): Promise<WithStorageMeta<BlockBoundWitness>> {\n const cacheKey = `${blockNumber}`\n return await withContextCacheResponse(context, 'blockFromBlockNumber', cacheKey, async () => {\n const [headHash] = await context.head()\n const result = await context.store.chainMap.get(headHash)\n let currentBlock = asBlockBoundWitnessWithStorageMeta(result, () => `Head block not found for hash: ${headHash}`, { required: true })\n if (currentBlock.block < blockNumber) {\n throw new Error(`Error: Block number ${blockNumber} is greater than head ${currentBlock.block}.`)\n }\n while (currentBlock.block > blockNumber) {\n let jumpHash: Hash | null = currentBlock.previous\n let jumpBlockNumber = currentBlock.block - 1\n for (const [step, stepSize] of StepSizes.entries()) {\n const possibleJumpBlockNumber = currentBlock.block - (currentBlock.block % stepSize) - 1\n if (possibleJumpBlockNumber >= blockNumber && possibleJumpBlockNumber <= jumpBlockNumber) {\n jumpBlockNumber = possibleJumpBlockNumber\n jumpHash = asHash(currentBlock.step_hashes.at(step), () => `Step hash not found for step ${step} in block ${currentBlock.block}`)\n }\n }\n const newBlock = await context.store.chainMap.get(\n asHash(jumpHash, () => `Jump hash not found for block number [${blockNumber}]: ${jumpBlockNumber} ${toSafeJsonString(currentBlock, 10)}`),\n )\n currentBlock = asBlockBoundWitnessWithStorageMeta(newBlock, () => `Block not found for hash: ${jumpHash}`, { required: true })\n if (currentBlock.block === blockNumber) {\n break\n }\n if (currentBlock.block < blockNumber) {\n throw new Error(`Block number ${blockNumber} is not a valid step block number for block ${headHash}.`)\n }\n }\n return currentBlock\n })\n}\n","import type { Logger } from '@xylabs/logger'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\n\nimport { LruCacheMap, MemoryMap } from '../../driver/index.ts'\nimport type { MapType } from '../../map/index.ts'\nimport type { ChainIdentity } from '../ChainIdentity.ts'\nimport type {\n ChainStakeContext, ChainStakeContextRead, ChainStakeContextWrite,\n} from './ChainStakeContext.ts'\nimport type { ChainStateContextRead, ChainStateContextWrite } from './ChainStateContext.ts'\nimport type {\n ChainStoreContext, ChainStoreContextRead, ChainStoreContextWrite,\n} from './ChainStoreContext.ts'\n\nexport interface BaseContext<TCacheValue = string | object | number | bigint> {\n caches?: Record<string, MapType<string, TCacheValue>>\n logger?: Logger\n}\n\nexport function contextCache<TCacheValue>(\n context: BaseContext<TCacheValue | unknown>,\n name: string,\n create?: () => MapType<string, TCacheValue>,\n): MapType<string, TCacheValue> {\n if (!context.caches) {\n context.caches = {}\n }\n if (isUndefined(context.caches[name])) {\n context.caches[name] = create?.() ?? new MemoryMap<string, TCacheValue>()\n }\n return context.caches[name] as MapType<string, TCacheValue>\n}\n\nexport async function withContextCacheResponse<T extends {} | string | number | bigint>(\n context: BaseContext,\n name: string,\n key: string,\n func: () => Promise<T extends {} | string | number | bigint ? T : never>,\n options?: { max?: number },\n): Promise<T> {\n const cache = contextCache<T>(\n context,\n name,\n () => new LruCacheMap<string, T>({ max: options?.max ?? 10_000 }),\n )\n const cacheResult = await cache.get(key)\n if (isDefined(cacheResult)) {\n return cacheResult\n }\n const result = await func()\n await cache.set(key, result)\n return result\n}\n\nexport interface ChainContextWrite extends BaseContext, ChainIdentity, ChainStateContextWrite, ChainStoreContextWrite {}\n\nexport interface StakedChainContextWrite extends BaseContext, ChainContextWrite, ChainStakeContextWrite {}\n\nexport interface ChainContextRead extends BaseContext, ChainIdentity, ChainStateContextRead, ChainStoreContextRead {}\n\nexport interface StakedChainContextRead extends BaseContext, ChainContextRead, ChainStakeContextRead {}\n\nexport type ChainContext = ChainIdentity & ChainContextRead & ChainContextWrite & ChainStoreContext\n\nexport type StakedChainContext = ChainContext & ChainStakeContext & ChainStakeContextRead & ChainStakeContextWrite\n","import { LRUCache } from 'lru-cache'\n\nimport type { SynchronousMap } from '../../map/index.ts'\n\nexport class LruCacheMap<K extends {}, V extends {} | string | number | bigint, FC = () => void> implements SynchronousMap<K, V> {\n private lruCache: LRUCache<K, V, FC>\n\n constructor(options?: LRUCache.Options<K, V, FC>) {\n this.lruCache = new LRUCache<K, V, FC>(options ?? { max: 5000 })\n }\n\n clear(): void {\n this.lruCache.clear()\n }\n\n delete(id: K): boolean {\n return this.lruCache.delete(id)\n }\n\n get(id: K): V | undefined {\n return this.lruCache.get(id)\n }\n\n getMany(id: K[]): V[] {\n const results: V[] = []\n for (const key of id) {\n const value = this.lruCache.get(key)\n if (value !== undefined) {\n results.push(value)\n }\n }\n return results\n }\n\n has(id: K): boolean {\n return this.lruCache.has(id)\n }\n\n set(id: K, data: V) {\n this.lruCache.set(id, data)\n }\n\n setMany(entries: [K, V][]): void {\n for (const [key, value] of entries) {\n this.lruCache.set(key, value)\n }\n }\n}\n","import { isDefined } from '@xylabs/typeof'\n\nimport type { SynchronousMap } from '../../map/index.ts'\n\nexport class MemoryMap<K extends {}, V = {}> implements SynchronousMap<K, V> {\n private map: Map<K, V>\n\n constructor() {\n this.map = new Map<K, V>()\n }\n\n clear(): void {\n this.map.clear()\n }\n\n delete(id: K): boolean {\n return this.map.delete(id)\n }\n\n get(id: K): V | undefined {\n return this.map.get(id)\n }\n\n getMany(ids: K[]): V[] {\n const results: V[] = []\n for (const id of ids) {\n const data = this.map.get(id)\n if (isDefined(data)) {\n results.push(data)\n }\n }\n return results\n }\n\n has(id: K): boolean {\n return this.map.has(id)\n }\n\n set(id: K, data: V) {\n this.map.set(id, data)\n }\n\n setMany(entries: [K, V][]): void {\n for (const [key, value] of entries) {\n this.map.set(key, value)\n }\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { JsonObject } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\n\nexport const StakeEventNames = ['StakeAdded', 'StakeRemoved', 'StakeWithdrawn'] as const\nexport type StakeEventName = typeof StakeEventNames[number]\n\nexport interface ExternalEvent<TName extends string = string, TArgs extends JsonObject = {}> {\n args: TArgs\n name: TName\n time: number // usually block number\n}\n\nexport interface EventFilter<TName extends string = string> {\n name?: TName\n time?: [number, number]\n}\n\nexport interface StakeEventArgs {\n amount: bigint\n id: number\n staked: Address\n staker: Address\n}\n\nexport type StakeEventFilterArgs = Partial<Pick<StakeEventArgs, 'staker' | 'staked' | 'id'>>\n\nexport interface StakeEventFilter<TName extends StakeEventName = StakeEventName> extends EventFilter<TName> {\n args?: StakeEventFilterArgs\n}\n\nexport interface StakeEvent<TName extends StakeEventName = StakeEventName> extends ExternalEvent<TName> {\n args: StakeEventArgs\n}\n\nexport interface StakeEventsRead {\n positionCount(range: [number, number | 'latest']): Promisable<number>\n stakeEvents<TName extends StakeEventName>(range: [number, number | 'latest'], filter?: StakeEventFilter<TName>): Promisable<StakeEvent<TName>[]>\n}\n","import type { XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { asXL1BlockNumber, stepSize } from '@xyo-network/xl1-protocol'\n\nexport function calculateFramesFromRange(range: XL1BlockRange, step: number): [\n // ranges of fitted frames\n XL1BlockRange[],\n // ranges of remaining blocks\n XL1BlockRange[]] {\n const size = stepSize(step)\n let start = (Math.trunc(range[0] / size)) * size\n const fitted: XL1BlockRange[] = []\n const remaining: XL1BlockRange[] = []\n\n // if the start is not aligned with the range, add a remaining block\n if (start !== range[0]) {\n start += size\n remaining.push([range[0], asXL1BlockNumber(Math.min(start - 1, range[1]), true)])\n }\n\n for (let i = start; i <= range[1]; i += size) {\n if ((i + size - 1) <= range[1]) {\n fitted.push([asXL1BlockNumber(i, true), asXL1BlockNumber(Math.min(i + size - 1, range[1]), true)])\n } else {\n remaining.push([asXL1BlockNumber(i, true), range[1]])\n }\n }\n return [fitted, remaining]\n}\n","import type { XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { calculateFramesFromRange } from './calculateFramesFromRange.ts'\n\nexport function deepCalculateFramesFromRange(range: XL1BlockRange, startingStep = StepSizes.length - 1): XL1BlockRange[] {\n const fitted: XL1BlockRange[] = []\n let remaining: XL1BlockRange[] = [range]\n\n for (let step = startingStep; step >= 0; step--) {\n const newRemaining: XL1BlockRange[] = []\n for (const range of remaining) {\n const [newFittedFrames, newRemainingFrames] = calculateFramesFromRange(range, step)\n fitted.push(...newFittedFrames)\n newRemaining.push(...newRemainingFrames)\n }\n remaining = newRemaining\n }\n\n for (const range of remaining) {\n for (let i = range[0]; i <= range[1]; i++) {\n fitted.push([i, i]) // Add individual frames for remaining ranges\n }\n }\n\n return fitted.toSorted((a, b) => a[0] - b[0]) // Sort by start of range\n}\n","import { type Hash } from '@xylabs/hex'\nimport type { XL1BlockNumber } from '@xyo-network/xl1-protocol'\n\nimport type { ChainContextRead } from '../../model/index.ts'\nimport { blockFromBlockNumber } from './blockFromBlockNumber.ts'\n\nexport async function hashFromBlockNumber(context: ChainContextRead, blockNumber: XL1BlockNumber): Promise<Hash> {\n return (await blockFromBlockNumber(context, blockNumber))._hash\n}\n","import type {\n ReadArchivist, ReadWriteArchivist, WriteArchivist,\n} from '@xyo-network/archivist-model'\n\nexport function isReadArchivist(value: unknown): value is ReadArchivist {\n return (value as ReadArchivist).get !== undefined && (value as ReadArchivist).next !== undefined\n}\n\nexport function isWriteArchivist(value: unknown): value is WriteArchivist {\n return (value as WriteArchivist).insert !== undefined\n}\n\nexport function isReadWriteArchivist(value: unknown): value is ReadWriteArchivist {\n return isReadArchivist(value) && isWriteArchivist(value)\n}\n","import type { StepIdentity, StepIdentityString } from '@xyo-network/xl1-protocol'\n\nexport function toStepIdentityString({ block, step }: StepIdentity): StepIdentityString {\n return `${block}|${step}` as StepIdentityString\n}\n","/* eslint-disable max-statements */\nimport { assertEx } from '@xylabs/assert'\nimport { type Address } from '@xylabs/hex'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport type { XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport type { TransfersStepSummaryContext } from '../../../model/index.ts'\nimport type { TransfersStepSummary } from '../../../payloads/index.ts'\nimport { netTransfersForPayloads, TransfersStepSummarySchema } from '../../../payloads/index.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../../SignedBigInt.ts'\nimport { hydrateBlock } from '../../hydrate/index.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport { hashFromBlockNumber } from '../hashFromBlockNumber.ts'\nimport { transfersSummaryKey } from './transfersSummary.ts'\n\nexport async function transfersStepSummaryFromRange(\n context: TransfersStepSummaryContext,\n range: XL1BlockRange,\n): Promise<WithStorageMeta<TransfersStepSummary>> {\n // console.log(`transfersStepSummaryFromRange: head=${context.head}, range=${range[0]}-${range[1]}`)\n const frameHeadHash = await hashFromBlockNumber(context, range[1])\n const frameSize = range[1] - range[0] + 1\n const [headHash] = await context.head()\n\n let result: TransfersStepSummary | undefined = undefined\n\n if (frameSize === 1) {\n const hash = await hashFromBlockNumber(context, range[0])\n const [, payloads] = await hydrateBlock(context.store, hash)\n const transfers: Record<Address, Record<Address, SignedBigInt>> = {}\n for (const [from, toMap] of Object.entries(netTransfersForPayloads(payloads))) {\n transfers[from as Address] = transfers[from as Address] ?? {}\n for (const [to, amount] of Object.entries(toMap)) {\n transfers[from as Address][to as Address] = toSignedBigInt(amount)\n }\n }\n result = {\n schema: TransfersStepSummarySchema, hash: headHash, stepSize: -1, transfers,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const step = (StepSizes as any).indexOf(frameSize)\n assertEx(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes.join(', ')}`)\n\n const key = transfersSummaryKey(frameHeadHash, frameSize)\n\n const summaryResult = await context.summaryMap.get(key)\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<TransfersStepSummary>\n } else {\n await context.stepSemaphores[step].acquire()\n // We do not have it, so lets build it\n try {\n const subRanges = deepCalculateFramesFromRange(range, step - 1)\n const promises = subRanges.map(subRange => transfersStepSummaryFromRange(\n context,\n subRange,\n ))\n const subResults = await Promise.all(promises)\n\n // add them all up\n const bigIntBalances: Record<Address, Record<Address, bigint>> = {}\n for (const subResult of subResults) {\n for (const [from, toMap] of Object.entries(subResult.transfers)) {\n bigIntBalances[from as Address] = bigIntBalances[from as Address] ?? {}\n for (const [to, transfer] of Object.entries(toMap)) {\n bigIntBalances[from as Address][to as Address] = (bigIntBalances[from as Address][to as Address] ?? 0n) + parseSignedBigInt(transfer)\n }\n }\n }\n\n const transfers: Record<Address, Record<Address, SignedBigInt>> = {}\n for (const [from, toMap] of Object.entries(bigIntBalances)) {\n transfers[from as Address] = transfers[from as Address] ?? {}\n for (const [to, transfer] of Object.entries(toMap)) {\n transfers[from as Address][to as Address] = toSignedBigInt(transfer)\n }\n }\n\n result = {\n schema: TransfersStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, transfers,\n }\n\n await context.summaryMap.set(key, result)\n } finally {\n context.stepSemaphores[step].release()\n }\n }\n }\n // console.log(`transfersStepSummaryFromRange-result: head=${context.head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)\n const finalResult = await PayloadBuilder.addStorageMeta(result)\n return finalResult\n}\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfSchemaType, type Payload } from '@xyo-network/payload-model'\n\nexport const AddressPairSchema = 'network.xyo.address.pair' as const\nexport type AddressPairSchema = typeof AddressPairSchema\n\nexport interface AddressFields {\n addresses: [Address, Address]\n}\n\nexport type AddressPairPayload = Payload<AddressFields, AddressPairSchema>\n\n/**\n * Identity function for determining if an object is an AddressPairPayload\n */\nexport const isAddressPairPayload = isPayloadOfSchemaType<AddressPairPayload>(AddressPairSchema)\nexport const asAddressPairPayload = AsObjectFactory.create(isAddressPairPayload)\nexport const asOptionalAddressPairPayload = AsObjectFactory.createOptional(isAddressPairPayload)\n","import {\n type Address, type Hex, hexToBigInt, toAddress,\n} from '@xylabs/hex'\nimport { span } from '@xylabs/telemetry'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isTransfer } from '@xyo-network/xl1-protocol'\n\nexport const netBalancesForPayloads = (payloads: Payload[]) => {\n return span('netBalancesForPayloads', () => {\n const balances: Record<Address, bigint> = {}\n for (const payload of payloads) {\n if (isTransfer(payload)) {\n const { from } = payload\n for (let [address, amount] of Object.entries(payload.transfers) as [Address, Hex][]) {\n balances[toAddress(address)] = (balances[toAddress(address)] ?? 0n) + hexToBigInt(amount)\n balances[toAddress(from)] = (balances[toAddress(from)] ?? 0n) - hexToBigInt(amount)\n }\n }\n }\n return balances\n })\n}\n","import {\n type Address, type Hex, hexToBigInt,\n} from '@xylabs/hex'\nimport { span } from '@xylabs/telemetry'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isTransfer } from '@xyo-network/xl1-protocol'\n\n// the net transfer amounts for the specified accounts only\nexport function netTransfersForPayloads(payloads: Payload[]): Record<Address, Record<Address, bigint>> {\n return span('netTransfersForPayloads', () => {\n const transfers: Record<Address, Record<Address, bigint>> = {}\n for (const payload of payloads) {\n if (isTransfer(payload)) {\n const { from } = payload\n transfers[from] = transfers[from] ?? {}\n for (let [to, amount] of Object.entries(payload.transfers) as [Address, Hex][]) {\n transfers[to] = transfers[to] ?? {}\n transfers[to][from] = (transfers[to][from] ?? 0n) + hexToBigInt(amount)\n transfers[from][to] = (transfers[from][to] ?? 0n) - hexToBigInt(amount)\n }\n }\n }\n return transfers\n })\n}\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { SignedBigInt } from '../../SignedBigInt.ts'\nimport type { StepSummary } from './StepSummary.ts'\n\nexport const BalancesStepSummarySchema: Schema = 'network.xyo.step.summary.balances'\nexport type BalancesStepSummarySchema = typeof BalancesStepSummarySchema\n\nexport type BalancesStepSummary = StepSummary<{\n balances: Record<Address, SignedBigInt>\n}, BalancesStepSummarySchema>\n\n/**\n * Identity function for determining if an object is an BalancesStepSummary\n */\nexport const isBalancesStepSummary = isPayloadOfSchemaType<BalancesStepSummary>(BalancesStepSummarySchema)\nexport const asBalancesStepSummary = AsObjectFactory.create<BalancesStepSummary>(isBalancesStepSummary)\n\n/**\n * Identity function for determining if an object is an BalancesStepSummary with Storage Meta\n */\nexport const isBalancesStepSummaryWithStorageMeta = (value: unknown): value is WithStorageMeta<BalancesStepSummary> => {\n return isBalancesStepSummary(value) && isStorageMeta(value)\n}\nexport const asBalancesStepSummaryWithStorageMeta = AsObjectFactory.create<WithStorageMeta<BalancesStepSummary>>(isBalancesStepSummaryWithStorageMeta)\n","import type { Hash } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nexport const StepSummarySchema: Schema = 'network.xyo.step.summary'\nexport type StepSummarySchema = typeof StepSummarySchema\n\nexport interface StepSummaryFields {\n hash: Hash // the stepHash - the hash of the last block in the step frame\n stepSize: number // the stepSize in blocks\n}\n\nexport type StepSummary<TAdditionalFields extends EmptyObject | void = void,\n TSchema extends Schema | void = void> = Payload<TAdditionalFields extends void ? StepSummaryFields : TAdditionalFields & StepSummaryFields,\n TSchema extends void ? StepSummarySchema : TSchema>\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { SignedBigInt } from '../../SignedBigInt.ts'\nimport type { StepSummary } from './StepSummary.ts'\n\nexport const TransfersStepSummarySchema: Schema = 'network.xyo.step.summary.transfer'\nexport type TransfersStepSummarySchema = typeof TransfersStepSummarySchema\n\nexport type TransfersStepSummary = StepSummary<{\n transfers: Record<Address, Record<Address, SignedBigInt>>\n}, TransfersStepSummarySchema>\n\n/**\n * Identity function for determining if an object is an TransfersStepSummary\n */\nexport const isTransfersStepSummary = isPayloadOfSchemaType<TransfersStepSummary>(TransfersStepSummarySchema)\nexport const asTransfersStepSummary = AsObjectFactory.create<TransfersStepSummary>(isTransfersStepSummary)\n\n/**\n * Identity function for determining if an object is an TransfersStepSummary with Storage Meta\n */\nexport const isTransfersStepSummaryWithStorageMeta = (value: unknown): value is WithStorageMeta<TransfersStepSummary> => {\n return isTransfersStepSummary(value) && isStorageMeta(value)\n}\nexport const asTransfersStepSummaryWithStorageMeta\n = AsObjectFactory.create<WithStorageMeta<TransfersStepSummary>>(isTransfersStepSummaryWithStorageMeta)\n","import {\n type Hex,\n hexToBigInt,\n toHex,\n} from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\n\nexport interface NegativeBigInt {\n negative: Hex\n}\n\nexport interface PositiveBigInt {\n positive: Hex\n}\n\nexport type SignedBigInt = NegativeBigInt | PositiveBigInt\n\nexport const isNegativeBigInt = (value: unknown): value is NegativeBigInt => {\n return isObject(value) && 'negative' in value && typeof value.negative === 'string'\n}\n\nexport const isPositiveBigInt = (value: unknown): value is PositiveBigInt => {\n return isObject(value) && 'positive' in value && typeof value.positive === 'string'\n}\n\nexport const parseSignedBigInt = (value: SignedBigInt): bigint => {\n if (isNegativeBigInt(value)) {\n return -hexToBigInt(value.negative)\n } else if (isPositiveBigInt(value)) {\n return hexToBigInt(value.positive)\n } else {\n throw new Error('Invalid balance type')\n }\n}\n\nexport const toSignedBigInt = (value: bigint): SignedBigInt => {\n return value < 0n ? { negative: toHex(-value) } : { positive: toHex(value) }\n}\n\nexport const toPositiveBigInt = (value: unknown): PositiveBigInt => {\n if (isNegativeBigInt(value)) {\n return { positive: toHex(0n) }\n }\n if (isPositiveBigInt(value)) {\n return { positive: value.positive }\n }\n if (typeof value === 'bigint') {\n return { positive: toHex(value) }\n }\n throw new Error('Invalid value for positive big int')\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { spanRootAsync } from '@xylabs/telemetry'\nimport { isDefined } from '@xylabs/typeof'\nimport {\n asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,\n} from '@xyo-network/xl1-protocol'\n\nimport type { TransfersStepSummaryContext } from '../../../model/index.ts'\nimport { parseSignedBigInt } from '../../../SignedBigInt.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport { transfersStepSummaryFromRange } from './transfersStepSummaryFromRange.ts'\n\n// the summary of amount of rewards claimed from the step reward pool by addresses\nexport async function transfersSummary(\n transferContext: TransfersStepSummaryContext,\n): Promise<Partial<Record<Address, Partial<Record<Address, bigint>>>>> {\n return await spanRootAsync('transferSummary', async () => {\n const [headHash] = await transferContext.head()\n const headResult = await transferContext.store.chainMap.get(headHash)\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${transferContext.head}`, { required: true })\n const rangeStart = asXL1BlockNumber(isDefined(transferContext.windowSize) ? Math.max(headBoundWitness.block - transferContext.windowSize + 1, 0) : 0)\n const ranges = deepCalculateFramesFromRange(asXL1BlockRange([rangeStart, headBoundWitness.block], true))\n const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(transferContext, range)))\n const transfers: Partial<Record<Address, Partial<Record<Address, bigint>>>> = {}\n for (let summary of summaries) {\n for (const [from, toMap] of Object.entries(summary.transfers)) {\n const validFrom = asAddress(from, () => `Invalid address: ${from}`)\n transfers[validFrom] = transfers[validFrom] ?? {}\n for (const [to, transfer] of Object.entries(toMap)) {\n const validTo = asAddress(to, () => `Invalid address: ${to}`)\n transfers[validFrom][validTo] = (transfers[validFrom][validTo] ?? 0n) + parseSignedBigInt(transfer)\n }\n }\n }\n return transfers\n })\n}\n\nexport function transfersSummaryKey(frameHeadHash: Hash, frameSize: number) {\n return `${frameHeadHash}|${frameSize}`\n}\n","import * as z from 'zod'\n\nimport { ApiConfigZod } from './Api.ts'\nimport { AppConfigZod } from './App.ts'\nimport { BridgeConfigZod } from './Bridge.ts'\nimport { ChainConfigZod } from './Chain.ts'\nimport { EvmConfigZod } from './Evm.ts'\nimport { LogConfigZod } from './Log.ts'\nimport { MempoolConfigZod } from './Mempool.ts'\nimport { ProducerConfigZod } from './Producer.ts'\nimport { RewardRedemptionApiConfigZod } from './RewardRedemptionApi.ts'\nimport { StorageConfigZod } from './storage/index.ts'\nimport { TelemetryConfigZod } from './Telemetry.ts'\nimport { ValidationConfigZod } from './Validation.ts'\n\nexport const Xl1CommonConfigSchema = z.object({ ...LogConfigZod.shape }).describe('XL1 common configuration options')\n\nexport const ConfigZod = z.object({\n ...Xl1CommonConfigSchema.shape,\n api: ApiConfigZod.default(ApiConfigZod.parse({})).describe('Configuration for the API node'),\n app: AppConfigZod.default(AppConfigZod.parse({})).describe('Configuration for the application'),\n bridge: BridgeConfigZod.default(BridgeConfigZod.parse({})).describe('Configuration for the Bridge node'),\n chain: ChainConfigZod.default(ChainConfigZod.parse({})).describe('Configuration for the chain'),\n evm: EvmConfigZod.default(EvmConfigZod.parse({})).describe('Configuration for EVM-backed services'),\n mempool: MempoolConfigZod.default(MempoolConfigZod.parse({})).describe('Configuration for the mempool'),\n producer: ProducerConfigZod.default(ProducerConfigZod.parse({})).describe('Configuration for the producer'),\n rewardRedemptionApi: RewardRedemptionApiConfigZod.default(RewardRedemptionApiConfigZod.parse({})).describe('Configuration for the rewards redemption API'),\n storage: StorageConfigZod.default(StorageConfigZod.parse({})).describe('Configuration for the storage'),\n telemetry: TelemetryConfigZod.default(TelemetryConfigZod.parse({})).describe('Configuration for telemetry'),\n validation: ValidationConfigZod.default(ValidationConfigZod.parse({})).describe('Configuration for validation'),\n})\n\nexport type Config = z.infer<typeof ConfigZod>\n\nexport const getDefaultConfig = (): Config => ConfigZod.parse({})\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const ApiConfigZod = z.object({\n host: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the API',\n title: 'api.host',\n type: 'string',\n }),\n initRewardsCache: z.union([z.number(), z.string()]).transform(v => v !== '0' && v !== 'false').default(true).register(globalRegistry, {\n description: 'Whether to initialize the rewards cache on startup',\n title: 'api.initRewardsCache',\n type: 'boolean',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the API wallet',\n title: 'api.mnemonic',\n type: 'string',\n }),\n port: z.coerce.number().default(8080).register(globalRegistry, {\n default: 8080,\n description: 'Port for the API',\n title: 'api.port',\n type: 'number',\n }),\n})\n\nexport type ApiConfig = z.infer<typeof ApiConfigZod>\n","import type { Hash } from '@xylabs/hex'\nimport type {\n BlockBoundWitness,\n ChainId,\n HydratedBlock,\n} from '@xyo-network/xl1-protocol'\nimport { isValidationError, ValidationError } from '@xyo-network/xl1-protocol'\n\nexport class BlockValidationError extends ValidationError<BlockBoundWitness> {}\n\nexport const isBlockValidationError = (\n error: unknown,\n): error is BlockValidationError => {\n if (!isValidationError(error)) return false\n return (\n error.name === BlockValidationError.constructor.name\n )\n}\n\nexport class HydratedBlockValidationError extends ValidationError<HydratedBlock> {}\n\nexport const isHydratedBlockValidationError = (\n error: unknown,\n): error is HydratedBlockValidationError => {\n if (!isValidationError(error)) return false\n return (\n error.name === HydratedBlockValidationError.constructor.name\n )\n}\n\nexport class HydratedBlockStateValidationError extends ValidationError<HydratedBlock> {\n chainId: ChainId\n constructor(hash: Hash, chainId: ChainId, value: HydratedBlock, message?: string, cause?: unknown) {\n super(hash, value, message, cause)\n this.chainId = chainId\n }\n}\n\nexport const isHydratedBlockStateValidationError = (\n error: unknown,\n): error is HydratedBlockStateValidationError => {\n if (!isValidationError(error)) return false\n return (\n error.name === HydratedBlockStateValidationError.constructor.name\n )\n}\n","export const isLocalhost = (hostname: string): boolean => {\n return (\n hostname === 'localhost'\n || hostname === '127.0.0.1'\n || hostname === '::1' // IPv6 localhost\n || hostname.endsWith('.localhost')\n )\n}\n","import { isLocalhost } from './isLocalhost.ts'\n\nexport const getUrl = (host: string, port: number): string => {\n const scheme = isLocalhost(host) ? 'http' : 'https'\n return `${scheme}://${host}:${port}`\n}\n","export const TODO = true\n","import * as z from 'zod'\n\n/**\n * Validates a single string containing a BIP-39 mnemonic.\n *\n * • Trims leading/trailing whitespace.\n * • Collapses any run of whitespace (spaces, tabs, new-lines) to a single space.\n * • Splits on spaces → array of words.\n * • Checks that the word-count is 12, 15, 18, 21, or 24.\n *\n */\nexport const MnemonicStringZod = z\n .string()\n .transform(s => s.trim().replaceAll(/\\s+/g, ' ')) // normalize spacing\n .refine(\n s => [12, 15, 18, 21, 24].includes(s.split(' ').length),\n { message: 'Mnemonic must contain 12, 15, 18, 21, or 24 words.' },\n ).describe('BIP-39 mnemonic string')\n\nexport type MnemonicString = z.infer<typeof MnemonicStringZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const AppConfigZod = z.object({\n port: z.coerce.number().default(3000).register(globalRegistry, {\n default: 3000,\n description: 'Port for the application',\n title: 'app.port',\n type: 'number',\n }),\n})\n\nexport type AppConfig = z.infer<typeof AppConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const BridgeConfigZod = z.object({\n host: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the Bridge',\n title: 'api.host',\n type: 'string',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the Bridge wallet',\n title: 'api.mnemonic',\n type: 'string',\n }),\n port: z.coerce.number().default(8081).register(globalRegistry, {\n default: 8081,\n description: 'Port for the Bridge',\n title: 'api.port',\n type: 'number',\n }),\n})\n\nexport type BridgeConfig = z.infer<typeof BridgeConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const ChainConfigZod = z.object({\n id: z.string().optional()\n .register(globalRegistry, {\n description:\n 'The unique identifier for the chain. Should be the staking contract address for contract-backed chains.',\n title: 'chain.id',\n type: 'string',\n }),\n})\n\nexport type ChainConfig = z.infer<typeof ChainConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const EvmInfuraConfigZod = z.object({\n projectId: z.string().optional().register(globalRegistry, {\n description: 'Infura project ID',\n title: 'evm.infura.projectId',\n type: 'string',\n }),\n projectSecret: z.string().optional().register(globalRegistry, {\n description: 'Infura project secret',\n title: 'evm.infura.projectSecret',\n type: 'string',\n }),\n})\n\nexport const EvmJsonRpcConfigZod = z.object({\n url: z.url().optional().register(globalRegistry, {\n description: 'JSON-RPC URL',\n title: 'evm.jsonRpc.url',\n type: 'string',\n }),\n})\n\nexport const EvmConfigZod = z.object({\n chainId: z.string().optional().register(globalRegistry, {\n description: 'EVM chain ID',\n title: 'evm.chainId',\n type: 'string',\n }),\n infura: EvmInfuraConfigZod.optional().describe('Infura Provider configuration'),\n jsonRpc: EvmJsonRpcConfigZod.optional().describe('JSON-RPC Provider configuration'),\n})\n\nexport type EvmConfig = z.infer<typeof EvmConfigZod>\n","import type { LogLevelKey } from '@xylabs/logger'\nimport { LogLevel } from '@xylabs/logger'\nimport { globalRegistry } from 'zod'\nimport * as z from 'zod'\nconst LogLevels = Object.keys(LogLevel) as [LogLevelKey, ...LogLevelKey[]]\n\nexport const LogConfigZod = z.object({\n logLevel: z.enum(LogLevels).default('info').register(globalRegistry, {\n choices: LogLevels,\n default: 'info',\n description: 'Desired process verbosity',\n title: 'logLevel',\n type: 'string',\n }),\n silent: z.boolean().default(false).register(globalRegistry, {\n default: false,\n description: 'Whether to run in silent mode',\n title: 'silent',\n type: 'boolean',\n }),\n})\n\nexport type LogConfig = z.infer<typeof LogConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const MempoolConfigZod = z.object({\n enabled: z.string().default('false').transform((val, ctx) => {\n const normalized = val.toLowerCase().trim()\n if (['true', '1', 'yes', 'on'].includes(normalized)) return true\n if (['false', '0', 'no', 'off'].includes(normalized)) return false\n ctx.addIssue({\n code: 'invalid_type',\n expected: 'boolean',\n message: `Invalid boolean value: \"${val}\". Use true/false, 1/0, yes/no.`,\n })\n return z.NEVER\n }).register(globalRegistry, {\n default: 'false',\n description: 'Enable the Mempool',\n title: 'mempool.enabled',\n type: 'boolean',\n }),\n host: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the Mempool',\n title: 'mempool.host',\n type: 'string',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the Mempool wallet',\n title: 'mempool.mnemonic',\n type: 'string',\n }),\n port: z.coerce.number().default(8083).register(globalRegistry, {\n default: 8083,\n description: 'Port for the Mempool',\n title: 'mempool.port',\n type: 'number',\n }),\n})\n\nexport type MempoolConfig = z.infer<typeof MempoolConfigZod>\n","import { AddressZod, asAddress } from '@xylabs/hex'\nimport { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const ProducerConfigZod = z.object({\n allowlist: z.preprocess((val) => {\n if (typeof val === 'string') {\n return val.split(',').map(s => asAddress(s.trim()))\n }\n return val\n }, z.array(AddressZod).optional().register(globalRegistry, {\n description: 'List of allowed producer addresses, if undefined anyone can participate',\n title: 'allowlist',\n type: 'array',\n })),\n\n disableIntentRedeclaration: z.boolean().optional().register(globalRegistry, {\n description: 'Should the producer skip redeclaring their intent to continue producing blocks',\n title: 'producer.disableIntentRedeclaration',\n type: 'boolean',\n }),\n // TODO: Port schema\n healthCheckPort: z.coerce.number().optional().register(globalRegistry, {\n description: 'Port for the Producer health checks',\n title: 'producer.healthCheckPort',\n type: 'number',\n }),\n heartbeatInterval: z.coerce.number().default(3_600_000).register(globalRegistry, {\n description: 'The number of milliseconds between heartbeats if no blocks are produced',\n title: 'producer.heartbeatInterval',\n type: 'number',\n }),\n // TODO: BigInt schema\n minStake: z.coerce.number().default(1).register(globalRegistry, {\n description: 'Minimum stake required to be a Producer',\n title: 'producer.minStake',\n type: 'number',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the Producer wallet',\n title: 'producer.mnemonic',\n type: 'string',\n }),\n // TODO: Port schema\n port: z.coerce.number().default(8081).register(globalRegistry, {\n default: 8081,\n description: 'Port for the Producer',\n title: 'producer.port',\n type: 'number',\n }),\n // TODO: Address schema\n rewardAddress: z.string().optional().register(globalRegistry, {\n description: 'Address to receive block rewards',\n title: 'producer.rewardAddress',\n type: 'string',\n }),\n})\n\nexport type ProducerConfig = z.infer<typeof ProducerConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const RewardRedemptionApiConfigZod = z.object({\n chainRpcApiUrl: z.string().default('http://localhost:8080/rpc').register(globalRegistry, {\n default: 'http://localhost:8080/rpc',\n description: 'URL for the Chain RPC API',\n title: 'rewardRedemptionApi.chainRpcApiUrl',\n type: 'string',\n }),\n host: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the Redemption API',\n title: 'rewardRedemptionApi.host',\n type: 'string',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the Redemption API wallet',\n title: 'rewardRedemptionApi.mnemonic',\n type: 'string',\n }),\n port: z.coerce.number().default(8082).register(globalRegistry, {\n default: 8082,\n description: 'Port for the Redemption API',\n title: 'rewardRedemptionApi.port',\n type: 'number',\n }),\n})\n\nexport type RewardRedemptionApiConfig = z.infer<typeof RewardRedemptionApiConfigZod>\n","import { isDefined, isUndefined } from '@xylabs/typeof'\nimport { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\n/**\n * Checks if the provided MongoDB configuration contains all necessary fields\n * for establishing a connection.\n * @param config MongoDB configuration object\n * @returns True if the configuration contains all necessary fields for\n * establishing a connection\n */\nexport const hasMongoConfig = (config?: MongoConfig): config is Required<MongoConfig> => {\n if (isUndefined(config)) return false\n return (\n isDefined(config.connectionString)\n && isDefined(config.database)\n && isDefined(config.domain)\n && isDefined(config.password)\n && isDefined(config.username)\n )\n}\n\nexport const MongoConfigZod = z.object({\n // TODO: Create from other arguments\n connectionString: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB connection string',\n title: 'storage.mongo.connectionString',\n type: 'string',\n }),\n database: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB database name',\n title: 'storage.mongo.database',\n type: 'string',\n }),\n domain: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB domain',\n title: 'storage.mongo.domain',\n type: 'string',\n }),\n password: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB password',\n title: 'storage.mongo.password',\n type: 'string',\n }),\n username: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB username',\n title: 'storage.mongo.username',\n type: 'string',\n }),\n})\n\nexport type MongoConfig = z.infer<typeof MongoConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MongoConfigZod } from './driver/index.ts'\n\nexport const StorageConfigZod = z.object({\n mongo: MongoConfigZod.optional().describe('Configuration for the MongoD storage driver'),\n root: z.string().optional().register(globalRegistry, {\n description: 'Root directory for local storage',\n title: 'storage.root',\n type: 'string',\n }),\n}).describe('Storage configuration options')\n\nexport type StorageConfig = z.infer<typeof StorageConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const OpenTelemetryConfigZod = z.object({\n // OpenTelemetry options\n otlpEndpoint: z.url().optional().register(globalRegistry, {\n description: 'OTLP endpoint for exporting telemetry data',\n title: 'telemetry.otel.otlpEndpoint',\n type: 'string',\n }),\n})\n\nexport const TelemetryConfigZod = z.object({\n // OpenTelemetry configuration\n otel: OpenTelemetryConfigZod.optional().describe('OpenTelemetry configuration'),\n}).describe('Telemetry configuration options')\n\nexport type TelemetryConfig = z.infer<typeof TelemetryConfigZod>\n","import { AddressZod, asAddress } from '@xylabs/hex'\nimport { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const ValidationConfigZod = z.object({\n allowedRewardRedeemers: z.preprocess((val) => {\n if (typeof val === 'string') {\n return val.split(',').map(s => asAddress(s.trim()))\n }\n return val\n }, z.array(AddressZod).optional().register(globalRegistry, {\n description: 'List of allowed reward redeemer addresses, if undefined anyone can participate',\n title: 'allowedRewardRedeemers',\n type: 'array',\n })),\n allowedRewardEscrowAccountSigners: z.preprocess((val) => {\n if (typeof val === 'string') {\n return val.split(',').map(s => asAddress(s.trim()))\n }\n return val\n }, z.array(AddressZod).optional().register(globalRegistry, {\n description: 'List of allowed reward escrow account signer addresses, if undefined anyone can participate',\n title: 'allowedRewardEscrowAccountSigners',\n type: 'array',\n })),\n})\n\nexport type ValidationConfig = z.infer<typeof ValidationConfigZod>\n","import * as z from 'zod'\n\nconst DescriptionSchema = z.string()\nconst TitleSchema = z.string()\n\nexport const JSONSchemaMetaSchema = z\n .object({\n id: z.string().optional(),\n title: TitleSchema.optional(),\n description: DescriptionSchema.optional(),\n deprecated: z.boolean().optional(),\n })\n .catchall(z.unknown()) // allow arbitrary extra keys\n\nexport const GlobalMetaSchema = JSONSchemaMetaSchema.extend({})\n\nconst ChoicesSchema = z\n .array(z.union([z.string(), z.number(), z.literal(true), z.undefined()]))\n .readonly()\n\nexport const UsageMetaSchema = GlobalMetaSchema.extend({\n choices: ChoicesSchema.optional(),\n default: z.unknown().optional(),\n description: DescriptionSchema,\n group: z.string().optional(),\n hidden: z.boolean().optional(),\n title: TitleSchema,\n type: z.union([\n z.literal('array'),\n z.literal('count'),\n z.literal('boolean'),\n z.literal('number'),\n z.literal('string'),\n ]),\n})\n\nexport type UsageMeta = z.infer<typeof UsageMetaSchema>\n\nexport function isUsageMeta(v: unknown): v is UsageMeta {\n return UsageMetaSchema.safeParse(v).success\n}\n","export const XL1_NETWORK_STAKING_GENESIS_PERIOD_END_EPOCH = 1_760_572_800 as const\nexport const XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK = 107_496 as const\n","import { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfZodType, type Payload } from '@xyo-network/payload-model'\nimport z from 'zod'\n\nimport {\n TypedDataDomainZod, TypedDataTypesZod, TypedDataValueZod,\n} from '../Types.ts'\n\nexport const EIP712DataPayloadFieldsZod = z.object({\n domain: TypedDataDomainZod,\n types: TypedDataTypesZod,\n values: TypedDataValueZod,\n})\nexport type EIP712DataPayloadFields = z.infer<typeof EIP712DataPayloadFieldsZod>\n\nexport const EIP712DataPayloadSchema = 'network.xyo.chains.ethereum.eip712.data' as const\nexport type EIP712DataPayloadSchema = typeof EIP712DataPayloadSchema\n\nexport type EIP712DataPayload = Payload<EIP712DataPayloadFields, EIP712DataPayloadSchema>\n\nexport const isEIP712DataPayload = isPayloadOfZodType<EIP712DataPayload>(\n EIP712DataPayloadFieldsZod,\n EIP712DataPayloadSchema,\n)\n\nexport const asEIP712DataPayload = AsObjectFactory.create(isEIP712DataPayload)\n","// import type { Signer } from 'ethers/providers'\nimport z from 'zod'\n\n/**\n * Typed Data Types\n * Re-exposing the types from ethers for convenience and to ensure\n * we can fix in one place if they change\n */\n\n// export type TypedDataDomain = Parameters<Signer['signTypedData']>[0]\n// export type TypedDataTypes = Parameters<Signer['signTypedData']>[1]\n// export type TypedDataValues = Parameters<Signer['signTypedData']>[2]\n\nexport const TypedDataDomainZod = z.object({\n name: z.string().nullable().optional(),\n version: z.string().nullable().optional(),\n chainId: z.union([z.string(), z.number(), z.bigint()]).nullable().optional(),\n verifyingContract: z.string().nullable().optional(),\n salt: z.union([z.string(), z.instanceof(Uint8Array)]).nullable().optional(),\n})\nexport type TypedDataDomain = z.infer<typeof TypedDataDomainZod>\n\nexport const TypedDataFieldZod = z.object({\n name: z.string(),\n type: z.string(),\n})\nexport type TypedDataField = z.infer<typeof TypedDataFieldZod>\n\nexport const TypedDataTypesZod = z.record(z.string(), z.array(TypedDataFieldZod))\nexport type TypedDataTypes = z.infer<typeof TypedDataTypesZod>\n\nexport const TypedDataValueZod = z.record(z.string(), z.any())\nexport type TypedDataValues = z.infer<typeof TypedDataValueZod>\n","import { HashZod } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfZodType, type Payload } from '@xyo-network/payload-model'\nimport z from 'zod'\n\nexport const EIP712SignaturePayloadFieldsZod = z.object({\n address: z.string(),\n hash: HashZod,\n signature: z.string(),\n})\n\nexport type EIP712SignaturePayloadFields = z.infer<typeof EIP712SignaturePayloadFieldsZod>\n\nexport const EIP712SignaturePayloadSchema = 'network.xyo.chains.ethereum.eip712.signature' as const\nexport type EIP712SignaturePayloadSchema = typeof EIP712SignaturePayloadSchema\n\nexport type EIP712SignaturePayload = Payload<EIP712SignaturePayloadFields, EIP712SignaturePayloadSchema>\n\nexport const isEIP712SignaturePayload = isPayloadOfZodType<EIP712SignaturePayload>(\n EIP712SignaturePayloadFieldsZod,\n EIP712SignaturePayloadSchema,\n)\n\nexport const asEIP712SignaturePayload = AsObjectFactory.create(isEIP712SignaturePayload)\n","import { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Signer } from 'ethers/providers'\n\nimport {\n type EIP712DataPayload, type EIP712SignaturePayload, EIP712SignaturePayloadSchema,\n} from './Payloads/index.ts'\n\nexport const signEIP712Message = async (signer: Signer, data: EIP712DataPayload): Promise<EIP712SignaturePayload> => {\n const {\n domain, types, values,\n } = data\n const signature = await signer.signTypedData(domain, types, values)\n const hash = await PayloadBuilder.hash(data)\n const address = await signer.getAddress()\n return {\n address, hash, schema: EIP712SignaturePayloadSchema, signature,\n }\n}\n","import { asHash } from '@xylabs/hex'\nimport { isUndefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { verifyTypedData } from 'ethers/hash'\n\nimport type { EIP712DataPayload, EIP712SignaturePayload } from './Payloads/index.ts'\n\nexport const verifyEIP712Message = async (data: EIP712DataPayload, sig: EIP712SignaturePayload): Promise<boolean> => {\n const {\n address, signature, hash,\n } = sig\n const { schema, ...fields } = data\n const signedHash = asHash(hash)\n // If there is no valid hash in the signature, or it doesn't match the calculated hash, return false\n if (isUndefined(signedHash) || signedHash !== await PayloadBuilder.hash(data)) return false\n // Recover the address from the signature\n const recoveredAddress = verifyTypedData(fields.domain, fields.types, fields.values, signature)\n // Verify it matches the expected address\n return recoveredAddress.toLowerCase() === address.toLowerCase()\n}\n","import type { XL1BlockRangeKey, XL1RangeMultipliers } from '@xyo-network/xl1-protocol'\nimport { asAttoXL1 } from '@xyo-network/xl1-protocol'\n\nimport { XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK } from './constants.ts'\n\nexport const XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_EARNED_REWARDS = asAttoXL1(1_343_884_111_859_145_740_576_652n)\nexport const XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_BONUS_REWARDS = asAttoXL1(100_000_000_000_000_000_000_000_000n)\nexport const XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_REWARDS\n = XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_EARNED_REWARDS + XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_BONUS_REWARDS\n\nexport const RewardMultipliers: XL1RangeMultipliers = {\n [`0|${XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK}` as XL1BlockRangeKey]:\n [XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_BONUS_REWARDS, XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_EARNED_REWARDS],\n}\n","import type { Hash } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport { isReadArchivist } from '../block/index.ts'\nimport type { PayloadMapRead } from '../model/index.ts'\n\nexport function readPayloadMapFromStore<T extends Payload>(store: ReadArchivist<T> | PayloadMapRead<T>): PayloadMapRead<T> {\n if (isReadArchivist(store)) {\n return {\n get: async (hash: Hash): Promise<T | undefined> => {\n return (await store.get([hash]))[0]\n },\n getMany: async (hashes: Hash[]): Promise<T[]> => {\n return (await store.get(hashes))\n },\n has: async (hash: Hash): Promise<boolean> => {\n return isDefined((await store.get([hash]))[0])\n },\n }\n }\n return store\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport { type StepIdentity, StepSizes } from '@xyo-network/xl1-protocol'\nimport { keccak256 } from 'ethers'\n\nexport function completedStepRewardAddress({ block, step }: StepIdentity): Address {\n const resolvedStepSize = step < StepSizes.length ? StepSizes[step] : step\n const addressKey = new TextEncoder().encode(`${block}|${resolvedStepSize}`)\n return toAddress(keccak256(addressKey).slice(-40), { prefix: false })\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { keccak256 } from 'ethers'\n\nexport function derivedReceiveAddress(address: Address, scope?: string): Address {\n const addressKey = new TextEncoder().encode(isDefined(scope) ? `${scope}|${address}` : address)\n return toAddress(keccak256(addressKey).slice(-40), { prefix: false })\n}\n","import type { StepIdentity, XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { asXL1BlockRange, StepSizes } from '@xyo-network/xl1-protocol'\n\nexport function stepBlockRange({ block, step }: StepIdentity): XL1BlockRange {\n const stepSize = StepSizes[step]\n const start = block - stepSize\n return asXL1BlockRange([start, start + stepSize - 1], true)\n}\n","import { assertEx } from '@xylabs/assert'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nexport function stepTransferIndex(block: number, step: number) {\n let rewardTransferCount = 0\n let rewardTransferIndex = -1\n for (let i = 3; i < StepSizes.length; i++) {\n const stepSize = StepSizes[i]\n if (block % stepSize === 0) {\n if (stepSize === StepSizes[step]) {\n rewardTransferIndex = rewardTransferCount\n }\n rewardTransferCount++\n }\n }\n assertEx(rewardTransferIndex >= 0, () => `Error: Could not find step size for step ${step} at block ${block}`)\n return [rewardTransferIndex, rewardTransferCount]\n}\n","/* eslint-disable max-statements */\nimport { assertEx } from '@xylabs/assert'\nimport { type Address } from '@xylabs/hex'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport type { XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport {\n deepCalculateFramesFromRange, hashFromBlockNumber,\n hydrateBlock,\n} from '../../../block/index.ts'\nimport type { BalanceStepSummaryContext } from '../../../model/index.ts'\nimport type { BalancesStepSummary } from '../../../payloads/index.ts'\nimport { BalancesStepSummarySchema, netBalancesForPayloads } from '../../../payloads/index.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../../SignedBigInt.ts'\n\nexport async function balancesStepSummaryFromRange(\n context: BalanceStepSummaryContext,\n range: XL1BlockRange,\n): Promise<WithStorageMeta<BalancesStepSummary>> {\n // console.log(`balanceStepSummaryFromRange: head=${head}, range=${range[0]}-${range[1]}`)\n const frameHeadHash = await hashFromBlockNumber(context, range[1])\n const frameSize = range[1] - range[0] + 1\n const [headHash] = await context.head()\n\n let result: BalancesStepSummary | undefined = undefined\n\n if (frameSize === 1) {\n const hash = await hashFromBlockNumber(context, range[0])\n const [, payloads] = await hydrateBlock(context.store, hash)\n const balances: Record<Address, SignedBigInt> = {}\n for (const [address, balance] of Object.entries(netBalancesForPayloads(payloads))) {\n balances[address as Address] = toSignedBigInt(balance)\n }\n result = {\n schema: BalancesStepSummarySchema, hash: headHash, stepSize: -1, balances,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const step = (StepSizes as any).indexOf(frameSize)\n assertEx(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes.join(', ')}`)\n\n const summaryResult = await context.summaryMap.get(`${frameHeadHash}|${frameSize}`)\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<BalancesStepSummary>\n } else {\n // We do not have it, so lets build it\n await context.stepSemaphores[step].acquire()\n try {\n const subRanges = deepCalculateFramesFromRange(range, step - 1)\n const promises = subRanges.map(subRange => balancesStepSummaryFromRange(\n context,\n subRange,\n ))\n const subResults = await Promise.all(promises)\n\n // add them all up\n const bigIntBalances: Record<Address, bigint> = {}\n for (const subResult of subResults) {\n for (const [address, balance] of Object.entries(subResult.balances)) {\n bigIntBalances[address as Address] = (bigIntBalances[address as Address] ?? 0n) + parseSignedBigInt(balance)\n }\n }\n\n const balances: Record<Address, SignedBigInt> = {}\n for (const [address, balance] of Object.entries(bigIntBalances)) {\n balances[address as Address] = toSignedBigInt(balance)\n }\n\n result = {\n schema: BalancesStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, balances,\n }\n\n await context.summaryMap.set(`${frameHeadHash}|${frameSize}`, result)\n } finally {\n context.stepSemaphores[step].release()\n }\n }\n }\n // console.log(`balanceStepSummaryFromRange-result: head=${head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)\n const finalResult = await PayloadBuilder.addStorageMeta(result)\n return finalResult\n}\n","import type { Address } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { spanRootAsync } from '@xylabs/telemetry'\nimport { isDefined } from '@xylabs/typeof'\nimport {\n asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,\n} from '@xyo-network/xl1-protocol'\n\nimport { deepCalculateFramesFromRange } from '../../../block/index.ts'\nimport type { BalanceStepSummaryContext } from '../../../model/index.ts'\nimport { parseSignedBigInt } from '../../../SignedBigInt.ts'\nimport { balancesStepSummaryFromRange } from './balancesStepSummaryFromRange.ts'\n\nexport async function balancesSummary(\n context: BalanceStepSummaryContext,\n): Promise<Partial<Record<Address, bigint>>> {\n return await spanRootAsync('balanceSummary', async () => {\n const [headHash] = await context.head()\n const headResult = await context.store.chainMap.get(headHash)\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${headHash}`, { required: true })\n const rangeStart = asXL1BlockNumber(isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0)\n const ranges = deepCalculateFramesFromRange(asXL1BlockRange([rangeStart, headBoundWitness.block], true))\n const summaries = await Promise.all(ranges.map(range => balancesStepSummaryFromRange(context, range)))\n const balances: Partial<Record<Address, bigint>> = {}\n for (let summary of summaries) {\n for (const [address, balance] of Object.entries(summary.balances)) {\n const validAddress = asAddress(address, () => `Invalid address: ${address}`)\n balances[validAddress] = (balances[validAddress] ?? 0n) + parseSignedBigInt(balance)\n }\n }\n return balances\n })\n}\n","import { type Logger } from '@xylabs/logger'\n\nexport async function timeBudget<TResult>(name: string, logger: Logger | undefined, func: () => Promise<TResult>, budget: number): Promise<TResult> {\n const start = Date.now()\n const result = await func()\n const duration = Date.now() - start\n if (duration > budget) {\n logger?.warn(`Function [${name}] execution exceeded budget: ${duration}ms > ${budget}ms`)\n }\n return result\n}\n","import type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { AllowedBlockPayload, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayload } from '@xyo-network/xl1-protocol'\n\nconst ELEVATE_OPCODE = 'elevate'\n\nexport function elevatedPayloads([tx, payloads]: SignedHydratedTransactionWithStorageMeta) {\n const opCodes = (tx.script ?? []).filter(operation => operation.startsWith(`${ELEVATE_OPCODE}|`))\n const elevatedPayloads: WithStorageMeta<AllowedBlockPayload>[] = []\n for (const opCode of opCodes) {\n const [code, hash] = opCode.split('|')\n if (code === ELEVATE_OPCODE) {\n const elevatedPayload = payloads.find(payload => payload._hash === hash)\n if (isAllowedBlockPayload(elevatedPayload)) {\n elevatedPayloads.push(elevatedPayload)\n }\n }\n }\n if (opCodes.length === elevatedPayloads.length) {\n return elevatedPayloads\n }\n throw new Error('Not all elevated payloads could be found in the transaction payloads')\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {\n /**\n * The hash of the last block that this service has indexing\n */\n endBlockHash: Hash\n /**\n * The hash of the block that the service started indexing. If undefined, the service is\n * assumed to have started indexing from the genesis block\n */\n startBlockHash?: Hash\n /**\n * The indexed state for the range\n */\n state: T\n}\nexport const ChainIndexingServiceStateSchema = 'network.xyo.chain.indexing.service.state' as const\nexport type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema\n\n/**\n * The result of a ChainIndexingServiceState\n */\nexport type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>\n\n/**\n * Identity functions for determining if an object is an ChainIndexingServiceState\n */\nexport const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {\n return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)\n}\nexport const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)\n\nexport const isChainIndexingServiceStateWithStorageMeta\n = <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>\n isChainIndexingServiceState<T>(value) && isStorageMeta(value)\n\nexport const asChainIndexingServiceStateWithStorageMeta\n = AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n","import type {\n XyoClient, XyoGateway, XyoPermissions,\n} from '../../provider/index.ts'\n\nexport class SimpleXyoClient implements XyoClient {\n gateways: Readonly<Record<string, XyoGateway>>\n permissions: XyoPermissions\n\n constructor(gateways: Readonly<Record<string, XyoGateway>>, permissions: XyoPermissions) {\n this.gateways = gateways\n this.permissions = permissions\n }\n}\n","import type { Hash } from '@xylabs/hex'\nimport { isAnyPayload, type Schema } from '@xyo-network/payload-model'\n\nimport type { MapTypeRead } from '../../map/index.ts'\nimport type {\n DataLakeData,\n DataLakeViewer,\n} from '../../provider/index.ts'\n\nexport interface DataLakeViewerParams<TMap extends MapTypeRead<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData>> {\n allowedSchemas?: Schema[]\n disallowedSchemas?: Schema[]\n map: TMap\n}\n\nexport class SimpleDataLakeViewer<TMap extends MapTypeRead<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData>,\n TParams extends DataLakeViewerParams<TMap> = DataLakeViewerParams<TMap>> implements DataLakeViewer {\n private readonly _params: TParams\n\n constructor(params: TParams) {\n this._params = params\n }\n\n get allowedSchemas(): Schema[] | undefined {\n return this._params.allowedSchemas\n }\n\n get disallowedSchemas(): Schema[] | undefined {\n return this._params.disallowedSchemas\n }\n\n protected get map(): TMap {\n return this._params.map\n }\n\n protected get params() {\n return this._params\n }\n\n async get(hash: Hash): Promise<DataLakeData | undefined> {\n const result = await this.map.get(hash)\n return this.isAllowed(result) ? result : undefined\n }\n\n async getMany(hashes: Hash[]): Promise<DataLakeData[]> {\n const result = await this.map.getMany(hashes)\n return result.filter(data => this.isAllowed(data))\n }\n\n async has(hash: Hash): Promise<boolean> {\n const value = await this.get(hash)\n if (isAnyPayload(value)) {\n return this.isAllowed(value)\n }\n return value !== undefined\n }\n\n protected isAllowed(value: DataLakeData | undefined): boolean {\n if (isAnyPayload(value)) {\n return this.isAllowedSchema(value.schema)\n }\n return true\n }\n\n protected isAllowedSchema(schema: Schema): boolean {\n if (this.allowedSchemas && !this.allowedSchemas.includes(schema)) {\n return false\n }\n if (this.disallowedSchemas && this.disallowedSchemas.includes(schema)) {\n return false\n }\n return true\n }\n}\n","import type { Hash } from '@xylabs/hex'\n\nimport type { MapType } from '../../map/index.ts'\nimport type {\n DataLakeData,\n DataLakeRunner,\n} from '../../provider/index.ts'\nimport type { DataLakeViewerParams } from './SimpleDataLakeViewer.ts'\nimport { SimpleDataLakeViewer } from './SimpleDataLakeViewer.ts'\n\nexport interface DataLakeRunnerParams extends DataLakeViewerParams<MapType<Hash, DataLakeData>> {}\n\nexport class SimpleDataLakeRunner<TParams extends DataLakeRunnerParams> extends SimpleDataLakeViewer<MapType<Hash, DataLakeData>> implements DataLakeRunner {\n constructor(params: TParams) {\n super(params)\n }\n\n async clear(): Promise<void> {\n await this.map.clear()\n }\n\n async delete(hash: Hash): Promise<boolean> {\n return await this.map.delete(hash)\n }\n\n async set(hash: Hash, data: DataLakeData): Promise<void> {\n if (this.isAllowed(data)) {\n await this.map.set(hash, data)\n }\n }\n\n async setMany(entries: [Hash, DataLakeData][]): Promise<void> {\n const allowed = entries.filter(([_, data]) => this.isAllowed(data))\n return await this.map.setMany(allowed)\n }\n}\n","import type { Promisable } from '@xylabs/promise'\n\nimport type {\n XyoConnection, XyoGateway, XyoSigner,\n} from '../../provider/index.ts'\n\nexport class SimpleXyoGateway implements XyoGateway {\n private readonly _connection: XyoConnection\n private readonly _signer: XyoSigner\n\n constructor(signer: XyoSigner, connection: XyoConnection) {\n this._signer = signer\n this._connection = connection\n }\n\n get connectionInstance(): XyoConnection {\n return this._connection\n }\n\n get signerInstance(): XyoSigner {\n return this._signer\n }\n\n connection(): Promisable<XyoConnection> {\n return this._connection\n }\n\n signer(): Promisable<XyoSigner> {\n return this._signer\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\nimport { BigIntToJsonZod } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { isDefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithHashMeta } from '@xyo-network/payload-model'\nimport {\n type AllowedBlockPayload,\n type AttoXL1,\n type SignedHydratedTransaction,\n type SignedHydratedTransactionWithHashMeta,\n type Transfer,\n TransferSchema,\n} from '@xyo-network/xl1-protocol'\n\nimport type {\n DataLakeRunner,\n TransactionOptions,\n XyoConnection, XyoGateway, XyoGatewayRunner,\n XyoSigner,\n} from '../../provider/index.ts'\nimport { buildUnsignedTransaction } from '../../transaction/index.ts'\n\nexport class SimpleXyoGatewayRunner implements XyoGatewayRunner {\n protected readonly gateway: XyoGateway\n private _dataLakes: (DataLakeRunner | null)[]\n\n constructor(gateway: XyoGateway, dataLakes: DataLakeRunner[] = []) {\n this.gateway = gateway\n this._dataLakes = [...dataLakes]\n }\n\n get connectionInstance(): XyoConnection {\n return this.gateway.connectionInstance\n }\n\n get dataLakes(): DataLakeRunner[] {\n throw new Error('Method not implemented.')\n }\n\n get signerInstance(): XyoSigner {\n return this.gateway.signerInstance\n }\n\n addDataLake(dataLake: DataLakeRunner): number {\n this._dataLakes.push(dataLake)\n return this._dataLakes.length - 1\n }\n\n async addPayloadsToChain(\n onChain: AllowedBlockPayload[],\n offChain: Payload[],\n options?: TransactionOptions,\n ): Promise<[Hash, SignedHydratedTransactionWithHashMeta]> {\n // Get chain providers\n const viewer = assertEx(this.connectionInstance.viewer, () => 'No viewer available on connection')\n\n // Resolve transaction options\n const {\n nbf, exp, chain, fees,\n } = options ?? {}\n const resolvedChainId = isDefined(chain) ? chain : await viewer.chainId()\n const resolvedNbf = isDefined(nbf) ? nbf : await viewer?.currentBlockNumber()\n const resolvedExp = isDefined(exp) ? exp : resolvedNbf + 10\n\n // Build, sign, and broadcast the transaction\n // eslint-disable-next-line sonarjs/deprecation\n const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await (await this.signer()).address(), fees)\n return await this.addTransactionToChain(tx)\n }\n\n async addTransactionToChain(tx: SignedHydratedTransaction): Promise<[Hash, SignedHydratedTransactionWithHashMeta]> {\n // eslint-disable-next-line sonarjs/deprecation\n const connection = await this.gateway.connection()\n // eslint-disable-next-line sonarjs/deprecation\n const signer = await this.gateway.signer()\n const runner = assertEx(connection.runner, () => 'No runner available on connection')\n const signedTx = await signer.signTransaction(tx)\n await this.addPayloadsToDataLakes(signedTx[1])\n return [await runner.broadcastTransaction(\n [await PayloadBuilder.addStorageMeta(signedTx[0]),\n await PayloadBuilder.addStorageMeta(signedTx[1])],\n ), signedTx]\n }\n\n connection(): Promisable<XyoConnection> {\n throw new Error('Method not implemented.')\n }\n\n removeDataLake(index: number): void {\n this._dataLakes[index] = null\n }\n\n async send(to: Address, amount: AttoXL1, options?: TransactionOptions): Promise<Hash> {\n return await this.sendMany({ [to]: amount }, options)\n }\n\n async sendMany(transfers: Record<Address, AttoXL1>, options?: TransactionOptions): Promise<Hash> {\n // eslint-disable-next-line sonarjs/deprecation\n const from = await (await this.signer()).address()\n const hexTransfers: Record<Address, Hex> = Object.fromEntries(\n Object.entries(transfers).map(([address, amount]) => ([\n address, BigIntToJsonZod.parse(amount),\n ])),\n )\n const transfer = new PayloadBuilder<Transfer>({ schema: TransferSchema }).fields({\n from,\n transfers: hexTransfers,\n epoch: Date.now(),\n }).build()\n const [hash] = await this.addPayloadsToChain([transfer], [], options)\n return hash\n }\n\n /** @deprecated use signerInstance instead */\n signer(): Promisable<XyoSigner> {\n // eslint-disable-next-line sonarjs/deprecation\n return this.gateway.signer()\n }\n\n protected async addPayloadsToDataLakes(payloads: WithHashMeta<Payload>[]): Promise<void> {\n await Promise.all(this._dataLakes.map(async (dataLake) => {\n await Promise.all(payloads.map(async (payload) => {\n await dataLake?.set(payload._hash, payload)\n }))\n }))\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n ChainId,\n ExecutableFields,\n FromFields,\n SignedHydratedTransactionWithStorageMeta, TransactionBoundWitness, TransactionBoundWitnessFields, TransactionFeesBigInt,\n} from '@xyo-network/xl1-protocol'\nimport { defaultTransactionFees } from '@xyo-network/xl1-protocol'\n\nexport async function buildTransaction(\n chain: ChainId,\n onChainPayloads: AllowedBlockPayload[],\n offChainPayloads: Payload[],\n signer: AccountInstance | AccountInstance[],\n nbf: number,\n exp: number,\n from?: Address,\n fees: TransactionFeesBigInt = defaultTransactionFees,\n): Promise<SignedHydratedTransactionWithStorageMeta> {\n if (from === undefined && Array.isArray(signer)) {\n throw new Error('from is required when signer is an array')\n }\n\n const txBoundWitnessFields: TransactionBoundWitnessFields = {\n chain,\n fees: {\n base: toHex(fees.base),\n gasLimit: toHex(fees.gasLimit),\n gasPrice: toHex(fees.gasPrice),\n priority: toHex(fees.priority),\n },\n nbf,\n exp,\n }\n\n const elevatedHashes = await PayloadBuilder.hashes(onChainPayloads)\n const script: string[] = []\n for (const elevatedHash of elevatedHashes) {\n script.push(`elevate|${elevatedHash}`)\n }\n\n const fields: TransactionBoundWitnessFields & FromFields & Partial<ExecutableFields> = {\n ...txBoundWitnessFields,\n from: from ?? (Array.isArray(signer) ? assertEx(signer.at(0)?.address) : signer.address),\n }\n\n if (script.length > 0) {\n fields.script = script\n }\n\n const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()\n .fields(fields)\n .meta({ $signatures: [] })\n .payloads([...onChainPayloads, ...offChainPayloads])\n .signers(Array.isArray(signer) ? signer : [signer])\n .build()\n\n return [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(txPayloads)]\n}\n","import type { Address } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, ChainId, ExecutableFields, FromFields, TransactionBoundWitness, TransactionBoundWitnessFields, TransactionFeesBigInt,\n UnsignedHydratedTransaction,\n} from '@xyo-network/xl1-protocol'\nimport { defaultTransactionFees } from '@xyo-network/xl1-protocol'\n\nexport async function buildUnsignedTransaction(\n chain: ChainId,\n onChainPayloads: AllowedBlockPayload[],\n offChainPayloads: Payload[],\n nbf: number,\n exp: number,\n from: Address,\n fees: TransactionFeesBigInt = defaultTransactionFees,\n): Promise<UnsignedHydratedTransaction> {\n const txBoundWitnessFields: TransactionBoundWitnessFields = {\n chain,\n fees: {\n base: toHex(fees.base),\n gasLimit: toHex(fees.gasLimit),\n gasPrice: toHex(fees.gasPrice),\n priority: toHex(fees.priority),\n },\n nbf,\n exp,\n }\n\n const elevatedHashes = await PayloadBuilder.hashes(onChainPayloads)\n const script: string[] = []\n for (const elevatedHash of elevatedHashes) {\n script.push(`elevate|${elevatedHash}`)\n }\n\n const fields: TransactionBoundWitnessFields & FromFields & Partial<ExecutableFields> = {\n ...txBoundWitnessFields,\n from,\n }\n\n if (script.length > 0) {\n fields.script = script\n }\n\n const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()\n .fields(fields)\n .meta({ $signatures: [] })\n .payloads([...onChainPayloads, ...offChainPayloads])\n .build()\n\n return [tx, txPayloads]\n}\n","import { delay } from '@xylabs/delay'\nimport type { Logger } from '@xylabs/logger'\nimport { isDefined } from '@xylabs/typeof'\nimport type { Signed } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignedHydratedTransaction, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport type { XyoViewer } from '../provider/index.ts'\n\nconst DEFAULT_CONFIRMATION_ATTEMPTS = 20\nconst DEFAULT_DELAY_BETWEEN_ATTEMPTS = 1000 // milliseconds\n\nexport type ConfirmSubmittedTransactionOptions = {\n /**\n * Number of attempts to confirm the transaction.\n * Defaults to 20.\n */\n attempts?: number\n /**\n * Delay in milliseconds between confirmation attempts.\n * Defaults to 1000 (1 second).\n */\n delay?: number\n /**\n * Optional logger instance for logging progress.\n */\n logger?: Logger\n}\n\n/**\n * Confirms a submitted transaction by checking if it has been included in the blockchain.\n * @param viewer The viewer\n * @param transaction The transaction to confirm\n * @param options Options for confirmation\n * @returns The confirmed transaction or throws an error if not confirmed\n */\nexport const confirmSubmittedTransaction = async (\n viewer: XyoViewer,\n transaction: Signed<TransactionBoundWitness>,\n options?: ConfirmSubmittedTransactionOptions,\n): Promise<SignedHydratedTransaction> => {\n const { attempts: maxAttempts = DEFAULT_CONFIRMATION_ATTEMPTS, delay: attemptDelay = DEFAULT_DELAY_BETWEEN_ATTEMPTS } = options ?? {}\n const txBWHash = await PayloadBuilder.hash(transaction)\n options?.logger?.log('🚀 confirming transaction:', txBWHash, '\\n')\n let attempts = 0\n while (true) {\n const tx = await viewer.transactionByHash(txBWHash) ?? undefined\n if (isDefined(tx)) {\n options?.logger?.log('✅ Transaction confirmed:', txBWHash, '\\n')\n return tx\n } else {\n attempts++\n if (attempts > maxAttempts) {\n options?.logger?.error(`⚠️ Transaction not confirmed after ${maxAttempts} attempts`)\n throw new Error(`Transaction ${txBWHash} not confirmed after ${maxAttempts} attempts`)\n } else {\n options?.logger?.log(`🔄 Transaction not confirmed yet, attempt ${attempts}. Retrying...`, '\\n')\n await delay(attemptDelay)\n }\n }\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from '@xyo-network/archivist-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n SignedHydratedTransaction, SignedHydratedTransactionWithStorageMeta, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport type { ChainStoreRead } from '../model/index.ts'\n\nexport const tryHydrateTransaction = async (\n { chainMap }: ChainStoreRead,\n hash: Hash,\n): Promise<SignedHydratedTransactionWithStorageMeta | undefined> => {\n return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(\n {\n get(hashes: Hash[]) {\n return chainMap.getMany(hashes)\n },\n next() {\n throw new Error('Not implemented')\n },\n },\n hash,\n isSignedTransactionBoundWitnessWithStorageMeta,\n )) as SignedHydratedTransactionWithStorageMeta | undefined\n}\n\nexport const hydrateTransaction = async (\n { chainMap }: ChainStoreRead,\n hash: Hash,\n): Promise<SignedHydratedTransaction> => {\n return await hydrateTypedBoundWitness<TransactionBoundWitness>(\n {\n get(hashes: Hash[]) {\n return chainMap.getMany(hashes)\n },\n next() {\n throw new Error('Not implemented')\n },\n },\n hash,\n isSignedTransactionBoundWitnessWithStorageMeta,\n ) as SignedHydratedTransaction\n}\n\nexport const flattenHydratedTransaction = (hydratedTransaction: SignedHydratedTransaction): Payload[] => {\n const [tx, txPayloads] = hydratedTransaction\n return [...txPayloads, tx]\n}\n\nexport const flattenHydratedTransactions = (hydratedTransactions: SignedHydratedTransaction[]): Payload[] =>\n hydratedTransactions.flatMap(tx => flattenHydratedTransaction(tx))\n\nexport const tryHydrateElevatedTransaction = async (\n { chainMap }: ChainStoreRead,\n hash: Hash,\n): Promise<SignedHydratedTransactionWithStorageMeta | undefined> => {\n const hydratedTransaction = await tryHydrateTransaction({ chainMap }, hash)\n if (!hydratedTransaction) {\n return undefined\n }\n const [transaction, payloads] = hydratedTransaction\n const opCodes = (transaction.script ?? []).filter(operation => operation.startsWith('elevate|'))\n const elevatedPayloads: WithStorageMeta<AllowedBlockPayload>[] = []\n for (const opCode of opCodes) {\n const [code, hash] = opCode.split('|')\n if (code === 'elevated') {\n const elevatedPayload = payloads.find(payload => payload._hash === hash)\n if (isAllowedBlockPayload(elevatedPayload)) {\n elevatedPayloads.push(elevatedPayload)\n }\n }\n }\n if (opCodes.length === elevatedPayloads.length) {\n return [transaction, elevatedPayloads]\n }\n return undefined\n}\n\nexport const hydrateElevatedTransaction = async (\n context: ChainStoreRead,\n hash: Hash,\n): Promise<SignedHydratedTransaction> => {\n return assertEx(await tryHydrateElevatedTransaction(context, hash), () => 'Hydration failed')\n}\n","import { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignedHydratedTransaction } from '@xyo-network/xl1-protocol'\n\n/** The number of bytes that a transaction and its payloads will take up in a block */\nexport function transactionBlockByteCount([transaction, payloads]: SignedHydratedTransaction): number {\n const cleanTransaction = PayloadBuilder.omitStorageMeta(transaction)\n const transactionBytes = JSON.stringify(cleanTransaction).length\n const cleanPayloads = PayloadBuilder.omitStorageMeta(payloads)\n return cleanPayloads.reduce((acc: number, payload) => acc + JSON.stringify(payload).length, 0) + transactionBytes\n}\n","import { asHash, type Hash } from '@xylabs/hex'\nimport type { Payload, WithHashMeta } from '@xyo-network/payload-model'\nimport type { SignedHydratedTransactionWithStorageMeta, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport { crackOperations } from './transactionOperations.ts'\n\nexport function transactionElevatedPayloadHashes(transaction: TransactionBoundWitness): Hash[] {\n const elevateOperations = crackOperations(transaction.script ?? []).filter(op => op[0] === 'elevate')\n return elevateOperations.map(op => asHash(op[1][0], true))\n}\n\nexport function transactionElevatedPayloads([transaction, payloads]: SignedHydratedTransactionWithStorageMeta): WithHashMeta<Payload>[] {\n const hashes = transactionElevatedPayloadHashes(transaction)\n const elevatedPayloads = payloads.filter(payload => hashes.includes(payload._hash))\n return elevatedPayloads\n}\n","export function crackOperation(operation: string): [string, string[]] {\n const parts = operation.split('|')\n if (parts.length < 2) {\n throw new Error(`Invalid operation format: ${operation}`)\n }\n return [parts[0], parts.slice(1)]\n}\n\nexport function crackOperations(operations: string[]): [string, string[]][] {\n return operations.map(op => crackOperation(op))\n}\n","import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { AttoXL1, TransactionGasCosts } from '@xyo-network/xl1-protocol'\n\nimport { transactionBlockByteCount } from './transactionBlockByteCount.ts'\nimport { transactionElevatedPayloads } from './transactionElevatedPayloads.ts'\n\n/** The required gas for the byte storage on the block chain for a transaction */\nexport function transactionBytesRequiredGas([transaction, payloads]: SignedHydratedTransactionWithStorageMeta): AttoXL1 {\n const transactionBlockBytes = transactionBlockByteCount([transaction, payloads])\n return AttoXL1(TransactionGasCosts.characterStorage * BigInt(transactionBlockBytes))\n}\n\nexport function transactionRequiredGas(hydratedTransaction: SignedHydratedTransactionWithStorageMeta): AttoXL1 {\n const elevatedPayloads = transactionElevatedPayloads(hydratedTransaction)\n const hashes = elevatedPayloads.length + 1 /* for transaction itself */\n const signatures = hydratedTransaction[0].addresses.length\n return AttoXL1(transactionBytesRequiredGas(hydratedTransaction)\n + TransactionGasCosts.hashValidation * BigInt(hashes)\n + TransactionGasCosts.signatureValidation * BigInt(signatures)\n + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads.length))\n}\n","import { filterAs } from '@xylabs/array'\nimport { assertEx } from '@xylabs/assert'\nimport { asHash, type Hash } from '@xylabs/hex'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { AllowedBlockPayload, HydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayloadWithHashMeta } from '@xyo-network/xl1-protocol'\n\nexport const tryExtractElevatedHashesFromScript = (strings: string[]): Hash[] => {\n const hashes = strings\n .filter(str => str.startsWith('elevate|'))\n .map(str => str.split('|')[1])\n return filterAs(hashes, h => asHash(h))\n}\n\nexport const extractElevatedHashesFromScript = (strings: string[]): Hash[] => {\n const hashes = strings\n .filter(str => str.startsWith('elevate|'))\n .map(str => str.split('|')[1])\n const filtered = filterAs(hashes, h => asHash(h))\n assertEx(filtered.length === hashes.length, () => 'Invalid elevated hashes')\n return filtered\n}\n\nexport const tryExtractElevatedHashes = (tx: HydratedTransactionWithStorageMeta): WithStorageMeta<AllowedBlockPayload>[] => {\n const [bw, payloads] = tx\n const { script } = bw\n const hashes = script ? tryExtractElevatedHashesFromScript(script) : []\n return payloads\n .filter(p => hashes.includes(p._hash))\n .filter(isAllowedBlockPayloadWithHashMeta)\n}\n\nexport const extractElevatedHashes = (tx: HydratedTransactionWithStorageMeta): WithStorageMeta<AllowedBlockPayload>[] => {\n const [bw, payloads] = tx\n const { script } = bw\n const hashes = script ? tryExtractElevatedHashesFromScript(script) : []\n const filtered = payloads\n .filter(p => hashes.includes(p._hash))\n .filter(isAllowedBlockPayloadWithHashMeta)\n assertEx(filtered.length === hashes.length, () => 'Invalid elevated hashes')\n return filtered\n}\n","import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { hexFromArrayBuffer } from '@xylabs/hex'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { Unsigned } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { TransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\n/**\n * Signs an unsigned transaction with the provided account.\n * @param tx The transaction to sign\n * @param account The account to sign the transaction with\n * @returns The signed transaction\n */\nexport async function signTransaction(tx: Unsigned<TransactionBoundWitness>, account: AccountInstance) {\n assertEx(tx.from === account.address, () => 'Signer address does not match transaction from address')\n // Clone tx to prevent modifying original\n const signedTx = structuredClone(tx)\n // Update dynamic fields based on account\n signedTx.addresses = [account.address]\n signedTx.previous_hashes = [account.previousHash ?? null]\n // Calculate tx hash and sign it\n const hash = await PayloadBuilder.dataHash(signedTx)\n const hashBytes = toArrayBuffer(hash)\n const [signature] = await account.sign(hashBytes)\n // Append the signatures to the transaction\n signedTx.$signatures = [hexFromArrayBuffer(signature)]\n // Return the signed transaction\n return signedTx\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type {\n GatewayName,\n NetworkStatus,\n} from '@xyo-network/xl1-protocol'\nimport { isNetworkStatus } from '@xyo-network/xl1-protocol'\nimport axios from 'axios'\n\nimport type { XyoNetwork } from '../../provider/index.ts'\nimport {\n errorStatus, StatusNetworks, unknownStatus,\n} from './lib/index.ts'\n\nexport class SimpleXyoNetwork implements XyoNetwork {\n protected readonly _networkId: GatewayName\n\n constructor(networkId: GatewayName) {\n this._networkId = networkId\n }\n\n async status(): Promise<NetworkStatus> {\n const statusNetwork = StatusNetworks[this._networkId]\n if (isUndefined(statusNetwork)) {\n throw new Error(`Unknown status network ID: ${this._networkId}`)\n }\n\n return await this.makeRequest(statusNetwork.statusUrl)\n }\n\n private async makeRequest(url: string): Promise<NetworkStatus> {\n try {\n const response = await axios.get(url)\n if (isNetworkStatus(response.data)) {\n return response.data\n } else {\n if (response.status === 200) {\n console.error('Unknown network status response:', response.data)\n\n return unknownStatus\n }\n return errorStatus\n }\n } catch (error) {\n console.error('Error fetching network status:', error)\n return errorStatus\n }\n }\n}\n","import type { NetworkStatus } from '@xyo-network/xl1-protocol'\nimport { NetworkStatusSchema } from '@xyo-network/xl1-protocol'\n\nexport const unknownStatus: NetworkStatus = {\n description: 'Unknown Network Status',\n schema: NetworkStatusSchema,\n state: 'unknown',\n}\n\nexport const errorStatus: NetworkStatus = {\n description: 'Error Fetching Network Status',\n schema: NetworkStatusSchema,\n state: 'unknown',\n}\n","import type { GatewayName } from '@xyo-network/xl1-protocol'\n\nexport type StatusNetwork = {\n id: GatewayName\n statusUrl: string\n}\n\nexport const MainNetworkStats: StatusNetwork = {\n id: 'mainnet' as GatewayName,\n statusUrl: 'https://xyo.network/chain-network-status-mainnet.json',\n}\n\nexport const SequenceNetworkStats: StatusNetwork = {\n id: 'sequence' as GatewayName,\n statusUrl: 'https://beta.xyo.network/chain-network-status-sequence.json',\n}\n\nexport const LocalNetworkStats: StatusNetwork = {\n id: 'local' as GatewayName,\n statusUrl: 'http://localhost:3002/chain-network-status-local.json',\n}\n\nexport const StatusNetworks: Record<GatewayName, StatusNetwork> = {\n ['mainnet' as GatewayName]: MainNetworkStats,\n ['sequence' as GatewayName]: SequenceNetworkStats,\n ['local' as GatewayName]: LocalNetworkStats,\n}\n","import { assertEx } from '@xylabs/assert'\n\nimport type {\n CaveatTypes,\n InvokerPermission, PermissionRequest, RequestedPermission, XyoPermissions,\n} from '../../provider/index.ts'\nimport type { Invoker, PermissionsStore } from './store/index.ts'\n\n/**\n * In-memory implementation of XyoPermissions for testing or ephemeral use cases.\n * Does not persist data beyond the lifetime of the instance.\n * Assumes all permission requests are granted and revocations always succeed.\n */\nexport class SimpleXyoPermissions implements XyoPermissions {\n invoker: Invoker\n private _store: PermissionsStore\n\n constructor(store: PermissionsStore) {\n this._store = store\n this.invoker = store.invoker\n }\n\n get store(): PermissionsStore {\n return assertEx(this._store, () => 'Store must be defined to get permissions')\n }\n\n async getPermissions(): Promise<InvokerPermission[]> {\n return await this.store.getPermissions()\n }\n\n // assumed the permissions are always granted\n async requestPermissions(permissions: PermissionRequest[]): Promise<RequestedPermission[]> {\n await Promise.resolve()\n // Flatten PermissionRequest[] into InvokerPermission[]\n const newPermissions: InvokerPermission[] = []\n const now = Date.now()\n for (const req of permissions) {\n for (const parentCapability in req) {\n newPermissions.push({\n invoker: this.invoker,\n parentCapability,\n caveats: Object.entries(req[parentCapability]).map(([type, value]) => ({ type: type as CaveatTypes, value })),\n date: now,\n })\n }\n }\n\n // Update or add permissions in the store\n const existingPermissions = await this.getPermissions()\n for (const perm of newPermissions) {\n const idx = existingPermissions.findIndex(\n p => p.invoker === perm.invoker && p.parentCapability === perm.parentCapability,\n )\n if (idx === -1) {\n existingPermissions.push(perm)\n } else {\n existingPermissions[idx] = perm\n }\n }\n await this.store.setPermissions(existingPermissions)\n\n // Return the granted permissions in RequestedPermission shape\n return newPermissions.map(({ parentCapability, date }) => ({ parentCapability, date }))\n }\n\n // Assumes the permissions are always revoked\n async revokePermissions(permissions: PermissionRequest): Promise<RequestedPermission[]> {\n const existingPermissions = await this.getPermissions()\n const revoked: RequestedPermission[] = []\n for (const parentCapability in permissions) {\n const idx = existingPermissions.findIndex(\n p => p.invoker === this.invoker && p.parentCapability === parentCapability,\n )\n if (idx !== -1) {\n const removed = existingPermissions.splice(idx, 1)[0]\n revoked.push({ parentCapability: removed.parentCapability, date: removed.date })\n }\n }\n await this.store.setPermissions(existingPermissions)\n return revoked\n }\n}\n","import { assertEx } from '@xylabs/assert'\n\nimport type { InvokerPermission } from '../../../provider/index.ts'\nimport type { Invoker, PermissionsStore } from './PermissionsStore.ts'\n\n/**\n * In-memory implementation of XyoPermissions for testing or ephemeral use cases.\n * Does not persist data beyond the lifetime of the instance.\n * Assumes all permission requests are granted and revocations always succeed.\n */\nexport class MemoryPermissionsStore implements PermissionsStore {\n private _invoker: Invoker\n private permissions: InvokerPermission[] = []\n\n constructor(invoker: Invoker) {\n this._invoker = invoker\n }\n\n get invoker(): Invoker {\n return assertEx(this._invoker, () => 'Invoker must be defined to get permissions')\n }\n\n async getPermissions(): Promise<InvokerPermission[]> {\n await Promise.resolve()\n return this.permissions\n }\n\n async setPermissions(permissions: InvokerPermission[]): Promise<void> {\n await Promise.resolve()\n this.permissions = permissions\n }\n}\n","import type { Hash } from '@xylabs/hex'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport type { XyoRunner } from '../../provider/index.ts'\nimport { flattenHydratedTransaction } from '../../transaction/index.ts'\n\nexport class SimpleXyoRunner implements XyoRunner {\n private _mempoolArchivist?: ArchivistInstance\n\n constructor(mempoolArchivist?: ArchivistInstance) {\n this._mempoolArchivist = mempoolArchivist\n }\n\n async broadcastTransaction(transaction: SignedHydratedTransactionWithStorageMeta): Promise<Hash> {\n const archivist = await this.getMempoolArchivist()\n await archivist.insert(flattenHydratedTransaction(transaction))\n return await PayloadBuilder.hash(transaction[0])\n }\n\n protected async getMempoolArchivist(): Promise<ArchivistInstance> {\n if (!this._mempoolArchivist) {\n this._mempoolArchivist = await MemoryArchivist.create({ account: 'random' })\n }\n return this._mempoolArchivist\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { type Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, ChainId, SignedHydratedTransactionWithHashMeta, TransactionBoundWitness, TransactionFeesBigInt,\n} from '@xyo-network/xl1-protocol'\n\nimport type { XyoSigner } from '../../provider/index.ts'\nimport { buildTransaction, signTransaction } from '../../transaction/index.ts'\n\nexport class SimpleXyoSigner implements XyoSigner {\n protected readonly _account: AccountInstance\n\n constructor(account: AccountInstance) {\n this._account = account\n }\n\n address(): Promisable<Address> {\n return this._account.address\n }\n\n async createSignedTransaction(\n chain: ChainId,\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n nbf: number,\n exp: number,\n fees: TransactionFeesBigInt,\n from?: Address,\n ): Promise<Signed<TransactionBoundWitness>> {\n const fromAddress = from ?? this._account.address\n const transaction = await buildTransaction(\n chain,\n elevatedPayloads,\n additionalPayloads,\n this._account,\n nbf,\n exp,\n fromAddress,\n fees,\n )\n return transaction[0]\n }\n\n async signTransaction(tx: [UnsignedBoundWitness<TransactionBoundWitness>, Payload[]]): Promise<SignedHydratedTransactionWithHashMeta> {\n const txBW = await signTransaction(tx[0], this._account)\n return [await PayloadBuilder.addStorageMeta(txBW), await PayloadBuilder.addStorageMeta(tx[1])]\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { XL1BlockNumber } from '@xyo-network/xl1-protocol'\nimport { asTimePayload, TimeSchema } from '@xyo-network/xl1-protocol'\n\nimport { hashFromBlockNumber, hydrateBlock } from '../../block/index.ts'\nimport type { ChainContextRead } from '../../model/index.ts'\n\nexport async function xl1BlockNumberToEthBlockNumber(context: ChainContextRead, xl1BlockNumber: XL1BlockNumber): Promise<number> {\n const blockHash = await hashFromBlockNumber(context, xl1BlockNumber)\n const hydratedBlock = await hydrateBlock(context.store, blockHash)\n const timePayload = asTimePayload(hydratedBlock[1].find(p => p.schema === TimeSchema), { required: true })\n return assertEx(timePayload.ethereum, () => 'No ethereum timestamp found on block')\n}\n","import { HDWallet } from '@xyo-network/wallet'\n\nimport { DEFAULT_WALLET_PATH } from './paths.ts'\n\n/**\n * Initializes a wallet to the default XYO path from a mnemonic phrase\n * @param walletPhrase The mnemonic phrase for the wallet\n * @returns A wallet initialized to the default XYO path using the provided phrase\n */\nexport const generateXyoBaseWalletFromPhrase = (walletPhrase: string) => {\n const wallet = HDWallet.fromPhrase(walletPhrase, DEFAULT_WALLET_PATH)\n return wallet\n}\n","export const WALLET_COMPLIANCE = '44\\'' as const\n\nexport const COIN_TYPES = { Ethereum: '60\\'' } as const\n\nexport const ACCOUNT_TYPE = { GANACHE: '0\\'', XYO: '0\\'' } as const\n\nexport const CHANGE_ADDRESS = { META_MASK: '0', XYO: '0' } as const\n\nexport const ADDRESS_INDEX = { META_MASK: '0', XYO: '0' } as const\n\nexport const DEFAULT_WALLET_PATH = `m/${WALLET_COMPLIANCE}/${COIN_TYPES.Ethereum}/${ACCOUNT_TYPE.XYO}/${CHANGE_ADDRESS.XYO}`\n"],"mappings":"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","names":["allHashesPresent","hashes","payloads","payloadHashes","Set","map","p","_hash","every","hash","has","assertEx","isTransactionBoundWitnessWithStorageMeta","blockPayloadsFromHydratedBlock","block","payload_hashes","map","hash","assertEx","find","p","_hash","filter","x","isTransactionBoundWitnessWithStorageMeta","flattenHydratedBlock","hydratedBlock","blk","blkPayloads","flattenHydratedBlocks","hydratedBlocks","flatMap","blk","flattenHydratedBlock","assertEx","asBlockBoundWitnessWithStorageMeta","isTransactionBoundWitnessWithStorageMeta","hydrateBlock","chainMap","hash","maxDepth","minDepth","assertEx","bw","asBlockBoundWitnessWithStorageMeta","get","blkPayloads","getMany","payload_hashes","allHashesPresent","transactions","filter","isTransactionBoundWitnessWithStorageMeta","transactionsPayloadHashes","flatMap","tx","transactionsPayloads","allPayloadsHashes","Set","p","_hash","allPayloads","allPayloadsFiltered","has","filterAs","asTransactionBoundWitnessWithStorageMeta","transactionsFromHydratedBlock","block","filterAs","asTransactionBoundWitnessWithStorageMeta","assertEx","isBlockBoundWitnessWithStorageMeta","isTransactionBoundWitnessWithStorageMeta","tryHydrateBlock","archivist","hash","maxDepth","assertEx","bw","get","find","isBlockBoundWitnessWithStorageMeta","undefined","blkPayloads","payload_hashes","transactions","filter","isTransactionBoundWitnessWithStorageMeta","transactionsPayloadHashes","flatMap","tx","transactionsPayloads","allPayloadsHashes","Set","p","_hash","allPayloads","allPayloadsFiltered","has","asHash","toSafeJsonString","asBlockBoundWitnessWithStorageMeta","StepSizes","isDefined","isUndefined","LRUCache","LruCacheMap","lruCache","options","LRUCache","max","clear","delete","id","get","getMany","results","key","value","undefined","push","has","set","data","setMany","entries","isDefined","MemoryMap","map","Map","clear","delete","id","get","getMany","ids","results","data","isDefined","push","has","set","setMany","entries","key","value","contextCache","context","name","create","caches","isUndefined","MemoryMap","withContextCacheResponse","key","func","options","cache","LruCacheMap","max","cacheResult","get","isDefined","result","set","StakeEventNames","blockFromBlockNumber","context","blockNumber","cacheKey","withContextCacheResponse","headHash","head","result","store","chainMap","get","currentBlock","asBlockBoundWitnessWithStorageMeta","required","block","Error","jumpHash","previous","jumpBlockNumber","step","stepSize","StepSizes","entries","possibleJumpBlockNumber","asHash","step_hashes","at","newBlock","toSafeJsonString","asXL1BlockNumber","stepSize","calculateFramesFromRange","range","step","size","stepSize","start","Math","trunc","fitted","remaining","push","asXL1BlockNumber","min","i","StepSizes","deepCalculateFramesFromRange","range","startingStep","StepSizes","length","fitted","remaining","step","newRemaining","newFittedFrames","newRemainingFrames","calculateFramesFromRange","push","i","toSorted","a","b","hashFromBlockNumber","context","blockNumber","blockFromBlockNumber","_hash","isReadArchivist","value","get","undefined","next","isWriteArchivist","insert","isReadWriteArchivist","toStepIdentityString","block","step","assertEx","PayloadBuilder","isAnyPayload","StepSizes","AsObjectFactory","isPayloadOfSchemaType","AddressPairSchema","isAddressPairPayload","asAddressPairPayload","create","asOptionalAddressPairPayload","createOptional","hexToBigInt","toAddress","span","isTransfer","netBalancesForPayloads","payloads","span","balances","payload","isTransfer","from","address","amount","Object","entries","transfers","toAddress","hexToBigInt","hexToBigInt","span","isTransfer","netTransfersForPayloads","payloads","span","transfers","payload","isTransfer","from","to","amount","Object","entries","hexToBigInt","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta","BalancesStepSummarySchema","isBalancesStepSummary","isPayloadOfSchemaType","asBalancesStepSummary","AsObjectFactory","create","isBalancesStepSummaryWithStorageMeta","value","isStorageMeta","asBalancesStepSummaryWithStorageMeta","StepSummarySchema","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta","TransfersStepSummarySchema","isTransfersStepSummary","isPayloadOfSchemaType","asTransfersStepSummary","AsObjectFactory","create","isTransfersStepSummaryWithStorageMeta","value","isStorageMeta","asTransfersStepSummaryWithStorageMeta","hexToBigInt","toHex","isObject","isNegativeBigInt","value","isObject","negative","isPositiveBigInt","positive","parseSignedBigInt","hexToBigInt","Error","toSignedBigInt","toHex","toPositiveBigInt","asAddress","spanRootAsync","isDefined","asBlockBoundWitnessWithStorageMeta","asXL1BlockNumber","asXL1BlockRange","transfersSummary","transferContext","spanRootAsync","headHash","head","headResult","store","chainMap","get","headBoundWitness","asBlockBoundWitnessWithStorageMeta","required","rangeStart","asXL1BlockNumber","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","asXL1BlockRange","summaries","Promise","all","map","range","transfersStepSummaryFromRange","transfers","summary","from","toMap","Object","entries","validFrom","asAddress","to","transfer","validTo","parseSignedBigInt","transfersSummaryKey","frameHeadHash","frameSize","transfersStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","headHash","head","result","undefined","hash","payloads","hydrateBlock","store","transfers","from","toMap","Object","entries","netTransfersForPayloads","to","amount","toSignedBigInt","schema","TransfersStepSummarySchema","stepSize","step","StepSizes","indexOf","assertEx","join","key","transfersSummaryKey","summaryResult","summaryMap","get","isAnyPayload","stepSemaphores","acquire","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","transfer","parseSignedBigInt","set","release","finalResult","PayloadBuilder","addStorageMeta","z","globalRegistry","z","isValidationError","ValidationError","BlockValidationError","ValidationError","isBlockValidationError","error","isValidationError","name","HydratedBlockValidationError","isHydratedBlockValidationError","HydratedBlockStateValidationError","chainId","hash","value","message","cause","isHydratedBlockStateValidationError","isLocalhost","hostname","endsWith","getUrl","host","port","scheme","isLocalhost","TODO","z","MnemonicStringZod","string","transform","s","trim","replaceAll","refine","includes","split","length","message","describe","ApiConfigZod","object","host","string","default","register","globalRegistry","description","title","type","initRewardsCache","union","number","transform","v","mnemonic","MnemonicStringZod","optional","port","coerce","globalRegistry","z","AppConfigZod","object","port","coerce","number","default","register","description","title","type","globalRegistry","z","BridgeConfigZod","object","host","string","default","register","globalRegistry","description","title","type","mnemonic","MnemonicStringZod","optional","port","coerce","number","globalRegistry","z","ChainConfigZod","object","id","string","optional","register","description","title","type","globalRegistry","z","EvmInfuraConfigZod","object","projectId","string","optional","register","description","title","type","projectSecret","EvmJsonRpcConfigZod","url","EvmConfigZod","chainId","infura","describe","jsonRpc","LogLevel","globalRegistry","z","LogLevels","Object","keys","LogConfigZod","object","logLevel","enum","default","register","choices","description","title","type","silent","boolean","globalRegistry","z","MempoolConfigZod","object","enabled","string","default","transform","val","ctx","normalized","toLowerCase","trim","includes","addIssue","code","expected","message","NEVER","register","globalRegistry","description","title","type","host","mnemonic","MnemonicStringZod","optional","port","coerce","number","AddressZod","asAddress","globalRegistry","z","ProducerConfigZod","object","allowlist","preprocess","val","split","map","s","asAddress","trim","array","AddressZod","optional","register","globalRegistry","description","title","type","disableIntentRedeclaration","boolean","healthCheckPort","coerce","number","heartbeatInterval","default","minStake","mnemonic","MnemonicStringZod","port","rewardAddress","string","globalRegistry","z","RewardRedemptionApiConfigZod","object","chainRpcApiUrl","string","default","register","globalRegistry","description","title","type","host","mnemonic","MnemonicStringZod","optional","port","coerce","number","isDefined","isUndefined","globalRegistry","z","hasMongoConfig","config","isUndefined","isDefined","connectionString","database","domain","password","username","MongoConfigZod","object","string","nonempty","optional","register","globalRegistry","description","title","type","globalRegistry","z","StorageConfigZod","object","mongo","MongoConfigZod","optional","describe","root","string","register","globalRegistry","description","title","type","globalRegistry","z","OpenTelemetryConfigZod","object","otlpEndpoint","url","optional","register","description","title","type","TelemetryConfigZod","otel","describe","AddressZod","asAddress","globalRegistry","z","ValidationConfigZod","object","allowedRewardRedeemers","preprocess","val","split","map","s","trim","array","optional","register","description","title","type","allowedRewardEscrowAccountSigners","Xl1CommonConfigSchema","object","LogConfigZod","shape","describe","ConfigZod","api","ApiConfigZod","default","parse","app","AppConfigZod","bridge","BridgeConfigZod","chain","ChainConfigZod","evm","EvmConfigZod","mempool","MempoolConfigZod","producer","ProducerConfigZod","rewardRedemptionApi","RewardRedemptionApiConfigZod","storage","StorageConfigZod","telemetry","TelemetryConfigZod","validation","ValidationConfigZod","getDefaultConfig","z","DescriptionSchema","string","TitleSchema","JSONSchemaMetaSchema","object","id","optional","title","description","deprecated","boolean","catchall","unknown","GlobalMetaSchema","extend","ChoicesSchema","array","union","number","literal","undefined","readonly","UsageMetaSchema","choices","default","group","hidden","type","isUsageMeta","v","safeParse","success","XL1_NETWORK_STAKING_GENESIS_PERIOD_END_EPOCH","XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK","AsObjectFactory","isPayloadOfZodType","z","z","TypedDataDomainZod","object","name","string","nullable","optional","version","chainId","union","number","bigint","verifyingContract","salt","instanceof","Uint8Array","TypedDataFieldZod","type","TypedDataTypesZod","record","array","TypedDataValueZod","any","EIP712DataPayloadFieldsZod","z","object","domain","TypedDataDomainZod","types","TypedDataTypesZod","values","TypedDataValueZod","EIP712DataPayloadSchema","isEIP712DataPayload","isPayloadOfZodType","asEIP712DataPayload","AsObjectFactory","create","HashZod","AsObjectFactory","isPayloadOfZodType","z","EIP712SignaturePayloadFieldsZod","object","address","string","hash","signature","EIP712SignaturePayloadSchema","isEIP712SignaturePayload","asEIP712SignaturePayload","create","PayloadBuilder","signEIP712Message","signer","data","domain","types","values","signature","signTypedData","hash","PayloadBuilder","address","getAddress","schema","EIP712SignaturePayloadSchema","asHash","isUndefined","PayloadBuilder","verifyTypedData","verifyEIP712Message","data","sig","address","signature","hash","schema","fields","signedHash","asHash","isUndefined","PayloadBuilder","recoveredAddress","verifyTypedData","domain","types","values","toLowerCase","asAttoXL1","XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_EARNED_REWARDS","asAttoXL1","XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_BONUS_REWARDS","XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_REWARDS","RewardMultipliers","XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK","isDefined","readPayloadMapFromStore","store","isReadArchivist","get","hash","getMany","hashes","has","isDefined","toAddress","StepSizes","keccak256","completedStepRewardAddress","block","step","resolvedStepSize","StepSizes","length","addressKey","TextEncoder","encode","toAddress","keccak256","slice","prefix","toAddress","isDefined","keccak256","derivedReceiveAddress","address","scope","addressKey","TextEncoder","encode","isDefined","toAddress","keccak256","slice","prefix","asXL1BlockRange","StepSizes","stepBlockRange","block","step","stepSize","StepSizes","start","asXL1BlockRange","assertEx","StepSizes","stepTransferIndex","block","step","rewardTransferCount","rewardTransferIndex","i","StepSizes","length","stepSize","assertEx","assertEx","PayloadBuilder","isAnyPayload","StepSizes","balancesStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","headHash","head","result","undefined","hash","payloads","hydrateBlock","store","balances","address","balance","Object","entries","netBalancesForPayloads","toSignedBigInt","schema","BalancesStepSummarySchema","stepSize","step","StepSizes","indexOf","assertEx","join","summaryResult","summaryMap","get","isAnyPayload","stepSemaphores","acquire","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","parseSignedBigInt","set","release","finalResult","PayloadBuilder","addStorageMeta","asAddress","spanRootAsync","isDefined","asBlockBoundWitnessWithStorageMeta","asXL1BlockNumber","asXL1BlockRange","balancesSummary","context","spanRootAsync","headHash","head","headResult","store","chainMap","get","headBoundWitness","asBlockBoundWitnessWithStorageMeta","required","rangeStart","asXL1BlockNumber","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","asXL1BlockRange","summaries","Promise","all","map","range","balancesStepSummaryFromRange","balances","summary","address","balance","Object","entries","validAddress","asAddress","parseSignedBigInt","timeBudget","name","logger","func","budget","start","Date","now","result","duration","warn","isAllowedBlockPayload","ELEVATE_OPCODE","elevatedPayloads","tx","payloads","opCodes","script","filter","operation","startsWith","opCode","code","hash","split","elevatedPayload","find","payload","_hash","isAllowedBlockPayload","push","length","Error","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta","ChainIndexingServiceStateSchema","isChainIndexingServiceState","payload","isPayloadOfSchemaType","asChainIndexingServiceState","AsObjectFactory","create","isChainIndexingServiceStateWithStorageMeta","value","isStorageMeta","asChainIndexingServiceStateWithStorageMeta","SimpleXyoClient","gateways","permissions","isAnyPayload","SimpleDataLakeViewer","_params","params","allowedSchemas","disallowedSchemas","map","get","hash","result","isAllowed","undefined","getMany","hashes","filter","data","has","value","isAnyPayload","isAllowedSchema","schema","includes","SimpleDataLakeRunner","SimpleDataLakeViewer","params","clear","map","delete","hash","set","data","isAllowed","setMany","entries","allowed","filter","_","SimpleXyoGateway","_connection","_signer","signer","connection","connectionInstance","signerInstance","assertEx","BigIntToJsonZod","isDefined","PayloadBuilder","TransferSchema","assertEx","toHex","BoundWitnessBuilder","PayloadBuilder","defaultTransactionFees","buildTransaction","chain","onChainPayloads","offChainPayloads","signer","nbf","exp","from","fees","defaultTransactionFees","undefined","Array","isArray","Error","txBoundWitnessFields","base","toHex","gasLimit","gasPrice","priority","elevatedHashes","PayloadBuilder","hashes","script","elevatedHash","push","fields","assertEx","at","address","length","tx","txPayloads","BoundWitnessBuilder","meta","$signatures","payloads","signers","build","addStorageMeta","toHex","BoundWitnessBuilder","PayloadBuilder","defaultTransactionFees","buildUnsignedTransaction","chain","onChainPayloads","offChainPayloads","nbf","exp","from","fees","defaultTransactionFees","txBoundWitnessFields","base","toHex","gasLimit","gasPrice","priority","elevatedHashes","PayloadBuilder","hashes","script","elevatedHash","push","fields","length","tx","txPayloads","BoundWitnessBuilder","meta","$signatures","payloads","build","delay","isDefined","PayloadBuilder","DEFAULT_CONFIRMATION_ATTEMPTS","DEFAULT_DELAY_BETWEEN_ATTEMPTS","confirmSubmittedTransaction","viewer","transaction","options","attempts","maxAttempts","delay","attemptDelay","txBWHash","PayloadBuilder","hash","logger","log","tx","transactionByHash","undefined","isDefined","error","Error","assertEx","hydrateTypedBoundWitness","tryHydrateTypedBoundWitness","isAllowedBlockPayload","isSignedTransactionBoundWitnessWithStorageMeta","tryHydrateTransaction","chainMap","hash","tryHydrateTypedBoundWitness","get","hashes","getMany","next","Error","isSignedTransactionBoundWitnessWithStorageMeta","hydrateTransaction","hydrateTypedBoundWitness","flattenHydratedTransaction","hydratedTransaction","tx","txPayloads","flattenHydratedTransactions","hydratedTransactions","flatMap","tryHydrateElevatedTransaction","undefined","transaction","payloads","opCodes","script","filter","operation","startsWith","elevatedPayloads","opCode","code","split","elevatedPayload","find","payload","_hash","isAllowedBlockPayload","push","length","hydrateElevatedTransaction","context","assertEx","PayloadBuilder","transactionBlockByteCount","transaction","payloads","cleanTransaction","PayloadBuilder","omitStorageMeta","transactionBytes","JSON","stringify","length","cleanPayloads","reduce","acc","payload","asHash","crackOperation","operation","parts","split","length","Error","slice","crackOperations","operations","map","op","transactionElevatedPayloadHashes","transaction","elevateOperations","crackOperations","script","filter","op","map","asHash","transactionElevatedPayloads","payloads","hashes","elevatedPayloads","payload","includes","_hash","AttoXL1","TransactionGasCosts","transactionBytesRequiredGas","transaction","payloads","transactionBlockBytes","transactionBlockByteCount","AttoXL1","TransactionGasCosts","characterStorage","BigInt","transactionRequiredGas","hydratedTransaction","elevatedPayloads","transactionElevatedPayloads","hashes","length","signatures","addresses","hashValidation","signatureValidation","payloadValidation","filterAs","assertEx","asHash","isAllowedBlockPayloadWithHashMeta","tryExtractElevatedHashesFromScript","strings","hashes","filter","str","startsWith","map","split","filterAs","h","asHash","extractElevatedHashesFromScript","filtered","assertEx","length","tryExtractElevatedHashes","tx","bw","payloads","script","p","includes","_hash","isAllowedBlockPayloadWithHashMeta","extractElevatedHashes","toArrayBuffer","assertEx","hexFromArrayBuffer","PayloadBuilder","signTransaction","tx","account","assertEx","from","address","signedTx","structuredClone","addresses","previous_hashes","previousHash","hash","PayloadBuilder","dataHash","hashBytes","toArrayBuffer","signature","sign","$signatures","hexFromArrayBuffer","SimpleXyoGatewayRunner","gateway","_dataLakes","dataLakes","connectionInstance","Error","signerInstance","addDataLake","dataLake","push","length","addPayloadsToChain","onChain","offChain","options","viewer","assertEx","nbf","exp","chain","fees","resolvedChainId","isDefined","chainId","resolvedNbf","currentBlockNumber","resolvedExp","tx","buildUnsignedTransaction","signer","address","addTransactionToChain","connection","runner","signedTx","signTransaction","addPayloadsToDataLakes","broadcastTransaction","PayloadBuilder","addStorageMeta","removeDataLake","index","send","to","amount","sendMany","transfers","from","hexTransfers","Object","fromEntries","entries","map","BigIntToJsonZod","parse","transfer","schema","TransferSchema","fields","epoch","Date","now","build","hash","payloads","Promise","all","payload","set","_hash","isUndefined","isNetworkStatus","axios","NetworkStatusSchema","unknownStatus","description","schema","state","errorStatus","MainNetworkStats","id","statusUrl","SequenceNetworkStats","LocalNetworkStats","StatusNetworks","SimpleXyoNetwork","_networkId","networkId","status","statusNetwork","StatusNetworks","isUndefined","Error","makeRequest","statusUrl","url","response","axios","get","isNetworkStatus","data","console","error","unknownStatus","errorStatus","assertEx","SimpleXyoPermissions","invoker","_store","store","assertEx","getPermissions","requestPermissions","permissions","Promise","resolve","newPermissions","now","Date","req","parentCapability","push","caveats","Object","entries","map","type","value","date","existingPermissions","perm","idx","findIndex","p","setPermissions","revokePermissions","revoked","removed","splice","assertEx","MemoryPermissionsStore","_invoker","permissions","invoker","assertEx","getPermissions","Promise","resolve","setPermissions","MemoryArchivist","PayloadBuilder","SimpleXyoRunner","_mempoolArchivist","mempoolArchivist","broadcastTransaction","transaction","archivist","getMempoolArchivist","insert","flattenHydratedTransaction","PayloadBuilder","hash","MemoryArchivist","create","account","PayloadBuilder","SimpleXyoSigner","_account","account","address","createSignedTransaction","chain","elevatedPayloads","additionalPayloads","nbf","exp","fees","from","fromAddress","transaction","buildTransaction","signTransaction","tx","txBW","PayloadBuilder","addStorageMeta","assertEx","asTimePayload","TimeSchema","xl1BlockNumberToEthBlockNumber","context","xl1BlockNumber","blockHash","hashFromBlockNumber","hydratedBlock","hydrateBlock","store","timePayload","asTimePayload","find","p","schema","TimeSchema","required","assertEx","ethereum","HDWallet","WALLET_COMPLIANCE","COIN_TYPES","Ethereum","ACCOUNT_TYPE","GANACHE","XYO","CHANGE_ADDRESS","META_MASK","ADDRESS_INDEX","DEFAULT_WALLET_PATH","generateXyoBaseWalletFromPhrase","walletPhrase","wallet","HDWallet","fromPhrase","DEFAULT_WALLET_PATH"]}
|
|
1
|
+
{"version":3,"sources":["../../src/block/hydrate/allHashesPresent.ts","../../src/block/hydrate/blockPayloadsFromHydratedBlock.ts","../../src/block/hydrate/flattenHydratedBlock.ts","../../src/block/hydrate/flattenHydratedBlocks.ts","../../src/block/hydrate/hydrateBlock.ts","../../src/block/hydrate/transactionsFromHydratedBlock.ts","../../src/block/hydrate/tryHydrateBlock.ts","../../src/block/primitives/blockFromBlockNumber.ts","../../src/model/ChainContext/ChainContext.ts","../../src/driver/cache/LruCacheMap.ts","../../src/driver/memory/MemoryMap.ts","../../src/model/StakeEvents.ts","../../src/block/primitives/frames/calculateFramesFromRange.ts","../../src/block/primitives/frames/deepCalculateFramesFromRange.ts","../../src/block/primitives/hashFromBlockNumber.ts","../../src/block/primitives/model.ts","../../src/block/primitives/toStepIdentityString.ts","../../src/block/primitives/transfers/transfersStepSummaryFromRange.ts","../../src/payloads/AddressPairPayload.ts","../../src/payloads/netBalancesForPayloads.ts","../../src/payloads/netTransfersForPayloads.ts","../../src/payloads/summary/BalancesStepSummary.ts","../../src/payloads/summary/StepSummary.ts","../../src/payloads/summary/TransfersSummary.ts","../../src/SignedBigInt.ts","../../src/block/primitives/transfers/transfersSummary.ts","../../src/config/Config.ts","../../src/config/Api.ts","../../src/validation/block/error.ts","../../src/validation/lib/isLocalhost.ts","../../src/validation/lib/getUrl.ts","../../src/validation/schema/Address.ts","../../src/validation/schema/Mnemonic.ts","../../src/config/App.ts","../../src/config/Bridge.ts","../../src/config/Chain.ts","../../src/config/Evm.ts","../../src/config/Log.ts","../../src/config/Mempool.ts","../../src/config/Producer.ts","../../src/config/RewardRedemptionApi.ts","../../src/config/storage/driver/Mongo.ts","../../src/config/storage/Storage.ts","../../src/config/Telemetry.ts","../../src/config/Validation.ts","../../src/config/UsageMeta.ts","../../src/constants.ts","../../src/eip-712/Payloads/EIP712Data.ts","../../src/eip-712/Types.ts","../../src/eip-712/Payloads/EIP712Signature.ts","../../src/eip-712/sign.ts","../../src/eip-712/verify.ts","../../src/multipliers.ts","../../src/primitives/readPayloadMapFromStore.ts","../../src/primitives/step/completedStepRewardAddress.ts","../../src/primitives/step/derivedReceiveAddress.ts","../../src/primitives/step/stepBlockRange.ts","../../src/primitives/step/stepTransferIndex.ts","../../src/primitives/summary/balances/balancesStepSummaryFromRange.ts","../../src/primitives/summary/balances/balancesSummary.ts","../../src/primitives/timeBudget.ts","../../src/primitives/transaction/elevatedPayloads.ts","../../src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts","../../src/simple/client/SimpleXyoClient.ts","../../src/simple/datalake/SimpleDataLakeViewer.ts","../../src/simple/datalake/SimpleDataLakeRunner.ts","../../src/simple/gateway/SimpleXyoGateway.ts","../../src/simple/gateway/SimpleXyoGatewayRunner.ts","../../src/transaction/buildTransaction.ts","../../src/transaction/buildUnsignedTransaction.ts","../../src/transaction/confirmSubmittedTransaction.ts","../../src/transaction/hydrateTransaction.ts","../../src/transaction/primitives/transactionBlockByteCount.ts","../../src/transaction/primitives/transactionElevatedPayloads.ts","../../src/transaction/primitives/transactionOperations.ts","../../src/transaction/primitives/transactionRequiredGas.ts","../../src/transaction/script.ts","../../src/transaction/signTransaction.ts","../../src/simple/network/SimpleXyoNetwork.ts","../../src/simple/network/lib/FailedNetworkStatusPayloads.ts","../../src/simple/network/lib/StatusNetworks.ts","../../src/simple/permissions/SimpleXyoPermissions.ts","../../src/simple/permissions/store/MemoryPermissions.ts","../../src/simple/runner/SimpleXyoRunner.ts","../../src/simple/signer/SimpleXyoSigner.ts","../../src/time/primitives/xl1BlockNumberToEthBlockNumber.ts","../../src/wallet/generateXyoBaseWalletFromPhrase.ts","../../src/wallet/paths.ts"],"sourcesContent":["import type { Hash } from '@xylabs/hex'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\n\nexport function allHashesPresent(hashes: Hash[], payloads: WithStorageMeta<Payload>[]): boolean {\n const payloadHashes = new Set(payloads.map(p => p._hash))\n return hashes.every(hash => payloadHashes.has(hash))\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const blockPayloadsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<Payload>[] => {\n return block[0].payload_hashes.map(hash => assertEx(\n block[1].find(p => p._hash === hash),\n () => `missing payload ${hash}`,\n )).filter(x => !isTransactionBoundWitnessWithStorageMeta(x))\n}\n","import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\n\nexport const flattenHydratedBlock = (hydratedBlock: HydratedBlock): WithStorageMeta<Payload>[] => {\n const [blk, blkPayloads] = hydratedBlock\n return [...blkPayloads, blk]\n}\n","import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\n\nimport { flattenHydratedBlock } from './flattenHydratedBlock.ts'\n\nexport const flattenHydratedBlocks = (hydratedBlocks: HydratedBlock[]): WithStorageMeta<Payload>[] =>\n hydratedBlocks.flatMap(blk => flattenHydratedBlock(blk))\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { asBlockBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport type { ChainStoreRead } from '../../model/index.ts'\nimport { allHashesPresent } from './allHashesPresent.ts'\n\nexport const hydrateBlock = async (\n { chainMap }: ChainStoreRead,\n hash: Hash,\n maxDepth: number = 1,\n minDepth = maxDepth,\n): Promise<HydratedBlock> => {\n assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')\n assertEx(minDepth >= 0, () => 'minDepth must be greater than or equal to 0')\n assertEx(maxDepth >= minDepth, () => 'maxDepth must be greater than or equal to minDepth')\n\n const bw = assertEx(asBlockBoundWitnessWithStorageMeta(\n assertEx(await chainMap.get(hash), () => `block ${hash} not found`),\n ), () => `hash ${hash} is not a BlockBoundWitness`)\n\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await chainMap.getMany(bw.payload_hashes)\n if (minDepth === 1) assertEx(allHashesPresent(bw.payload_hashes, blkPayloads), () => `Unable to find all payloads for block ${hash}`)\n if (maxDepth === 1) return [bw, blkPayloads]\n const transactions = blkPayloads.filter(isTransactionBoundWitnessWithStorageMeta)\n const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)\n const transactionsPayloads = await chainMap.getMany(transactionsPayloadHashes)\n assertEx(allHashesPresent(transactionsPayloadHashes, transactionsPayloads), () => `Unable to find all payloads for transactions in block ${hash}`)\n const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))\n const allPayloads = await chainMap.getMany([...allPayloadsHashes])\n const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))\n if (maxDepth === 2) assertEx(allHashesPresent(\n [...allPayloadsHashes],\n allPayloadsFiltered,\n ), () => `Unable to find all payloads for transactions in block ${hash}`)\n return [bw, allPayloadsFiltered]\n}\n","import { filterAs } from '@xylabs/array'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport { asTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const transactionsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<TransactionBoundWitness>[] => {\n return filterAs(block[1], asTransactionBoundWitnessWithStorageMeta)\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const tryHydrateBlock = async (\n archivist: ReadArchivist,\n hash: Hash,\n maxDepth: number = 1,\n): Promise<HydratedBlock | undefined> => {\n assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')\n const bw = (await archivist.get([hash])).find(isBlockBoundWitnessWithStorageMeta)\n if (!bw) return undefined\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await archivist.get(bw.payload_hashes)\n if (maxDepth === 1) return [bw, blkPayloads]\n const transactions = blkPayloads.filter(isTransactionBoundWitnessWithStorageMeta)\n const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)\n const transactionsPayloads = await archivist.get(transactionsPayloadHashes)\n const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))\n const allPayloads = await archivist.get([...allPayloadsHashes])\n const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))\n return [bw, allPayloadsFiltered]\n}\n","import { asHash, type Hash } from '@xylabs/hex'\nimport { toSafeJsonString } from '@xylabs/object'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness, XL1BlockNumber } from '@xyo-network/xl1-protocol'\nimport { asBlockBoundWitnessWithStorageMeta, StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { type ChainContextRead, withContextCacheResponse } from '../../model/index.ts'\n\nexport async function blockFromBlockNumber(context: ChainContextRead, blockNumber: XL1BlockNumber): Promise<WithStorageMeta<BlockBoundWitness>> {\n const cacheKey = `${blockNumber}`\n return await withContextCacheResponse(context, 'blockFromBlockNumber', cacheKey, async () => {\n const [headHash] = await context.head()\n const result = await context.store.chainMap.get(headHash)\n let currentBlock = asBlockBoundWitnessWithStorageMeta(result, () => `Head block not found for hash: ${headHash}`, { required: true })\n if (currentBlock.block < blockNumber) {\n throw new Error(`Error: Block number ${blockNumber} is greater than head ${currentBlock.block}.`)\n }\n while (currentBlock.block > blockNumber) {\n let jumpHash: Hash | null = currentBlock.previous\n let jumpBlockNumber = currentBlock.block - 1\n for (const [step, stepSize] of StepSizes.entries()) {\n const possibleJumpBlockNumber = currentBlock.block - (currentBlock.block % stepSize) - 1\n if (possibleJumpBlockNumber >= blockNumber && possibleJumpBlockNumber <= jumpBlockNumber) {\n jumpBlockNumber = possibleJumpBlockNumber\n jumpHash = asHash(currentBlock.step_hashes.at(step), () => `Step hash not found for step ${step} in block ${currentBlock.block}`)\n }\n }\n const newBlock = await context.store.chainMap.get(\n asHash(jumpHash, () => `Jump hash not found for block number [${blockNumber}]: ${jumpBlockNumber} ${toSafeJsonString(currentBlock, 10)}`),\n )\n currentBlock = asBlockBoundWitnessWithStorageMeta(newBlock, () => `Block not found for hash: ${jumpHash}`, { required: true })\n if (currentBlock.block === blockNumber) {\n break\n }\n if (currentBlock.block < blockNumber) {\n throw new Error(`Block number ${blockNumber} is not a valid step block number for block ${headHash}.`)\n }\n }\n return currentBlock\n })\n}\n","import type { Logger } from '@xylabs/logger'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\n\nimport { LruCacheMap, MemoryMap } from '../../driver/index.ts'\nimport type { MapType } from '../../map/index.ts'\nimport type { ChainIdentity } from '../ChainIdentity.ts'\nimport type {\n ChainStakeContext, ChainStakeContextRead, ChainStakeContextWrite,\n} from './ChainStakeContext.ts'\nimport type { ChainStateContextRead, ChainStateContextWrite } from './ChainStateContext.ts'\nimport type {\n ChainStoreContext, ChainStoreContextRead, ChainStoreContextWrite,\n} from './ChainStoreContext.ts'\n\nexport interface BaseContext<TCacheValue = string | object | number | bigint> {\n caches?: Record<string, MapType<string, TCacheValue>>\n logger?: Logger\n}\n\nexport function contextCache<TCacheValue>(\n context: BaseContext<TCacheValue | unknown>,\n name: string,\n create?: () => MapType<string, TCacheValue>,\n): MapType<string, TCacheValue> {\n if (!context.caches) {\n context.caches = {}\n }\n if (isUndefined(context.caches[name])) {\n context.caches[name] = create?.() ?? new MemoryMap<string, TCacheValue>()\n }\n return context.caches[name] as MapType<string, TCacheValue>\n}\n\nexport async function withContextCacheResponse<T extends {} | string | number | bigint>(\n context: BaseContext,\n name: string,\n key: string,\n func: () => Promise<T extends {} | string | number | bigint ? T : never>,\n options?: { max?: number },\n): Promise<T> {\n const cache = contextCache<T>(\n context,\n name,\n () => new LruCacheMap<string, T>({ max: options?.max ?? 10_000 }),\n )\n const cacheResult = await cache.get(key)\n if (isDefined(cacheResult)) {\n return cacheResult\n }\n const result = await func()\n await cache.set(key, result)\n return result\n}\n\nexport interface ChainContextWrite extends BaseContext, ChainIdentity, ChainStateContextWrite, ChainStoreContextWrite {}\n\nexport interface StakedChainContextWrite extends BaseContext, ChainContextWrite, ChainStakeContextWrite {}\n\nexport interface ChainContextRead extends BaseContext, ChainIdentity, ChainStateContextRead, ChainStoreContextRead {}\n\nexport interface StakedChainContextRead extends BaseContext, ChainContextRead, ChainStakeContextRead {}\n\nexport type ChainContext = ChainIdentity & ChainContextRead & ChainContextWrite & ChainStoreContext\n\nexport type StakedChainContext = ChainContext & ChainStakeContext & ChainStakeContextRead & ChainStakeContextWrite\n","import { LRUCache } from 'lru-cache'\n\nimport type { SynchronousMap } from '../../map/index.ts'\n\nexport class LruCacheMap<K extends {}, V extends {} | string | number | bigint, FC = () => void> implements SynchronousMap<K, V> {\n private lruCache: LRUCache<K, V, FC>\n\n constructor(options?: LRUCache.Options<K, V, FC>) {\n this.lruCache = new LRUCache<K, V, FC>(options ?? { max: 5000 })\n }\n\n clear(): void {\n this.lruCache.clear()\n }\n\n delete(id: K): boolean {\n return this.lruCache.delete(id)\n }\n\n get(id: K): V | undefined {\n return this.lruCache.get(id)\n }\n\n getMany(id: K[]): V[] {\n const results: V[] = []\n for (const key of id) {\n const value = this.lruCache.get(key)\n if (value !== undefined) {\n results.push(value)\n }\n }\n return results\n }\n\n has(id: K): boolean {\n return this.lruCache.has(id)\n }\n\n set(id: K, data: V) {\n this.lruCache.set(id, data)\n }\n\n setMany(entries: [K, V][]): void {\n for (const [key, value] of entries) {\n this.lruCache.set(key, value)\n }\n }\n}\n","import { isDefined } from '@xylabs/typeof'\n\nimport type { SynchronousMap } from '../../map/index.ts'\n\nexport class MemoryMap<K extends {}, V = {}> implements SynchronousMap<K, V> {\n private map: Map<K, V>\n\n constructor() {\n this.map = new Map<K, V>()\n }\n\n clear(): void {\n this.map.clear()\n }\n\n delete(id: K): boolean {\n return this.map.delete(id)\n }\n\n get(id: K): V | undefined {\n return this.map.get(id)\n }\n\n getMany(ids: K[]): V[] {\n const results: V[] = []\n for (const id of ids) {\n const data = this.map.get(id)\n if (isDefined(data)) {\n results.push(data)\n }\n }\n return results\n }\n\n has(id: K): boolean {\n return this.map.has(id)\n }\n\n set(id: K, data: V) {\n this.map.set(id, data)\n }\n\n setMany(entries: [K, V][]): void {\n for (const [key, value] of entries) {\n this.map.set(key, value)\n }\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { JsonObject } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\n\nexport const StakeEventNames = ['StakeAdded', 'StakeRemoved', 'StakeWithdrawn'] as const\nexport type StakeEventName = typeof StakeEventNames[number]\n\nexport interface ExternalEvent<TName extends string = string, TArgs extends JsonObject = {}> {\n args: TArgs\n name: TName\n time: number // usually block number\n}\n\nexport interface EventFilter<TName extends string = string> {\n name?: TName\n time?: [number, number]\n}\n\nexport interface StakeEventArgs {\n amount: bigint\n id: number\n staked: Address\n staker: Address\n}\n\nexport type StakeEventFilterArgs = Partial<Pick<StakeEventArgs, 'staker' | 'staked' | 'id'>>\n\nexport interface StakeEventFilter<TName extends StakeEventName = StakeEventName> extends EventFilter<TName> {\n args?: StakeEventFilterArgs\n}\n\nexport interface StakeEvent<TName extends StakeEventName = StakeEventName> extends ExternalEvent<TName> {\n args: StakeEventArgs\n}\n\nexport interface StakeEventsRead {\n positionCount(range: [number, number | 'latest']): Promisable<number>\n stakeEvents<TName extends StakeEventName>(range: [number, number | 'latest'], filter?: StakeEventFilter<TName>): Promisable<StakeEvent<TName>[]>\n}\n","import type { XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { asXL1BlockNumber, stepSize } from '@xyo-network/xl1-protocol'\n\nexport function calculateFramesFromRange(range: XL1BlockRange, step: number): [\n // ranges of fitted frames\n XL1BlockRange[],\n // ranges of remaining blocks\n XL1BlockRange[]] {\n const size = stepSize(step)\n let start = (Math.trunc(range[0] / size)) * size\n const fitted: XL1BlockRange[] = []\n const remaining: XL1BlockRange[] = []\n\n // if the start is not aligned with the range, add a remaining block\n if (start !== range[0]) {\n start += size\n remaining.push([range[0], asXL1BlockNumber(Math.min(start - 1, range[1]), true)])\n }\n\n for (let i = start; i <= range[1]; i += size) {\n if ((i + size - 1) <= range[1]) {\n fitted.push([asXL1BlockNumber(i, true), asXL1BlockNumber(Math.min(i + size - 1, range[1]), true)])\n } else {\n remaining.push([asXL1BlockNumber(i, true), range[1]])\n }\n }\n return [fitted, remaining]\n}\n","import type { XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { calculateFramesFromRange } from './calculateFramesFromRange.ts'\n\nexport function deepCalculateFramesFromRange(range: XL1BlockRange, startingStep = StepSizes.length - 1): XL1BlockRange[] {\n const fitted: XL1BlockRange[] = []\n let remaining: XL1BlockRange[] = [range]\n\n for (let step = startingStep; step >= 0; step--) {\n const newRemaining: XL1BlockRange[] = []\n for (const range of remaining) {\n const [newFittedFrames, newRemainingFrames] = calculateFramesFromRange(range, step)\n fitted.push(...newFittedFrames)\n newRemaining.push(...newRemainingFrames)\n }\n remaining = newRemaining\n }\n\n for (const range of remaining) {\n for (let i = range[0]; i <= range[1]; i++) {\n fitted.push([i, i]) // Add individual frames for remaining ranges\n }\n }\n\n return fitted.toSorted((a, b) => a[0] - b[0]) // Sort by start of range\n}\n","import { type Hash } from '@xylabs/hex'\nimport type { XL1BlockNumber } from '@xyo-network/xl1-protocol'\n\nimport type { ChainContextRead } from '../../model/index.ts'\nimport { blockFromBlockNumber } from './blockFromBlockNumber.ts'\n\nexport async function hashFromBlockNumber(context: ChainContextRead, blockNumber: XL1BlockNumber): Promise<Hash> {\n return (await blockFromBlockNumber(context, blockNumber))._hash\n}\n","import type {\n ReadArchivist, ReadWriteArchivist, WriteArchivist,\n} from '@xyo-network/archivist-model'\n\nexport function isReadArchivist(value: unknown): value is ReadArchivist {\n return (value as ReadArchivist).get !== undefined && (value as ReadArchivist).next !== undefined\n}\n\nexport function isWriteArchivist(value: unknown): value is WriteArchivist {\n return (value as WriteArchivist).insert !== undefined\n}\n\nexport function isReadWriteArchivist(value: unknown): value is ReadWriteArchivist {\n return isReadArchivist(value) && isWriteArchivist(value)\n}\n","import type { StepIdentity, StepIdentityString } from '@xyo-network/xl1-protocol'\n\nexport function toStepIdentityString({ block, step }: StepIdentity): StepIdentityString {\n return `${block}|${step}` as StepIdentityString\n}\n","/* eslint-disable max-statements */\nimport { assertEx } from '@xylabs/assert'\nimport { type Address } from '@xylabs/hex'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport type { XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport type { TransfersStepSummaryContext } from '../../../model/index.ts'\nimport type { TransfersStepSummary } from '../../../payloads/index.ts'\nimport { netTransfersForPayloads, TransfersStepSummarySchema } from '../../../payloads/index.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../../SignedBigInt.ts'\nimport { hydrateBlock } from '../../hydrate/index.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport { hashFromBlockNumber } from '../hashFromBlockNumber.ts'\nimport { transfersSummaryKey } from './transfersSummary.ts'\n\nexport async function transfersStepSummaryFromRange(\n context: TransfersStepSummaryContext,\n range: XL1BlockRange,\n): Promise<WithStorageMeta<TransfersStepSummary>> {\n // console.log(`transfersStepSummaryFromRange: head=${context.head}, range=${range[0]}-${range[1]}`)\n const frameHeadHash = await hashFromBlockNumber(context, range[1])\n const frameSize = range[1] - range[0] + 1\n const [headHash] = await context.head()\n\n let result: TransfersStepSummary | undefined = undefined\n\n if (frameSize === 1) {\n const hash = await hashFromBlockNumber(context, range[0])\n const [, payloads] = await hydrateBlock(context.store, hash)\n const transfers: Record<Address, Record<Address, SignedBigInt>> = {}\n for (const [from, toMap] of Object.entries(netTransfersForPayloads(payloads))) {\n transfers[from as Address] = transfers[from as Address] ?? {}\n for (const [to, amount] of Object.entries(toMap)) {\n transfers[from as Address][to as Address] = toSignedBigInt(amount)\n }\n }\n result = {\n schema: TransfersStepSummarySchema, hash: headHash, stepSize: -1, transfers,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const step = (StepSizes as any).indexOf(frameSize)\n assertEx(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes.join(', ')}`)\n\n const key = transfersSummaryKey(frameHeadHash, frameSize)\n\n const summaryResult = await context.summaryMap.get(key)\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<TransfersStepSummary>\n } else {\n await context.stepSemaphores[step].acquire()\n // We do not have it, so lets build it\n try {\n const subRanges = deepCalculateFramesFromRange(range, step - 1)\n const promises = subRanges.map(subRange => transfersStepSummaryFromRange(\n context,\n subRange,\n ))\n const subResults = await Promise.all(promises)\n\n // add them all up\n const bigIntBalances: Record<Address, Record<Address, bigint>> = {}\n for (const subResult of subResults) {\n for (const [from, toMap] of Object.entries(subResult.transfers)) {\n bigIntBalances[from as Address] = bigIntBalances[from as Address] ?? {}\n for (const [to, transfer] of Object.entries(toMap)) {\n bigIntBalances[from as Address][to as Address] = (bigIntBalances[from as Address][to as Address] ?? 0n) + parseSignedBigInt(transfer)\n }\n }\n }\n\n const transfers: Record<Address, Record<Address, SignedBigInt>> = {}\n for (const [from, toMap] of Object.entries(bigIntBalances)) {\n transfers[from as Address] = transfers[from as Address] ?? {}\n for (const [to, transfer] of Object.entries(toMap)) {\n transfers[from as Address][to as Address] = toSignedBigInt(transfer)\n }\n }\n\n result = {\n schema: TransfersStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, transfers,\n }\n\n await context.summaryMap.set(key, result)\n } finally {\n context.stepSemaphores[step].release()\n }\n }\n }\n // console.log(`transfersStepSummaryFromRange-result: head=${context.head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)\n const finalResult = await PayloadBuilder.addStorageMeta(result)\n return finalResult\n}\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfSchemaType, type Payload } from '@xyo-network/payload-model'\n\nexport const AddressPairSchema = 'network.xyo.address.pair' as const\nexport type AddressPairSchema = typeof AddressPairSchema\n\nexport interface AddressFields {\n addresses: [Address, Address]\n}\n\nexport type AddressPairPayload = Payload<AddressFields, AddressPairSchema>\n\n/**\n * Identity function for determining if an object is an AddressPairPayload\n */\nexport const isAddressPairPayload = isPayloadOfSchemaType<AddressPairPayload>(AddressPairSchema)\nexport const asAddressPairPayload = AsObjectFactory.create(isAddressPairPayload)\nexport const asOptionalAddressPairPayload = AsObjectFactory.createOptional(isAddressPairPayload)\n","import {\n type Address, type Hex, hexToBigInt, toAddress,\n} from '@xylabs/hex'\nimport { span } from '@xylabs/telemetry'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isTransfer } from '@xyo-network/xl1-protocol'\n\nexport const netBalancesForPayloads = (payloads: Payload[]) => {\n return span('netBalancesForPayloads', () => {\n const balances: Record<Address, bigint> = {}\n for (const payload of payloads) {\n if (isTransfer(payload)) {\n const { from } = payload\n for (let [address, amount] of Object.entries(payload.transfers) as [Address, Hex][]) {\n balances[toAddress(address)] = (balances[toAddress(address)] ?? 0n) + hexToBigInt(amount)\n balances[toAddress(from)] = (balances[toAddress(from)] ?? 0n) - hexToBigInt(amount)\n }\n }\n }\n return balances\n })\n}\n","import {\n type Address, type Hex, hexToBigInt,\n} from '@xylabs/hex'\nimport { span } from '@xylabs/telemetry'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isTransfer } from '@xyo-network/xl1-protocol'\n\n// the net transfer amounts for the specified accounts only\nexport function netTransfersForPayloads(payloads: Payload[]): Record<Address, Record<Address, bigint>> {\n return span('netTransfersForPayloads', () => {\n const transfers: Record<Address, Record<Address, bigint>> = {}\n for (const payload of payloads) {\n if (isTransfer(payload)) {\n const { from } = payload\n transfers[from] = transfers[from] ?? {}\n for (let [to, amount] of Object.entries(payload.transfers) as [Address, Hex][]) {\n transfers[to] = transfers[to] ?? {}\n transfers[to][from] = (transfers[to][from] ?? 0n) + hexToBigInt(amount)\n transfers[from][to] = (transfers[from][to] ?? 0n) - hexToBigInt(amount)\n }\n }\n }\n return transfers\n })\n}\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { SignedBigInt } from '../../SignedBigInt.ts'\nimport type { StepSummary } from './StepSummary.ts'\n\nexport const BalancesStepSummarySchema: Schema = 'network.xyo.step.summary.balances'\nexport type BalancesStepSummarySchema = typeof BalancesStepSummarySchema\n\nexport type BalancesStepSummary = StepSummary<{\n balances: Record<Address, SignedBigInt>\n}, BalancesStepSummarySchema>\n\n/**\n * Identity function for determining if an object is an BalancesStepSummary\n */\nexport const isBalancesStepSummary = isPayloadOfSchemaType<BalancesStepSummary>(BalancesStepSummarySchema)\nexport const asBalancesStepSummary = AsObjectFactory.create<BalancesStepSummary>(isBalancesStepSummary)\n\n/**\n * Identity function for determining if an object is an BalancesStepSummary with Storage Meta\n */\nexport const isBalancesStepSummaryWithStorageMeta = (value: unknown): value is WithStorageMeta<BalancesStepSummary> => {\n return isBalancesStepSummary(value) && isStorageMeta(value)\n}\nexport const asBalancesStepSummaryWithStorageMeta = AsObjectFactory.create<WithStorageMeta<BalancesStepSummary>>(isBalancesStepSummaryWithStorageMeta)\n","import type { Hash } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nexport const StepSummarySchema: Schema = 'network.xyo.step.summary'\nexport type StepSummarySchema = typeof StepSummarySchema\n\nexport interface StepSummaryFields {\n hash: Hash // the stepHash - the hash of the last block in the step frame\n stepSize: number // the stepSize in blocks\n}\n\nexport type StepSummary<TAdditionalFields extends EmptyObject | void = void,\n TSchema extends Schema | void = void> = Payload<TAdditionalFields extends void ? StepSummaryFields : TAdditionalFields & StepSummaryFields,\n TSchema extends void ? StepSummarySchema : TSchema>\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { SignedBigInt } from '../../SignedBigInt.ts'\nimport type { StepSummary } from './StepSummary.ts'\n\nexport const TransfersStepSummarySchema: Schema = 'network.xyo.step.summary.transfer'\nexport type TransfersStepSummarySchema = typeof TransfersStepSummarySchema\n\nexport type TransfersStepSummary = StepSummary<{\n transfers: Record<Address, Record<Address, SignedBigInt>>\n}, TransfersStepSummarySchema>\n\n/**\n * Identity function for determining if an object is an TransfersStepSummary\n */\nexport const isTransfersStepSummary = isPayloadOfSchemaType<TransfersStepSummary>(TransfersStepSummarySchema)\nexport const asTransfersStepSummary = AsObjectFactory.create<TransfersStepSummary>(isTransfersStepSummary)\n\n/**\n * Identity function for determining if an object is an TransfersStepSummary with Storage Meta\n */\nexport const isTransfersStepSummaryWithStorageMeta = (value: unknown): value is WithStorageMeta<TransfersStepSummary> => {\n return isTransfersStepSummary(value) && isStorageMeta(value)\n}\nexport const asTransfersStepSummaryWithStorageMeta\n = AsObjectFactory.create<WithStorageMeta<TransfersStepSummary>>(isTransfersStepSummaryWithStorageMeta)\n","import {\n type Hex,\n hexToBigInt,\n toHex,\n} from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\n\nexport interface NegativeBigInt {\n negative: Hex\n}\n\nexport interface PositiveBigInt {\n positive: Hex\n}\n\nexport type SignedBigInt = NegativeBigInt | PositiveBigInt\n\nexport const isNegativeBigInt = (value: unknown): value is NegativeBigInt => {\n return isObject(value) && 'negative' in value && typeof value.negative === 'string'\n}\n\nexport const isPositiveBigInt = (value: unknown): value is PositiveBigInt => {\n return isObject(value) && 'positive' in value && typeof value.positive === 'string'\n}\n\nexport const parseSignedBigInt = (value: SignedBigInt): bigint => {\n if (isNegativeBigInt(value)) {\n return -hexToBigInt(value.negative)\n } else if (isPositiveBigInt(value)) {\n return hexToBigInt(value.positive)\n } else {\n throw new Error('Invalid balance type')\n }\n}\n\nexport const toSignedBigInt = (value: bigint): SignedBigInt => {\n return value < 0n ? { negative: toHex(-value) } : { positive: toHex(value) }\n}\n\nexport const toPositiveBigInt = (value: unknown): PositiveBigInt => {\n if (isNegativeBigInt(value)) {\n return { positive: toHex(0n) }\n }\n if (isPositiveBigInt(value)) {\n return { positive: value.positive }\n }\n if (typeof value === 'bigint') {\n return { positive: toHex(value) }\n }\n throw new Error('Invalid value for positive big int')\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { spanRootAsync } from '@xylabs/telemetry'\nimport { isDefined } from '@xylabs/typeof'\nimport {\n asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,\n} from '@xyo-network/xl1-protocol'\n\nimport type { TransfersStepSummaryContext } from '../../../model/index.ts'\nimport { parseSignedBigInt } from '../../../SignedBigInt.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport { transfersStepSummaryFromRange } from './transfersStepSummaryFromRange.ts'\n\n// the summary of amount of rewards claimed from the step reward pool by addresses\nexport async function transfersSummary(\n transferContext: TransfersStepSummaryContext,\n): Promise<Partial<Record<Address, Partial<Record<Address, bigint>>>>> {\n return await spanRootAsync('transferSummary', async () => {\n const [headHash] = await transferContext.head()\n const headResult = await transferContext.store.chainMap.get(headHash)\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${transferContext.head}`, { required: true })\n const rangeStart = asXL1BlockNumber(isDefined(transferContext.windowSize) ? Math.max(headBoundWitness.block - transferContext.windowSize + 1, 0) : 0)\n const ranges = deepCalculateFramesFromRange(asXL1BlockRange([rangeStart, headBoundWitness.block], true))\n const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(transferContext, range)))\n const transfers: Partial<Record<Address, Partial<Record<Address, bigint>>>> = {}\n for (let summary of summaries) {\n for (const [from, toMap] of Object.entries(summary.transfers)) {\n const validFrom = asAddress(from, () => `Invalid address: ${from}`)\n transfers[validFrom] = transfers[validFrom] ?? {}\n for (const [to, transfer] of Object.entries(toMap)) {\n const validTo = asAddress(to, () => `Invalid address: ${to}`)\n transfers[validFrom][validTo] = (transfers[validFrom][validTo] ?? 0n) + parseSignedBigInt(transfer)\n }\n }\n }\n return transfers\n })\n}\n\nexport function transfersSummaryKey(frameHeadHash: Hash, frameSize: number) {\n return `${frameHeadHash}|${frameSize}`\n}\n","import * as z from 'zod'\n\nimport { ApiConfigZod } from './Api.ts'\nimport { AppConfigZod } from './App.ts'\nimport { BridgeConfigZod } from './Bridge.ts'\nimport { ChainConfigZod } from './Chain.ts'\nimport { EvmConfigZod } from './Evm.ts'\nimport { LogConfigZod } from './Log.ts'\nimport { MempoolConfigZod } from './Mempool.ts'\nimport { ProducerConfigZod } from './Producer.ts'\nimport { RewardRedemptionApiConfigZod } from './RewardRedemptionApi.ts'\nimport { StorageConfigZod } from './storage/index.ts'\nimport { TelemetryConfigZod } from './Telemetry.ts'\nimport { ValidationConfigZod } from './Validation.ts'\n\nexport const Xl1CommonConfigSchema = z.object({ ...LogConfigZod.shape }).describe('XL1 common configuration options')\n\nexport const ConfigZod = z.object({\n ...Xl1CommonConfigSchema.shape,\n api: ApiConfigZod.default(ApiConfigZod.parse({})).describe('Configuration for the API node'),\n app: AppConfigZod.default(AppConfigZod.parse({})).describe('Configuration for the application'),\n bridge: BridgeConfigZod.default(BridgeConfigZod.parse({})).describe('Configuration for the Bridge node'),\n chain: ChainConfigZod.default(ChainConfigZod.parse({})).describe('Configuration for the chain'),\n evm: EvmConfigZod.default(EvmConfigZod.parse({})).describe('Configuration for EVM-backed services'),\n mempool: MempoolConfigZod.default(MempoolConfigZod.parse({})).describe('Configuration for the mempool'),\n producer: ProducerConfigZod.default(ProducerConfigZod.parse({})).describe('Configuration for the producer'),\n rewardRedemptionApi: RewardRedemptionApiConfigZod.default(RewardRedemptionApiConfigZod.parse({})).describe('Configuration for the rewards redemption API'),\n storage: StorageConfigZod.default(StorageConfigZod.parse({})).describe('Configuration for the storage'),\n telemetry: TelemetryConfigZod.default(TelemetryConfigZod.parse({})).describe('Configuration for telemetry'),\n validation: ValidationConfigZod.default(ValidationConfigZod.parse({})).describe('Configuration for validation'),\n})\n\nexport type Config = z.infer<typeof ConfigZod>\n\nexport const getDefaultConfig = (): Config => ConfigZod.parse({})\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const ApiConfigZod = z.object({\n host: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the API',\n title: 'api.host',\n type: 'string',\n }),\n initRewardsCache: z.union([z.number(), z.string()]).transform(v => v !== '0' && v !== 'false').default(true).register(globalRegistry, {\n description: 'Whether to initialize the rewards cache on startup',\n title: 'api.initRewardsCache',\n type: 'boolean',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the API wallet',\n title: 'api.mnemonic',\n type: 'string',\n }),\n port: z.coerce.number().default(8080).register(globalRegistry, {\n default: 8080,\n description: 'Port for the API',\n title: 'api.port',\n type: 'number',\n }),\n})\n\nexport type ApiConfig = z.infer<typeof ApiConfigZod>\n","import type { Hash } from '@xylabs/hex'\nimport type {\n BlockBoundWitness,\n ChainId,\n HydratedBlock,\n} from '@xyo-network/xl1-protocol'\nimport { isValidationError, ValidationError } from '@xyo-network/xl1-protocol'\n\nexport class BlockValidationError extends ValidationError<BlockBoundWitness> {}\n\nexport const isBlockValidationError = (\n error: unknown,\n): error is BlockValidationError => {\n if (!isValidationError(error)) return false\n return (\n error.name === BlockValidationError.constructor.name\n )\n}\n\nexport class HydratedBlockValidationError extends ValidationError<HydratedBlock> {}\n\nexport const isHydratedBlockValidationError = (\n error: unknown,\n): error is HydratedBlockValidationError => {\n if (!isValidationError(error)) return false\n return (\n error.name === HydratedBlockValidationError.constructor.name\n )\n}\n\nexport class HydratedBlockStateValidationError extends ValidationError<HydratedBlock> {\n chainId: ChainId\n constructor(hash: Hash, chainId: ChainId, value: HydratedBlock, message?: string, cause?: unknown) {\n super(hash, value, message, cause)\n this.chainId = chainId\n }\n}\n\nexport const isHydratedBlockStateValidationError = (\n error: unknown,\n): error is HydratedBlockStateValidationError => {\n if (!isValidationError(error)) return false\n return (\n error.name === HydratedBlockStateValidationError.constructor.name\n )\n}\n","export const isLocalhost = (hostname: string): boolean => {\n return (\n hostname === 'localhost'\n || hostname === '127.0.0.1'\n || hostname === '::1' // IPv6 localhost\n || hostname.endsWith('.localhost')\n )\n}\n","import { isLocalhost } from './isLocalhost.ts'\n\nexport const getUrl = (host: string, port: number): string => {\n const scheme = isLocalhost(host) ? 'http' : 'https'\n return `${scheme}://${host}:${port}`\n}\n","export const TODO = true\n","import * as z from 'zod'\n\n/**\n * Validates a single string containing a BIP-39 mnemonic.\n *\n * • Trims leading/trailing whitespace.\n * • Collapses any run of whitespace (spaces, tabs, new-lines) to a single space.\n * • Splits on spaces → array of words.\n * • Checks that the word-count is 12, 15, 18, 21, or 24.\n *\n */\nexport const MnemonicStringZod = z\n .string()\n .transform(s => s.trim().replaceAll(/\\s+/g, ' ')) // normalize spacing\n .refine(\n s => [12, 15, 18, 21, 24].includes(s.split(' ').length),\n { message: 'Mnemonic must contain 12, 15, 18, 21, or 24 words.' },\n ).describe('BIP-39 mnemonic string')\n\nexport type MnemonicString = z.infer<typeof MnemonicStringZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const AppConfigZod = z.object({\n port: z.coerce.number().default(3000).register(globalRegistry, {\n default: 3000,\n description: 'Port for the application',\n title: 'app.port',\n type: 'number',\n }),\n})\n\nexport type AppConfig = z.infer<typeof AppConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const BridgeConfigZod = z.object({\n host: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the Bridge',\n title: 'api.host',\n type: 'string',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the Bridge wallet',\n title: 'api.mnemonic',\n type: 'string',\n }),\n port: z.coerce.number().default(8081).register(globalRegistry, {\n default: 8081,\n description: 'Port for the Bridge',\n title: 'api.port',\n type: 'number',\n }),\n})\n\nexport type BridgeConfig = z.infer<typeof BridgeConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const ChainConfigZod = z.object({\n id: z.string().optional()\n .register(globalRegistry, {\n description:\n 'The unique identifier for the chain. Should be the staking contract address for contract-backed chains.',\n title: 'chain.id',\n type: 'string',\n }),\n})\n\nexport type ChainConfig = z.infer<typeof ChainConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const EvmInfuraConfigZod = z.object({\n projectId: z.string().optional().register(globalRegistry, {\n description: 'Infura project ID',\n title: 'evm.infura.projectId',\n type: 'string',\n }),\n projectSecret: z.string().optional().register(globalRegistry, {\n description: 'Infura project secret',\n title: 'evm.infura.projectSecret',\n type: 'string',\n }),\n})\n\nexport const EvmJsonRpcConfigZod = z.object({\n url: z.url().optional().register(globalRegistry, {\n description: 'JSON-RPC URL',\n title: 'evm.jsonRpc.url',\n type: 'string',\n }),\n})\n\nexport const EvmConfigZod = z.object({\n chainId: z.string().optional().register(globalRegistry, {\n description: 'EVM chain ID',\n title: 'evm.chainId',\n type: 'string',\n }),\n infura: EvmInfuraConfigZod.optional().describe('Infura Provider configuration'),\n jsonRpc: EvmJsonRpcConfigZod.optional().describe('JSON-RPC Provider configuration'),\n})\n\nexport type EvmConfig = z.infer<typeof EvmConfigZod>\n","import type { LogLevelKey } from '@xylabs/logger'\nimport { LogLevel } from '@xylabs/logger'\nimport { globalRegistry } from 'zod'\nimport * as z from 'zod'\nconst LogLevels = Object.keys(LogLevel) as [LogLevelKey, ...LogLevelKey[]]\n\nexport const LogConfigZod = z.object({\n logLevel: z.enum(LogLevels).default('info').register(globalRegistry, {\n choices: LogLevels,\n default: 'info',\n description: 'Desired process verbosity',\n title: 'logLevel',\n type: 'string',\n }),\n silent: z.boolean().default(false).register(globalRegistry, {\n default: false,\n description: 'Whether to run in silent mode',\n title: 'silent',\n type: 'boolean',\n }),\n})\n\nexport type LogConfig = z.infer<typeof LogConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const MempoolConfigZod = z.object({\n enabled: z.string().default('false').transform((val, ctx) => {\n const normalized = val.toLowerCase().trim()\n if (['true', '1', 'yes', 'on'].includes(normalized)) return true\n if (['false', '0', 'no', 'off'].includes(normalized)) return false\n ctx.addIssue({\n code: 'invalid_type',\n expected: 'boolean',\n message: `Invalid boolean value: \"${val}\". Use true/false, 1/0, yes/no.`,\n })\n return z.NEVER\n }).register(globalRegistry, {\n default: 'false',\n description: 'Enable the Mempool',\n title: 'mempool.enabled',\n type: 'boolean',\n }),\n host: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the Mempool',\n title: 'mempool.host',\n type: 'string',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the Mempool wallet',\n title: 'mempool.mnemonic',\n type: 'string',\n }),\n port: z.coerce.number().default(8083).register(globalRegistry, {\n default: 8083,\n description: 'Port for the Mempool',\n title: 'mempool.port',\n type: 'number',\n }),\n})\n\nexport type MempoolConfig = z.infer<typeof MempoolConfigZod>\n","import { AddressZod, asAddress } from '@xylabs/hex'\nimport { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const ProducerConfigZod = z.object({\n allowlist: z.preprocess((val) => {\n if (typeof val === 'string') {\n return val.split(',').map(s => asAddress(s.trim()))\n }\n return val\n }, z.array(AddressZod).optional().register(globalRegistry, {\n description: 'List of allowed producer addresses, if undefined anyone can participate',\n title: 'allowlist',\n type: 'array',\n })),\n\n disableIntentRedeclaration: z.boolean().optional().register(globalRegistry, {\n description: 'Should the producer skip redeclaring their intent to continue producing blocks',\n title: 'producer.disableIntentRedeclaration',\n type: 'boolean',\n }),\n // TODO: Port schema\n healthCheckPort: z.coerce.number().optional().register(globalRegistry, {\n description: 'Port for the Producer health checks',\n title: 'producer.healthCheckPort',\n type: 'number',\n }),\n heartbeatInterval: z.coerce.number().default(3_600_000).register(globalRegistry, {\n description: 'The number of milliseconds between heartbeats if no blocks are produced',\n title: 'producer.heartbeatInterval',\n type: 'number',\n }),\n // TODO: BigInt schema\n minStake: z.coerce.number().default(1).register(globalRegistry, {\n description: 'Minimum stake required to be a Producer',\n title: 'producer.minStake',\n type: 'number',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the Producer wallet',\n title: 'producer.mnemonic',\n type: 'string',\n }),\n // TODO: Port schema\n port: z.coerce.number().default(8081).register(globalRegistry, {\n default: 8081,\n description: 'Port for the Producer',\n title: 'producer.port',\n type: 'number',\n }),\n // TODO: Address schema\n rewardAddress: z.string().optional().register(globalRegistry, {\n description: 'Address to receive block rewards',\n title: 'producer.rewardAddress',\n type: 'string',\n }),\n})\n\nexport type ProducerConfig = z.infer<typeof ProducerConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MnemonicStringZod } from '../validation/index.ts'\n\nexport const RewardRedemptionApiConfigZod = z.object({\n chainRpcApiUrl: z.string().default('http://localhost:8080/rpc').register(globalRegistry, {\n default: 'http://localhost:8080/rpc',\n description: 'URL for the Chain RPC API',\n title: 'rewardRedemptionApi.chainRpcApiUrl',\n type: 'string',\n }),\n host: z.string().default('localhost').register(globalRegistry, {\n default: 'localhost',\n description: 'Host for the Redemption API',\n title: 'rewardRedemptionApi.host',\n type: 'string',\n }),\n mnemonic: MnemonicStringZod.optional().register(globalRegistry, {\n description: 'Mnemonic for the Redemption API wallet',\n title: 'rewardRedemptionApi.mnemonic',\n type: 'string',\n }),\n port: z.coerce.number().default(8082).register(globalRegistry, {\n default: 8082,\n description: 'Port for the Redemption API',\n title: 'rewardRedemptionApi.port',\n type: 'number',\n }),\n})\n\nexport type RewardRedemptionApiConfig = z.infer<typeof RewardRedemptionApiConfigZod>\n","import { isDefined, isUndefined } from '@xylabs/typeof'\nimport { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\n/**\n * Checks if the provided MongoDB configuration contains all necessary fields\n * for establishing a connection.\n * @param config MongoDB configuration object\n * @returns True if the configuration contains all necessary fields for\n * establishing a connection\n */\nexport const hasMongoConfig = (config?: MongoConfig): config is Required<MongoConfig> => {\n if (isUndefined(config)) return false\n return (\n isDefined(config.connectionString)\n && isDefined(config.database)\n && isDefined(config.domain)\n && isDefined(config.password)\n && isDefined(config.username)\n )\n}\n\nexport const MongoConfigZod = z.object({\n // TODO: Create from other arguments\n connectionString: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB connection string',\n title: 'storage.mongo.connectionString',\n type: 'string',\n }),\n database: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB database name',\n title: 'storage.mongo.database',\n type: 'string',\n }),\n domain: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB domain',\n title: 'storage.mongo.domain',\n type: 'string',\n }),\n password: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB password',\n title: 'storage.mongo.password',\n type: 'string',\n }),\n username: z.string().nonempty().optional().register(globalRegistry, {\n description: 'MongoDB username',\n title: 'storage.mongo.username',\n type: 'string',\n }),\n})\n\nexport type MongoConfig = z.infer<typeof MongoConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nimport { MongoConfigZod } from './driver/index.ts'\n\nexport const StorageConfigZod = z.object({\n mongo: MongoConfigZod.optional().describe('Configuration for the MongoD storage driver'),\n root: z.string().optional().register(globalRegistry, {\n description: 'Root directory for local storage',\n title: 'storage.root',\n type: 'string',\n }),\n}).describe('Storage configuration options')\n\nexport type StorageConfig = z.infer<typeof StorageConfigZod>\n","import { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const OpenTelemetryConfigZod = z.object({\n // OpenTelemetry options\n otlpEndpoint: z.url().optional().register(globalRegistry, {\n description: 'OTLP endpoint for exporting telemetry data',\n title: 'telemetry.otel.otlpEndpoint',\n type: 'string',\n }),\n})\n\nexport const TelemetryConfigZod = z.object({\n // OpenTelemetry configuration\n otel: OpenTelemetryConfigZod.optional().describe('OpenTelemetry configuration'),\n}).describe('Telemetry configuration options')\n\nexport type TelemetryConfig = z.infer<typeof TelemetryConfigZod>\n","import { AddressZod, asAddress } from '@xylabs/hex'\nimport { globalRegistry } from 'zod'\nimport * as z from 'zod'\n\nexport const ValidationConfigZod = z.object({\n allowedRewardRedeemers: z.preprocess((val) => {\n if (typeof val === 'string') {\n return val.split(',').map(s => asAddress(s.trim()))\n }\n return val\n }, z.array(AddressZod).optional().register(globalRegistry, {\n description: 'List of allowed reward redeemer addresses, if undefined anyone can participate',\n title: 'allowedRewardRedeemers',\n type: 'array',\n })),\n allowedRewardEscrowAccountSigners: z.preprocess((val) => {\n if (typeof val === 'string') {\n return val.split(',').map(s => asAddress(s.trim()))\n }\n return val\n }, z.array(AddressZod).optional().register(globalRegistry, {\n description: 'List of allowed reward escrow account signer addresses, if undefined anyone can participate',\n title: 'allowedRewardEscrowAccountSigners',\n type: 'array',\n })),\n})\n\nexport type ValidationConfig = z.infer<typeof ValidationConfigZod>\n","import * as z from 'zod'\n\nconst DescriptionSchema = z.string()\nconst TitleSchema = z.string()\n\nexport const JSONSchemaMetaSchema = z\n .object({\n id: z.string().optional(),\n title: TitleSchema.optional(),\n description: DescriptionSchema.optional(),\n deprecated: z.boolean().optional(),\n })\n .catchall(z.unknown()) // allow arbitrary extra keys\n\nexport const GlobalMetaSchema = JSONSchemaMetaSchema.extend({})\n\nconst ChoicesSchema = z\n .array(z.union([z.string(), z.number(), z.literal(true), z.undefined()]))\n .readonly()\n\nexport const UsageMetaSchema = GlobalMetaSchema.extend({\n choices: ChoicesSchema.optional(),\n default: z.unknown().optional(),\n description: DescriptionSchema,\n group: z.string().optional(),\n hidden: z.boolean().optional(),\n title: TitleSchema,\n type: z.union([\n z.literal('array'),\n z.literal('count'),\n z.literal('boolean'),\n z.literal('number'),\n z.literal('string'),\n ]),\n})\n\nexport type UsageMeta = z.infer<typeof UsageMetaSchema>\n\nexport function isUsageMeta(v: unknown): v is UsageMeta {\n return UsageMetaSchema.safeParse(v).success\n}\n","export const XL1_NETWORK_STAKING_GENESIS_PERIOD_END_EPOCH = 1_760_572_800 as const\nexport const XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK = 107_496 as const\n","import { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfZodType, type Payload } from '@xyo-network/payload-model'\nimport z from 'zod'\n\nimport {\n TypedDataDomainZod, TypedDataTypesZod, TypedDataValueZod,\n} from '../Types.ts'\n\nexport const EIP712DataPayloadFieldsZod = z.object({\n domain: TypedDataDomainZod,\n types: TypedDataTypesZod,\n values: TypedDataValueZod,\n})\nexport type EIP712DataPayloadFields = z.infer<typeof EIP712DataPayloadFieldsZod>\n\nexport const EIP712DataPayloadSchema = 'network.xyo.chains.ethereum.eip712.data' as const\nexport type EIP712DataPayloadSchema = typeof EIP712DataPayloadSchema\n\nexport type EIP712DataPayload = Payload<EIP712DataPayloadFields, EIP712DataPayloadSchema>\n\nexport const isEIP712DataPayload = isPayloadOfZodType<EIP712DataPayload>(\n EIP712DataPayloadFieldsZod,\n EIP712DataPayloadSchema,\n)\n\nexport const asEIP712DataPayload = AsObjectFactory.create(isEIP712DataPayload)\n","// import type { Signer } from 'ethers/providers'\nimport z from 'zod'\n\n/**\n * Typed Data Types\n * Re-exposing the types from ethers for convenience and to ensure\n * we can fix in one place if they change\n */\n\n// export type TypedDataDomain = Parameters<Signer['signTypedData']>[0]\n// export type TypedDataTypes = Parameters<Signer['signTypedData']>[1]\n// export type TypedDataValues = Parameters<Signer['signTypedData']>[2]\n\nexport const TypedDataDomainZod = z.object({\n name: z.string().nullable().optional(),\n version: z.string().nullable().optional(),\n chainId: z.union([z.string(), z.number(), z.bigint()]).nullable().optional(),\n verifyingContract: z.string().nullable().optional(),\n salt: z.union([z.string(), z.instanceof(Uint8Array)]).nullable().optional(),\n})\nexport type TypedDataDomain = z.infer<typeof TypedDataDomainZod>\n\nexport const TypedDataFieldZod = z.object({\n name: z.string(),\n type: z.string(),\n})\nexport type TypedDataField = z.infer<typeof TypedDataFieldZod>\n\nexport const TypedDataTypesZod = z.record(z.string(), z.array(TypedDataFieldZod))\nexport type TypedDataTypes = z.infer<typeof TypedDataTypesZod>\n\nexport const TypedDataValueZod = z.record(z.string(), z.any())\nexport type TypedDataValues = z.infer<typeof TypedDataValueZod>\n","import { HashZod } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport { isPayloadOfZodType, type Payload } from '@xyo-network/payload-model'\nimport z from 'zod'\n\nexport const EIP712SignaturePayloadFieldsZod = z.object({\n address: z.string(),\n hash: HashZod,\n signature: z.string(),\n})\n\nexport type EIP712SignaturePayloadFields = z.infer<typeof EIP712SignaturePayloadFieldsZod>\n\nexport const EIP712SignaturePayloadSchema = 'network.xyo.chains.ethereum.eip712.signature' as const\nexport type EIP712SignaturePayloadSchema = typeof EIP712SignaturePayloadSchema\n\nexport type EIP712SignaturePayload = Payload<EIP712SignaturePayloadFields, EIP712SignaturePayloadSchema>\n\nexport const isEIP712SignaturePayload = isPayloadOfZodType<EIP712SignaturePayload>(\n EIP712SignaturePayloadFieldsZod,\n EIP712SignaturePayloadSchema,\n)\n\nexport const asEIP712SignaturePayload = AsObjectFactory.create(isEIP712SignaturePayload)\n","import { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Signer } from 'ethers/providers'\n\nimport {\n type EIP712DataPayload, type EIP712SignaturePayload, EIP712SignaturePayloadSchema,\n} from './Payloads/index.ts'\n\nexport const signEIP712Message = async (signer: Signer, data: EIP712DataPayload): Promise<EIP712SignaturePayload> => {\n const {\n domain, types, values,\n } = data\n const signature = await signer.signTypedData(domain, types, values)\n const hash = await PayloadBuilder.hash(data)\n const address = await signer.getAddress()\n return {\n address, hash, schema: EIP712SignaturePayloadSchema, signature,\n }\n}\n","import { asHash } from '@xylabs/hex'\nimport { isUndefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { verifyTypedData } from 'ethers/hash'\n\nimport type { EIP712DataPayload, EIP712SignaturePayload } from './Payloads/index.ts'\n\nexport const verifyEIP712Message = async (data: EIP712DataPayload, sig: EIP712SignaturePayload): Promise<boolean> => {\n const {\n address, signature, hash,\n } = sig\n const { schema, ...fields } = data\n const signedHash = asHash(hash)\n // If there is no valid hash in the signature, or it doesn't match the calculated hash, return false\n if (isUndefined(signedHash) || signedHash !== await PayloadBuilder.hash(data)) return false\n // Recover the address from the signature\n const recoveredAddress = verifyTypedData(fields.domain, fields.types, fields.values, signature)\n // Verify it matches the expected address\n return recoveredAddress.toLowerCase() === address.toLowerCase()\n}\n","import type { XL1BlockRangeKey, XL1RangeMultipliers } from '@xyo-network/xl1-protocol'\nimport { asAttoXL1 } from '@xyo-network/xl1-protocol'\n\nimport { XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK } from './constants.ts'\n\nexport const XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_EARNED_REWARDS = asAttoXL1(1_343_884_111_859_145_740_576_652n)\nexport const XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_BONUS_REWARDS = asAttoXL1(100_000_000_000_000_000_000_000_000n)\nexport const XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_REWARDS\n = XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_EARNED_REWARDS + XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_BONUS_REWARDS\n\nexport const RewardMultipliers: XL1RangeMultipliers = {\n [`0|${XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK}` as XL1BlockRangeKey]:\n [XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_BONUS_REWARDS, XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_EARNED_REWARDS],\n}\n","import type { Hash } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport { isReadArchivist } from '../block/index.ts'\nimport type { PayloadMapRead } from '../model/index.ts'\n\nexport function readPayloadMapFromStore<T extends Payload>(store: ReadArchivist<T> | PayloadMapRead<T>): PayloadMapRead<T> {\n if (isReadArchivist(store)) {\n return {\n get: async (hash: Hash): Promise<T | undefined> => {\n return (await store.get([hash]))[0]\n },\n getMany: async (hashes: Hash[]): Promise<T[]> => {\n return (await store.get(hashes))\n },\n has: async (hash: Hash): Promise<boolean> => {\n return isDefined((await store.get([hash]))[0])\n },\n }\n }\n return store\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport { type StepIdentity, StepSizes } from '@xyo-network/xl1-protocol'\nimport { keccak256 } from 'ethers'\n\nexport function completedStepRewardAddress({ block, step }: StepIdentity): Address {\n const resolvedStepSize = step < StepSizes.length ? StepSizes[step] : step\n const addressKey = new TextEncoder().encode(`${block}|${resolvedStepSize}`)\n return toAddress(keccak256(addressKey).slice(-40), { prefix: false })\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { keccak256 } from 'ethers'\n\nexport function derivedReceiveAddress(address: Address, scope?: string): Address {\n const addressKey = new TextEncoder().encode(isDefined(scope) ? `${scope}|${address}` : address)\n return toAddress(keccak256(addressKey).slice(-40), { prefix: false })\n}\n","import type { StepIdentity, XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { asXL1BlockRange, StepSizes } from '@xyo-network/xl1-protocol'\n\nexport function stepBlockRange({ block, step }: StepIdentity): XL1BlockRange {\n const stepSize = StepSizes[step]\n const start = block - stepSize\n return asXL1BlockRange([start, start + stepSize - 1], true)\n}\n","import { assertEx } from '@xylabs/assert'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nexport function stepTransferIndex(block: number, step: number) {\n let rewardTransferCount = 0\n let rewardTransferIndex = -1\n for (let i = 3; i < StepSizes.length; i++) {\n const stepSize = StepSizes[i]\n if (block % stepSize === 0) {\n if (stepSize === StepSizes[step]) {\n rewardTransferIndex = rewardTransferCount\n }\n rewardTransferCount++\n }\n }\n assertEx(rewardTransferIndex >= 0, () => `Error: Could not find step size for step ${step} at block ${block}`)\n return [rewardTransferIndex, rewardTransferCount]\n}\n","/* eslint-disable max-statements */\nimport { assertEx } from '@xylabs/assert'\nimport { type Address } from '@xylabs/hex'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport type { XL1BlockRange } from '@xyo-network/xl1-protocol'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport {\n deepCalculateFramesFromRange, hashFromBlockNumber,\n hydrateBlock,\n} from '../../../block/index.ts'\nimport type { BalanceStepSummaryContext } from '../../../model/index.ts'\nimport type { BalancesStepSummary } from '../../../payloads/index.ts'\nimport { BalancesStepSummarySchema, netBalancesForPayloads } from '../../../payloads/index.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../../SignedBigInt.ts'\n\nexport async function balancesStepSummaryFromRange(\n context: BalanceStepSummaryContext,\n range: XL1BlockRange,\n): Promise<WithStorageMeta<BalancesStepSummary>> {\n // console.log(`balanceStepSummaryFromRange: head=${head}, range=${range[0]}-${range[1]}`)\n const frameHeadHash = await hashFromBlockNumber(context, range[1])\n const frameSize = range[1] - range[0] + 1\n const [headHash] = await context.head()\n\n let result: BalancesStepSummary | undefined = undefined\n\n if (frameSize === 1) {\n const hash = await hashFromBlockNumber(context, range[0])\n const [, payloads] = await hydrateBlock(context.store, hash)\n const balances: Record<Address, SignedBigInt> = {}\n for (const [address, balance] of Object.entries(netBalancesForPayloads(payloads))) {\n balances[address as Address] = toSignedBigInt(balance)\n }\n result = {\n schema: BalancesStepSummarySchema, hash: headHash, stepSize: -1, balances,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const step = (StepSizes as any).indexOf(frameSize)\n assertEx(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes.join(', ')}`)\n\n const summaryResult = await context.summaryMap.get(`${frameHeadHash}|${frameSize}`)\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<BalancesStepSummary>\n } else {\n // We do not have it, so lets build it\n await context.stepSemaphores[step].acquire()\n try {\n const subRanges = deepCalculateFramesFromRange(range, step - 1)\n const promises = subRanges.map(subRange => balancesStepSummaryFromRange(\n context,\n subRange,\n ))\n const subResults = await Promise.all(promises)\n\n // add them all up\n const bigIntBalances: Record<Address, bigint> = {}\n for (const subResult of subResults) {\n for (const [address, balance] of Object.entries(subResult.balances)) {\n bigIntBalances[address as Address] = (bigIntBalances[address as Address] ?? 0n) + parseSignedBigInt(balance)\n }\n }\n\n const balances: Record<Address, SignedBigInt> = {}\n for (const [address, balance] of Object.entries(bigIntBalances)) {\n balances[address as Address] = toSignedBigInt(balance)\n }\n\n result = {\n schema: BalancesStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, balances,\n }\n\n await context.summaryMap.set(`${frameHeadHash}|${frameSize}`, result)\n } finally {\n context.stepSemaphores[step].release()\n }\n }\n }\n // console.log(`balanceStepSummaryFromRange-result: head=${head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)\n const finalResult = await PayloadBuilder.addStorageMeta(result)\n return finalResult\n}\n","import type { Address } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { spanRootAsync } from '@xylabs/telemetry'\nimport { isDefined } from '@xylabs/typeof'\nimport {\n asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,\n} from '@xyo-network/xl1-protocol'\n\nimport { deepCalculateFramesFromRange } from '../../../block/index.ts'\nimport type { BalanceStepSummaryContext } from '../../../model/index.ts'\nimport { parseSignedBigInt } from '../../../SignedBigInt.ts'\nimport { balancesStepSummaryFromRange } from './balancesStepSummaryFromRange.ts'\n\nexport async function balancesSummary(\n context: BalanceStepSummaryContext,\n): Promise<Partial<Record<Address, bigint>>> {\n return await spanRootAsync('balanceSummary', async () => {\n const [headHash] = await context.head()\n const headResult = await context.store.chainMap.get(headHash)\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${headHash}`, { required: true })\n const rangeStart = asXL1BlockNumber(isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0)\n const ranges = deepCalculateFramesFromRange(asXL1BlockRange([rangeStart, headBoundWitness.block], true))\n const summaries = await Promise.all(ranges.map(range => balancesStepSummaryFromRange(context, range)))\n const balances: Partial<Record<Address, bigint>> = {}\n for (let summary of summaries) {\n for (const [address, balance] of Object.entries(summary.balances)) {\n const validAddress = asAddress(address, () => `Invalid address: ${address}`)\n balances[validAddress] = (balances[validAddress] ?? 0n) + parseSignedBigInt(balance)\n }\n }\n return balances\n })\n}\n","import { type Logger } from '@xylabs/logger'\n\nexport async function timeBudget<TResult>(name: string, logger: Logger | undefined, func: () => Promise<TResult>, budget: number): Promise<TResult> {\n const start = Date.now()\n const result = await func()\n const duration = Date.now() - start\n if (duration > budget) {\n logger?.warn(`Function [${name}] execution exceeded budget: ${duration}ms > ${budget}ms`)\n }\n return result\n}\n","import type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { AllowedBlockPayload, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayload } from '@xyo-network/xl1-protocol'\n\nconst ELEVATE_OPCODE = 'elevate'\n\nexport function elevatedPayloads([tx, payloads]: SignedHydratedTransactionWithStorageMeta) {\n const opCodes = (tx.script ?? []).filter(operation => operation.startsWith(`${ELEVATE_OPCODE}|`))\n const elevatedPayloads: WithStorageMeta<AllowedBlockPayload>[] = []\n for (const opCode of opCodes) {\n const [code, hash] = opCode.split('|')\n if (code === ELEVATE_OPCODE) {\n const elevatedPayload = payloads.find(payload => payload._hash === hash)\n if (isAllowedBlockPayload(elevatedPayload)) {\n elevatedPayloads.push(elevatedPayload)\n }\n }\n }\n if (opCodes.length === elevatedPayloads.length) {\n return elevatedPayloads\n }\n throw new Error('Not all elevated payloads could be found in the transaction payloads')\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {\n /**\n * The hash of the last block that this service has indexing\n */\n endBlockHash: Hash\n /**\n * The hash of the block that the service started indexing. If undefined, the service is\n * assumed to have started indexing from the genesis block\n */\n startBlockHash?: Hash\n /**\n * The indexed state for the range\n */\n state: T\n}\nexport const ChainIndexingServiceStateSchema = 'network.xyo.chain.indexing.service.state' as const\nexport type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema\n\n/**\n * The result of a ChainIndexingServiceState\n */\nexport type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>\n\n/**\n * Identity functions for determining if an object is an ChainIndexingServiceState\n */\nexport const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {\n return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)\n}\nexport const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)\n\nexport const isChainIndexingServiceStateWithStorageMeta\n = <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>\n isChainIndexingServiceState<T>(value) && isStorageMeta(value)\n\nexport const asChainIndexingServiceStateWithStorageMeta\n = AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n","import type {\n XyoClient, XyoGateway, XyoPermissions,\n} from '../../provider/index.ts'\n\nexport class SimpleXyoClient implements XyoClient {\n gateways: Readonly<Record<string, XyoGateway>>\n permissions: XyoPermissions\n\n constructor(gateways: Readonly<Record<string, XyoGateway>>, permissions: XyoPermissions) {\n this.gateways = gateways\n this.permissions = permissions\n }\n}\n","import type { Hash } from '@xylabs/hex'\nimport { isAnyPayload, type Schema } from '@xyo-network/payload-model'\n\nimport type { MapTypeRead } from '../../map/index.ts'\nimport type {\n DataLakeData,\n DataLakeViewer,\n} from '../../provider/index.ts'\n\nexport interface DataLakeViewerParams<TMap extends MapTypeRead<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData>> {\n allowedSchemas?: Schema[]\n disallowedSchemas?: Schema[]\n map: TMap\n}\n\nexport class SimpleDataLakeViewer<TMap extends MapTypeRead<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData>,\n TParams extends DataLakeViewerParams<TMap> = DataLakeViewerParams<TMap>> implements DataLakeViewer {\n private readonly _params: TParams\n\n constructor(params: TParams) {\n this._params = params\n }\n\n get allowedSchemas(): Schema[] | undefined {\n return this._params.allowedSchemas\n }\n\n get disallowedSchemas(): Schema[] | undefined {\n return this._params.disallowedSchemas\n }\n\n protected get map(): TMap {\n return this._params.map\n }\n\n protected get params() {\n return this._params\n }\n\n async get(hash: Hash): Promise<DataLakeData | undefined> {\n const result = await this.map.get(hash)\n return this.isAllowed(result) ? result : undefined\n }\n\n async getMany(hashes: Hash[]): Promise<DataLakeData[]> {\n const result = await this.map.getMany(hashes)\n return result.filter(data => this.isAllowed(data))\n }\n\n async has(hash: Hash): Promise<boolean> {\n const value = await this.get(hash)\n if (isAnyPayload(value)) {\n return this.isAllowed(value)\n }\n return value !== undefined\n }\n\n protected isAllowed(value: DataLakeData | undefined): boolean {\n if (isAnyPayload(value)) {\n return this.isAllowedSchema(value.schema)\n }\n return true\n }\n\n protected isAllowedSchema(schema: Schema): boolean {\n if (this.allowedSchemas && !this.allowedSchemas.includes(schema)) {\n return false\n }\n if (this.disallowedSchemas && this.disallowedSchemas.includes(schema)) {\n return false\n }\n return true\n }\n}\n","import type { Hash } from '@xylabs/hex'\n\nimport type { MapType } from '../../map/index.ts'\nimport type {\n DataLakeData,\n DataLakeRunner,\n} from '../../provider/index.ts'\nimport type { DataLakeViewerParams } from './SimpleDataLakeViewer.ts'\nimport { SimpleDataLakeViewer } from './SimpleDataLakeViewer.ts'\n\nexport interface DataLakeRunnerParams extends DataLakeViewerParams<MapType<Hash, DataLakeData>> {}\n\nexport class SimpleDataLakeRunner<TParams extends DataLakeRunnerParams> extends SimpleDataLakeViewer<MapType<Hash, DataLakeData>> implements DataLakeRunner {\n constructor(params: TParams) {\n super(params)\n }\n\n async clear(): Promise<void> {\n await this.map.clear()\n }\n\n async delete(hash: Hash): Promise<boolean> {\n return await this.map.delete(hash)\n }\n\n async set(hash: Hash, data: DataLakeData): Promise<void> {\n if (this.isAllowed(data)) {\n await this.map.set(hash, data)\n }\n }\n\n async setMany(entries: [Hash, DataLakeData][]): Promise<void> {\n const allowed = entries.filter(([_, data]) => this.isAllowed(data))\n return await this.map.setMany(allowed)\n }\n}\n","import type { Promisable } from '@xylabs/promise'\n\nimport type {\n XyoConnection, XyoGateway, XyoSigner,\n} from '../../provider/index.ts'\n\nexport class SimpleXyoGateway implements XyoGateway {\n private readonly _connection: XyoConnection\n private readonly _signer: XyoSigner\n\n constructor(signer: XyoSigner, connection: XyoConnection) {\n this._signer = signer\n this._connection = connection\n }\n\n get connectionInstance(): XyoConnection {\n return this._connection\n }\n\n get signerInstance(): XyoSigner {\n return this._signer\n }\n\n connection(): Promisable<XyoConnection> {\n return this._connection\n }\n\n signer(): Promisable<XyoSigner> {\n return this._signer\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\nimport { BigIntToJsonZod } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { isDefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithHashMeta } from '@xyo-network/payload-model'\nimport {\n type AllowedBlockPayload,\n type AttoXL1,\n type SignedHydratedTransaction,\n type SignedHydratedTransactionWithHashMeta,\n type Transfer,\n TransferSchema,\n} from '@xyo-network/xl1-protocol'\n\nimport type {\n DataLakeRunner,\n TransactionOptions,\n XyoConnection, XyoGateway, XyoGatewayRunner,\n XyoSigner,\n} from '../../provider/index.ts'\nimport { buildUnsignedTransaction } from '../../transaction/index.ts'\n\nexport class SimpleXyoGatewayRunner implements XyoGatewayRunner {\n protected readonly gateway: XyoGateway\n private _dataLakes: (DataLakeRunner | null)[]\n\n constructor(gateway: XyoGateway, dataLakes: DataLakeRunner[] = []) {\n this.gateway = gateway\n this._dataLakes = [...dataLakes]\n }\n\n get connectionInstance(): XyoConnection {\n return this.gateway.connectionInstance\n }\n\n get dataLakes(): DataLakeRunner[] {\n throw new Error('Method not implemented.')\n }\n\n get signerInstance(): XyoSigner {\n return this.gateway.signerInstance\n }\n\n addDataLake(dataLake: DataLakeRunner): number {\n this._dataLakes.push(dataLake)\n return this._dataLakes.length - 1\n }\n\n async addPayloadsToChain(\n onChain: AllowedBlockPayload[],\n offChain: Payload[],\n options?: TransactionOptions,\n ): Promise<[Hash, SignedHydratedTransactionWithHashMeta]> {\n // Get chain providers\n const viewer = assertEx(this.connectionInstance.viewer, () => 'No viewer available on connection')\n\n // Resolve transaction options\n const {\n nbf, exp, chain, fees,\n } = options ?? {}\n const resolvedChainId = isDefined(chain) ? chain : await viewer.chainId()\n const resolvedNbf = isDefined(nbf) ? nbf : await viewer?.currentBlockNumber()\n const resolvedExp = isDefined(exp) ? exp : resolvedNbf + 10\n\n // Build, sign, and broadcast the transaction\n // eslint-disable-next-line sonarjs/deprecation\n const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await (await this.signer()).address(), fees)\n return await this.addTransactionToChain(tx)\n }\n\n async addTransactionToChain(tx: SignedHydratedTransaction): Promise<[Hash, SignedHydratedTransactionWithHashMeta]> {\n // eslint-disable-next-line sonarjs/deprecation\n const connection = await this.gateway.connection()\n // eslint-disable-next-line sonarjs/deprecation\n const signer = await this.gateway.signer()\n const runner = assertEx(connection.runner, () => 'No runner available on connection')\n const signedTx = await signer.signTransaction(tx)\n await this.addPayloadsToDataLakes(signedTx[1])\n return [await runner.broadcastTransaction(\n [await PayloadBuilder.addStorageMeta(signedTx[0]),\n await PayloadBuilder.addStorageMeta(signedTx[1])],\n ), signedTx]\n }\n\n /** @deprecated use connectionInstance instead */\n connection(): Promisable<XyoConnection> {\n return this.gateway.connection()\n }\n\n removeDataLake(index: number): void {\n this._dataLakes[index] = null\n }\n\n async send(to: Address, amount: AttoXL1, options?: TransactionOptions): Promise<Hash> {\n return await this.sendMany({ [to]: amount }, options)\n }\n\n async sendMany(transfers: Record<Address, AttoXL1>, options?: TransactionOptions): Promise<Hash> {\n // eslint-disable-next-line sonarjs/deprecation\n const from = await (await this.signer()).address()\n const hexTransfers: Record<Address, Hex> = Object.fromEntries(\n Object.entries(transfers).map(([address, amount]) => ([\n address, BigIntToJsonZod.parse(amount),\n ])),\n )\n const transfer = new PayloadBuilder<Transfer>({ schema: TransferSchema }).fields({\n from,\n transfers: hexTransfers,\n epoch: Date.now(),\n }).build()\n const [hash] = await this.addPayloadsToChain([transfer], [], options)\n return hash\n }\n\n /** @deprecated use signerInstance instead */\n signer(): Promisable<XyoSigner> {\n // eslint-disable-next-line sonarjs/deprecation\n return this.gateway.signer()\n }\n\n protected async addPayloadsToDataLakes(payloads: WithHashMeta<Payload>[]): Promise<void> {\n await Promise.all(this._dataLakes.map(async (dataLake) => {\n await Promise.all(payloads.map(async (payload) => {\n await dataLake?.set(payload._hash, payload)\n }))\n }))\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n ChainId,\n ExecutableFields,\n FromFields,\n SignedHydratedTransactionWithStorageMeta, TransactionBoundWitness, TransactionBoundWitnessFields, TransactionFeesBigInt,\n} from '@xyo-network/xl1-protocol'\nimport { defaultTransactionFees } from '@xyo-network/xl1-protocol'\n\nexport async function buildTransaction(\n chain: ChainId,\n onChainPayloads: AllowedBlockPayload[],\n offChainPayloads: Payload[],\n signer: AccountInstance | AccountInstance[],\n nbf: number,\n exp: number,\n from?: Address,\n fees: TransactionFeesBigInt = defaultTransactionFees,\n): Promise<SignedHydratedTransactionWithStorageMeta> {\n if (from === undefined && Array.isArray(signer)) {\n throw new Error('from is required when signer is an array')\n }\n\n const txBoundWitnessFields: TransactionBoundWitnessFields = {\n chain,\n fees: {\n base: toHex(fees.base),\n gasLimit: toHex(fees.gasLimit),\n gasPrice: toHex(fees.gasPrice),\n priority: toHex(fees.priority),\n },\n nbf,\n exp,\n }\n\n const elevatedHashes = await PayloadBuilder.hashes(onChainPayloads)\n const script: string[] = []\n for (const elevatedHash of elevatedHashes) {\n script.push(`elevate|${elevatedHash}`)\n }\n\n const fields: TransactionBoundWitnessFields & FromFields & Partial<ExecutableFields> = {\n ...txBoundWitnessFields,\n from: from ?? (Array.isArray(signer) ? assertEx(signer.at(0)?.address) : signer.address),\n }\n\n if (script.length > 0) {\n fields.script = script\n }\n\n const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()\n .fields(fields)\n .meta({ $signatures: [] })\n .payloads([...onChainPayloads, ...offChainPayloads])\n .signers(Array.isArray(signer) ? signer : [signer])\n .build()\n\n return [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(txPayloads)]\n}\n","import type { Address } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, ChainId, ExecutableFields, FromFields, TransactionBoundWitness, TransactionBoundWitnessFields, TransactionFeesBigInt,\n UnsignedHydratedTransaction,\n} from '@xyo-network/xl1-protocol'\nimport { defaultTransactionFees } from '@xyo-network/xl1-protocol'\n\nexport async function buildUnsignedTransaction(\n chain: ChainId,\n onChainPayloads: AllowedBlockPayload[],\n offChainPayloads: Payload[],\n nbf: number,\n exp: number,\n from: Address,\n fees: TransactionFeesBigInt = defaultTransactionFees,\n): Promise<UnsignedHydratedTransaction> {\n const txBoundWitnessFields: TransactionBoundWitnessFields = {\n chain,\n fees: {\n base: toHex(fees.base),\n gasLimit: toHex(fees.gasLimit),\n gasPrice: toHex(fees.gasPrice),\n priority: toHex(fees.priority),\n },\n nbf,\n exp,\n }\n\n const elevatedHashes = await PayloadBuilder.hashes(onChainPayloads)\n const script: string[] = []\n for (const elevatedHash of elevatedHashes) {\n script.push(`elevate|${elevatedHash}`)\n }\n\n const fields: TransactionBoundWitnessFields & FromFields & Partial<ExecutableFields> = {\n ...txBoundWitnessFields,\n from,\n }\n\n if (script.length > 0) {\n fields.script = script\n }\n\n const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()\n .fields(fields)\n .meta({ $signatures: [] })\n .payloads([...onChainPayloads, ...offChainPayloads])\n .build()\n\n return [tx, txPayloads]\n}\n","import { delay } from '@xylabs/delay'\nimport type { Logger } from '@xylabs/logger'\nimport { isDefined } from '@xylabs/typeof'\nimport type { Signed } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignedHydratedTransaction, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport type { XyoViewer } from '../provider/index.ts'\n\nconst DEFAULT_CONFIRMATION_ATTEMPTS = 20\nconst DEFAULT_DELAY_BETWEEN_ATTEMPTS = 1000 // milliseconds\n\nexport type ConfirmSubmittedTransactionOptions = {\n /**\n * Number of attempts to confirm the transaction.\n * Defaults to 20.\n */\n attempts?: number\n /**\n * Delay in milliseconds between confirmation attempts.\n * Defaults to 1000 (1 second).\n */\n delay?: number\n /**\n * Optional logger instance for logging progress.\n */\n logger?: Logger\n}\n\n/**\n * Confirms a submitted transaction by checking if it has been included in the blockchain.\n * @param viewer The viewer\n * @param transaction The transaction to confirm\n * @param options Options for confirmation\n * @returns The confirmed transaction or throws an error if not confirmed\n */\nexport const confirmSubmittedTransaction = async (\n viewer: XyoViewer,\n transaction: Signed<TransactionBoundWitness>,\n options?: ConfirmSubmittedTransactionOptions,\n): Promise<SignedHydratedTransaction> => {\n const { attempts: maxAttempts = DEFAULT_CONFIRMATION_ATTEMPTS, delay: attemptDelay = DEFAULT_DELAY_BETWEEN_ATTEMPTS } = options ?? {}\n const txBWHash = await PayloadBuilder.hash(transaction)\n options?.logger?.log('🚀 confirming transaction:', txBWHash, '\\n')\n let attempts = 0\n while (true) {\n const tx = await viewer.transactionByHash(txBWHash) ?? undefined\n if (isDefined(tx)) {\n options?.logger?.log('✅ Transaction confirmed:', txBWHash, '\\n')\n return tx\n } else {\n attempts++\n if (attempts > maxAttempts) {\n options?.logger?.error(`⚠️ Transaction not confirmed after ${maxAttempts} attempts`)\n throw new Error(`Transaction ${txBWHash} not confirmed after ${maxAttempts} attempts`)\n } else {\n options?.logger?.log(`🔄 Transaction not confirmed yet, attempt ${attempts}. Retrying...`, '\\n')\n await delay(attemptDelay)\n }\n }\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from '@xyo-network/archivist-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n SignedHydratedTransaction, SignedHydratedTransactionWithStorageMeta, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport type { ChainStoreRead } from '../model/index.ts'\n\nexport const tryHydrateTransaction = async (\n { chainMap }: ChainStoreRead,\n hash: Hash,\n): Promise<SignedHydratedTransactionWithStorageMeta | undefined> => {\n return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(\n {\n get(hashes: Hash[]) {\n return chainMap.getMany(hashes)\n },\n next() {\n throw new Error('Not implemented')\n },\n },\n hash,\n isSignedTransactionBoundWitnessWithStorageMeta,\n )) as SignedHydratedTransactionWithStorageMeta | undefined\n}\n\nexport const hydrateTransaction = async (\n { chainMap }: ChainStoreRead,\n hash: Hash,\n): Promise<SignedHydratedTransaction> => {\n return await hydrateTypedBoundWitness<TransactionBoundWitness>(\n {\n get(hashes: Hash[]) {\n return chainMap.getMany(hashes)\n },\n next() {\n throw new Error('Not implemented')\n },\n },\n hash,\n isSignedTransactionBoundWitnessWithStorageMeta,\n ) as SignedHydratedTransaction\n}\n\nexport const flattenHydratedTransaction = (hydratedTransaction: SignedHydratedTransaction): Payload[] => {\n const [tx, txPayloads] = hydratedTransaction\n return [...txPayloads, tx]\n}\n\nexport const flattenHydratedTransactions = (hydratedTransactions: SignedHydratedTransaction[]): Payload[] =>\n hydratedTransactions.flatMap(tx => flattenHydratedTransaction(tx))\n\nexport const tryHydrateElevatedTransaction = async (\n { chainMap }: ChainStoreRead,\n hash: Hash,\n): Promise<SignedHydratedTransactionWithStorageMeta | undefined> => {\n const hydratedTransaction = await tryHydrateTransaction({ chainMap }, hash)\n if (!hydratedTransaction) {\n return undefined\n }\n const [transaction, payloads] = hydratedTransaction\n const opCodes = (transaction.script ?? []).filter(operation => operation.startsWith('elevate|'))\n const elevatedPayloads: WithStorageMeta<AllowedBlockPayload>[] = []\n for (const opCode of opCodes) {\n const [code, hash] = opCode.split('|')\n if (code === 'elevated') {\n const elevatedPayload = payloads.find(payload => payload._hash === hash)\n if (isAllowedBlockPayload(elevatedPayload)) {\n elevatedPayloads.push(elevatedPayload)\n }\n }\n }\n if (opCodes.length === elevatedPayloads.length) {\n return [transaction, elevatedPayloads]\n }\n return undefined\n}\n\nexport const hydrateElevatedTransaction = async (\n context: ChainStoreRead,\n hash: Hash,\n): Promise<SignedHydratedTransaction> => {\n return assertEx(await tryHydrateElevatedTransaction(context, hash), () => 'Hydration failed')\n}\n","import { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignedHydratedTransaction } from '@xyo-network/xl1-protocol'\n\n/** The number of bytes that a transaction and its payloads will take up in a block */\nexport function transactionBlockByteCount([transaction, payloads]: SignedHydratedTransaction): number {\n const cleanTransaction = PayloadBuilder.omitStorageMeta(transaction)\n const transactionBytes = JSON.stringify(cleanTransaction).length\n const cleanPayloads = PayloadBuilder.omitStorageMeta(payloads)\n return cleanPayloads.reduce((acc: number, payload) => acc + JSON.stringify(payload).length, 0) + transactionBytes\n}\n","import { asHash, type Hash } from '@xylabs/hex'\nimport type { Payload, WithHashMeta } from '@xyo-network/payload-model'\nimport type { SignedHydratedTransactionWithStorageMeta, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport { crackOperations } from './transactionOperations.ts'\n\nexport function transactionElevatedPayloadHashes(transaction: TransactionBoundWitness): Hash[] {\n const elevateOperations = crackOperations(transaction.script ?? []).filter(op => op[0] === 'elevate')\n return elevateOperations.map(op => asHash(op[1][0], true))\n}\n\nexport function transactionElevatedPayloads([transaction, payloads]: SignedHydratedTransactionWithStorageMeta): WithHashMeta<Payload>[] {\n const hashes = transactionElevatedPayloadHashes(transaction)\n const elevatedPayloads = payloads.filter(payload => hashes.includes(payload._hash))\n return elevatedPayloads\n}\n","export function crackOperation(operation: string): [string, string[]] {\n const parts = operation.split('|')\n if (parts.length < 2) {\n throw new Error(`Invalid operation format: ${operation}`)\n }\n return [parts[0], parts.slice(1)]\n}\n\nexport function crackOperations(operations: string[]): [string, string[]][] {\n return operations.map(op => crackOperation(op))\n}\n","import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { AttoXL1, TransactionGasCosts } from '@xyo-network/xl1-protocol'\n\nimport { transactionBlockByteCount } from './transactionBlockByteCount.ts'\nimport { transactionElevatedPayloads } from './transactionElevatedPayloads.ts'\n\n/** The required gas for the byte storage on the block chain for a transaction */\nexport function transactionBytesRequiredGas([transaction, payloads]: SignedHydratedTransactionWithStorageMeta): AttoXL1 {\n const transactionBlockBytes = transactionBlockByteCount([transaction, payloads])\n return AttoXL1(TransactionGasCosts.characterStorage * BigInt(transactionBlockBytes))\n}\n\nexport function transactionRequiredGas(hydratedTransaction: SignedHydratedTransactionWithStorageMeta): AttoXL1 {\n const elevatedPayloads = transactionElevatedPayloads(hydratedTransaction)\n const hashes = elevatedPayloads.length + 1 /* for transaction itself */\n const signatures = hydratedTransaction[0].addresses.length\n return AttoXL1(transactionBytesRequiredGas(hydratedTransaction)\n + TransactionGasCosts.hashValidation * BigInt(hashes)\n + TransactionGasCosts.signatureValidation * BigInt(signatures)\n + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads.length))\n}\n","import { filterAs } from '@xylabs/array'\nimport { assertEx } from '@xylabs/assert'\nimport { asHash, type Hash } from '@xylabs/hex'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { AllowedBlockPayload, HydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayloadWithHashMeta } from '@xyo-network/xl1-protocol'\n\nexport const tryExtractElevatedHashesFromScript = (strings: string[]): Hash[] => {\n const hashes = strings\n .filter(str => str.startsWith('elevate|'))\n .map(str => str.split('|')[1])\n return filterAs(hashes, h => asHash(h))\n}\n\nexport const extractElevatedHashesFromScript = (strings: string[]): Hash[] => {\n const hashes = strings\n .filter(str => str.startsWith('elevate|'))\n .map(str => str.split('|')[1])\n const filtered = filterAs(hashes, h => asHash(h))\n assertEx(filtered.length === hashes.length, () => 'Invalid elevated hashes')\n return filtered\n}\n\nexport const tryExtractElevatedHashes = (tx: HydratedTransactionWithStorageMeta): WithStorageMeta<AllowedBlockPayload>[] => {\n const [bw, payloads] = tx\n const { script } = bw\n const hashes = script ? tryExtractElevatedHashesFromScript(script) : []\n return payloads\n .filter(p => hashes.includes(p._hash))\n .filter(isAllowedBlockPayloadWithHashMeta)\n}\n\nexport const extractElevatedHashes = (tx: HydratedTransactionWithStorageMeta): WithStorageMeta<AllowedBlockPayload>[] => {\n const [bw, payloads] = tx\n const { script } = bw\n const hashes = script ? tryExtractElevatedHashesFromScript(script) : []\n const filtered = payloads\n .filter(p => hashes.includes(p._hash))\n .filter(isAllowedBlockPayloadWithHashMeta)\n assertEx(filtered.length === hashes.length, () => 'Invalid elevated hashes')\n return filtered\n}\n","import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { hexFromArrayBuffer } from '@xylabs/hex'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { Unsigned } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { TransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\n/**\n * Signs an unsigned transaction with the provided account.\n * @param tx The transaction to sign\n * @param account The account to sign the transaction with\n * @returns The signed transaction\n */\nexport async function signTransaction(tx: Unsigned<TransactionBoundWitness>, account: AccountInstance) {\n assertEx(tx.from === account.address, () => 'Signer address does not match transaction from address')\n // Clone tx to prevent modifying original\n const signedTx = structuredClone(tx)\n // Update dynamic fields based on account\n signedTx.addresses = [account.address]\n signedTx.previous_hashes = [account.previousHash ?? null]\n // Calculate tx hash and sign it\n const hash = await PayloadBuilder.dataHash(signedTx)\n const hashBytes = toArrayBuffer(hash)\n const [signature] = await account.sign(hashBytes)\n // Append the signatures to the transaction\n signedTx.$signatures = [hexFromArrayBuffer(signature)]\n // Return the signed transaction\n return signedTx\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type {\n GatewayName,\n NetworkStatus,\n} from '@xyo-network/xl1-protocol'\nimport { isNetworkStatus } from '@xyo-network/xl1-protocol'\nimport axios from 'axios'\n\nimport type { XyoNetwork } from '../../provider/index.ts'\nimport {\n errorStatus, StatusNetworks, unknownStatus,\n} from './lib/index.ts'\n\nexport class SimpleXyoNetwork implements XyoNetwork {\n protected readonly _networkId: GatewayName\n\n constructor(networkId: GatewayName) {\n this._networkId = networkId\n }\n\n async status(): Promise<NetworkStatus> {\n const statusNetwork = StatusNetworks[this._networkId]\n if (isUndefined(statusNetwork)) {\n throw new Error(`Unknown status network ID: ${this._networkId}`)\n }\n\n return await this.makeRequest(statusNetwork.statusUrl)\n }\n\n private async makeRequest(url: string): Promise<NetworkStatus> {\n try {\n const response = await axios.get(url)\n if (isNetworkStatus(response.data)) {\n return response.data\n } else {\n if (response.status === 200) {\n console.error('Unknown network status response:', response.data)\n\n return unknownStatus\n }\n return errorStatus\n }\n } catch (error) {\n console.error('Error fetching network status:', error)\n return errorStatus\n }\n }\n}\n","import type { NetworkStatus } from '@xyo-network/xl1-protocol'\nimport { NetworkStatusSchema } from '@xyo-network/xl1-protocol'\n\nexport const unknownStatus: NetworkStatus = {\n description: 'Unknown Network Status',\n schema: NetworkStatusSchema,\n state: 'unknown',\n}\n\nexport const errorStatus: NetworkStatus = {\n description: 'Error Fetching Network Status',\n schema: NetworkStatusSchema,\n state: 'unknown',\n}\n","import type { GatewayName } from '@xyo-network/xl1-protocol'\n\nexport type StatusNetwork = {\n id: GatewayName\n statusUrl: string\n}\n\nexport const MainNetworkStats: StatusNetwork = {\n id: 'mainnet' as GatewayName,\n statusUrl: 'https://xyo.network/chain-network-status-mainnet.json',\n}\n\nexport const SequenceNetworkStats: StatusNetwork = {\n id: 'sequence' as GatewayName,\n statusUrl: 'https://beta.xyo.network/chain-network-status-sequence.json',\n}\n\nexport const LocalNetworkStats: StatusNetwork = {\n id: 'local' as GatewayName,\n statusUrl: 'http://localhost:3002/chain-network-status-local.json',\n}\n\nexport const StatusNetworks: Record<GatewayName, StatusNetwork> = {\n ['mainnet' as GatewayName]: MainNetworkStats,\n ['sequence' as GatewayName]: SequenceNetworkStats,\n ['local' as GatewayName]: LocalNetworkStats,\n}\n","import { assertEx } from '@xylabs/assert'\n\nimport type {\n CaveatTypes,\n InvokerPermission, PermissionRequest, RequestedPermission, XyoPermissions,\n} from '../../provider/index.ts'\nimport type { Invoker, PermissionsStore } from './store/index.ts'\n\n/**\n * In-memory implementation of XyoPermissions for testing or ephemeral use cases.\n * Does not persist data beyond the lifetime of the instance.\n * Assumes all permission requests are granted and revocations always succeed.\n */\nexport class SimpleXyoPermissions implements XyoPermissions {\n invoker: Invoker\n private _store: PermissionsStore\n\n constructor(store: PermissionsStore) {\n this._store = store\n this.invoker = store.invoker\n }\n\n get store(): PermissionsStore {\n return assertEx(this._store, () => 'Store must be defined to get permissions')\n }\n\n async getPermissions(): Promise<InvokerPermission[]> {\n return await this.store.getPermissions()\n }\n\n // assumed the permissions are always granted\n async requestPermissions(permissions: PermissionRequest[]): Promise<RequestedPermission[]> {\n await Promise.resolve()\n // Flatten PermissionRequest[] into InvokerPermission[]\n const newPermissions: InvokerPermission[] = []\n const now = Date.now()\n for (const req of permissions) {\n for (const parentCapability in req) {\n newPermissions.push({\n invoker: this.invoker,\n parentCapability,\n caveats: Object.entries(req[parentCapability]).map(([type, value]) => ({ type: type as CaveatTypes, value })),\n date: now,\n })\n }\n }\n\n // Update or add permissions in the store\n const existingPermissions = await this.getPermissions()\n for (const perm of newPermissions) {\n const idx = existingPermissions.findIndex(\n p => p.invoker === perm.invoker && p.parentCapability === perm.parentCapability,\n )\n if (idx === -1) {\n existingPermissions.push(perm)\n } else {\n existingPermissions[idx] = perm\n }\n }\n await this.store.setPermissions(existingPermissions)\n\n // Return the granted permissions in RequestedPermission shape\n return newPermissions.map(({ parentCapability, date }) => ({ parentCapability, date }))\n }\n\n // Assumes the permissions are always revoked\n async revokePermissions(permissions: PermissionRequest): Promise<RequestedPermission[]> {\n const existingPermissions = await this.getPermissions()\n const revoked: RequestedPermission[] = []\n for (const parentCapability in permissions) {\n const idx = existingPermissions.findIndex(\n p => p.invoker === this.invoker && p.parentCapability === parentCapability,\n )\n if (idx !== -1) {\n const removed = existingPermissions.splice(idx, 1)[0]\n revoked.push({ parentCapability: removed.parentCapability, date: removed.date })\n }\n }\n await this.store.setPermissions(existingPermissions)\n return revoked\n }\n}\n","import { assertEx } from '@xylabs/assert'\n\nimport type { InvokerPermission } from '../../../provider/index.ts'\nimport type { Invoker, PermissionsStore } from './PermissionsStore.ts'\n\n/**\n * In-memory implementation of XyoPermissions for testing or ephemeral use cases.\n * Does not persist data beyond the lifetime of the instance.\n * Assumes all permission requests are granted and revocations always succeed.\n */\nexport class MemoryPermissionsStore implements PermissionsStore {\n private _invoker: Invoker\n private permissions: InvokerPermission[] = []\n\n constructor(invoker: Invoker) {\n this._invoker = invoker\n }\n\n get invoker(): Invoker {\n return assertEx(this._invoker, () => 'Invoker must be defined to get permissions')\n }\n\n async getPermissions(): Promise<InvokerPermission[]> {\n await Promise.resolve()\n return this.permissions\n }\n\n async setPermissions(permissions: InvokerPermission[]): Promise<void> {\n await Promise.resolve()\n this.permissions = permissions\n }\n}\n","import type { Hash } from '@xylabs/hex'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport type { XyoRunner } from '../../provider/index.ts'\nimport { flattenHydratedTransaction } from '../../transaction/index.ts'\n\nexport class SimpleXyoRunner implements XyoRunner {\n private _mempoolArchivist?: ArchivistInstance\n\n constructor(mempoolArchivist?: ArchivistInstance) {\n this._mempoolArchivist = mempoolArchivist\n }\n\n async broadcastTransaction(transaction: SignedHydratedTransactionWithStorageMeta): Promise<Hash> {\n const archivist = await this.getMempoolArchivist()\n await archivist.insert(flattenHydratedTransaction(transaction))\n return await PayloadBuilder.hash(transaction[0])\n }\n\n protected async getMempoolArchivist(): Promise<ArchivistInstance> {\n if (!this._mempoolArchivist) {\n this._mempoolArchivist = await MemoryArchivist.create({ account: 'random' })\n }\n return this._mempoolArchivist\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { type Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, ChainId, SignedHydratedTransactionWithHashMeta, TransactionBoundWitness, TransactionFeesBigInt,\n} from '@xyo-network/xl1-protocol'\n\nimport type { XyoSigner } from '../../provider/index.ts'\nimport { buildTransaction, signTransaction } from '../../transaction/index.ts'\n\nexport class SimpleXyoSigner implements XyoSigner {\n protected readonly _account: AccountInstance\n\n constructor(account: AccountInstance) {\n this._account = account\n }\n\n address(): Promisable<Address> {\n return this._account.address\n }\n\n async createSignedTransaction(\n chain: ChainId,\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n nbf: number,\n exp: number,\n fees: TransactionFeesBigInt,\n from?: Address,\n ): Promise<Signed<TransactionBoundWitness>> {\n const fromAddress = from ?? this._account.address\n const transaction = await buildTransaction(\n chain,\n elevatedPayloads,\n additionalPayloads,\n this._account,\n nbf,\n exp,\n fromAddress,\n fees,\n )\n return transaction[0]\n }\n\n async signTransaction(tx: [UnsignedBoundWitness<TransactionBoundWitness>, Payload[]]): Promise<SignedHydratedTransactionWithHashMeta> {\n const txBW = await signTransaction(tx[0], this._account)\n return [await PayloadBuilder.addStorageMeta(txBW), await PayloadBuilder.addStorageMeta(tx[1])]\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { XL1BlockNumber } from '@xyo-network/xl1-protocol'\nimport { asTimePayload, TimeSchema } from '@xyo-network/xl1-protocol'\n\nimport { hashFromBlockNumber, hydrateBlock } from '../../block/index.ts'\nimport type { ChainContextRead } from '../../model/index.ts'\n\nexport async function xl1BlockNumberToEthBlockNumber(context: ChainContextRead, xl1BlockNumber: XL1BlockNumber): Promise<number> {\n const blockHash = await hashFromBlockNumber(context, xl1BlockNumber)\n const hydratedBlock = await hydrateBlock(context.store, blockHash)\n const timePayload = asTimePayload(hydratedBlock[1].find(p => p.schema === TimeSchema), { required: true })\n return assertEx(timePayload.ethereum, () => 'No ethereum timestamp found on block')\n}\n","import { HDWallet } from '@xyo-network/wallet'\n\nimport { DEFAULT_WALLET_PATH } from './paths.ts'\n\n/**\n * Initializes a wallet to the default XYO path from a mnemonic phrase\n * @param walletPhrase The mnemonic phrase for the wallet\n * @returns A wallet initialized to the default XYO path using the provided phrase\n */\nexport const generateXyoBaseWalletFromPhrase = (walletPhrase: string) => {\n const wallet = HDWallet.fromPhrase(walletPhrase, DEFAULT_WALLET_PATH)\n return wallet\n}\n","export const WALLET_COMPLIANCE = '44\\'' as const\n\nexport const COIN_TYPES = { Ethereum: '60\\'' } as const\n\nexport const ACCOUNT_TYPE = { GANACHE: '0\\'', XYO: '0\\'' } as const\n\nexport const CHANGE_ADDRESS = { META_MASK: '0', XYO: '0' } as const\n\nexport const ADDRESS_INDEX = { META_MASK: '0', XYO: '0' } as const\n\nexport const DEFAULT_WALLET_PATH = `m/${WALLET_COMPLIANCE}/${COIN_TYPES.Ethereum}/${ACCOUNT_TYPE.XYO}/${CHANGE_ADDRESS.XYO}`\n"],"mappings":"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","names":["allHashesPresent","hashes","payloads","payloadHashes","Set","map","p","_hash","every","hash","has","assertEx","isTransactionBoundWitnessWithStorageMeta","blockPayloadsFromHydratedBlock","block","payload_hashes","map","hash","assertEx","find","p","_hash","filter","x","isTransactionBoundWitnessWithStorageMeta","flattenHydratedBlock","hydratedBlock","blk","blkPayloads","flattenHydratedBlocks","hydratedBlocks","flatMap","blk","flattenHydratedBlock","assertEx","asBlockBoundWitnessWithStorageMeta","isTransactionBoundWitnessWithStorageMeta","hydrateBlock","chainMap","hash","maxDepth","minDepth","assertEx","bw","asBlockBoundWitnessWithStorageMeta","get","blkPayloads","getMany","payload_hashes","allHashesPresent","transactions","filter","isTransactionBoundWitnessWithStorageMeta","transactionsPayloadHashes","flatMap","tx","transactionsPayloads","allPayloadsHashes","Set","p","_hash","allPayloads","allPayloadsFiltered","has","filterAs","asTransactionBoundWitnessWithStorageMeta","transactionsFromHydratedBlock","block","filterAs","asTransactionBoundWitnessWithStorageMeta","assertEx","isBlockBoundWitnessWithStorageMeta","isTransactionBoundWitnessWithStorageMeta","tryHydrateBlock","archivist","hash","maxDepth","assertEx","bw","get","find","isBlockBoundWitnessWithStorageMeta","undefined","blkPayloads","payload_hashes","transactions","filter","isTransactionBoundWitnessWithStorageMeta","transactionsPayloadHashes","flatMap","tx","transactionsPayloads","allPayloadsHashes","Set","p","_hash","allPayloads","allPayloadsFiltered","has","asHash","toSafeJsonString","asBlockBoundWitnessWithStorageMeta","StepSizes","isDefined","isUndefined","LRUCache","LruCacheMap","lruCache","options","LRUCache","max","clear","delete","id","get","getMany","results","key","value","undefined","push","has","set","data","setMany","entries","isDefined","MemoryMap","map","Map","clear","delete","id","get","getMany","ids","results","data","isDefined","push","has","set","setMany","entries","key","value","contextCache","context","name","create","caches","isUndefined","MemoryMap","withContextCacheResponse","key","func","options","cache","LruCacheMap","max","cacheResult","get","isDefined","result","set","StakeEventNames","blockFromBlockNumber","context","blockNumber","cacheKey","withContextCacheResponse","headHash","head","result","store","chainMap","get","currentBlock","asBlockBoundWitnessWithStorageMeta","required","block","Error","jumpHash","previous","jumpBlockNumber","step","stepSize","StepSizes","entries","possibleJumpBlockNumber","asHash","step_hashes","at","newBlock","toSafeJsonString","asXL1BlockNumber","stepSize","calculateFramesFromRange","range","step","size","stepSize","start","Math","trunc","fitted","remaining","push","asXL1BlockNumber","min","i","StepSizes","deepCalculateFramesFromRange","range","startingStep","StepSizes","length","fitted","remaining","step","newRemaining","newFittedFrames","newRemainingFrames","calculateFramesFromRange","push","i","toSorted","a","b","hashFromBlockNumber","context","blockNumber","blockFromBlockNumber","_hash","isReadArchivist","value","get","undefined","next","isWriteArchivist","insert","isReadWriteArchivist","toStepIdentityString","block","step","assertEx","PayloadBuilder","isAnyPayload","StepSizes","AsObjectFactory","isPayloadOfSchemaType","AddressPairSchema","isAddressPairPayload","asAddressPairPayload","create","asOptionalAddressPairPayload","createOptional","hexToBigInt","toAddress","span","isTransfer","netBalancesForPayloads","payloads","span","balances","payload","isTransfer","from","address","amount","Object","entries","transfers","toAddress","hexToBigInt","hexToBigInt","span","isTransfer","netTransfersForPayloads","payloads","span","transfers","payload","isTransfer","from","to","amount","Object","entries","hexToBigInt","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta","BalancesStepSummarySchema","isBalancesStepSummary","isPayloadOfSchemaType","asBalancesStepSummary","AsObjectFactory","create","isBalancesStepSummaryWithStorageMeta","value","isStorageMeta","asBalancesStepSummaryWithStorageMeta","StepSummarySchema","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta","TransfersStepSummarySchema","isTransfersStepSummary","isPayloadOfSchemaType","asTransfersStepSummary","AsObjectFactory","create","isTransfersStepSummaryWithStorageMeta","value","isStorageMeta","asTransfersStepSummaryWithStorageMeta","hexToBigInt","toHex","isObject","isNegativeBigInt","value","isObject","negative","isPositiveBigInt","positive","parseSignedBigInt","hexToBigInt","Error","toSignedBigInt","toHex","toPositiveBigInt","asAddress","spanRootAsync","isDefined","asBlockBoundWitnessWithStorageMeta","asXL1BlockNumber","asXL1BlockRange","transfersSummary","transferContext","spanRootAsync","headHash","head","headResult","store","chainMap","get","headBoundWitness","asBlockBoundWitnessWithStorageMeta","required","rangeStart","asXL1BlockNumber","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","asXL1BlockRange","summaries","Promise","all","map","range","transfersStepSummaryFromRange","transfers","summary","from","toMap","Object","entries","validFrom","asAddress","to","transfer","validTo","parseSignedBigInt","transfersSummaryKey","frameHeadHash","frameSize","transfersStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","headHash","head","result","undefined","hash","payloads","hydrateBlock","store","transfers","from","toMap","Object","entries","netTransfersForPayloads","to","amount","toSignedBigInt","schema","TransfersStepSummarySchema","stepSize","step","StepSizes","indexOf","assertEx","join","key","transfersSummaryKey","summaryResult","summaryMap","get","isAnyPayload","stepSemaphores","acquire","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","transfer","parseSignedBigInt","set","release","finalResult","PayloadBuilder","addStorageMeta","z","globalRegistry","z","isValidationError","ValidationError","BlockValidationError","ValidationError","isBlockValidationError","error","isValidationError","name","HydratedBlockValidationError","isHydratedBlockValidationError","HydratedBlockStateValidationError","chainId","hash","value","message","cause","isHydratedBlockStateValidationError","isLocalhost","hostname","endsWith","getUrl","host","port","scheme","isLocalhost","TODO","z","MnemonicStringZod","string","transform","s","trim","replaceAll","refine","includes","split","length","message","describe","ApiConfigZod","object","host","string","default","register","globalRegistry","description","title","type","initRewardsCache","union","number","transform","v","mnemonic","MnemonicStringZod","optional","port","coerce","globalRegistry","z","AppConfigZod","object","port","coerce","number","default","register","description","title","type","globalRegistry","z","BridgeConfigZod","object","host","string","default","register","globalRegistry","description","title","type","mnemonic","MnemonicStringZod","optional","port","coerce","number","globalRegistry","z","ChainConfigZod","object","id","string","optional","register","description","title","type","globalRegistry","z","EvmInfuraConfigZod","object","projectId","string","optional","register","description","title","type","projectSecret","EvmJsonRpcConfigZod","url","EvmConfigZod","chainId","infura","describe","jsonRpc","LogLevel","globalRegistry","z","LogLevels","Object","keys","LogConfigZod","object","logLevel","enum","default","register","choices","description","title","type","silent","boolean","globalRegistry","z","MempoolConfigZod","object","enabled","string","default","transform","val","ctx","normalized","toLowerCase","trim","includes","addIssue","code","expected","message","NEVER","register","globalRegistry","description","title","type","host","mnemonic","MnemonicStringZod","optional","port","coerce","number","AddressZod","asAddress","globalRegistry","z","ProducerConfigZod","object","allowlist","preprocess","val","split","map","s","asAddress","trim","array","AddressZod","optional","register","globalRegistry","description","title","type","disableIntentRedeclaration","boolean","healthCheckPort","coerce","number","heartbeatInterval","default","minStake","mnemonic","MnemonicStringZod","port","rewardAddress","string","globalRegistry","z","RewardRedemptionApiConfigZod","object","chainRpcApiUrl","string","default","register","globalRegistry","description","title","type","host","mnemonic","MnemonicStringZod","optional","port","coerce","number","isDefined","isUndefined","globalRegistry","z","hasMongoConfig","config","isUndefined","isDefined","connectionString","database","domain","password","username","MongoConfigZod","object","string","nonempty","optional","register","globalRegistry","description","title","type","globalRegistry","z","StorageConfigZod","object","mongo","MongoConfigZod","optional","describe","root","string","register","globalRegistry","description","title","type","globalRegistry","z","OpenTelemetryConfigZod","object","otlpEndpoint","url","optional","register","description","title","type","TelemetryConfigZod","otel","describe","AddressZod","asAddress","globalRegistry","z","ValidationConfigZod","object","allowedRewardRedeemers","preprocess","val","split","map","s","trim","array","optional","register","description","title","type","allowedRewardEscrowAccountSigners","Xl1CommonConfigSchema","object","LogConfigZod","shape","describe","ConfigZod","api","ApiConfigZod","default","parse","app","AppConfigZod","bridge","BridgeConfigZod","chain","ChainConfigZod","evm","EvmConfigZod","mempool","MempoolConfigZod","producer","ProducerConfigZod","rewardRedemptionApi","RewardRedemptionApiConfigZod","storage","StorageConfigZod","telemetry","TelemetryConfigZod","validation","ValidationConfigZod","getDefaultConfig","z","DescriptionSchema","string","TitleSchema","JSONSchemaMetaSchema","object","id","optional","title","description","deprecated","boolean","catchall","unknown","GlobalMetaSchema","extend","ChoicesSchema","array","union","number","literal","undefined","readonly","UsageMetaSchema","choices","default","group","hidden","type","isUsageMeta","v","safeParse","success","XL1_NETWORK_STAKING_GENESIS_PERIOD_END_EPOCH","XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK","AsObjectFactory","isPayloadOfZodType","z","z","TypedDataDomainZod","object","name","string","nullable","optional","version","chainId","union","number","bigint","verifyingContract","salt","instanceof","Uint8Array","TypedDataFieldZod","type","TypedDataTypesZod","record","array","TypedDataValueZod","any","EIP712DataPayloadFieldsZod","z","object","domain","TypedDataDomainZod","types","TypedDataTypesZod","values","TypedDataValueZod","EIP712DataPayloadSchema","isEIP712DataPayload","isPayloadOfZodType","asEIP712DataPayload","AsObjectFactory","create","HashZod","AsObjectFactory","isPayloadOfZodType","z","EIP712SignaturePayloadFieldsZod","object","address","string","hash","signature","EIP712SignaturePayloadSchema","isEIP712SignaturePayload","asEIP712SignaturePayload","create","PayloadBuilder","signEIP712Message","signer","data","domain","types","values","signature","signTypedData","hash","PayloadBuilder","address","getAddress","schema","EIP712SignaturePayloadSchema","asHash","isUndefined","PayloadBuilder","verifyTypedData","verifyEIP712Message","data","sig","address","signature","hash","schema","fields","signedHash","asHash","isUndefined","PayloadBuilder","recoveredAddress","verifyTypedData","domain","types","values","toLowerCase","asAttoXL1","XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_EARNED_REWARDS","asAttoXL1","XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_BONUS_REWARDS","XL1_NETWORK_STAKING_GENESIS_PERIOD_TOTAL_REWARDS","RewardMultipliers","XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK","isDefined","readPayloadMapFromStore","store","isReadArchivist","get","hash","getMany","hashes","has","isDefined","toAddress","StepSizes","keccak256","completedStepRewardAddress","block","step","resolvedStepSize","StepSizes","length","addressKey","TextEncoder","encode","toAddress","keccak256","slice","prefix","toAddress","isDefined","keccak256","derivedReceiveAddress","address","scope","addressKey","TextEncoder","encode","isDefined","toAddress","keccak256","slice","prefix","asXL1BlockRange","StepSizes","stepBlockRange","block","step","stepSize","StepSizes","start","asXL1BlockRange","assertEx","StepSizes","stepTransferIndex","block","step","rewardTransferCount","rewardTransferIndex","i","StepSizes","length","stepSize","assertEx","assertEx","PayloadBuilder","isAnyPayload","StepSizes","balancesStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","headHash","head","result","undefined","hash","payloads","hydrateBlock","store","balances","address","balance","Object","entries","netBalancesForPayloads","toSignedBigInt","schema","BalancesStepSummarySchema","stepSize","step","StepSizes","indexOf","assertEx","join","summaryResult","summaryMap","get","isAnyPayload","stepSemaphores","acquire","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","parseSignedBigInt","set","release","finalResult","PayloadBuilder","addStorageMeta","asAddress","spanRootAsync","isDefined","asBlockBoundWitnessWithStorageMeta","asXL1BlockNumber","asXL1BlockRange","balancesSummary","context","spanRootAsync","headHash","head","headResult","store","chainMap","get","headBoundWitness","asBlockBoundWitnessWithStorageMeta","required","rangeStart","asXL1BlockNumber","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","asXL1BlockRange","summaries","Promise","all","map","range","balancesStepSummaryFromRange","balances","summary","address","balance","Object","entries","validAddress","asAddress","parseSignedBigInt","timeBudget","name","logger","func","budget","start","Date","now","result","duration","warn","isAllowedBlockPayload","ELEVATE_OPCODE","elevatedPayloads","tx","payloads","opCodes","script","filter","operation","startsWith","opCode","code","hash","split","elevatedPayload","find","payload","_hash","isAllowedBlockPayload","push","length","Error","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta","ChainIndexingServiceStateSchema","isChainIndexingServiceState","payload","isPayloadOfSchemaType","asChainIndexingServiceState","AsObjectFactory","create","isChainIndexingServiceStateWithStorageMeta","value","isStorageMeta","asChainIndexingServiceStateWithStorageMeta","SimpleXyoClient","gateways","permissions","isAnyPayload","SimpleDataLakeViewer","_params","params","allowedSchemas","disallowedSchemas","map","get","hash","result","isAllowed","undefined","getMany","hashes","filter","data","has","value","isAnyPayload","isAllowedSchema","schema","includes","SimpleDataLakeRunner","SimpleDataLakeViewer","params","clear","map","delete","hash","set","data","isAllowed","setMany","entries","allowed","filter","_","SimpleXyoGateway","_connection","_signer","signer","connection","connectionInstance","signerInstance","assertEx","BigIntToJsonZod","isDefined","PayloadBuilder","TransferSchema","assertEx","toHex","BoundWitnessBuilder","PayloadBuilder","defaultTransactionFees","buildTransaction","chain","onChainPayloads","offChainPayloads","signer","nbf","exp","from","fees","defaultTransactionFees","undefined","Array","isArray","Error","txBoundWitnessFields","base","toHex","gasLimit","gasPrice","priority","elevatedHashes","PayloadBuilder","hashes","script","elevatedHash","push","fields","assertEx","at","address","length","tx","txPayloads","BoundWitnessBuilder","meta","$signatures","payloads","signers","build","addStorageMeta","toHex","BoundWitnessBuilder","PayloadBuilder","defaultTransactionFees","buildUnsignedTransaction","chain","onChainPayloads","offChainPayloads","nbf","exp","from","fees","defaultTransactionFees","txBoundWitnessFields","base","toHex","gasLimit","gasPrice","priority","elevatedHashes","PayloadBuilder","hashes","script","elevatedHash","push","fields","length","tx","txPayloads","BoundWitnessBuilder","meta","$signatures","payloads","build","delay","isDefined","PayloadBuilder","DEFAULT_CONFIRMATION_ATTEMPTS","DEFAULT_DELAY_BETWEEN_ATTEMPTS","confirmSubmittedTransaction","viewer","transaction","options","attempts","maxAttempts","delay","attemptDelay","txBWHash","PayloadBuilder","hash","logger","log","tx","transactionByHash","undefined","isDefined","error","Error","assertEx","hydrateTypedBoundWitness","tryHydrateTypedBoundWitness","isAllowedBlockPayload","isSignedTransactionBoundWitnessWithStorageMeta","tryHydrateTransaction","chainMap","hash","tryHydrateTypedBoundWitness","get","hashes","getMany","next","Error","isSignedTransactionBoundWitnessWithStorageMeta","hydrateTransaction","hydrateTypedBoundWitness","flattenHydratedTransaction","hydratedTransaction","tx","txPayloads","flattenHydratedTransactions","hydratedTransactions","flatMap","tryHydrateElevatedTransaction","undefined","transaction","payloads","opCodes","script","filter","operation","startsWith","elevatedPayloads","opCode","code","split","elevatedPayload","find","payload","_hash","isAllowedBlockPayload","push","length","hydrateElevatedTransaction","context","assertEx","PayloadBuilder","transactionBlockByteCount","transaction","payloads","cleanTransaction","PayloadBuilder","omitStorageMeta","transactionBytes","JSON","stringify","length","cleanPayloads","reduce","acc","payload","asHash","crackOperation","operation","parts","split","length","Error","slice","crackOperations","operations","map","op","transactionElevatedPayloadHashes","transaction","elevateOperations","crackOperations","script","filter","op","map","asHash","transactionElevatedPayloads","payloads","hashes","elevatedPayloads","payload","includes","_hash","AttoXL1","TransactionGasCosts","transactionBytesRequiredGas","transaction","payloads","transactionBlockBytes","transactionBlockByteCount","AttoXL1","TransactionGasCosts","characterStorage","BigInt","transactionRequiredGas","hydratedTransaction","elevatedPayloads","transactionElevatedPayloads","hashes","length","signatures","addresses","hashValidation","signatureValidation","payloadValidation","filterAs","assertEx","asHash","isAllowedBlockPayloadWithHashMeta","tryExtractElevatedHashesFromScript","strings","hashes","filter","str","startsWith","map","split","filterAs","h","asHash","extractElevatedHashesFromScript","filtered","assertEx","length","tryExtractElevatedHashes","tx","bw","payloads","script","p","includes","_hash","isAllowedBlockPayloadWithHashMeta","extractElevatedHashes","toArrayBuffer","assertEx","hexFromArrayBuffer","PayloadBuilder","signTransaction","tx","account","assertEx","from","address","signedTx","structuredClone","addresses","previous_hashes","previousHash","hash","PayloadBuilder","dataHash","hashBytes","toArrayBuffer","signature","sign","$signatures","hexFromArrayBuffer","SimpleXyoGatewayRunner","gateway","_dataLakes","dataLakes","connectionInstance","Error","signerInstance","addDataLake","dataLake","push","length","addPayloadsToChain","onChain","offChain","options","viewer","assertEx","nbf","exp","chain","fees","resolvedChainId","isDefined","chainId","resolvedNbf","currentBlockNumber","resolvedExp","tx","buildUnsignedTransaction","signer","address","addTransactionToChain","connection","runner","signedTx","signTransaction","addPayloadsToDataLakes","broadcastTransaction","PayloadBuilder","addStorageMeta","removeDataLake","index","send","to","amount","sendMany","transfers","from","hexTransfers","Object","fromEntries","entries","map","BigIntToJsonZod","parse","transfer","schema","TransferSchema","fields","epoch","Date","now","build","hash","payloads","Promise","all","payload","set","_hash","isUndefined","isNetworkStatus","axios","NetworkStatusSchema","unknownStatus","description","schema","state","errorStatus","MainNetworkStats","id","statusUrl","SequenceNetworkStats","LocalNetworkStats","StatusNetworks","SimpleXyoNetwork","_networkId","networkId","status","statusNetwork","StatusNetworks","isUndefined","Error","makeRequest","statusUrl","url","response","axios","get","isNetworkStatus","data","console","error","unknownStatus","errorStatus","assertEx","SimpleXyoPermissions","invoker","_store","store","assertEx","getPermissions","requestPermissions","permissions","Promise","resolve","newPermissions","now","Date","req","parentCapability","push","caveats","Object","entries","map","type","value","date","existingPermissions","perm","idx","findIndex","p","setPermissions","revokePermissions","revoked","removed","splice","assertEx","MemoryPermissionsStore","_invoker","permissions","invoker","assertEx","getPermissions","Promise","resolve","setPermissions","MemoryArchivist","PayloadBuilder","SimpleXyoRunner","_mempoolArchivist","mempoolArchivist","broadcastTransaction","transaction","archivist","getMempoolArchivist","insert","flattenHydratedTransaction","PayloadBuilder","hash","MemoryArchivist","create","account","PayloadBuilder","SimpleXyoSigner","_account","account","address","createSignedTransaction","chain","elevatedPayloads","additionalPayloads","nbf","exp","fees","from","fromAddress","transaction","buildTransaction","signTransaction","tx","txBW","PayloadBuilder","addStorageMeta","assertEx","asTimePayload","TimeSchema","xl1BlockNumberToEthBlockNumber","context","xl1BlockNumber","blockHash","hashFromBlockNumber","hydratedBlock","hydrateBlock","store","timePayload","asTimePayload","find","p","schema","TimeSchema","required","assertEx","ethereum","HDWallet","WALLET_COMPLIANCE","COIN_TYPES","Ethereum","ACCOUNT_TYPE","GANACHE","XYO","CHANGE_ADDRESS","META_MASK","ADDRESS_INDEX","DEFAULT_WALLET_PATH","generateXyoBaseWalletFromPhrase","walletPhrase","wallet","HDWallet","fromPhrase","DEFAULT_WALLET_PATH"]}
|
|
@@ -13,6 +13,7 @@ export declare class SimpleXyoGatewayRunner implements XyoGatewayRunner {
|
|
|
13
13
|
addDataLake(dataLake: DataLakeRunner): number;
|
|
14
14
|
addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[], options?: TransactionOptions): Promise<[Hash, SignedHydratedTransactionWithHashMeta]>;
|
|
15
15
|
addTransactionToChain(tx: SignedHydratedTransaction): Promise<[Hash, SignedHydratedTransactionWithHashMeta]>;
|
|
16
|
+
/** @deprecated use connectionInstance instead */
|
|
16
17
|
connection(): Promisable<XyoConnection>;
|
|
17
18
|
removeDataLake(index: number): void;
|
|
18
19
|
send(to: Address, amount: AttoXL1, options?: TransactionOptions): Promise<Hash>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleXyoGatewayRunner.d.ts","sourceRoot":"","sources":["../../../../src/simple/gateway/SimpleXyoGatewayRunner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EACd,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,yBAAyB,EAC9B,KAAK,qCAAqC,EAG3C,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAC3C,SAAS,EACV,MAAM,yBAAyB,CAAA;AAGhC,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IACtC,OAAO,CAAC,UAAU,CAA2B;gBAEjC,OAAO,EAAE,UAAU,EAAE,SAAS,GAAE,cAAc,EAAO;IAKjE,IAAI,kBAAkB,IAAI,aAAa,CAEtC;IAED,IAAI,SAAS,IAAI,cAAc,EAAE,CAEhC;IAED,IAAI,cAAc,IAAI,SAAS,CAE9B;IAED,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;IAKvC,kBAAkB,CACtB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;IAkBnD,qBAAqB,CAAC,EAAE,EAAE,yBAAyB,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;IAclH,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC;IAIvC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhG,6CAA6C;IAC7C,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC;cAKf,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAOzF"}
|
|
1
|
+
{"version":3,"file":"SimpleXyoGatewayRunner.d.ts","sourceRoot":"","sources":["../../../../src/simple/gateway/SimpleXyoGatewayRunner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EACd,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,yBAAyB,EAC9B,KAAK,qCAAqC,EAG3C,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAC3C,SAAS,EACV,MAAM,yBAAyB,CAAA;AAGhC,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IACtC,OAAO,CAAC,UAAU,CAA2B;gBAEjC,OAAO,EAAE,UAAU,EAAE,SAAS,GAAE,cAAc,EAAO;IAKjE,IAAI,kBAAkB,IAAI,aAAa,CAEtC;IAED,IAAI,SAAS,IAAI,cAAc,EAAE,CAEhC;IAED,IAAI,cAAc,IAAI,SAAS,CAE9B;IAED,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;IAKvC,kBAAkB,CACtB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;IAkBnD,qBAAqB,CAAC,EAAE,EAAE,yBAAyB,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;IAclH,iDAAiD;IACjD,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC;IAIvC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhG,6CAA6C;IAC7C,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC;cAKf,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAOzF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/xl1-protocol-sdk",
|
|
4
|
-
"version": "1.16.
|
|
4
|
+
"version": "1.16.7",
|
|
5
5
|
"description": "XYO Layer One SDK Protocol",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -49,27 +49,27 @@
|
|
|
49
49
|
"@xylabs/promise": "~5.0.24",
|
|
50
50
|
"@xylabs/telemetry": "~5.0.24",
|
|
51
51
|
"@xylabs/typeof": "~5.0.24",
|
|
52
|
-
"@xyo-network/account-model": "~5.1.
|
|
53
|
-
"@xyo-network/archivist-memory": "~5.1.
|
|
54
|
-
"@xyo-network/archivist-model": "~5.1.
|
|
55
|
-
"@xyo-network/boundwitness-builder": "~5.1.
|
|
56
|
-
"@xyo-network/boundwitness-model": "~5.1.
|
|
57
|
-
"@xyo-network/payload-builder": "~5.1.
|
|
58
|
-
"@xyo-network/payload-model": "~5.1.
|
|
59
|
-
"@xyo-network/wallet": "~5.1.
|
|
60
|
-
"@xyo-network/wallet-model": "~5.1.
|
|
61
|
-
"@xyo-network/xl1-protocol": "~1.13.
|
|
52
|
+
"@xyo-network/account-model": "~5.1.21",
|
|
53
|
+
"@xyo-network/archivist-memory": "~5.1.21",
|
|
54
|
+
"@xyo-network/archivist-model": "~5.1.21",
|
|
55
|
+
"@xyo-network/boundwitness-builder": "~5.1.21",
|
|
56
|
+
"@xyo-network/boundwitness-model": "~5.1.21",
|
|
57
|
+
"@xyo-network/payload-builder": "~5.1.21",
|
|
58
|
+
"@xyo-network/payload-model": "~5.1.21",
|
|
59
|
+
"@xyo-network/wallet": "~5.1.21",
|
|
60
|
+
"@xyo-network/wallet-model": "~5.1.21",
|
|
61
|
+
"@xyo-network/xl1-protocol": "~1.13.6",
|
|
62
62
|
"async-mutex": "~0.5.0",
|
|
63
63
|
"ethers": "~6.15.0",
|
|
64
64
|
"lru-cache": "^11.2.2",
|
|
65
65
|
"zod": "~4.1.12"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@types/node": "~24.10.
|
|
68
|
+
"@types/node": "~24.10.1",
|
|
69
69
|
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
70
70
|
"@xylabs/tsconfig": "~7.2.8",
|
|
71
|
-
"@xyo-network/account": "~5.1.
|
|
72
|
-
"@xyo-network/boundwitness-validator": "~5.1.
|
|
71
|
+
"@xyo-network/account": "~5.1.21",
|
|
72
|
+
"@xyo-network/boundwitness-validator": "~5.1.21",
|
|
73
73
|
"axios": "^1.13.2",
|
|
74
74
|
"eslint": "^9.39.1",
|
|
75
75
|
"typescript": "~5.9.3",
|
|
@@ -86,8 +86,9 @@ export class SimpleXyoGatewayRunner implements XyoGatewayRunner {
|
|
|
86
86
|
), signedTx]
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
+
/** @deprecated use connectionInstance instead */
|
|
89
90
|
connection(): Promisable<XyoConnection> {
|
|
90
|
-
|
|
91
|
+
return this.gateway.connection()
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
removeDataLake(index: number): void {
|