@xyo-network/xl1-protocol-sdk 1.15.0 → 1.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/index.mjs +10 -10
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/instances/Address.d.ts +1 -1
- package/dist/neutral/instances/Address.d.ts.map +1 -1
- package/dist/neutral/instances/ShiftedBigIntConfig.d.ts +1 -0
- package/dist/neutral/instances/ShiftedBigIntConfig.d.ts.map +1 -1
- package/dist/neutral/instances/XL1Amount.d.ts +2 -1
- package/dist/neutral/instances/XL1Amount.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepAddressReward.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepAddressReward.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepPoolRewardShares.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepPoolRewardShares.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepPoolRewards.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepPoolRewards.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardAddressShare.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardAddressShare.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardForStep.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardForStep.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardPositionWeight.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardPositionWeight.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardPotentialPositionLoss.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardPotentialPositionLoss.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardRandomizer.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardRandomizer.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardWeightForAddress.d.ts +1 -1
- package/dist/neutral/steps/primitives/networkStakeStepRewardWeightForAddress.d.ts.map +1 -1
- package/dist/neutral/steps/primitives/unclaimedRewards.d.ts +1 -1
- package/dist/neutral/steps/primitives/unclaimedRewards.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/instances/Address.ts +1 -1
- package/src/instances/ShiftedBigIntConfig.ts +1 -0
- package/src/instances/XL1Amount.ts +3 -1
- package/src/steps/primitives/networkStakeStepAddressReward.ts +1 -1
- package/src/steps/primitives/networkStakeStepPoolRewardShares.ts +1 -1
- package/src/steps/primitives/networkStakeStepPoolRewards.ts +1 -1
- package/src/steps/primitives/networkStakeStepRewardAddressShare.ts +1 -1
- package/src/steps/primitives/networkStakeStepRewardForStep.ts +1 -1
- package/src/steps/primitives/networkStakeStepRewardPositionWeight.ts +1 -1
- package/src/steps/primitives/networkStakeStepRewardPotentialPositionLoss.ts +1 -1
- package/src/steps/primitives/networkStakeStepRewardRandomizer.ts +1 -1
- package/src/steps/primitives/networkStakeStepRewardWeightForAddress.ts +1 -1
- package/src/steps/primitives/unclaimedRewards.ts +1 -1
package/dist/neutral/index.mjs
CHANGED
|
@@ -880,7 +880,7 @@ function claimedRewards(_address) {
|
|
|
880
880
|
__name(claimedRewards, "claimedRewards");
|
|
881
881
|
|
|
882
882
|
// src/steps/primitives/networkStakeStepAddressReward.ts
|
|
883
|
-
function networkStakeStepAddressReward(address,
|
|
883
|
+
function networkStakeStepAddressReward(address, _step, _block) {
|
|
884
884
|
return {
|
|
885
885
|
[address]: 0n
|
|
886
886
|
};
|
|
@@ -888,13 +888,13 @@ function networkStakeStepAddressReward(address, step, block) {
|
|
|
888
888
|
__name(networkStakeStepAddressReward, "networkStakeStepAddressReward");
|
|
889
889
|
|
|
890
890
|
// src/steps/primitives/networkStakeStepPoolRewards.ts
|
|
891
|
-
function networkStakeStepPoolRewards(
|
|
891
|
+
function networkStakeStepPoolRewards(_step, _block) {
|
|
892
892
|
return {};
|
|
893
893
|
}
|
|
894
894
|
__name(networkStakeStepPoolRewards, "networkStakeStepPoolRewards");
|
|
895
895
|
|
|
896
896
|
// src/steps/primitives/networkStakeStepPoolRewardShares.ts
|
|
897
|
-
function networkStakeStepPoolRewardShares(
|
|
897
|
+
function networkStakeStepPoolRewardShares(_step, _block) {
|
|
898
898
|
return {};
|
|
899
899
|
}
|
|
900
900
|
__name(networkStakeStepPoolRewardShares, "networkStakeStepPoolRewardShares");
|
|
@@ -908,37 +908,37 @@ function networkStakeStepRewardAddressHistory(address) {
|
|
|
908
908
|
__name(networkStakeStepRewardAddressHistory, "networkStakeStepRewardAddressHistory");
|
|
909
909
|
|
|
910
910
|
// src/steps/primitives/networkStakeStepRewardAddressShare.ts
|
|
911
|
-
function networkStakeStepRewardAddressShare(
|
|
911
|
+
function networkStakeStepRewardAddressShare(_address, _step, _block) {
|
|
912
912
|
throw new Error("Method not implemented.");
|
|
913
913
|
}
|
|
914
914
|
__name(networkStakeStepRewardAddressShare, "networkStakeStepRewardAddressShare");
|
|
915
915
|
|
|
916
916
|
// src/steps/primitives/networkStakeStepRewardForStep.ts
|
|
917
|
-
function networkStakeStepRewardForStep(
|
|
917
|
+
function networkStakeStepRewardForStep(_step) {
|
|
918
918
|
return 0n;
|
|
919
919
|
}
|
|
920
920
|
__name(networkStakeStepRewardForStep, "networkStakeStepRewardForStep");
|
|
921
921
|
|
|
922
922
|
// src/steps/primitives/networkStakeStepRewardPositionWeight.ts
|
|
923
|
-
function networkStakeStepRewardPositionWeight(
|
|
923
|
+
function networkStakeStepRewardPositionWeight(_position, _step) {
|
|
924
924
|
throw new Error("Method not implemented.");
|
|
925
925
|
}
|
|
926
926
|
__name(networkStakeStepRewardPositionWeight, "networkStakeStepRewardPositionWeight");
|
|
927
927
|
|
|
928
928
|
// src/steps/primitives/networkStakeStepRewardPotentialPositionLoss.ts
|
|
929
|
-
function networkStakeStepRewardPotentialPositionLoss(
|
|
929
|
+
function networkStakeStepRewardPotentialPositionLoss(_position, _step) {
|
|
930
930
|
throw new Error("Method not implemented.");
|
|
931
931
|
}
|
|
932
932
|
__name(networkStakeStepRewardPotentialPositionLoss, "networkStakeStepRewardPotentialPositionLoss");
|
|
933
933
|
|
|
934
934
|
// src/steps/primitives/networkStakeStepRewardRandomizer.ts
|
|
935
|
-
function networkStakeStepRewardRandomizer(
|
|
935
|
+
function networkStakeStepRewardRandomizer(_step, _block) {
|
|
936
936
|
throw new Error("Method not implemented.");
|
|
937
937
|
}
|
|
938
938
|
__name(networkStakeStepRewardRandomizer, "networkStakeStepRewardRandomizer");
|
|
939
939
|
|
|
940
940
|
// src/steps/primitives/networkStakeStepRewardWeightForAddress.ts
|
|
941
|
-
function networkStakeStepRewardWeightForAddress(
|
|
941
|
+
function networkStakeStepRewardWeightForAddress(_address, _step) {
|
|
942
942
|
throw new Error("Method not implemented.");
|
|
943
943
|
}
|
|
944
944
|
__name(networkStakeStepRewardWeightForAddress, "networkStakeStepRewardWeightForAddress");
|
|
@@ -1028,7 +1028,7 @@ async function totalStakeWeight(stakeContract, staked, startEthBlock, endEthBloc
|
|
|
1028
1028
|
__name(totalStakeWeight, "totalStakeWeight");
|
|
1029
1029
|
|
|
1030
1030
|
// src/steps/primitives/unclaimedRewards.ts
|
|
1031
|
-
function unclaimedRewards(
|
|
1031
|
+
function unclaimedRewards(_address) {
|
|
1032
1032
|
throw new Error("Method not implemented.");
|
|
1033
1033
|
}
|
|
1034
1034
|
__name(unclaimedRewards, "unclaimedRewards");
|
|
@@ -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/balances/balancesStepSummaryFromRange.ts","../../src/payload/netBalancesForPayloads.ts","../../src/payload/netTransfersForPayloads.ts","../../src/SignedBigInt.ts","../../src/block/primitives/frames/calculateFramesFromRange.ts","../../src/block/primitives/frames/deepCalculateFramesFromRange.ts","../../src/block/primitives/blockFromBlockNumber.ts","../../src/block/primitives/hashFromBlockNumber.ts","../../src/block/primitives/payloads/BalancesStepSummary.ts","../../src/block/primitives/payloads/StepSummary.ts","../../src/block/primitives/payloads/TransfersSummary.ts","../../src/block/primitives/balances/balancesSummary.ts","../../src/block/primitives/transfers/transfersStepSummaryFromRange.ts","../../src/block/primitives/transfers/transfersSummary.ts","../../src/config/Config.ts","../../src/config/Api.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/Chain.ts","../../src/config/Evm.ts","../../src/config/Log.ts","../../src/config/Producer.ts","../../src/config/storage/driver/Mongo.ts","../../src/config/storage/Storage.ts","../../src/config/Telemetry.ts","../../src/config/UsageMeta.ts","../../src/steps/primitives/addressStakeWeight.ts","../../src/steps/primitives/claimedRewards.ts","../../src/steps/primitives/networkStakeStepAddressReward.ts","../../src/steps/primitives/networkStakeStepPoolRewards.ts","../../src/steps/primitives/networkStakeStepPoolRewardShares.ts","../../src/steps/primitives/networkStakeStepRewardAddressHistory.ts","../../src/steps/primitives/networkStakeStepRewardAddressShare.ts","../../src/steps/primitives/networkStakeStepRewardForStep.ts","../../src/steps/primitives/networkStakeStepRewardPositionWeight.ts","../../src/steps/primitives/networkStakeStepRewardPotentialPositionLoss.ts","../../src/steps/primitives/networkStakeStepRewardRandomizer.ts","../../src/steps/primitives/networkStakeStepRewardWeightForAddress.ts","../../src/steps/primitives/stakersAsOfBlock.ts","../../src/steps/primitives/startingStakes.ts","../../src/steps/primitives/totalStakeWeight.ts","../../src/steps/primitives/unclaimedRewards.ts","../../src/time/primitives/xl1BlockNumberToEthBlockNumber.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/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 { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport { allHashesPresent } from './allHashesPresent.ts'\n\nexport const hydrateBlock = async (\n archivist: ReadArchivist,\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 const bw = assertEx(\n (await archivist.get([hash])).find(isBlockBoundWitnessWithStorageMeta),\n () => `block ${hash} not found`,\n )\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await archivist.get(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 archivist.get(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 archivist.get([...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 { 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 { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { netBalancesForPayloads } from '../../../payload/index.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../../SignedBigInt.ts'\nimport { hydrateBlock } from '../../hydrate/index.ts'\nimport type { BlockNumberRange } from '../frames/index.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport { hashFromBlockNumber } from '../hashFromBlockNumber.ts'\nimport type { BalanceStepSummaryContext } from '../model.ts'\nimport { type BalancesStepSummary, BalancesStepSummarySchema } from '../payloads/index.ts'\n\nexport async function balancesStepSummaryFromRange(\n context: BalanceStepSummaryContext,\n range: BlockNumberRange,\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\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.chainArchivist, 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: context.head, 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.summaryRepository.get([frameHeadHash])\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<BalancesStepSummary>\n } else {\n // We do not have it, so lets build it\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.summaryRepository.insert([result])\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 {\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[], account: Address): Record<Address, bigint> {\n return span('netTransfersForPayloads', () => {\n const transfers: 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 if (account === from) {\n if (address !== from) {\n transfers[address] = (transfers[address] ?? 0n) + hexToBigInt(amount)\n }\n } else {\n if (account === address) {\n transfers[from] = (transfers[from] ?? 0n) - hexToBigInt(amount)\n }\n }\n }\n }\n }\n return transfers\n })\n}\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 { stepSize } from '@xyo-network/xl1-protocol'\n\nimport type { BlockNumberRange } from './BlockNumberRange.ts'\n\nexport function calculateFramesFromRange(range: BlockNumberRange, step: number): [\n // ranges of fitted frames\n BlockNumberRange[],\n // ranges of remaining blocks\n BlockNumberRange[]] {\n const size = stepSize(step)\n let start = (Math.trunc(range[0] / size)) * size\n const fitted: BlockNumberRange[] = []\n const remaining: BlockNumberRange[] = []\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], Math.min(start - 1, range[1])])\n }\n\n for (let i = start; i <= range[1]; i += size) {\n if ((i + size - 1) <= range[1]) {\n fitted.push([i, Math.min(i + size - 1, range[1])])\n } else {\n remaining.push([i, range[1]])\n }\n }\n return [fitted, remaining]\n}\n","import { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport type { BlockNumberRange } from './BlockNumberRange.ts'\nimport { calculateFramesFromRange } from './calculateFramesFromRange.ts'\n\nexport function deepCalculateFramesFromRange(range: BlockNumberRange, startingStep = StepSizes.length - 1): BlockNumberRange[] {\n const fitted: BlockNumberRange[] = []\n let remaining: BlockNumberRange[] = [range]\n\n for (let step = startingStep; step >= 0; step--) {\n const newRemaining: BlockNumberRange[] = []\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 { asHash, type Hash } from '@xylabs/hex'\nimport { toSafeJsonString } from '@xylabs/object'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { asBlockBoundWitnessWithStorageMeta, StepSizes } from '@xyo-network/xl1-protocol'\n\nimport type { ChainContext } from './model.ts'\n\nexport async function blockFromBlockNumber(context: ChainContext, blockNumber: number): Promise<WithStorageMeta<BlockBoundWitness>> {\n const result = await context.chainArchivist.get([context.head])\n let currentBlock = asBlockBoundWitnessWithStorageMeta(result.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })\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 - stepSize\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.chainArchivist.get([\n asHash(jumpHash, () => `Jump hash not found for block number [${blockNumber}]: ${jumpBlockNumber} ${toSafeJsonString(currentBlock, 10)}`)])\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 ${context.head}.`)\n }\n }\n return currentBlock\n}\n","import { type Hash } from '@xylabs/hex'\n\nimport { blockFromBlockNumber } from './blockFromBlockNumber.ts'\nimport type { ChainContext } from './model.ts'\n\nexport async function hashFromBlockNumber(context: ChainContext, blockNumber: number): Promise<Hash> {\n return (await blockFromBlockNumber(context, blockNumber))._hash\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 account: Address\n transfers: 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 type { Address } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { spanRootAsync } from '@xylabs/telemetry'\nimport { isDefined } from '@xylabs/typeof'\nimport { asBlockBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport { parseSignedBigInt } from '../../../SignedBigInt.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport type { BalanceStepSummaryContext } from '../model.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 headResult = await context.chainArchivist.get([context.head])\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })\n const rangeStart = isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0\n const ranges = deepCalculateFramesFromRange([rangeStart, headBoundWitness.block])\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 { 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 { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { netTransfersForPayloads } from '../../../payload/index.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../../SignedBigInt.ts'\nimport { hydrateBlock } from '../../hydrate/index.ts'\nimport { type BlockNumberRange, deepCalculateFramesFromRange } from '../frames/index.ts'\nimport { hashFromBlockNumber } from '../hashFromBlockNumber.ts'\nimport type { TransfersStepSummaryContext } from '../model.ts'\nimport { type TransfersStepSummary, TransfersStepSummarySchema } from '../payloads/index.ts'\n\nexport async function transfersStepSummaryFromRange(\n context: TransfersStepSummaryContext,\n range: BlockNumberRange,\n): Promise<WithStorageMeta<TransfersStepSummary>> {\n // console.log(`transfersStepSummaryFromRange: 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 { account } = context\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.chainArchivist, hash)\n const transfers: Record<Address, SignedBigInt> = {}\n for (const [address, balance] of Object.entries(netTransfersForPayloads(payloads, account))) {\n transfers[address as Address] = toSignedBigInt(balance)\n }\n result = {\n schema: TransfersStepSummarySchema, hash: context.head, stepSize: -1, transfers, account,\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.summaryRepository.get([frameHeadHash])\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<TransfersStepSummary>\n } else {\n // We do not have it, so lets build it\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, bigint> = {}\n for (const subResult of subResults) {\n for (const [address, transfer] of Object.entries(subResult.transfers)) {\n bigIntBalances[address as Address] = (bigIntBalances[address as Address] ?? 0n) + parseSignedBigInt(transfer)\n }\n }\n\n const transfers: Record<Address, SignedBigInt> = {}\n for (const [address, transfer] of Object.entries(bigIntBalances)) {\n transfers[address as Address] = toSignedBigInt(transfer)\n }\n\n result = {\n schema: TransfersStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, transfers, account,\n }\n\n await context.summaryRepository.insert([result])\n }\n }\n // console.log(`transfersStepSummaryFromRange-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 { asBlockBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport { parseSignedBigInt } from '../../../SignedBigInt.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport type { TransfersStepSummaryContext } from '../model.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 context: TransfersStepSummaryContext,\n): Promise<Partial<Record<Address, bigint>>> {\n return await spanRootAsync('transferSummary', async () => {\n const headResult = await context.chainArchivist.get([context.head])\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })\n const rangeStart = isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0\n const ranges = deepCalculateFramesFromRange([rangeStart, headBoundWitness.block])\n const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(context, range)))\n const transfers: Partial<Record<Address, bigint>> = {}\n for (let summary of summaries) {\n for (const [address, transfer] of Object.entries(summary.transfers)) {\n const validAddress = asAddress(address, () => `Invalid address: ${address}`)\n transfers[validAddress] = (transfers[validAddress] ?? 0n) + parseSignedBigInt(transfer)\n }\n }\n return transfers\n })\n}\n","import * as z from 'zod'\n\nimport { ApiConfigZod } from './Api.ts'\nimport { AppConfigZod } from './App.ts'\nimport { ChainConfigZod } from './Chain.ts'\nimport { EvmConfigZod } from './Evm.ts'\nimport { LogConfigZod } from './Log.ts'\nimport { ProducerConfigZod } from './Producer.ts'\nimport { StorageConfigZod } from './storage/index.ts'\nimport { TelemetryConfigZod } from './Telemetry.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 chain: ChainConfigZod.default(ChainConfigZod.parse({})).describe('Configuration for the chain'),\n evm: EvmConfigZod.default(EvmConfigZod.parse({})).describe('Configuration for EVM-backed services'),\n producer: ProducerConfigZod.default(ProducerConfigZod.parse({})).describe('Configuration for the producer'),\n storage: StorageConfigZod.default(StorageConfigZod.parse({})).describe('Configuration for the storage'),\n telemetry: TelemetryConfigZod.default(TelemetryConfigZod.parse({})).describe('Configuration for telemetry'),\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 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","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\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 { 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 { 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().min(1).optional().register(globalRegistry, {\n description: 'MongoDB connection string',\n title: 'storage.mongo.connectionString',\n type: 'string',\n }),\n database: z.string().min(1).optional().register(globalRegistry, {\n description: 'MongoDB database name',\n title: 'storage.mongo.database',\n type: 'string',\n }),\n domain: z.string().min(1).optional().register(globalRegistry, {\n description: 'MongoDB domain',\n title: 'storage.mongo.domain',\n type: 'string',\n }),\n password: z.string().min(1).optional().register(globalRegistry, {\n description: 'MongoDB password',\n title: 'storage.mongo.password',\n type: 'string',\n }),\n username: z.string().min(1).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 * 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","import { type Address, toAddress } from '@xylabs/hex'\nimport type { AddressStakingV2 } from '@xyo-network/typechain'\nimport { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol'\n\nexport async function addressStakeWeight(\n stakeContract: AddressStakingV2,\n staked: Address,\n by: Address,\n startEthBlock: number,\n endEthBlock: number,\n): Promise<bigint> {\n const stakeAddedFilter = stakeContract.filters.StakeAdded(`0x${XYO_NETWORK_STAKING_ADDRESS}`, by)\n const stakeAddedEvents = await stakeContract.queryFilter(stakeAddedFilter, startEthBlock, endEthBlock)\n\n const stakeRemovedFilter = stakeContract.filters.StakeRemoved(`0x${XYO_NETWORK_STAKING_ADDRESS}`, by)\n const stakeRemovedEvents = await stakeContract.queryFilter(stakeRemovedFilter, startEthBlock, endEthBlock)\n\n const accountStakes: Awaited<ReturnType<typeof stakeContract.getStake>> [] = []\n const accountStakeCount = await stakeContract.getStakeCountForAddress(`0x${by}`, { blockTag: startEthBlock - 1 })\n for (let i = 0; i < accountStakeCount; i++) {\n try {\n const stake = await stakeContract.getStake(`0x${by}`, i, { blockTag: startEthBlock - 1 })\n accountStakes.push(stake)\n } catch {\n break\n }\n }\n const ethStakedAddress = toAddress(staked, { prefix: false }).toLowerCase()\n const networkStakes = accountStakes.filter(s => s.staked.toLowerCase() === ethStakedAddress)\n let totalStake = 0n\n for (const stake of networkStakes) {\n totalStake += stake.amount\n }\n let totalWeight = 0n\n let addIndex = 0\n let removeIndex = 0\n\n // add up all the stakes for each block\n for (let i = startEthBlock; i <= endEthBlock; i++) {\n while (addIndex < stakeAddedEvents.length && stakeAddedEvents[addIndex]?.blockNumber === i) {\n totalStake += stakeAddedEvents[addIndex].args.amount\n addIndex++\n }\n while (removeIndex < stakeRemovedEvents.length && stakeRemovedEvents[removeIndex]?.blockNumber === i) {\n totalStake -= stakeRemovedEvents[removeIndex].args.amount\n removeIndex++\n }\n totalWeight += totalStake\n }\n return totalWeight\n}\n","import type { Address } from '@xylabs/hex'\n\nexport function claimedRewards(_address: Address) {\n return 0n\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepAddressReward(address: Address, step: number, block: number): Promisable<Record<Address, bigint>> {\n return { [address]: 0n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepPoolRewards(step: number, block: number): Promisable<Record<Address, bigint>> {\n return {}\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepPoolRewardShares(step: number, block: number): Promisable<Record<Address, bigint>> {\n return {}\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardAddressHistory(address: Address): Promisable<Record<Address, bigint>> {\n return { [address]: 0n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardAddressShare(address: Address, step: number, block: number): Promisable<[bigint, bigint]> {\n throw new Error('Method not implemented.')\n}\n","import type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardForStep(step: number): Promisable<bigint> {\n return 0n\n}\n","import type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardPositionWeight(position: bigint, step: number): Promisable<number> {\n throw new Error('Method not implemented.')\n}\n","import type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardPotentialPositionLoss(position: bigint, step: number): Promisable<bigint> {\n throw new Error('Method not implemented.')\n}\n","import type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardRandomizer(step: number, block: number): Promisable<bigint> {\n throw new Error('Method not implemented.')\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardWeightForAddress(address: Address, step: number): Promisable<bigint> {\n throw new Error('Method not implemented.')\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport type { AddressStakingV2 } from '@xyo-network/typechain'\n\nimport { startingStakes } from './startingStakes.ts'\n\n// NOTE: Do not use the functions in this file yet, they still need to be tested\n\nexport async function stakersAsOfBlock(stakeContract: AddressStakingV2, staked: Address, ethBlock: number): Promise<Address[]> {\n const stakes = await startingStakes(stakeContract, staked, ethBlock)\n let results: Address[] = []\n for (const [address, amount] of Object.entries(stakes)) {\n if (amount > 0n) {\n results.push(toAddress(address, { prefix: false }))\n }\n }\n\n return results\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport type { AddressStakingV2 } from '@xyo-network/typechain'\nimport { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol'\n\nexport async function startingStakes(stakeContract: AddressStakingV2, staked: Address, ethBlock: number): Promise<Record<Address, bigint>> {\n const stakeAddedFilter = stakeContract.filters.StakeAdded(toAddress(XYO_NETWORK_STAKING_ADDRESS, { prefix: true }))\n const stakeAddedEvents = await stakeContract.queryFilter(stakeAddedFilter, 0, ethBlock)\n\n const stakeRemovedFilter = stakeContract.filters.StakeRemoved(`0x${XYO_NETWORK_STAKING_ADDRESS}`)\n const stakeRemovedEvents = await stakeContract.queryFilter(stakeRemovedFilter, 0, ethBlock)\n\n const stakes: Record<Address, bigint> = {}\n for (const event of stakeAddedEvents) {\n const by = toAddress(event.args.by.toLowerCase(), { prefix: false })\n stakes[by] = (stakes[by] ?? 0n) + event.args.amount\n }\n for (const event of stakeRemovedEvents) {\n const by = toAddress(event.args.by.toLowerCase(), { prefix: false })\n stakes[by] = (stakes[by] ?? 0n) - event.args.amount\n }\n\n const filteredStakes: Record<Address, bigint> = {}\n for (const [address, amount] of Object.entries(stakes) as [Address, bigint][]) {\n if (amount > 0n) {\n filteredStakes[address] = amount\n }\n }\n\n return filteredStakes\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport type { AddressStakingV2 } from '@xyo-network/typechain'\nimport { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol'\n\nimport { startingStakes } from './startingStakes.ts'\n\nexport async function totalStakeWeight(stakeContract: AddressStakingV2, staked: Address, startEthBlock: number, endEthBlock: number): Promise<bigint> {\n const stakeAddedFilter = stakeContract.filters.StakeAdded(`0x${XYO_NETWORK_STAKING_ADDRESS}`)\n const stakeAddedEvents = await stakeContract.queryFilter(stakeAddedFilter, startEthBlock, endEthBlock)\n\n const stakeRemovedFilter = stakeContract.filters.StakeRemoved(`0x${XYO_NETWORK_STAKING_ADDRESS}`)\n const stakeRemovedEvents = await stakeContract.queryFilter(stakeRemovedFilter, startEthBlock, endEthBlock)\n\n const stakes = await startingStakes(stakeContract, staked, startEthBlock)\n\n let totalWeight = 0n\n let addIndex = 0\n let removeIndex = 0\n\n // add up all the stakes for each block\n for (let i = startEthBlock; i <= endEthBlock; i++) {\n while (addIndex < stakeAddedEvents.length && stakeAddedEvents[addIndex]?.blockNumber === i) {\n const by = toAddress(stakeAddedEvents[addIndex].args.by.toLowerCase(), { prefix: false })\n stakes[by] = (stakes[by] ?? 0n) + stakeAddedEvents[addIndex].args.amount\n addIndex++\n }\n while (removeIndex < stakeRemovedEvents.length && stakeRemovedEvents[removeIndex]?.blockNumber === i) {\n const by = toAddress(stakeAddedEvents[addIndex].args.by.toLowerCase(), { prefix: false })\n stakes[by] = (stakes[by] ?? 0n) - stakeRemovedEvents[addIndex].args.amount\n removeIndex++\n }\n totalWeight += Object.values(stakes).reduce((a, b) => a + b, 0n)\n }\n return totalWeight\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function unclaimedRewards(address: Address): Promisable<bigint> {\n throw new Error('Method not implemented.')\n}\n","import { assertEx } from '@xylabs/assert'\nimport { asTimePayload, TimeSchema } from '@xyo-network/xl1-protocol'\n\nimport {\n type ChainContext, hashFromBlockNumber, hydrateBlock,\n} from '../../block/index.ts'\n\nexport async function xl1BlockNumberToEthBlockNumber(context: ChainContext, xl1BlockNumber: number): Promise<number> {\n const blockHash = await hashFromBlockNumber(context, xl1BlockNumber)\n const hydratedBlock = await hydrateBlock(context.chainArchivist, 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 { 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 Chain,\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: Chain,\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,\n Chain,\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 buildUnsignedTransaction(\n chain: Chain,\n onChainPayloads: AllowedBlockPayload[],\n offChainPayloads: Payload[],\n nbf: number,\n exp: number,\n from: Address,\n fees: TransactionFeesBigInt = defaultTransactionFees,\n): Promise<SignedHydratedTransactionWithStorageMeta> {\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 [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(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 {\n SignedHydratedTransaction, TransactionBoundWitness, XyoViewer,\n} from '@xyo-network/xl1-protocol'\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 type { ReadArchivist } from '@xyo-network/archivist-model'\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\nexport const tryHydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<SignedHydratedTransactionWithStorageMeta | undefined> => {\n return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isSignedTransactionBoundWitnessWithStorageMeta,\n )) as SignedHydratedTransactionWithStorageMeta | undefined\n}\n\nexport const hydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<SignedHydratedTransaction> => {\n return await hydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\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 archivist: ReadArchivist,\n hash: Hash,\n): Promise<SignedHydratedTransactionWithStorageMeta | undefined> => {\n const hydratedTransaction = await tryHydrateTransaction(archivist, 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 archivist: ReadArchivist,\n hash: Hash,\n): Promise<SignedHydratedTransaction> => {\n return assertEx(await tryHydrateElevatedTransaction(archivist, 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, WithHashStorageMeta } 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): WithHashStorageMeta<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 { isAllowedBlockPayloadWithHashStorageMeta } 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(isAllowedBlockPayloadWithHashStorageMeta)\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(isAllowedBlockPayloadWithHashStorageMeta)\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 { 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","isBlockBoundWitnessWithStorageMeta","isTransactionBoundWitnessWithStorageMeta","hydrateBlock","archivist","hash","maxDepth","minDepth","assertEx","bw","get","find","isBlockBoundWitnessWithStorageMeta","blkPayloads","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","assertEx","PayloadBuilder","isAnyPayload","StepSizes","hexToBigInt","toAddress","span","isTransfer","netBalancesForPayloads","payloads","span","balances","payload","isTransfer","from","address","amount","Object","entries","transfers","toAddress","hexToBigInt","hexToBigInt","span","isTransfer","netTransfersForPayloads","payloads","account","span","transfers","payload","isTransfer","from","address","amount","Object","entries","hexToBigInt","hexToBigInt","toHex","isObject","isNegativeBigInt","value","isObject","negative","isPositiveBigInt","positive","parseSignedBigInt","hexToBigInt","Error","toSignedBigInt","toHex","toPositiveBigInt","stepSize","calculateFramesFromRange","range","step","size","stepSize","start","Math","trunc","fitted","remaining","push","min","i","StepSizes","deepCalculateFramesFromRange","range","startingStep","StepSizes","length","fitted","remaining","step","newRemaining","newFittedFrames","newRemainingFrames","calculateFramesFromRange","push","i","toSorted","a","b","asHash","toSafeJsonString","asBlockBoundWitnessWithStorageMeta","StepSizes","blockFromBlockNumber","context","blockNumber","result","chainArchivist","get","head","currentBlock","asBlockBoundWitnessWithStorageMeta","at","required","block","jumpHash","previous","jumpBlockNumber","step","stepSize","StepSizes","entries","possibleJumpBlockNumber","asHash","step_hashes","newBlock","toSafeJsonString","Error","hashFromBlockNumber","context","blockNumber","blockFromBlockNumber","_hash","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","balancesStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","result","undefined","hash","payloads","hydrateBlock","chainArchivist","balances","address","balance","Object","entries","netBalancesForPayloads","toSignedBigInt","schema","BalancesStepSummarySchema","head","stepSize","step","StepSizes","indexOf","assertEx","join","summaryResult","summaryRepository","get","isAnyPayload","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","parseSignedBigInt","insert","finalResult","PayloadBuilder","addStorageMeta","asAddress","spanRootAsync","isDefined","asBlockBoundWitnessWithStorageMeta","balancesSummary","context","spanRootAsync","headResult","chainArchivist","get","head","headBoundWitness","asBlockBoundWitnessWithStorageMeta","at","required","rangeStart","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","summaries","Promise","all","map","range","balancesStepSummaryFromRange","balances","summary","address","balance","Object","entries","validAddress","asAddress","parseSignedBigInt","assertEx","PayloadBuilder","isAnyPayload","StepSizes","transfersStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","account","result","undefined","hash","payloads","hydrateBlock","chainArchivist","transfers","address","balance","Object","entries","netTransfersForPayloads","toSignedBigInt","schema","TransfersStepSummarySchema","head","stepSize","step","StepSizes","indexOf","assertEx","join","summaryResult","summaryRepository","get","isAnyPayload","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","transfer","parseSignedBigInt","insert","finalResult","PayloadBuilder","addStorageMeta","asAddress","spanRootAsync","isDefined","asBlockBoundWitnessWithStorageMeta","transfersSummary","context","spanRootAsync","headResult","chainArchivist","get","head","headBoundWitness","asBlockBoundWitnessWithStorageMeta","at","required","rangeStart","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","summaries","Promise","all","map","range","transfersStepSummaryFromRange","transfers","summary","address","transfer","Object","entries","validAddress","asAddress","parseSignedBigInt","z","globalRegistry","z","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","mnemonic","MnemonicStringZod","optional","port","coerce","number","globalRegistry","z","AppConfigZod","object","port","coerce","number","default","register","description","title","type","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","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","isDefined","isUndefined","globalRegistry","z","hasMongoConfig","config","isUndefined","isDefined","connectionString","database","domain","password","username","MongoConfigZod","object","string","min","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","Xl1CommonConfigSchema","object","LogConfigZod","shape","describe","ConfigZod","api","ApiConfigZod","default","parse","app","AppConfigZod","chain","ChainConfigZod","evm","EvmConfigZod","producer","ProducerConfigZod","storage","StorageConfigZod","telemetry","TelemetryConfigZod","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","toAddress","XYO_NETWORK_STAKING_ADDRESS","addressStakeWeight","stakeContract","staked","by","startEthBlock","endEthBlock","stakeAddedFilter","filters","StakeAdded","XYO_NETWORK_STAKING_ADDRESS","stakeAddedEvents","queryFilter","stakeRemovedFilter","StakeRemoved","stakeRemovedEvents","accountStakes","accountStakeCount","getStakeCountForAddress","blockTag","i","stake","getStake","push","ethStakedAddress","toAddress","prefix","toLowerCase","networkStakes","filter","s","totalStake","amount","totalWeight","addIndex","removeIndex","length","blockNumber","args","claimedRewards","_address","networkStakeStepAddressReward","address","step","block","networkStakeStepPoolRewards","step","block","networkStakeStepPoolRewardShares","step","block","networkStakeStepRewardAddressHistory","address","networkStakeStepRewardAddressShare","address","step","block","Error","networkStakeStepRewardForStep","step","networkStakeStepRewardPositionWeight","position","step","Error","networkStakeStepRewardPotentialPositionLoss","position","step","Error","networkStakeStepRewardRandomizer","step","block","Error","networkStakeStepRewardWeightForAddress","address","step","Error","toAddress","toAddress","XYO_NETWORK_STAKING_ADDRESS","startingStakes","stakeContract","staked","ethBlock","stakeAddedFilter","filters","StakeAdded","toAddress","XYO_NETWORK_STAKING_ADDRESS","prefix","stakeAddedEvents","queryFilter","stakeRemovedFilter","StakeRemoved","stakeRemovedEvents","stakes","event","by","args","toLowerCase","amount","filteredStakes","address","Object","entries","stakersAsOfBlock","stakeContract","staked","ethBlock","stakes","startingStakes","results","address","amount","Object","entries","push","toAddress","prefix","toAddress","XYO_NETWORK_STAKING_ADDRESS","totalStakeWeight","stakeContract","staked","startEthBlock","endEthBlock","stakeAddedFilter","filters","StakeAdded","XYO_NETWORK_STAKING_ADDRESS","stakeAddedEvents","queryFilter","stakeRemovedFilter","StakeRemoved","stakeRemovedEvents","stakes","startingStakes","totalWeight","addIndex","removeIndex","i","length","blockNumber","by","toAddress","args","toLowerCase","prefix","amount","Object","values","reduce","a","b","unclaimedRewards","address","Error","assertEx","asTimePayload","TimeSchema","xl1BlockNumberToEthBlockNumber","context","xl1BlockNumber","blockHash","hashFromBlockNumber","hydratedBlock","hydrateBlock","chainArchivist","timePayload","asTimePayload","find","p","schema","TimeSchema","required","assertEx","ethereum","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","addStorageMeta","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","archivist","hash","tryHydrateTypedBoundWitness","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","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","isAllowedBlockPayloadWithHashStorageMeta","tryExtractElevatedHashesFromScript","strings","hashes","filter","str","startsWith","map","split","filterAs","h","asHash","extractElevatedHashesFromScript","filtered","assertEx","length","tryExtractElevatedHashes","tx","bw","payloads","script","p","includes","_hash","isAllowedBlockPayloadWithHashStorageMeta","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","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/balances/balancesStepSummaryFromRange.ts","../../src/payload/netBalancesForPayloads.ts","../../src/payload/netTransfersForPayloads.ts","../../src/SignedBigInt.ts","../../src/block/primitives/frames/calculateFramesFromRange.ts","../../src/block/primitives/frames/deepCalculateFramesFromRange.ts","../../src/block/primitives/blockFromBlockNumber.ts","../../src/block/primitives/hashFromBlockNumber.ts","../../src/block/primitives/payloads/BalancesStepSummary.ts","../../src/block/primitives/payloads/StepSummary.ts","../../src/block/primitives/payloads/TransfersSummary.ts","../../src/block/primitives/balances/balancesSummary.ts","../../src/block/primitives/transfers/transfersStepSummaryFromRange.ts","../../src/block/primitives/transfers/transfersSummary.ts","../../src/config/Config.ts","../../src/config/Api.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/Chain.ts","../../src/config/Evm.ts","../../src/config/Log.ts","../../src/config/Producer.ts","../../src/config/storage/driver/Mongo.ts","../../src/config/storage/Storage.ts","../../src/config/Telemetry.ts","../../src/config/UsageMeta.ts","../../src/steps/primitives/addressStakeWeight.ts","../../src/steps/primitives/claimedRewards.ts","../../src/steps/primitives/networkStakeStepAddressReward.ts","../../src/steps/primitives/networkStakeStepPoolRewards.ts","../../src/steps/primitives/networkStakeStepPoolRewardShares.ts","../../src/steps/primitives/networkStakeStepRewardAddressHistory.ts","../../src/steps/primitives/networkStakeStepRewardAddressShare.ts","../../src/steps/primitives/networkStakeStepRewardForStep.ts","../../src/steps/primitives/networkStakeStepRewardPositionWeight.ts","../../src/steps/primitives/networkStakeStepRewardPotentialPositionLoss.ts","../../src/steps/primitives/networkStakeStepRewardRandomizer.ts","../../src/steps/primitives/networkStakeStepRewardWeightForAddress.ts","../../src/steps/primitives/stakersAsOfBlock.ts","../../src/steps/primitives/startingStakes.ts","../../src/steps/primitives/totalStakeWeight.ts","../../src/steps/primitives/unclaimedRewards.ts","../../src/time/primitives/xl1BlockNumberToEthBlockNumber.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/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 { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport { allHashesPresent } from './allHashesPresent.ts'\n\nexport const hydrateBlock = async (\n archivist: ReadArchivist,\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 const bw = assertEx(\n (await archivist.get([hash])).find(isBlockBoundWitnessWithStorageMeta),\n () => `block ${hash} not found`,\n )\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await archivist.get(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 archivist.get(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 archivist.get([...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 { 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 { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { netBalancesForPayloads } from '../../../payload/index.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../../SignedBigInt.ts'\nimport { hydrateBlock } from '../../hydrate/index.ts'\nimport type { BlockNumberRange } from '../frames/index.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport { hashFromBlockNumber } from '../hashFromBlockNumber.ts'\nimport type { BalanceStepSummaryContext } from '../model.ts'\nimport { type BalancesStepSummary, BalancesStepSummarySchema } from '../payloads/index.ts'\n\nexport async function balancesStepSummaryFromRange(\n context: BalanceStepSummaryContext,\n range: BlockNumberRange,\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\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.chainArchivist, 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: context.head, 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.summaryRepository.get([frameHeadHash])\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<BalancesStepSummary>\n } else {\n // We do not have it, so lets build it\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.summaryRepository.insert([result])\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 {\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[], account: Address): Record<Address, bigint> {\n return span('netTransfersForPayloads', () => {\n const transfers: 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 if (account === from) {\n if (address !== from) {\n transfers[address] = (transfers[address] ?? 0n) + hexToBigInt(amount)\n }\n } else {\n if (account === address) {\n transfers[from] = (transfers[from] ?? 0n) - hexToBigInt(amount)\n }\n }\n }\n }\n }\n return transfers\n })\n}\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 { stepSize } from '@xyo-network/xl1-protocol'\n\nimport type { BlockNumberRange } from './BlockNumberRange.ts'\n\nexport function calculateFramesFromRange(range: BlockNumberRange, step: number): [\n // ranges of fitted frames\n BlockNumberRange[],\n // ranges of remaining blocks\n BlockNumberRange[]] {\n const size = stepSize(step)\n let start = (Math.trunc(range[0] / size)) * size\n const fitted: BlockNumberRange[] = []\n const remaining: BlockNumberRange[] = []\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], Math.min(start - 1, range[1])])\n }\n\n for (let i = start; i <= range[1]; i += size) {\n if ((i + size - 1) <= range[1]) {\n fitted.push([i, Math.min(i + size - 1, range[1])])\n } else {\n remaining.push([i, range[1]])\n }\n }\n return [fitted, remaining]\n}\n","import { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport type { BlockNumberRange } from './BlockNumberRange.ts'\nimport { calculateFramesFromRange } from './calculateFramesFromRange.ts'\n\nexport function deepCalculateFramesFromRange(range: BlockNumberRange, startingStep = StepSizes.length - 1): BlockNumberRange[] {\n const fitted: BlockNumberRange[] = []\n let remaining: BlockNumberRange[] = [range]\n\n for (let step = startingStep; step >= 0; step--) {\n const newRemaining: BlockNumberRange[] = []\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 { asHash, type Hash } from '@xylabs/hex'\nimport { toSafeJsonString } from '@xylabs/object'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { asBlockBoundWitnessWithStorageMeta, StepSizes } from '@xyo-network/xl1-protocol'\n\nimport type { ChainContext } from './model.ts'\n\nexport async function blockFromBlockNumber(context: ChainContext, blockNumber: number): Promise<WithStorageMeta<BlockBoundWitness>> {\n const result = await context.chainArchivist.get([context.head])\n let currentBlock = asBlockBoundWitnessWithStorageMeta(result.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })\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 - stepSize\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.chainArchivist.get([\n asHash(jumpHash, () => `Jump hash not found for block number [${blockNumber}]: ${jumpBlockNumber} ${toSafeJsonString(currentBlock, 10)}`)])\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 ${context.head}.`)\n }\n }\n return currentBlock\n}\n","import { type Hash } from '@xylabs/hex'\n\nimport { blockFromBlockNumber } from './blockFromBlockNumber.ts'\nimport type { ChainContext } from './model.ts'\n\nexport async function hashFromBlockNumber(context: ChainContext, blockNumber: number): Promise<Hash> {\n return (await blockFromBlockNumber(context, blockNumber))._hash\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 account: Address\n transfers: 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 type { Address } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { spanRootAsync } from '@xylabs/telemetry'\nimport { isDefined } from '@xylabs/typeof'\nimport { asBlockBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport { parseSignedBigInt } from '../../../SignedBigInt.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport type { BalanceStepSummaryContext } from '../model.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 headResult = await context.chainArchivist.get([context.head])\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })\n const rangeStart = isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0\n const ranges = deepCalculateFramesFromRange([rangeStart, headBoundWitness.block])\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 { 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 { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { netTransfersForPayloads } from '../../../payload/index.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../../SignedBigInt.ts'\nimport { hydrateBlock } from '../../hydrate/index.ts'\nimport { type BlockNumberRange, deepCalculateFramesFromRange } from '../frames/index.ts'\nimport { hashFromBlockNumber } from '../hashFromBlockNumber.ts'\nimport type { TransfersStepSummaryContext } from '../model.ts'\nimport { type TransfersStepSummary, TransfersStepSummarySchema } from '../payloads/index.ts'\n\nexport async function transfersStepSummaryFromRange(\n context: TransfersStepSummaryContext,\n range: BlockNumberRange,\n): Promise<WithStorageMeta<TransfersStepSummary>> {\n // console.log(`transfersStepSummaryFromRange: 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 { account } = context\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.chainArchivist, hash)\n const transfers: Record<Address, SignedBigInt> = {}\n for (const [address, balance] of Object.entries(netTransfersForPayloads(payloads, account))) {\n transfers[address as Address] = toSignedBigInt(balance)\n }\n result = {\n schema: TransfersStepSummarySchema, hash: context.head, stepSize: -1, transfers, account,\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.summaryRepository.get([frameHeadHash])\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<TransfersStepSummary>\n } else {\n // We do not have it, so lets build it\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, bigint> = {}\n for (const subResult of subResults) {\n for (const [address, transfer] of Object.entries(subResult.transfers)) {\n bigIntBalances[address as Address] = (bigIntBalances[address as Address] ?? 0n) + parseSignedBigInt(transfer)\n }\n }\n\n const transfers: Record<Address, SignedBigInt> = {}\n for (const [address, transfer] of Object.entries(bigIntBalances)) {\n transfers[address as Address] = toSignedBigInt(transfer)\n }\n\n result = {\n schema: TransfersStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, transfers, account,\n }\n\n await context.summaryRepository.insert([result])\n }\n }\n // console.log(`transfersStepSummaryFromRange-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 { asBlockBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport { parseSignedBigInt } from '../../../SignedBigInt.ts'\nimport { deepCalculateFramesFromRange } from '../frames/index.ts'\nimport type { TransfersStepSummaryContext } from '../model.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 context: TransfersStepSummaryContext,\n): Promise<Partial<Record<Address, bigint>>> {\n return await spanRootAsync('transferSummary', async () => {\n const headResult = await context.chainArchivist.get([context.head])\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })\n const rangeStart = isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0\n const ranges = deepCalculateFramesFromRange([rangeStart, headBoundWitness.block])\n const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(context, range)))\n const transfers: Partial<Record<Address, bigint>> = {}\n for (let summary of summaries) {\n for (const [address, transfer] of Object.entries(summary.transfers)) {\n const validAddress = asAddress(address, () => `Invalid address: ${address}`)\n transfers[validAddress] = (transfers[validAddress] ?? 0n) + parseSignedBigInt(transfer)\n }\n }\n return transfers\n })\n}\n","import * as z from 'zod'\n\nimport { ApiConfigZod } from './Api.ts'\nimport { AppConfigZod } from './App.ts'\nimport { ChainConfigZod } from './Chain.ts'\nimport { EvmConfigZod } from './Evm.ts'\nimport { LogConfigZod } from './Log.ts'\nimport { ProducerConfigZod } from './Producer.ts'\nimport { StorageConfigZod } from './storage/index.ts'\nimport { TelemetryConfigZod } from './Telemetry.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 chain: ChainConfigZod.default(ChainConfigZod.parse({})).describe('Configuration for the chain'),\n evm: EvmConfigZod.default(EvmConfigZod.parse({})).describe('Configuration for EVM-backed services'),\n producer: ProducerConfigZod.default(ProducerConfigZod.parse({})).describe('Configuration for the producer'),\n storage: StorageConfigZod.default(StorageConfigZod.parse({})).describe('Configuration for the storage'),\n telemetry: TelemetryConfigZod.default(TelemetryConfigZod.parse({})).describe('Configuration for telemetry'),\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 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","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\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 { 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 { 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().min(1).optional().register(globalRegistry, {\n description: 'MongoDB connection string',\n title: 'storage.mongo.connectionString',\n type: 'string',\n }),\n database: z.string().min(1).optional().register(globalRegistry, {\n description: 'MongoDB database name',\n title: 'storage.mongo.database',\n type: 'string',\n }),\n domain: z.string().min(1).optional().register(globalRegistry, {\n description: 'MongoDB domain',\n title: 'storage.mongo.domain',\n type: 'string',\n }),\n password: z.string().min(1).optional().register(globalRegistry, {\n description: 'MongoDB password',\n title: 'storage.mongo.password',\n type: 'string',\n }),\n username: z.string().min(1).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 * 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","import { type Address, toAddress } from '@xylabs/hex'\nimport type { AddressStakingV2 } from '@xyo-network/typechain'\nimport { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol'\n\nexport async function addressStakeWeight(\n stakeContract: AddressStakingV2,\n staked: Address,\n by: Address,\n startEthBlock: number,\n endEthBlock: number,\n): Promise<bigint> {\n const stakeAddedFilter = stakeContract.filters.StakeAdded(`0x${XYO_NETWORK_STAKING_ADDRESS}`, by)\n const stakeAddedEvents = await stakeContract.queryFilter(stakeAddedFilter, startEthBlock, endEthBlock)\n\n const stakeRemovedFilter = stakeContract.filters.StakeRemoved(`0x${XYO_NETWORK_STAKING_ADDRESS}`, by)\n const stakeRemovedEvents = await stakeContract.queryFilter(stakeRemovedFilter, startEthBlock, endEthBlock)\n\n const accountStakes: Awaited<ReturnType<typeof stakeContract.getStake>> [] = []\n const accountStakeCount = await stakeContract.getStakeCountForAddress(`0x${by}`, { blockTag: startEthBlock - 1 })\n for (let i = 0; i < accountStakeCount; i++) {\n try {\n const stake = await stakeContract.getStake(`0x${by}`, i, { blockTag: startEthBlock - 1 })\n accountStakes.push(stake)\n } catch {\n break\n }\n }\n const ethStakedAddress = toAddress(staked, { prefix: false }).toLowerCase()\n const networkStakes = accountStakes.filter(s => s.staked.toLowerCase() === ethStakedAddress)\n let totalStake = 0n\n for (const stake of networkStakes) {\n totalStake += stake.amount\n }\n let totalWeight = 0n\n let addIndex = 0\n let removeIndex = 0\n\n // add up all the stakes for each block\n for (let i = startEthBlock; i <= endEthBlock; i++) {\n while (addIndex < stakeAddedEvents.length && stakeAddedEvents[addIndex]?.blockNumber === i) {\n totalStake += stakeAddedEvents[addIndex].args.amount\n addIndex++\n }\n while (removeIndex < stakeRemovedEvents.length && stakeRemovedEvents[removeIndex]?.blockNumber === i) {\n totalStake -= stakeRemovedEvents[removeIndex].args.amount\n removeIndex++\n }\n totalWeight += totalStake\n }\n return totalWeight\n}\n","import type { Address } from '@xylabs/hex'\n\nexport function claimedRewards(_address: Address) {\n return 0n\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepAddressReward(address: Address, _step: number, _block: number): Promisable<Record<Address, bigint>> {\n return { [address]: 0n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepPoolRewards(_step: number, _block: number): Promisable<Record<Address, bigint>> {\n return {}\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepPoolRewardShares(_step: number, _block: number): Promisable<Record<Address, bigint>> {\n return {}\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardAddressHistory(address: Address): Promisable<Record<Address, bigint>> {\n return { [address]: 0n }\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardAddressShare(_address: Address, _step: number, _block: number): Promisable<[bigint, bigint]> {\n throw new Error('Method not implemented.')\n}\n","import type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardForStep(_step: number): Promisable<bigint> {\n return 0n\n}\n","import type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardPositionWeight(_position: bigint, _step: number): Promisable<number> {\n throw new Error('Method not implemented.')\n}\n","import type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardPotentialPositionLoss(_position: bigint, _step: number): Promisable<bigint> {\n throw new Error('Method not implemented.')\n}\n","import type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardRandomizer(_step: number, _block: number): Promisable<bigint> {\n throw new Error('Method not implemented.')\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function networkStakeStepRewardWeightForAddress(_address: Address, _step: number): Promisable<bigint> {\n throw new Error('Method not implemented.')\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport type { AddressStakingV2 } from '@xyo-network/typechain'\n\nimport { startingStakes } from './startingStakes.ts'\n\n// NOTE: Do not use the functions in this file yet, they still need to be tested\n\nexport async function stakersAsOfBlock(stakeContract: AddressStakingV2, staked: Address, ethBlock: number): Promise<Address[]> {\n const stakes = await startingStakes(stakeContract, staked, ethBlock)\n let results: Address[] = []\n for (const [address, amount] of Object.entries(stakes)) {\n if (amount > 0n) {\n results.push(toAddress(address, { prefix: false }))\n }\n }\n\n return results\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport type { AddressStakingV2 } from '@xyo-network/typechain'\nimport { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol'\n\nexport async function startingStakes(stakeContract: AddressStakingV2, staked: Address, ethBlock: number): Promise<Record<Address, bigint>> {\n const stakeAddedFilter = stakeContract.filters.StakeAdded(toAddress(XYO_NETWORK_STAKING_ADDRESS, { prefix: true }))\n const stakeAddedEvents = await stakeContract.queryFilter(stakeAddedFilter, 0, ethBlock)\n\n const stakeRemovedFilter = stakeContract.filters.StakeRemoved(`0x${XYO_NETWORK_STAKING_ADDRESS}`)\n const stakeRemovedEvents = await stakeContract.queryFilter(stakeRemovedFilter, 0, ethBlock)\n\n const stakes: Record<Address, bigint> = {}\n for (const event of stakeAddedEvents) {\n const by = toAddress(event.args.by.toLowerCase(), { prefix: false })\n stakes[by] = (stakes[by] ?? 0n) + event.args.amount\n }\n for (const event of stakeRemovedEvents) {\n const by = toAddress(event.args.by.toLowerCase(), { prefix: false })\n stakes[by] = (stakes[by] ?? 0n) - event.args.amount\n }\n\n const filteredStakes: Record<Address, bigint> = {}\n for (const [address, amount] of Object.entries(stakes) as [Address, bigint][]) {\n if (amount > 0n) {\n filteredStakes[address] = amount\n }\n }\n\n return filteredStakes\n}\n","import { type Address, toAddress } from '@xylabs/hex'\nimport type { AddressStakingV2 } from '@xyo-network/typechain'\nimport { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol'\n\nimport { startingStakes } from './startingStakes.ts'\n\nexport async function totalStakeWeight(stakeContract: AddressStakingV2, staked: Address, startEthBlock: number, endEthBlock: number): Promise<bigint> {\n const stakeAddedFilter = stakeContract.filters.StakeAdded(`0x${XYO_NETWORK_STAKING_ADDRESS}`)\n const stakeAddedEvents = await stakeContract.queryFilter(stakeAddedFilter, startEthBlock, endEthBlock)\n\n const stakeRemovedFilter = stakeContract.filters.StakeRemoved(`0x${XYO_NETWORK_STAKING_ADDRESS}`)\n const stakeRemovedEvents = await stakeContract.queryFilter(stakeRemovedFilter, startEthBlock, endEthBlock)\n\n const stakes = await startingStakes(stakeContract, staked, startEthBlock)\n\n let totalWeight = 0n\n let addIndex = 0\n let removeIndex = 0\n\n // add up all the stakes for each block\n for (let i = startEthBlock; i <= endEthBlock; i++) {\n while (addIndex < stakeAddedEvents.length && stakeAddedEvents[addIndex]?.blockNumber === i) {\n const by = toAddress(stakeAddedEvents[addIndex].args.by.toLowerCase(), { prefix: false })\n stakes[by] = (stakes[by] ?? 0n) + stakeAddedEvents[addIndex].args.amount\n addIndex++\n }\n while (removeIndex < stakeRemovedEvents.length && stakeRemovedEvents[removeIndex]?.blockNumber === i) {\n const by = toAddress(stakeAddedEvents[addIndex].args.by.toLowerCase(), { prefix: false })\n stakes[by] = (stakes[by] ?? 0n) - stakeRemovedEvents[addIndex].args.amount\n removeIndex++\n }\n totalWeight += Object.values(stakes).reduce((a, b) => a + b, 0n)\n }\n return totalWeight\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nexport function unclaimedRewards(_address: Address): Promisable<bigint> {\n throw new Error('Method not implemented.')\n}\n","import { assertEx } from '@xylabs/assert'\nimport { asTimePayload, TimeSchema } from '@xyo-network/xl1-protocol'\n\nimport {\n type ChainContext, hashFromBlockNumber, hydrateBlock,\n} from '../../block/index.ts'\n\nexport async function xl1BlockNumberToEthBlockNumber(context: ChainContext, xl1BlockNumber: number): Promise<number> {\n const blockHash = await hashFromBlockNumber(context, xl1BlockNumber)\n const hydratedBlock = await hydrateBlock(context.chainArchivist, 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 { 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 Chain,\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: Chain,\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,\n Chain,\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 buildUnsignedTransaction(\n chain: Chain,\n onChainPayloads: AllowedBlockPayload[],\n offChainPayloads: Payload[],\n nbf: number,\n exp: number,\n from: Address,\n fees: TransactionFeesBigInt = defaultTransactionFees,\n): Promise<SignedHydratedTransactionWithStorageMeta> {\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 [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(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 {\n SignedHydratedTransaction, TransactionBoundWitness, XyoViewer,\n} from '@xyo-network/xl1-protocol'\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 type { ReadArchivist } from '@xyo-network/archivist-model'\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\nexport const tryHydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<SignedHydratedTransactionWithStorageMeta | undefined> => {\n return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isSignedTransactionBoundWitnessWithStorageMeta,\n )) as SignedHydratedTransactionWithStorageMeta | undefined\n}\n\nexport const hydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<SignedHydratedTransaction> => {\n return await hydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\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 archivist: ReadArchivist,\n hash: Hash,\n): Promise<SignedHydratedTransactionWithStorageMeta | undefined> => {\n const hydratedTransaction = await tryHydrateTransaction(archivist, 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 archivist: ReadArchivist,\n hash: Hash,\n): Promise<SignedHydratedTransaction> => {\n return assertEx(await tryHydrateElevatedTransaction(archivist, 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, WithHashStorageMeta } 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): WithHashStorageMeta<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 { isAllowedBlockPayloadWithHashStorageMeta } 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(isAllowedBlockPayloadWithHashStorageMeta)\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(isAllowedBlockPayloadWithHashStorageMeta)\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 { 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":";;;;AAGO,SAASA,iBAAiBC,QAAgBC,UAAoC;AACnF,QAAMC,gBAAgB,IAAIC,IAAIF,SAASG,IAAIC,CAAAA,MAAKA,EAAEC,KAAK,CAAA;AACvD,SAAON,OAAOO,MAAMC,CAAAA,SAAQN,cAAcO,IAAID,IAAAA,CAAAA;AAChD;AAHgBT;;;ACHhB,SAASW,gBAAgB;AAGzB,SAASC,gDAAgD;AAElD,IAAMC,iCAAiC,wBAACC,UAAAA;AAC7C,SAAOA,MAAM,CAAA,EAAGC,eAAeC,IAAIC,CAAAA,SAAQC,SACzCJ,MAAM,CAAA,EAAGK,KAAKC,CAAAA,MAAKA,EAAEC,UAAUJ,IAAAA,GAC/B,MAAM,mBAAmBA,IAAAA,EAAM,CAAA,EAC9BK,OAAOC,CAAAA,MAAK,CAACC,yCAAyCD,CAAAA,CAAAA;AAC3D,GAL8C;;;ACFvC,IAAME,uBAAuB,wBAACC,kBAAAA;AACnC,QAAM,CAACC,KAAKC,WAAAA,IAAeF;AAC3B,SAAO;OAAIE;IAAaD;;AAC1B,GAHoC;;;ACE7B,IAAME,wBAAwB,wBAACC,mBACpCA,eAAeC,QAAQC,CAAAA,QAAOC,qBAAqBD,GAAAA,CAAAA,GADhB;;;ACLrC,SAASE,YAAAA,iBAAgB;AAIzB,SAASC,oCAAoCC,4CAAAA,iDAAgD;AAItF,IAAMC,eAAe,8BAC1BC,WACAC,MACAC,WAAmB,GACnBC,WAAWD,aAAQ;AAEnBE,EAAAA,UAASF,YAAY,GAAG,MAAM,6CAAA;AAC9BE,EAAAA,UAASD,YAAY,GAAG,MAAM,6CAAA;AAC9BC,EAAAA,UAASF,YAAYC,UAAU,MAAM,oDAAA;AACrC,QAAME,KAAKD,WACR,MAAMJ,UAAUM,IAAI;IAACL;GAAK,GAAGM,KAAKC,kCAAAA,GACnC,MAAM,SAASP,IAAAA,YAAgB;AAEjC,MAAIC,aAAa,EAAG,QAAO;IAACG;IAAI,CAAA;;AAChC,QAAMI,cAAc,MAAMT,UAAUM,IAAID,GAAGK,cAAc;AACzD,MAAIP,aAAa,EAAGC,CAAAA,UAASO,iBAAiBN,GAAGK,gBAAgBD,WAAAA,GAAc,MAAM,yCAAyCR,IAAAA,EAAM;AACpI,MAAIC,aAAa,EAAG,QAAO;IAACG;IAAII;;AAChC,QAAMG,eAAeH,YAAYI,OAAOC,yCAAAA;AACxC,QAAMC,4BAA4BH,aAAaI,QAAQC,CAAAA,OAAMA,GAAGP,cAAc;AAC9E,QAAMQ,uBAAuB,MAAMlB,UAAUM,IAAIS,yBAAAA;AACjDX,EAAAA,UAASO,iBAAiBI,2BAA2BG,oBAAAA,GAAuB,MAAM,yDAAyDjB,IAAAA,EAAM;AACjJ,QAAMkB,oBAAoB,IAAIC,IAAI;OAAIX;OAAgBS;IAAsBF,QAAQK,CAAAA,MAAKA,EAAEC,KAAK,CAAA;AAChG,QAAMC,cAAc,MAAMvB,UAAUM,IAAI;OAAIa;GAAkB;AAC9D,QAAMK,sBAAsBD,YAAYV,OAAOQ,CAAAA,MAAKF,kBAAkBM,IAAIJ,EAAEC,KAAK,CAAA;AACjF,MAAIpB,aAAa,EAAGE,CAAAA,UAASO,iBAC3B;OAAIQ;KACJK,mBAAAA,GACC,MAAM,yDAAyDvB,IAAAA,EAAM;AACxE,SAAO;IAACI;IAAImB;;AACd,GA7B4B;;;ACR5B,SAASE,gBAAgB;AAGzB,SAASC,gDAAgD;AAElD,IAAMC,gCAAgC,wBAACC,UAAAA;AAC5C,SAAOC,SAASD,MAAM,CAAA,GAAIE,wCAAAA;AAC5B,GAF6C;;;ACL7C,SAASC,YAAAA,iBAAgB;AAIzB,SAASC,sCAAAA,qCAAoCC,4CAAAA,iDAAgD;AAEtF,IAAMC,kBAAkB,8BAC7BC,WACAC,MACAC,WAAmB,MAAC;AAEpBC,EAAAA,UAASD,YAAY,GAAG,MAAM,6CAAA;AAC9B,QAAME,MAAM,MAAMJ,UAAUK,IAAI;IAACJ;GAAK,GAAGK,KAAKC,mCAAAA;AAC9C,MAAI,CAACH,GAAI,QAAOI;AAChB,MAAIN,aAAa,EAAG,QAAO;IAACE;IAAI,CAAA;;AAChC,QAAMK,cAAc,MAAMT,UAAUK,IAAID,GAAGM,cAAc;AACzD,MAAIR,aAAa,EAAG,QAAO;IAACE;IAAIK;;AAChC,QAAME,eAAeF,YAAYG,OAAOC,yCAAAA;AACxC,QAAMC,4BAA4BH,aAAaI,QAAQC,CAAAA,OAAMA,GAAGN,cAAc;AAC9E,QAAMO,uBAAuB,MAAMjB,UAAUK,IAAIS,yBAAAA;AACjD,QAAMI,oBAAoB,IAAIC,IAAI;OAAIV;OAAgBQ;IAAsBF,QAAQK,CAAAA,MAAKA,EAAEC,KAAK,CAAA;AAChG,QAAMC,cAAc,MAAMtB,UAAUK,IAAI;OAAIa;GAAkB;AAC9D,QAAMK,sBAAsBD,YAAYV,OAAOQ,CAAAA,MAAKF,kBAAkBM,IAAIJ,EAAEC,KAAK,CAAA;AACjF,SAAO;IAACjB;IAAImB;;AACd,GAlB+B;;;ACN/B,SAASE,YAAAA,iBAAgB;AAEzB,SAASC,sBAAsB;AAE/B,SAASC,oBAAoB;AAC7B,SAASC,aAAAA,kBAAiB;;;ACL1B,SAC0BC,aAAaC,iBAChC;AACP,SAASC,YAAY;AAErB,SAASC,kBAAkB;AAEpB,IAAMC,yBAAyB,wBAACC,aAAAA;AACrC,SAAOC,KAAK,0BAA0B,MAAA;AACpC,UAAMC,WAAoC,CAAC;AAC3C,eAAWC,WAAWH,UAAU;AAC9B,UAAII,WAAWD,OAAAA,GAAU;AACvB,cAAM,EAAEE,KAAI,IAAKF;AACjB,iBAAS,CAACG,SAASC,MAAAA,KAAWC,OAAOC,QAAQN,QAAQO,SAAS,GAAuB;AACnFR,mBAASS,UAAUL,OAAAA,CAAAA,KAAaJ,SAASS,UAAUL,OAAAA,CAAAA,KAAa,MAAMM,YAAYL,MAAAA;AAClFL,mBAASS,UAAUN,IAAAA,CAAAA,KAAUH,SAASS,UAAUN,IAAAA,CAAAA,KAAU,MAAMO,YAAYL,MAAAA;QAC9E;MACF;IACF;AACA,WAAOL;EACT,CAAA;AACF,GAdsC;;;ACPtC,SAC0BW,eAAAA,oBACnB;AACP,SAASC,QAAAA,aAAY;AAErB,SAASC,cAAAA,mBAAkB;AAGpB,SAASC,wBAAwBC,UAAqBC,SAAgB;AAC3E,SAAOC,MAAK,2BAA2B,MAAA;AACrC,UAAMC,YAAqC,CAAC;AAC5C,eAAWC,WAAWJ,UAAU;AAC9B,UAAIK,YAAWD,OAAAA,GAAU;AACvB,cAAM,EAAEE,KAAI,IAAKF;AACjB,iBAAS,CAACG,SAASC,MAAAA,KAAWC,OAAOC,QAAQN,QAAQD,SAAS,GAAuB;AACnF,cAAIF,YAAYK,MAAM;AACpB,gBAAIC,YAAYD,MAAM;AACpBH,wBAAUI,OAAAA,KAAYJ,UAAUI,OAAAA,KAAY,MAAMI,aAAYH,MAAAA;YAChE;UACF,OAAO;AACL,gBAAIP,YAAYM,SAAS;AACvBJ,wBAAUG,IAAAA,KAASH,UAAUG,IAAAA,KAAS,MAAMK,aAAYH,MAAAA;YAC1D;UACF;QACF;MACF;IACF;AACA,WAAOL;EACT,CAAA;AACF;AArBgBJ;;;ACRhB,SAEEa,eAAAA,cACAC,aACK;AACP,SAASC,gBAAgB;AAYlB,IAAMC,mBAAmB,wBAACC,UAAAA;AAC/B,SAAOC,SAASD,KAAAA,KAAU,cAAcA,SAAS,OAAOA,MAAME,aAAa;AAC7E,GAFgC;AAIzB,IAAMC,mBAAmB,wBAACH,UAAAA;AAC/B,SAAOC,SAASD,KAAAA,KAAU,cAAcA,SAAS,OAAOA,MAAMI,aAAa;AAC7E,GAFgC;AAIzB,IAAMC,oBAAoB,wBAACL,UAAAA;AAChC,MAAID,iBAAiBC,KAAAA,GAAQ;AAC3B,WAAO,CAACM,aAAYN,MAAME,QAAQ;EACpC,WAAWC,iBAAiBH,KAAAA,GAAQ;AAClC,WAAOM,aAAYN,MAAMI,QAAQ;EACnC,OAAO;AACL,UAAM,IAAIG,MAAM,sBAAA;EAClB;AACF,GARiC;AAU1B,IAAMC,iBAAiB,wBAACR,UAAAA;AAC7B,SAAOA,QAAQ,KAAK;IAAEE,UAAUO,MAAM,CAACT,KAAAA;EAAO,IAAI;IAAEI,UAAUK,MAAMT,KAAAA;EAAO;AAC7E,GAF8B;AAIvB,IAAMU,mBAAmB,wBAACV,UAAAA;AAC/B,MAAID,iBAAiBC,KAAAA,GAAQ;AAC3B,WAAO;MAAEI,UAAUK,MAAM,EAAE;IAAE;EAC/B;AACA,MAAIN,iBAAiBH,KAAAA,GAAQ;AAC3B,WAAO;MAAEI,UAAUJ,MAAMI;IAAS;EACpC;AACA,MAAI,OAAOJ,UAAU,UAAU;AAC7B,WAAO;MAAEI,UAAUK,MAAMT,KAAAA;IAAO;EAClC;AACA,QAAM,IAAIO,MAAM,oCAAA;AAClB,GAXgC;;;ACvChC,SAASI,gBAAgB;AAIlB,SAASC,yBAAyBC,OAAyBC,MAAY;AAK5E,QAAMC,OAAOC,SAASF,IAAAA;AACtB,MAAIG,QAASC,KAAKC,MAAMN,MAAM,CAAA,IAAKE,IAAAA,IAASA;AAC5C,QAAMK,SAA6B,CAAA;AACnC,QAAMC,YAAgC,CAAA;AAGtC,MAAIJ,UAAUJ,MAAM,CAAA,GAAI;AACtBI,aAASF;AACTM,cAAUC,KAAK;MAACT,MAAM,CAAA;MAAIK,KAAKK,IAAIN,QAAQ,GAAGJ,MAAM,CAAA,CAAE;KAAE;EAC1D;AAEA,WAASW,IAAIP,OAAOO,KAAKX,MAAM,CAAA,GAAIW,KAAKT,MAAM;AAC5C,QAAKS,IAAIT,OAAO,KAAMF,MAAM,CAAA,GAAI;AAC9BO,aAAOE,KAAK;QAACE;QAAGN,KAAKK,IAAIC,IAAIT,OAAO,GAAGF,MAAM,CAAA,CAAE;OAAE;IACnD,OAAO;AACLQ,gBAAUC,KAAK;QAACE;QAAGX,MAAM,CAAA;OAAG;IAC9B;EACF;AACA,SAAO;IAACO;IAAQC;;AAClB;AAxBgBT;;;ACJhB,SAASa,iBAAiB;AAKnB,SAASC,6BAA6BC,OAAyBC,eAAeC,UAAUC,SAAS,GAAC;AACvG,QAAMC,SAA6B,CAAA;AACnC,MAAIC,YAAgC;IAACL;;AAErC,WAASM,OAAOL,cAAcK,QAAQ,GAAGA,QAAQ;AAC/C,UAAMC,eAAmC,CAAA;AACzC,eAAWP,UAASK,WAAW;AAC7B,YAAM,CAACG,iBAAiBC,kBAAAA,IAAsBC,yBAAyBV,QAAOM,IAAAA;AAC9EF,aAAOO,KAAI,GAAIH,eAAAA;AACfD,mBAAaI,KAAI,GAAIF,kBAAAA;IACvB;AACAJ,gBAAYE;EACd;AAEA,aAAWP,UAASK,WAAW;AAC7B,aAASO,IAAIZ,OAAM,CAAA,GAAIY,KAAKZ,OAAM,CAAA,GAAIY,KAAK;AACzCR,aAAOO,KAAK;QAACC;QAAGA;OAAE;IACpB;EACF;AAEA,SAAOR,OAAOS,SAAS,CAACC,GAAGC,MAAMD,EAAE,CAAA,IAAKC,EAAE,CAAA,CAAE;AAC9C;AArBgBhB;;;ACLhB,SAASiB,cAAyB;AAClC,SAASC,wBAAwB;AAGjC,SAASC,oCAAoCC,aAAAA,kBAAiB;AAI9D,eAAsBC,qBAAqBC,SAAuBC,aAAmB;AACnF,QAAMC,SAAS,MAAMF,QAAQG,eAAeC,IAAI;IAACJ,QAAQK;GAAK;AAC9D,MAAIC,eAAeC,mCAAmCL,OAAOM,GAAG,CAAA,GAAI,MAAM,kCAAkCR,QAAQK,IAAI,IAAI;IAAEI,UAAU;EAAK,CAAA;AAC7I,SAAOH,aAAaI,QAAQT,aAAa;AACvC,QAAIU,WAAwBL,aAAaM;AACzC,QAAIC,kBAAkBP,aAAaI,QAAQ;AAC3C,eAAW,CAACI,MAAMC,SAAAA,KAAaC,WAAUC,QAAO,GAAI;AAClD,YAAMC,0BAA0BZ,aAAaI,QAAQK;AACrD,UAAIG,2BAA2BjB,eAAeiB,2BAA2BL,iBAAiB;AACxFA,0BAAkBK;AAClBP,mBAAWQ,OAAOb,aAAac,YAAYZ,GAAGM,IAAAA,GAAO,MAAM,gCAAgCA,IAAAA,aAAiBR,aAAaI,KAAK,EAAE;MAClI;IACF;AACA,UAAM,CAACW,QAAAA,IAAY,MAAMrB,QAAQG,eAAeC,IAAI;MAClDe,OAAOR,UAAU,MAAM,yCAAyCV,WAAAA,MAAiBY,eAAAA,IAAmBS,iBAAiBhB,cAAc,EAAA,CAAA,EAAK;KAAE;AAC5IA,mBAAeC,mCAAmCc,UAAU,MAAM,6BAA6BV,QAAAA,IAAY;MAAEF,UAAU;IAAK,CAAA;AAC5H,QAAIH,aAAaI,UAAUT,aAAa;AACtC;IACF;AACA,QAAIK,aAAaI,QAAQT,aAAa;AACpC,YAAM,IAAIsB,MAAM,gBAAgBtB,WAAAA,+CAA0DD,QAAQK,IAAI,GAAG;IAC3G;EACF;AACA,SAAOC;AACT;AAxBsBP;;;ACHtB,eAAsByB,oBAAoBC,SAAuBC,aAAmB;AAClF,UAAQ,MAAMC,qBAAqBF,SAASC,WAAAA,GAAcE;AAC5D;AAFsBJ;;;ACJtB,SAASK,uBAAuB;AAEhC,SAASC,uBAAuBC,qBAAqB;AAK9C,IAAMC,4BAAoC;AAU1C,IAAMC,wBAAwBC,sBAA2CF,yBAAAA;AACzE,IAAMG,wBAAwBC,gBAAgBC,OAA4BJ,qBAAAA;AAK1E,IAAMK,uCAAuC,wBAACC,UAAAA;AACnD,SAAON,sBAAsBM,KAAAA,KAAUC,cAAcD,KAAAA;AACvD,GAFoD;AAG7C,IAAME,uCAAuCL,gBAAgBC,OAA6CC,oCAAAA;;;ACvB1G,IAAMI,oBAA4B;;;ACHzC,SAASC,mBAAAA,wBAAuB;AAEhC,SAASC,yBAAAA,wBAAuBC,iBAAAA,sBAAqB;AAK9C,IAAMC,6BAAqC;AAW3C,IAAMC,yBAAyBC,uBAA4CF,0BAAAA;AAC3E,IAAMG,yBAAyBC,iBAAgBC,OAA6BJ,sBAAAA;AAK5E,IAAMK,wCAAwC,wBAACC,UAAAA;AACpD,SAAON,uBAAuBM,KAAAA,KAAUC,eAAcD,KAAAA;AACxD,GAFqD;AAG9C,IAAME,wCACTL,iBAAgBC,OAA8CC,qCAAAA;;;AVXlE,eAAsBI,6BACpBC,SACAC,OAAuB;AAGvB,QAAMC,gBAAgB,MAAMC,oBAAoBH,SAASC,MAAM,CAAA,CAAE;AACjE,QAAMG,YAAYH,MAAM,CAAA,IAAKA,MAAM,CAAA,IAAK;AAExC,MAAII,SAA0CC;AAE9C,MAAIF,cAAc,GAAG;AACnB,UAAMG,OAAO,MAAMJ,oBAAoBH,SAASC,MAAM,CAAA,CAAE;AACxD,UAAM,CAAA,EAAGO,QAAAA,IAAY,MAAMC,aAAaT,QAAQU,gBAAgBH,IAAAA;AAChE,UAAMI,WAA0C,CAAC;AACjD,eAAW,CAACC,SAASC,OAAAA,KAAYC,OAAOC,QAAQC,uBAAuBR,QAAAA,CAAAA,GAAY;AACjFG,eAASC,OAAAA,IAAsBK,eAAeJ,OAAAA;IAChD;AACAR,aAAS;MACPa,QAAQC;MAA2BZ,MAAMP,QAAQoB;MAAMC,UAAU;MAAIV;IACvE;EACF,OAAO;AAEL,UAAMW,OAAQC,WAAkBC,QAAQpB,SAAAA;AACxCqB,IAAAA,UAASH,SAAS,IAAI,MAAM,sBAAsBlB,SAAAA,oBAA6BmB,WAAUG,KAAK,IAAA,CAAA,EAAO;AAErG,UAAM,CAACC,aAAAA,IAAiB,MAAM3B,QAAQ4B,kBAAkBC,IAAI;MAAC3B;KAAc;AAC3E,QAAI4B,aAAaH,aAAAA,GAAgB;AAC/BtB,eAASsB;IACX,OAAO;AAEL,YAAMI,YAAYC,6BAA6B/B,OAAOqB,OAAO,CAAA;AAC7D,YAAMW,WAAWF,UAAUG,IAAIC,CAAAA,aAAYpC,6BACzCC,SACAmC,QAAAA,CAAAA;AAEF,YAAMC,aAAa,MAAMC,QAAQC,IAAIL,QAAAA;AAGrC,YAAMM,iBAA0C,CAAC;AACjD,iBAAWC,aAAaJ,YAAY;AAClC,mBAAW,CAACxB,SAASC,OAAAA,KAAYC,OAAOC,QAAQyB,UAAU7B,QAAQ,GAAG;AACnE4B,yBAAe3B,OAAAA,KAAuB2B,eAAe3B,OAAAA,KAAuB,MAAM6B,kBAAkB5B,OAAAA;QACtG;MACF;AAEA,YAAMF,WAA0C,CAAC;AACjD,iBAAW,CAACC,SAASC,OAAAA,KAAYC,OAAOC,QAAQwB,cAAAA,GAAiB;AAC/D5B,iBAASC,OAAAA,IAAsBK,eAAeJ,OAAAA;MAChD;AAEAR,eAAS;QACPa,QAAQC;QAA2BZ,MAAML;QAAemB,UAAUjB;QAAWO;MAC/E;AAEA,YAAMX,QAAQ4B,kBAAkBc,OAAO;QAACrC;OAAO;IACjD;EACF;AAEA,QAAMsC,cAAc,MAAMC,eAAeC,eAAexC,MAAAA;AACxD,SAAOsC;AACT;AA5DsB5C;;;AWjBtB,SAAS+C,iBAAiB;AAC1B,SAASC,qBAAqB;AAC9B,SAASC,iBAAiB;AAC1B,SAASC,sCAAAA,2CAA0C;AAOnD,eAAsBC,gBACpBC,SAAkC;AAElC,SAAO,MAAMC,cAAc,kBAAkB,YAAA;AAC3C,UAAMC,aAAa,MAAMF,QAAQG,eAAeC,IAAI;MAACJ,QAAQK;KAAK;AAClE,UAAMC,mBAAmBC,oCAAmCL,WAAWM,GAAG,CAAA,GAAI,MAAM,kCAAkCR,QAAQK,IAAI,IAAI;MAAEI,UAAU;IAAK,CAAA;AACvJ,UAAMC,aAAaC,UAAUX,QAAQY,UAAU,IAAIC,KAAKC,IAAIR,iBAAiBS,QAAQf,QAAQY,aAAa,GAAG,CAAA,IAAK;AAClH,UAAMI,SAASC,6BAA6B;MAACP;MAAYJ,iBAAiBS;KAAM;AAChF,UAAMG,YAAY,MAAMC,QAAQC,IAAIJ,OAAOK,IAAIC,CAAAA,UAASC,6BAA6BvB,SAASsB,KAAAA,CAAAA,CAAAA;AAC9F,UAAME,WAA6C,CAAC;AACpD,aAASC,WAAWP,WAAW;AAC7B,iBAAW,CAACQ,SAASC,OAAAA,KAAYC,OAAOC,QAAQJ,QAAQD,QAAQ,GAAG;AACjE,cAAMM,eAAeC,UAAUL,SAAS,MAAM,oBAAoBA,OAAAA,EAAS;AAC3EF,iBAASM,YAAAA,KAAiBN,SAASM,YAAAA,KAAiB,MAAME,kBAAkBL,OAAAA;MAC9E;IACF;AACA,WAAOH;EACT,CAAA;AACF;AAlBsBzB;;;ACXtB,SAASkC,YAAAA,iBAAgB;AAEzB,SAASC,kBAAAA,uBAAsB;AAE/B,SAASC,gBAAAA,qBAAoB;AAC7B,SAASC,aAAAA,kBAAiB;AAY1B,eAAsBC,8BACpBC,SACAC,OAAuB;AAGvB,QAAMC,gBAAgB,MAAMC,oBAAoBH,SAASC,MAAM,CAAA,CAAE;AACjE,QAAMG,YAAYH,MAAM,CAAA,IAAKA,MAAM,CAAA,IAAK;AACxC,QAAM,EAAEI,QAAO,IAAKL;AAEpB,MAAIM,SAA2CC;AAE/C,MAAIH,cAAc,GAAG;AACnB,UAAMI,OAAO,MAAML,oBAAoBH,SAASC,MAAM,CAAA,CAAE;AACxD,UAAM,CAAA,EAAGQ,QAAAA,IAAY,MAAMC,aAAaV,QAAQW,gBAAgBH,IAAAA;AAChE,UAAMI,YAA2C,CAAC;AAClD,eAAW,CAACC,SAASC,OAAAA,KAAYC,OAAOC,QAAQC,wBAAwBR,UAAUJ,OAAAA,CAAAA,GAAW;AAC3FO,gBAAUC,OAAAA,IAAsBK,eAAeJ,OAAAA;IACjD;AACAR,aAAS;MACPa,QAAQC;MAA4BZ,MAAMR,QAAQqB;MAAMC,UAAU;MAAIV;MAAWP;IACnF;EACF,OAAO;AAEL,UAAMkB,OAAQC,WAAkBC,QAAQrB,SAAAA;AACxCsB,IAAAA,UAASH,SAAS,IAAI,MAAM,sBAAsBnB,SAAAA,oBAA6BoB,WAAUG,KAAK,IAAA,CAAA,EAAO;AAErG,UAAM,CAACC,aAAAA,IAAiB,MAAM5B,QAAQ6B,kBAAkBC,IAAI;MAAC5B;KAAc;AAC3E,QAAI6B,cAAaH,aAAAA,GAAgB;AAC/BtB,eAASsB;IACX,OAAO;AAEL,YAAMI,YAAYC,6BAA6BhC,OAAOsB,OAAO,CAAA;AAC7D,YAAMW,WAAWF,UAAUG,IAAIC,CAAAA,aAAYrC,8BACzCC,SACAoC,QAAAA,CAAAA;AAEF,YAAMC,aAAa,MAAMC,QAAQC,IAAIL,QAAAA;AAGrC,YAAMM,iBAA0C,CAAC;AACjD,iBAAWC,aAAaJ,YAAY;AAClC,mBAAW,CAACxB,SAAS6B,QAAAA,KAAa3B,OAAOC,QAAQyB,UAAU7B,SAAS,GAAG;AACrE4B,yBAAe3B,OAAAA,KAAuB2B,eAAe3B,OAAAA,KAAuB,MAAM8B,kBAAkBD,QAAAA;QACtG;MACF;AAEA,YAAM9B,YAA2C,CAAC;AAClD,iBAAW,CAACC,SAAS6B,QAAAA,KAAa3B,OAAOC,QAAQwB,cAAAA,GAAiB;AAChE5B,kBAAUC,OAAAA,IAAsBK,eAAewB,QAAAA;MACjD;AAEApC,eAAS;QACPa,QAAQC;QAA4BZ,MAAMN;QAAeoB,UAAUlB;QAAWQ;QAAWP;MAC3F;AAEA,YAAML,QAAQ6B,kBAAkBe,OAAO;QAACtC;OAAO;IACjD;EACF;AAEA,QAAMuC,cAAc,MAAMC,gBAAeC,eAAezC,MAAAA;AACxD,SAAOuC;AACT;AA7DsB9C;;;AChBtB,SAASiD,aAAAA,kBAAiB;AAC1B,SAASC,iBAAAA,sBAAqB;AAC9B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,sCAAAA,2CAA0C;AAQnD,eAAsBC,iBACpBC,SAAoC;AAEpC,SAAO,MAAMC,eAAc,mBAAmB,YAAA;AAC5C,UAAMC,aAAa,MAAMF,QAAQG,eAAeC,IAAI;MAACJ,QAAQK;KAAK;AAClE,UAAMC,mBAAmBC,oCAAmCL,WAAWM,GAAG,CAAA,GAAI,MAAM,kCAAkCR,QAAQK,IAAI,IAAI;MAAEI,UAAU;IAAK,CAAA;AACvJ,UAAMC,aAAaC,WAAUX,QAAQY,UAAU,IAAIC,KAAKC,IAAIR,iBAAiBS,QAAQf,QAAQY,aAAa,GAAG,CAAA,IAAK;AAClH,UAAMI,SAASC,6BAA6B;MAACP;MAAYJ,iBAAiBS;KAAM;AAChF,UAAMG,YAAY,MAAMC,QAAQC,IAAIJ,OAAOK,IAAIC,CAAAA,UAASC,8BAA8BvB,SAASsB,KAAAA,CAAAA,CAAAA;AAC/F,UAAME,YAA8C,CAAC;AACrD,aAASC,WAAWP,WAAW;AAC7B,iBAAW,CAACQ,SAASC,QAAAA,KAAaC,OAAOC,QAAQJ,QAAQD,SAAS,GAAG;AACnE,cAAMM,eAAeC,WAAUL,SAAS,MAAM,oBAAoBA,OAAAA,EAAS;AAC3EF,kBAAUM,YAAAA,KAAiBN,UAAUM,YAAAA,KAAiB,MAAME,kBAAkBL,QAAAA;MAChF;IACF;AACA,WAAOH;EACT,CAAA;AACF;AAlBsBzB;;;ACZtB,YAAYkC,SAAO;;;ACAnB,SAASC,sBAAsB;AAC/B,YAAYC,QAAO;;;ACDZ,IAAMC,cAAc,wBAACC,aAAAA;AAC1B,SACEA,aAAa,eACVA,aAAa,eACbA,aAAa,SACbA,SAASC,SAAS,YAAA;AAEzB,GAP2B;;;ACEpB,IAAMC,SAAS,wBAACC,MAAcC,SAAAA;AACnC,QAAMC,SAASC,YAAYH,IAAAA,IAAQ,SAAS;AAC5C,SAAO,GAAGE,MAAAA,MAAYF,IAAAA,IAAQC,IAAAA;AAChC,GAHsB;;;ACFf,IAAMG,OAAO;;;ACApB,YAAYC,OAAO;AAWZ,IAAMC,oBACVC,SAAM,EACNC,UAAUC,CAAAA,MAAKA,EAAEC,KAAI,EAAGC,WAAW,QAAQ,GAAA,CAAA,EAC3CC,OACCH,CAAAA,MAAK;EAAC;EAAI;EAAI;EAAI;EAAI;EAAII,SAASJ,EAAEK,MAAM,GAAA,EAAKC,MAAM,GACtD;EAAEC,SAAS;AAAqD,CAAA,EAChEC,SAAS,wBAAA;;;AJZN,IAAMC,eAAiBC,UAAO;EACnCC,MAAQC,UAAM,EAAGC,QAAQ,WAAA,EAAaC,SAASC,gBAAgB;IAC7DF,SAAS;IACTG,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAC,UAAUC,kBAAkBC,SAAQ,EAAGP,SAASC,gBAAgB;IAC9DC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAI,MAAQC,UAAOC,OAAM,EAAGX,QAAQ,IAAA,EAAMC,SAASC,gBAAgB;IAC7DF,SAAS;IACTG,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;;;AKvBA,SAASO,kBAAAA,uBAAsB;AAC/B,YAAYC,QAAO;AAEZ,IAAMC,eAAiBC,UAAO;EACnCC,MAAQC,UAAOC,OAAM,EAAGC,QAAQ,GAAA,EAAMC,SAASR,iBAAgB;IAC7DO,SAAS;IACTE,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;;;ACVA,SAASC,kBAAAA,uBAAsB;AAC/B,YAAYC,QAAO;AAEZ,IAAMC,iBAAmBC,UAAO;EACrCC,IAAMC,UAAM,EAAGC,SAAQ,EACpBC,SAASP,iBAAgB;IACxBQ,aACA;IACAC,OAAO;IACPC,MAAM;EACR,CAAA;AACJ,CAAA;;;ACXA,SAASC,kBAAAA,uBAAsB;AAC/B,YAAYC,QAAO;AAEZ,IAAMC,qBAAuBC,UAAO;EACzCC,WAAaC,UAAM,EAAGC,SAAQ,EAAGC,SAASP,iBAAgB;IACxDQ,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAC,eAAiBN,UAAM,EAAGC,SAAQ,EAAGC,SAASP,iBAAgB;IAC5DQ,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;AAEO,IAAME,sBAAwBT,UAAO;EAC1CU,KAAOA,OAAG,EAAGP,SAAQ,EAAGC,SAASP,iBAAgB;IAC/CQ,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;AAEO,IAAMI,eAAiBX,UAAO;EACnCY,SAAWV,UAAM,EAAGC,SAAQ,EAAGC,SAASP,iBAAgB;IACtDQ,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAM,QAAQd,mBAAmBI,SAAQ,EAAGW,SAAS,+BAAA;EAC/CC,SAASN,oBAAoBN,SAAQ,EAAGW,SAAS,iCAAA;AACnD,CAAA;;;AC/BA,SAASE,gBAAgB;AACzB,SAASC,kBAAAA,uBAAsB;AAC/B,YAAYC,QAAO;AACnB,IAAMC,YAAYC,OAAOC,KAAKL,QAAAA;AAEvB,IAAMM,eAAiBC,UAAO;EACnCC,UAAYC,QAAKN,SAAAA,EAAWO,QAAQ,MAAA,EAAQC,SAASV,iBAAgB;IACnEW,SAAST;IACTO,SAAS;IACTG,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAC,QAAUC,WAAO,EAAGP,QAAQ,KAAA,EAAOC,SAASV,iBAAgB;IAC1DS,SAAS;IACTG,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;;;ACpBA,SAASG,YAAYC,aAAAA,kBAAiB;AACtC,SAASC,kBAAAA,uBAAsB;AAC/B,YAAYC,QAAO;AAIZ,IAAMC,oBAAsBC,UAAO;EACxCC,WAAaC,cAAW,CAACC,QAAAA;AACvB,QAAI,OAAOA,QAAQ,UAAU;AAC3B,aAAOA,IAAIC,MAAM,GAAA,EAAKC,IAAIC,CAAAA,MAAKC,WAAUD,EAAEE,KAAI,CAAA,CAAA;IACjD;AACA,WAAOL;EACT,GAAKM,SAAMC,UAAAA,EAAYC,SAAQ,EAAGC,SAASC,iBAAgB;IACzDC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA,CAAA;EAEAC,4BAA8BC,WAAO,EAAGP,SAAQ,EAAGC,SAASC,iBAAgB;IAC1EC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;;EAEAG,iBAAmBC,UAAOC,OAAM,EAAGV,SAAQ,EAAGC,SAASC,iBAAgB;IACrEC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAM,mBAAqBF,UAAOC,OAAM,EAAGE,QAAQ,IAAA,EAAWX,SAASC,iBAAgB;IAC/EC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;;EAEAQ,UAAYJ,UAAOC,OAAM,EAAGE,QAAQ,CAAA,EAAGX,SAASC,iBAAgB;IAC9DC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAS,UAAUC,kBAAkBf,SAAQ,EAAGC,SAASC,iBAAgB;IAC9DC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;;EAEAW,MAAQP,UAAOC,OAAM,EAAGE,QAAQ,IAAA,EAAMX,SAASC,iBAAgB;IAC7DU,SAAS;IACTT,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;;EAEAY,eAAiBC,UAAM,EAAGlB,SAAQ,EAAGC,SAASC,iBAAgB;IAC5DC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;;;AC1DA,SAASc,aAAAA,YAAWC,mBAAmB;AACvC,SAASC,kBAAAA,uBAAsB;AAC/B,YAAYC,QAAO;AASZ,IAAMC,iBAAiB,wBAACC,WAAAA;AAC7B,MAAIC,YAAYD,MAAAA,EAAS,QAAO;AAChC,SACEE,WAAUF,OAAOG,gBAAgB,KAC9BD,WAAUF,OAAOI,QAAQ,KACzBF,WAAUF,OAAOK,MAAM,KACvBH,WAAUF,OAAOM,QAAQ,KACzBJ,WAAUF,OAAOO,QAAQ;AAEhC,GAT8B;AAWvB,IAAMC,iBAAmBC,UAAO;;EAErCN,kBAAoBO,UAAM,EAAGC,IAAI,CAAA,EAAGC,SAAQ,EAAGC,SAASC,iBAAgB;IACtEC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAb,UAAYM,UAAM,EAAGC,IAAI,CAAA,EAAGC,SAAQ,EAAGC,SAASC,iBAAgB;IAC9DC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAZ,QAAUK,UAAM,EAAGC,IAAI,CAAA,EAAGC,SAAQ,EAAGC,SAASC,iBAAgB;IAC5DC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAX,UAAYI,UAAM,EAAGC,IAAI,CAAA,EAAGC,SAAQ,EAAGC,SAASC,iBAAgB;IAC9DC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;EACAV,UAAYG,UAAM,EAAGC,IAAI,CAAA,EAAGC,SAAQ,EAAGC,SAASC,iBAAgB;IAC9DC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;;;ACjDA,SAASC,kBAAAA,uBAAsB;AAC/B,YAAYC,QAAO;AAIZ,IAAMC,mBAAqBC,UAAO;EACvCC,OAAOC,eAAeC,SAAQ,EAAGC,SAAS,6CAAA;EAC1CC,MAAQC,UAAM,EAAGH,SAAQ,EAAGI,SAASC,iBAAgB;IACnDC,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA,EAAGP,SAAS,+BAAA;;;ACZZ,SAASQ,kBAAAA,uBAAsB;AAC/B,YAAYC,SAAO;AAEZ,IAAMC,yBAA2BC,WAAO;;EAE7CC,cAAgBC,QAAG,EAAGC,SAAQ,EAAGC,SAASP,iBAAgB;IACxDQ,aAAa;IACbC,OAAO;IACPC,MAAM;EACR,CAAA;AACF,CAAA;AAEO,IAAMC,qBAAuBR,WAAO;;EAEzCS,MAAMV,uBAAuBI,SAAQ,EAAGO,SAAS,6BAAA;AACnD,CAAA,EAAGA,SAAS,iCAAA;;;AbJL,IAAMC,wBAA0BC,WAAO;EAAE,GAAGC,aAAaC;AAAM,CAAA,EAAGC,SAAS,kCAAA;AAE3E,IAAMC,YAAcJ,WAAO;EAChC,GAAGD,sBAAsBG;EACzBG,KAAKC,aAAaC,QAAQD,aAAaE,MAAM,CAAC,CAAA,CAAA,EAAIL,SAAS,gCAAA;EAC3DM,KAAKC,aAAaH,QAAQG,aAAaF,MAAM,CAAC,CAAA,CAAA,EAAIL,SAAS,mCAAA;EAC3DQ,OAAOC,eAAeL,QAAQK,eAAeJ,MAAM,CAAC,CAAA,CAAA,EAAIL,SAAS,6BAAA;EACjEU,KAAKC,aAAaP,QAAQO,aAAaN,MAAM,CAAC,CAAA,CAAA,EAAIL,SAAS,uCAAA;EAC3DY,UAAUC,kBAAkBT,QAAQS,kBAAkBR,MAAM,CAAC,CAAA,CAAA,EAAIL,SAAS,gCAAA;EAC1Ec,SAASC,iBAAiBX,QAAQW,iBAAiBV,MAAM,CAAC,CAAA,CAAA,EAAIL,SAAS,+BAAA;EACvEgB,WAAWC,mBAAmBb,QAAQa,mBAAmBZ,MAAM,CAAC,CAAA,CAAA,EAAIL,SAAS,6BAAA;AAC/E,CAAA;AAIO,IAAMkB,mBAAmB,6BAAcjB,UAAUI,MAAM,CAAC,CAAA,GAA/B;;;Ac1BhC,YAAYc,SAAO;AAEnB,IAAMC,oBAAsBC,WAAM;AAClC,IAAMC,cAAgBD,WAAM;AAErB,IAAME,uBACVC,WAAO;EACNC,IAAMJ,WAAM,EAAGK,SAAQ;EACvBC,OAAOL,YAAYI,SAAQ;EAC3BE,aAAaR,kBAAkBM,SAAQ;EACvCG,YAAcC,YAAO,EAAGJ,SAAQ;AAClC,CAAA,EACCK,SAAWC,YAAO,CAAA;AAEd,IAAMC,mBAAmBV,qBAAqBW,OAAO,CAAC,CAAA;AAE7D,IAAMC,gBACHC,UAAQC,UAAM;EAAGhB,WAAM;EAAMiB,WAAM;EAAMC,YAAQ,IAAA;EAASC,cAAS;CAAG,CAAA,EACtEC,SAAQ;AAEJ,IAAMC,kBAAkBT,iBAAiBC,OAAO;EACrDS,SAASR,cAAcT,SAAQ;EAC/BkB,SAAWZ,YAAO,EAAGN,SAAQ;EAC7BE,aAAaR;EACbyB,OAASxB,WAAM,EAAGK,SAAQ;EAC1BoB,QAAUhB,YAAO,EAAGJ,SAAQ;EAC5BC,OAAOL;EACPyB,MAAQV,UAAM;IACVE,YAAQ,OAAA;IACRA,YAAQ,OAAA;IACRA,YAAQ,SAAA;IACRA,YAAQ,QAAA;IACRA,YAAQ,QAAA;GACX;AACH,CAAA;AAIO,SAASS,YAAYC,GAAU;AACpC,SAAOP,gBAAgBQ,UAAUD,CAAAA,EAAGE;AACtC;AAFgBH;;;ACtChB,SAAuBI,aAAAA,kBAAiB;AAExC,SAASC,mCAAmC;AAE5C,eAAsBC,mBACpBC,eACAC,QACAC,IACAC,eACAC,aAAmB;AAEnB,QAAMC,mBAAmBL,cAAcM,QAAQC,WAAW,KAAKC,2BAAAA,IAA+BN,EAAAA;AAC9F,QAAMO,mBAAmB,MAAMT,cAAcU,YAAYL,kBAAkBF,eAAeC,WAAAA;AAE1F,QAAMO,qBAAqBX,cAAcM,QAAQM,aAAa,KAAKJ,2BAAAA,IAA+BN,EAAAA;AAClG,QAAMW,qBAAqB,MAAMb,cAAcU,YAAYC,oBAAoBR,eAAeC,WAAAA;AAE9F,QAAMU,gBAAuE,CAAA;AAC7E,QAAMC,oBAAoB,MAAMf,cAAcgB,wBAAwB,KAAKd,EAAAA,IAAM;IAAEe,UAAUd,gBAAgB;EAAE,CAAA;AAC/G,WAASe,IAAI,GAAGA,IAAIH,mBAAmBG,KAAK;AAC1C,QAAI;AACF,YAAMC,QAAQ,MAAMnB,cAAcoB,SAAS,KAAKlB,EAAAA,IAAMgB,GAAG;QAAED,UAAUd,gBAAgB;MAAE,CAAA;AACvFW,oBAAcO,KAAKF,KAAAA;IACrB,QAAQ;AACN;IACF;EACF;AACA,QAAMG,mBAAmBC,WAAUtB,QAAQ;IAAEuB,QAAQ;EAAM,CAAA,EAAGC,YAAW;AACzE,QAAMC,gBAAgBZ,cAAca,OAAOC,CAAAA,MAAKA,EAAE3B,OAAOwB,YAAW,MAAOH,gBAAAA;AAC3E,MAAIO,aAAa;AACjB,aAAWV,SAASO,eAAe;AACjCG,kBAAcV,MAAMW;EACtB;AACA,MAAIC,cAAc;AAClB,MAAIC,WAAW;AACf,MAAIC,cAAc;AAGlB,WAASf,IAAIf,eAAee,KAAKd,aAAac,KAAK;AACjD,WAAOc,WAAWvB,iBAAiByB,UAAUzB,iBAAiBuB,QAAAA,GAAWG,gBAAgBjB,GAAG;AAC1FW,oBAAcpB,iBAAiBuB,QAAAA,EAAUI,KAAKN;AAC9CE;IACF;AACA,WAAOC,cAAcpB,mBAAmBqB,UAAUrB,mBAAmBoB,WAAAA,GAAcE,gBAAgBjB,GAAG;AACpGW,oBAAchB,mBAAmBoB,WAAAA,EAAaG,KAAKN;AACnDG;IACF;AACAF,mBAAeF;EACjB;AACA,SAAOE;AACT;AA9CsBhC;;;ACFf,SAASsC,eAAeC,UAAiB;AAC9C,SAAO;AACT;AAFgBD;;;ACCT,SAASE,8BAA8BC,SAAkBC,OAAeC,QAAc;AAC3F,SAAO;IAAE,CAACF,OAAAA,GAAU;EAAG;AACzB;AAFgBD;;;ACAT,SAASI,4BAA4BC,OAAeC,QAAc;AACvE,SAAO,CAAC;AACV;AAFgBF;;;ACAT,SAASG,iCAAiCC,OAAeC,QAAc;AAC5E,SAAO,CAAC;AACV;AAFgBF;;;ACAT,SAASG,qCAAqCC,SAAgB;AACnE,SAAO;IAAE,CAACA,OAAAA,GAAU;EAAG;AACzB;AAFgBD;;;ACAT,SAASE,mCAAmCC,UAAmBC,OAAeC,QAAc;AACjG,QAAM,IAAIC,MAAM,yBAAA;AAClB;AAFgBJ;;;ACDT,SAASK,8BAA8BC,OAAa;AACzD,SAAO;AACT;AAFgBD;;;ACAT,SAASE,qCAAqCC,WAAmBC,OAAa;AACnF,QAAM,IAAIC,MAAM,yBAAA;AAClB;AAFgBH;;;ACAT,SAASI,4CAA4CC,WAAmBC,OAAa;AAC1F,QAAM,IAAIC,MAAM,yBAAA;AAClB;AAFgBH;;;ACAT,SAASI,iCAAiCC,OAAeC,QAAc;AAC5E,QAAM,IAAIC,MAAM,yBAAA;AAClB;AAFgBH;;;ACCT,SAASI,uCAAuCC,UAAmBC,OAAa;AACrF,QAAM,IAAIC,MAAM,yBAAA;AAClB;AAFgBH;;;ACHhB,SAAuBI,aAAAA,kBAAiB;;;ACAxC,SAAuBC,aAAAA,kBAAiB;AAExC,SAASC,+BAAAA,oCAAmC;AAE5C,eAAsBC,eAAeC,eAAiCC,QAAiBC,UAAgB;AACrG,QAAMC,mBAAmBH,cAAcI,QAAQC,WAAWC,WAAUC,8BAA6B;IAAEC,QAAQ;EAAK,CAAA,CAAA;AAChH,QAAMC,mBAAmB,MAAMT,cAAcU,YAAYP,kBAAkB,GAAGD,QAAAA;AAE9E,QAAMS,qBAAqBX,cAAcI,QAAQQ,aAAa,KAAKL,4BAAAA,EAA6B;AAChG,QAAMM,qBAAqB,MAAMb,cAAcU,YAAYC,oBAAoB,GAAGT,QAAAA;AAElF,QAAMY,SAAkC,CAAC;AACzC,aAAWC,SAASN,kBAAkB;AACpC,UAAMO,KAAKV,WAAUS,MAAME,KAAKD,GAAGE,YAAW,GAAI;MAAEV,QAAQ;IAAM,CAAA;AAClEM,WAAOE,EAAAA,KAAOF,OAAOE,EAAAA,KAAO,MAAMD,MAAME,KAAKE;EAC/C;AACA,aAAWJ,SAASF,oBAAoB;AACtC,UAAMG,KAAKV,WAAUS,MAAME,KAAKD,GAAGE,YAAW,GAAI;MAAEV,QAAQ;IAAM,CAAA;AAClEM,WAAOE,EAAAA,KAAOF,OAAOE,EAAAA,KAAO,MAAMD,MAAME,KAAKE;EAC/C;AAEA,QAAMC,iBAA0C,CAAC;AACjD,aAAW,CAACC,SAASF,MAAAA,KAAWG,OAAOC,QAAQT,MAAAA,GAAgC;AAC7E,QAAIK,SAAS,IAAI;AACfC,qBAAeC,OAAAA,IAAWF;IAC5B;EACF;AAEA,SAAOC;AACT;AAzBsBrB;;;ADGtB,eAAsByB,iBAAiBC,eAAiCC,QAAiBC,UAAgB;AACvG,QAAMC,SAAS,MAAMC,eAAeJ,eAAeC,QAAQC,QAAAA;AAC3D,MAAIG,UAAqB,CAAA;AACzB,aAAW,CAACC,SAASC,MAAAA,KAAWC,OAAOC,QAAQN,MAAAA,GAAS;AACtD,QAAII,SAAS,IAAI;AACfF,cAAQK,KAAKC,WAAUL,SAAS;QAAEM,QAAQ;MAAM,CAAA,CAAA;IAClD;EACF;AAEA,SAAOP;AACT;AAVsBN;;;AEPtB,SAAuBc,aAAAA,kBAAiB;AAExC,SAASC,+BAAAA,oCAAmC;AAI5C,eAAsBC,iBAAiBC,eAAiCC,QAAiBC,eAAuBC,aAAmB;AACjI,QAAMC,mBAAmBJ,cAAcK,QAAQC,WAAW,KAAKC,4BAAAA,EAA6B;AAC5F,QAAMC,mBAAmB,MAAMR,cAAcS,YAAYL,kBAAkBF,eAAeC,WAAAA;AAE1F,QAAMO,qBAAqBV,cAAcK,QAAQM,aAAa,KAAKJ,4BAAAA,EAA6B;AAChG,QAAMK,qBAAqB,MAAMZ,cAAcS,YAAYC,oBAAoBR,eAAeC,WAAAA;AAE9F,QAAMU,SAAS,MAAMC,eAAed,eAAeC,QAAQC,aAAAA;AAE3D,MAAIa,cAAc;AAClB,MAAIC,WAAW;AACf,MAAIC,cAAc;AAGlB,WAASC,IAAIhB,eAAegB,KAAKf,aAAae,KAAK;AACjD,WAAOF,WAAWR,iBAAiBW,UAAUX,iBAAiBQ,QAAAA,GAAWI,gBAAgBF,GAAG;AAC1F,YAAMG,KAAKC,WAAUd,iBAAiBQ,QAAAA,EAAUO,KAAKF,GAAGG,YAAW,GAAI;QAAEC,QAAQ;MAAM,CAAA;AACvFZ,aAAOQ,EAAAA,KAAOR,OAAOQ,EAAAA,KAAO,MAAMb,iBAAiBQ,QAAAA,EAAUO,KAAKG;AAClEV;IACF;AACA,WAAOC,cAAcL,mBAAmBO,UAAUP,mBAAmBK,WAAAA,GAAcG,gBAAgBF,GAAG;AACpG,YAAMG,KAAKC,WAAUd,iBAAiBQ,QAAAA,EAAUO,KAAKF,GAAGG,YAAW,GAAI;QAAEC,QAAQ;MAAM,CAAA;AACvFZ,aAAOQ,EAAAA,KAAOR,OAAOQ,EAAAA,KAAO,MAAMT,mBAAmBI,QAAAA,EAAUO,KAAKG;AACpET;IACF;AACAF,mBAAeY,OAAOC,OAAOf,MAAAA,EAAQgB,OAAO,CAACC,GAAGC,MAAMD,IAAIC,GAAG,EAAE;EACjE;AACA,SAAOhB;AACT;AA5BsBhB;;;ACHf,SAASiC,iBAAiBC,UAAiB;AAChD,QAAM,IAAIC,MAAM,yBAAA;AAClB;AAFgBF;;;ACHhB,SAASG,YAAAA,iBAAgB;AACzB,SAASC,eAAeC,kBAAkB;AAM1C,eAAsBC,+BAA+BC,SAAuBC,gBAAsB;AAChG,QAAMC,YAAY,MAAMC,oBAAoBH,SAASC,cAAAA;AACrD,QAAMG,gBAAgB,MAAMC,aAAaL,QAAQM,gBAAgBJ,SAAAA;AACjE,QAAMK,cAAcC,cAAcJ,cAAc,CAAA,EAAGK,KAAKC,CAAAA,MAAKA,EAAEC,WAAWC,UAAAA,GAAa;IAAEC,UAAU;EAAK,CAAA;AACxG,SAAOC,UAASP,YAAYQ,UAAU,MAAM,sCAAA;AAC9C;AALsBhB;;;ACPtB,SAASiB,YAAAA,iBAAgB;AAEzB,SAASC,SAAAA,cAAa;AAEtB,SAASC,2BAA2B;AACpC,SAASC,kBAAAA,uBAAsB;AAS/B,SAASC,8BAA8B;AAEvC,eAAsBC,iBACpBC,OACAC,iBACAC,kBACAC,QACAC,KACAC,KACAC,MACAC,OAA8BC,wBAAsB;AAEpD,MAAIF,SAASG,UAAaC,MAAMC,QAAQR,MAAAA,GAAS;AAC/C,UAAM,IAAIS,MAAM,0CAAA;EAClB;AAEA,QAAMC,uBAAsD;IAC1Db;IACAO,MAAM;MACJO,MAAMC,OAAMR,KAAKO,IAAI;MACrBE,UAAUD,OAAMR,KAAKS,QAAQ;MAC7BC,UAAUF,OAAMR,KAAKU,QAAQ;MAC7BC,UAAUH,OAAMR,KAAKW,QAAQ;IAC/B;IACAd;IACAC;EACF;AAEA,QAAMc,iBAAiB,MAAMC,gBAAeC,OAAOpB,eAAAA;AACnD,QAAMqB,SAAmB,CAAA;AACzB,aAAWC,gBAAgBJ,gBAAgB;AACzCG,WAAOE,KAAK,WAAWD,YAAAA,EAAc;EACvC;AAEA,QAAME,SAAiF;IACrF,GAAGZ;IACHP,MAAMA,SAASI,MAAMC,QAAQR,MAAAA,IAAUuB,UAASvB,OAAOwB,GAAG,CAAA,GAAIC,OAAAA,IAAWzB,OAAOyB;EAClF;AAEA,MAAIN,OAAOO,SAAS,GAAG;AACrBJ,WAAOH,SAASA;EAClB;AAEA,QAAM,CAACQ,IAAIC,UAAAA,IAAc,MAAM,IAAIC,oBAAAA,EAChCP,OAAOA,MAAAA,EACPQ,KAAK;IAAEC,aAAa,CAAA;EAAG,CAAA,EACvBC,SAAS;OAAIlC;OAAoBC;GAAiB,EAClDkC,QAAQ1B,MAAMC,QAAQR,MAAAA,IAAUA,SAAS;IAACA;GAAO,EACjDkC,MAAK;AAER,SAAO;IAAC,MAAMjB,gBAAekB,eAAeR,EAAAA;IAAK,MAAMV,gBAAekB,eAAeP,UAAAA;;AACvF;AAjDsBhC;;;ACftB,SAASwC,SAAAA,cAAa;AACtB,SAASC,uBAAAA,4BAA2B;AACpC,SAASC,kBAAAA,uBAAsB;AAS/B,SAASC,0BAAAA,+BAA8B;AAEvC,eAAsBC,yBACpBC,OACAC,iBACAC,kBACAC,KACAC,KACAC,MACAC,OAA8BC,yBAAsB;AAEpD,QAAMC,uBAAsD;IAC1DR;IACAM,MAAM;MACJG,MAAMC,OAAMJ,KAAKG,IAAI;MACrBE,UAAUD,OAAMJ,KAAKK,QAAQ;MAC7BC,UAAUF,OAAMJ,KAAKM,QAAQ;MAC7BC,UAAUH,OAAMJ,KAAKO,QAAQ;IAC/B;IACAV;IACAC;EACF;AAEA,QAAMU,iBAAiB,MAAMC,gBAAeC,OAAOf,eAAAA;AACnD,QAAMgB,SAAmB,CAAA;AACzB,aAAWC,gBAAgBJ,gBAAgB;AACzCG,WAAOE,KAAK,WAAWD,YAAAA,EAAc;EACvC;AAEA,QAAME,SAAiF;IACrF,GAAGZ;IACHH;EACF;AAEA,MAAIY,OAAOI,SAAS,GAAG;AACrBD,WAAOH,SAASA;EAClB;AAEA,QAAM,CAACK,IAAIC,UAAAA,IAAc,MAAM,IAAIC,qBAAAA,EAChCJ,OAAOA,MAAAA,EACPK,KAAK;IAAEC,aAAa,CAAA;EAAG,CAAA,EACvBC,SAAS;OAAI1B;OAAoBC;GAAiB,EAClD0B,MAAK;AAER,SAAO;IAAC,MAAMb,gBAAec,eAAeP,EAAAA;IAAK,MAAMP,gBAAec,eAAeN,UAAAA;;AACvF;AA3CsBxB;;;ACdtB,SAAS+B,aAAa;AAEtB,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,kBAAAA,uBAAsB;AAK/B,IAAMC,gCAAgC;AACtC,IAAMC,iCAAiC;AA0BhC,IAAMC,8BAA8B,8BACzCC,QACAC,aACAC,YAAAA;AAEA,QAAM,EAAEC,UAAUC,cAAcP,+BAA+BQ,OAAOC,eAAeR,+BAA8B,IAAKI,WAAW,CAAC;AACpI,QAAMK,WAAW,MAAMC,gBAAeC,KAAKR,WAAAA;AAC3CC,WAASQ,QAAQC,IAAI,qCAA8BJ,UAAU,IAAA;AAC7D,MAAIJ,WAAW;AACf,SAAO,MAAM;AACX,UAAMS,KAAK,MAAMZ,OAAOa,kBAAkBN,QAAAA,KAAaO;AACvD,QAAIC,WAAUH,EAAAA,GAAK;AACjBV,eAASQ,QAAQC,IAAI,iCAA4BJ,UAAU,IAAA;AAC3D,aAAOK;IACT,OAAO;AACLT;AACA,UAAIA,WAAWC,aAAa;AAC1BF,iBAASQ,QAAQM,MAAM,gDAAsCZ,WAAAA,WAAsB;AACnF,cAAM,IAAIa,MAAM,eAAeV,QAAAA,wBAAgCH,WAAAA,WAAsB;MACvF,OAAO;AACLF,iBAASQ,QAAQC,IAAI,oDAA6CR,QAAAA,iBAAyB,IAAA;AAC3F,cAAME,MAAMC,YAAAA;MACd;IACF;EACF;AACF,GAzB2C;;;ACpC3C,SAASY,YAAAA,iBAAgB;AAGzB,SAASC,0BAA0BC,mCAAmC;AAMtE,SAASC,uBAAuBC,sDAAsD;AAE/E,IAAMC,wBAAwB,8BACnCC,WACAC,SAAAA;AAEA,SAAQ,MAAMC,4BACZF,WACAC,MACAE,8CAAAA;AAEJ,GATqC;AAW9B,IAAMC,qBAAqB,8BAChCJ,WACAC,SAAAA;AAEA,SAAO,MAAMI,yBACXL,WACAC,MACAE,8CAAAA;AAEJ,GATkC;AAW3B,IAAMG,6BAA6B,wBAACC,wBAAAA;AACzC,QAAM,CAACC,IAAIC,UAAAA,IAAcF;AACzB,SAAO;OAAIE;IAAYD;;AACzB,GAH0C;AAKnC,IAAME,8BAA8B,wBAACC,yBAC1CA,qBAAqBC,QAAQJ,CAAAA,OAAMF,2BAA2BE,EAAAA,CAAAA,GADrB;AAGpC,IAAMK,gCAAgC,8BAC3Cb,WACAC,SAAAA;AAEA,QAAMM,sBAAsB,MAAMR,sBAAsBC,WAAWC,IAAAA;AACnE,MAAI,CAACM,qBAAqB;AACxB,WAAOO;EACT;AACA,QAAM,CAACC,aAAaC,QAAAA,IAAYT;AAChC,QAAMU,WAAWF,YAAYG,UAAU,CAAA,GAAIC,OAAOC,CAAAA,cAAaA,UAAUC,WAAW,UAAA,CAAA;AACpF,QAAMC,mBAA2D,CAAA;AACjE,aAAWC,UAAUN,SAAS;AAC5B,UAAM,CAACO,MAAMvB,KAAAA,IAAQsB,OAAOE,MAAM,GAAA;AAClC,QAAID,SAAS,YAAY;AACvB,YAAME,kBAAkBV,SAASW,KAAKC,CAAAA,YAAWA,QAAQC,UAAU5B,KAAAA;AACnE,UAAI6B,sBAAsBJ,eAAAA,GAAkB;AAC1CJ,yBAAiBS,KAAKL,eAAAA;MACxB;IACF;EACF;AACA,MAAIT,QAAQe,WAAWV,iBAAiBU,QAAQ;AAC9C,WAAO;MAACjB;MAAaO;;EACvB;AACA,SAAOR;AACT,GAxB6C;AA0BtC,IAAMmB,6BAA6B,8BACxCjC,WACAC,SAAAA;AAEA,SAAOiC,UAAS,MAAMrB,8BAA8Bb,WAAWC,IAAAA,GAAO,MAAM,kBAAA;AAC9E,GAL0C;;;ACnE1C,SAASkC,kBAAAA,uBAAsB;AAIxB,SAASC,0BAA0B,CAACC,aAAaC,QAAAA,GAAoC;AAC1F,QAAMC,mBAAmBC,gBAAeC,gBAAgBJ,WAAAA;AACxD,QAAMK,mBAAmBC,KAAKC,UAAUL,gBAAAA,EAAkBM;AAC1D,QAAMC,gBAAgBN,gBAAeC,gBAAgBH,QAAAA;AACrD,SAAOQ,cAAcC,OAAO,CAACC,KAAaC,YAAYD,MAAML,KAAKC,UAAUK,OAAAA,EAASJ,QAAQ,CAAA,IAAKH;AACnG;AALgBN;;;ACJhB,SAASc,UAAAA,eAAyB;;;ACA3B,SAASC,eAAeC,WAAiB;AAC9C,QAAMC,QAAQD,UAAUE,MAAM,GAAA;AAC9B,MAAID,MAAME,SAAS,GAAG;AACpB,UAAM,IAAIC,MAAM,6BAA6BJ,SAAAA,EAAW;EAC1D;AACA,SAAO;IAACC,MAAM,CAAA;IAAIA,MAAMI,MAAM,CAAA;;AAChC;AANgBN;AAQT,SAASO,gBAAgBC,YAAoB;AAClD,SAAOA,WAAWC,IAAIC,CAAAA,OAAMV,eAAeU,EAAAA,CAAAA;AAC7C;AAFgBH;;;ADFT,SAASI,iCAAiCC,aAAoC;AACnF,QAAMC,oBAAoBC,gBAAgBF,YAAYG,UAAU,CAAA,CAAE,EAAEC,OAAOC,CAAAA,OAAMA,GAAG,CAAA,MAAO,SAAA;AAC3F,SAAOJ,kBAAkBK,IAAID,CAAAA,OAAME,QAAOF,GAAG,CAAA,EAAG,CAAA,GAAI,IAAA,CAAA;AACtD;AAHgBN;AAKT,SAASS,4BAA4B,CAACR,aAAaS,QAAAA,GAAmD;AAC3G,QAAMC,SAASX,iCAAiCC,WAAAA;AAChD,QAAMW,mBAAmBF,SAASL,OAAOQ,CAAAA,YAAWF,OAAOG,SAASD,QAAQE,KAAK,CAAA;AACjF,SAAOH;AACT;AAJgBH;;;AEVhB,SAASO,SAASC,2BAA2B;AAMtC,SAASC,4BAA4B,CAACC,aAAaC,QAAAA,GAAmD;AAC3G,QAAMC,wBAAwBC,0BAA0B;IAACH;IAAaC;GAAS;AAC/E,SAAOG,QAAQC,oBAAoBC,mBAAmBC,OAAOL,qBAAAA,CAAAA;AAC/D;AAHgBH;AAKT,SAASS,uBAAuBC,qBAA6D;AAClG,QAAMC,mBAAmBC,4BAA4BF,mBAAAA;AACrD,QAAMG,SAASF,iBAAiBG,SAAS;AACzC,QAAMC,aAAaL,oBAAoB,CAAA,EAAGM,UAAUF;AACpD,SAAOT,QAAQL,4BAA4BU,mBAAAA,IACvCJ,oBAAoBW,iBAAiBT,OAAOK,MAAAA,IAC5CP,oBAAoBY,sBAAsBV,OAAOO,UAAAA,IACjDT,oBAAoBa,oBAAoBX,OAAOG,iBAAiBG,MAAM,CAAA;AAC5E;AARgBL;;;ACZhB,SAASW,YAAAA,iBAAgB;AACzB,SAASC,YAAAA,iBAAgB;AACzB,SAASC,UAAAA,eAAyB;AAGlC,SAASC,gDAAgD;AAElD,IAAMC,qCAAqC,wBAACC,YAAAA;AACjD,QAAMC,SAASD,QACZE,OAAOC,CAAAA,QAAOA,IAAIC,WAAW,UAAA,CAAA,EAC7BC,IAAIF,CAAAA,QAAOA,IAAIG,MAAM,GAAA,EAAK,CAAA,CAAE;AAC/B,SAAOC,UAASN,QAAQO,CAAAA,MAAKC,QAAOD,CAAAA,CAAAA;AACtC,GALkD;AAO3C,IAAME,kCAAkC,wBAACV,YAAAA;AAC9C,QAAMC,SAASD,QACZE,OAAOC,CAAAA,QAAOA,IAAIC,WAAW,UAAA,CAAA,EAC7BC,IAAIF,CAAAA,QAAOA,IAAIG,MAAM,GAAA,EAAK,CAAA,CAAE;AAC/B,QAAMK,WAAWJ,UAASN,QAAQO,CAAAA,MAAKC,QAAOD,CAAAA,CAAAA;AAC9CI,EAAAA,UAASD,SAASE,WAAWZ,OAAOY,QAAQ,MAAM,yBAAA;AAClD,SAAOF;AACT,GAP+C;AASxC,IAAMG,2BAA2B,wBAACC,OAAAA;AACvC,QAAM,CAACC,IAAIC,QAAAA,IAAYF;AACvB,QAAM,EAAEG,OAAM,IAAKF;AACnB,QAAMf,SAASiB,SAASnB,mCAAmCmB,MAAAA,IAAU,CAAA;AACrE,SAAOD,SACJf,OAAOiB,CAAAA,MAAKlB,OAAOmB,SAASD,EAAEE,KAAK,CAAA,EACnCnB,OAAOoB,wCAAAA;AACZ,GAPwC;AASjC,IAAMC,wBAAwB,wBAACR,OAAAA;AACpC,QAAM,CAACC,IAAIC,QAAAA,IAAYF;AACvB,QAAM,EAAEG,OAAM,IAAKF;AACnB,QAAMf,SAASiB,SAASnB,mCAAmCmB,MAAAA,IAAU,CAAA;AACrE,QAAMP,WAAWM,SACdf,OAAOiB,CAAAA,MAAKlB,OAAOmB,SAASD,EAAEE,KAAK,CAAA,EACnCnB,OAAOoB,wCAAAA;AACVV,EAAAA,UAASD,SAASE,WAAWZ,OAAOY,QAAQ,MAAM,yBAAA;AAClD,SAAOF;AACT,GATqC;;;AChCrC,SAASa,qBAAqB;AAC9B,SAASC,YAAAA,kBAAgB;AACzB,SAASC,0BAA0B;AAGnC,SAASC,kBAAAA,uBAAsB;AAS/B,eAAsBC,gBAAgBC,IAAuCC,SAAwB;AACnGC,EAAAA,WAASF,GAAGG,SAASF,QAAQG,SAAS,MAAM,wDAAA;AAE5C,QAAMC,WAAWC,gBAAgBN,EAAAA;AAEjCK,WAASE,YAAY;IAACN,QAAQG;;AAC9BC,WAASG,kBAAkB;IAACP,QAAQQ,gBAAgB;;AAEpD,QAAMC,OAAO,MAAMC,gBAAeC,SAASP,QAAAA;AAC3C,QAAMQ,YAAYC,cAAcJ,IAAAA;AAChC,QAAM,CAACK,SAAAA,IAAa,MAAMd,QAAQe,KAAKH,SAAAA;AAEvCR,WAASY,cAAc;IAACC,mBAAmBH,SAAAA;;AAE3C,SAAOV;AACT;AAfsBN;;;ACdtB,SAASoB,gBAAgB;;;ACAlB,IAAMC,oBAAoB;AAE1B,IAAMC,aAAa;EAAEC,UAAU;AAAO;AAEtC,IAAMC,eAAe;EAAEC,SAAS;EAAOC,KAAK;AAAM;AAElD,IAAMC,iBAAiB;EAAEC,WAAW;EAAKF,KAAK;AAAI;AAElD,IAAMG,gBAAgB;EAAED,WAAW;EAAKF,KAAK;AAAI;AAEjD,IAAMI,sBAAsB,KAAKT,iBAAAA,IAAqBC,WAAWC,QAAQ,IAAIC,aAAaE,GAAG,IAAIC,eAAeD,GAAG;;;ADDnH,IAAMK,kCAAkC,wBAACC,iBAAAA;AAC9C,QAAMC,SAASC,SAASC,WAAWH,cAAcI,mBAAAA;AACjD,SAAOH;AACT,GAH+C;","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","isBlockBoundWitnessWithStorageMeta","isTransactionBoundWitnessWithStorageMeta","hydrateBlock","archivist","hash","maxDepth","minDepth","assertEx","bw","get","find","isBlockBoundWitnessWithStorageMeta","blkPayloads","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","assertEx","PayloadBuilder","isAnyPayload","StepSizes","hexToBigInt","toAddress","span","isTransfer","netBalancesForPayloads","payloads","span","balances","payload","isTransfer","from","address","amount","Object","entries","transfers","toAddress","hexToBigInt","hexToBigInt","span","isTransfer","netTransfersForPayloads","payloads","account","span","transfers","payload","isTransfer","from","address","amount","Object","entries","hexToBigInt","hexToBigInt","toHex","isObject","isNegativeBigInt","value","isObject","negative","isPositiveBigInt","positive","parseSignedBigInt","hexToBigInt","Error","toSignedBigInt","toHex","toPositiveBigInt","stepSize","calculateFramesFromRange","range","step","size","stepSize","start","Math","trunc","fitted","remaining","push","min","i","StepSizes","deepCalculateFramesFromRange","range","startingStep","StepSizes","length","fitted","remaining","step","newRemaining","newFittedFrames","newRemainingFrames","calculateFramesFromRange","push","i","toSorted","a","b","asHash","toSafeJsonString","asBlockBoundWitnessWithStorageMeta","StepSizes","blockFromBlockNumber","context","blockNumber","result","chainArchivist","get","head","currentBlock","asBlockBoundWitnessWithStorageMeta","at","required","block","jumpHash","previous","jumpBlockNumber","step","stepSize","StepSizes","entries","possibleJumpBlockNumber","asHash","step_hashes","newBlock","toSafeJsonString","Error","hashFromBlockNumber","context","blockNumber","blockFromBlockNumber","_hash","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","balancesStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","result","undefined","hash","payloads","hydrateBlock","chainArchivist","balances","address","balance","Object","entries","netBalancesForPayloads","toSignedBigInt","schema","BalancesStepSummarySchema","head","stepSize","step","StepSizes","indexOf","assertEx","join","summaryResult","summaryRepository","get","isAnyPayload","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","parseSignedBigInt","insert","finalResult","PayloadBuilder","addStorageMeta","asAddress","spanRootAsync","isDefined","asBlockBoundWitnessWithStorageMeta","balancesSummary","context","spanRootAsync","headResult","chainArchivist","get","head","headBoundWitness","asBlockBoundWitnessWithStorageMeta","at","required","rangeStart","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","summaries","Promise","all","map","range","balancesStepSummaryFromRange","balances","summary","address","balance","Object","entries","validAddress","asAddress","parseSignedBigInt","assertEx","PayloadBuilder","isAnyPayload","StepSizes","transfersStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","account","result","undefined","hash","payloads","hydrateBlock","chainArchivist","transfers","address","balance","Object","entries","netTransfersForPayloads","toSignedBigInt","schema","TransfersStepSummarySchema","head","stepSize","step","StepSizes","indexOf","assertEx","join","summaryResult","summaryRepository","get","isAnyPayload","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","transfer","parseSignedBigInt","insert","finalResult","PayloadBuilder","addStorageMeta","asAddress","spanRootAsync","isDefined","asBlockBoundWitnessWithStorageMeta","transfersSummary","context","spanRootAsync","headResult","chainArchivist","get","head","headBoundWitness","asBlockBoundWitnessWithStorageMeta","at","required","rangeStart","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","summaries","Promise","all","map","range","transfersStepSummaryFromRange","transfers","summary","address","transfer","Object","entries","validAddress","asAddress","parseSignedBigInt","z","globalRegistry","z","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","mnemonic","MnemonicStringZod","optional","port","coerce","number","globalRegistry","z","AppConfigZod","object","port","coerce","number","default","register","description","title","type","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","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","isDefined","isUndefined","globalRegistry","z","hasMongoConfig","config","isUndefined","isDefined","connectionString","database","domain","password","username","MongoConfigZod","object","string","min","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","Xl1CommonConfigSchema","object","LogConfigZod","shape","describe","ConfigZod","api","ApiConfigZod","default","parse","app","AppConfigZod","chain","ChainConfigZod","evm","EvmConfigZod","producer","ProducerConfigZod","storage","StorageConfigZod","telemetry","TelemetryConfigZod","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","toAddress","XYO_NETWORK_STAKING_ADDRESS","addressStakeWeight","stakeContract","staked","by","startEthBlock","endEthBlock","stakeAddedFilter","filters","StakeAdded","XYO_NETWORK_STAKING_ADDRESS","stakeAddedEvents","queryFilter","stakeRemovedFilter","StakeRemoved","stakeRemovedEvents","accountStakes","accountStakeCount","getStakeCountForAddress","blockTag","i","stake","getStake","push","ethStakedAddress","toAddress","prefix","toLowerCase","networkStakes","filter","s","totalStake","amount","totalWeight","addIndex","removeIndex","length","blockNumber","args","claimedRewards","_address","networkStakeStepAddressReward","address","_step","_block","networkStakeStepPoolRewards","_step","_block","networkStakeStepPoolRewardShares","_step","_block","networkStakeStepRewardAddressHistory","address","networkStakeStepRewardAddressShare","_address","_step","_block","Error","networkStakeStepRewardForStep","_step","networkStakeStepRewardPositionWeight","_position","_step","Error","networkStakeStepRewardPotentialPositionLoss","_position","_step","Error","networkStakeStepRewardRandomizer","_step","_block","Error","networkStakeStepRewardWeightForAddress","_address","_step","Error","toAddress","toAddress","XYO_NETWORK_STAKING_ADDRESS","startingStakes","stakeContract","staked","ethBlock","stakeAddedFilter","filters","StakeAdded","toAddress","XYO_NETWORK_STAKING_ADDRESS","prefix","stakeAddedEvents","queryFilter","stakeRemovedFilter","StakeRemoved","stakeRemovedEvents","stakes","event","by","args","toLowerCase","amount","filteredStakes","address","Object","entries","stakersAsOfBlock","stakeContract","staked","ethBlock","stakes","startingStakes","results","address","amount","Object","entries","push","toAddress","prefix","toAddress","XYO_NETWORK_STAKING_ADDRESS","totalStakeWeight","stakeContract","staked","startEthBlock","endEthBlock","stakeAddedFilter","filters","StakeAdded","XYO_NETWORK_STAKING_ADDRESS","stakeAddedEvents","queryFilter","stakeRemovedFilter","StakeRemoved","stakeRemovedEvents","stakes","startingStakes","totalWeight","addIndex","removeIndex","i","length","blockNumber","by","toAddress","args","toLowerCase","prefix","amount","Object","values","reduce","a","b","unclaimedRewards","_address","Error","assertEx","asTimePayload","TimeSchema","xl1BlockNumberToEthBlockNumber","context","xl1BlockNumber","blockHash","hashFromBlockNumber","hydratedBlock","hydrateBlock","chainArchivist","timePayload","asTimePayload","find","p","schema","TimeSchema","required","assertEx","ethereum","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","addStorageMeta","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","archivist","hash","tryHydrateTypedBoundWitness","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","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","isAllowedBlockPayloadWithHashStorageMeta","tryExtractElevatedHashesFromScript","strings","hashes","filter","str","startsWith","map","split","filterAs","h","asHash","extractElevatedHashesFromScript","filtered","assertEx","length","tryExtractElevatedHashes","tx","bw","payloads","script","p","includes","_hash","isAllowedBlockPayloadWithHashStorageMeta","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","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,7 +1,7 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
|
+
import type { XL1AmountInstance } from '@xyo-network/xl1-protocol';
|
|
3
4
|
import type { BlockWindowInstance, BlockWindowStateInstance, ValidatableInstance } from './modifiers/index.ts';
|
|
4
|
-
import type { XL1AmountInstance } from './XL1Amount.ts';
|
|
5
5
|
export interface AddressInstance extends ValidatableInstance {
|
|
6
6
|
address: Address;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Address.d.ts","sourceRoot":"","sources":["../../../src/instances/Address.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"Address.d.ts","sourceRoot":"","sources":["../../../src/instances/Address.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,KAAK,EACV,mBAAmB,EAAE,wBAAwB,EAAE,mBAAmB,EACnE,MAAM,sBAAsB,CAAA;AAE7B,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe,EAAE,wBAAwB;IACrF,OAAO,IAAI,UAAU,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAA;CAChE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShiftedBigIntConfig.d.ts","sourceRoot":"","sources":["../../../src/instances/ShiftedBigIntConfig.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf"}
|
|
1
|
+
{"version":3,"file":"ShiftedBigIntConfig.d.ts","sourceRoot":"","sources":["../../../src/instances/ShiftedBigIntConfig.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AttoXL1, FemtoXL1, MicroXL1, MilliXL1, NanoXL1, PicoXL1 } from '@xyo-network/xl1-protocol';
|
|
2
|
-
import {
|
|
2
|
+
import type { ShiftedBigIntConfig } from './ShiftedBigIntConfig.ts';
|
|
3
|
+
/** @deprecated use from @xyo-network/xl1-protocol instead */
|
|
3
4
|
export interface XL1AmountInstance {
|
|
4
5
|
value: AttoXL1;
|
|
5
6
|
to(places: bigint | number): bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XL1Amount.d.ts","sourceRoot":"","sources":["../../../src/instances/XL1Amount.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"XL1Amount.d.ts","sourceRoot":"","sources":["../../../src/instances/XL1Amount.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EACxD,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;IAEd,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAEnC,KAAK,EAAE,QAAQ,CAAA;IAEf,KAAK,EAAE,QAAQ,CAAA;IAEf,IAAI,EAAE,OAAO,CAAA;IAEb,IAAI,EAAE,OAAO,CAAA;IAEb,KAAK,EAAE,QAAQ,CAAA;IAEf,IAAI,EAAE,OAAO,CAAA;IAEb,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAA;CACvE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
|
-
export declare function networkStakeStepAddressReward(address: Address,
|
|
3
|
+
export declare function networkStakeStepAddressReward(address: Address, _step: number, _block: number): Promisable<Record<Address, bigint>>;
|
|
4
4
|
//# sourceMappingURL=networkStakeStepAddressReward.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepAddressReward.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepAddressReward.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"networkStakeStepAddressReward.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepAddressReward.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAElI"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
|
-
export declare function networkStakeStepPoolRewardShares(
|
|
3
|
+
export declare function networkStakeStepPoolRewardShares(_step: number, _block: number): Promisable<Record<Address, bigint>>;
|
|
4
4
|
//# sourceMappingURL=networkStakeStepPoolRewardShares.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepPoolRewardShares.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepPoolRewardShares.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gCAAgC,CAAC,
|
|
1
|
+
{"version":3,"file":"networkStakeStepPoolRewardShares.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepPoolRewardShares.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAEnH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
|
-
export declare function networkStakeStepPoolRewards(
|
|
3
|
+
export declare function networkStakeStepPoolRewards(_step: number, _block: number): Promisable<Record<Address, bigint>>;
|
|
4
4
|
//# sourceMappingURL=networkStakeStepPoolRewards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepPoolRewards.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepPoolRewards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,2BAA2B,CAAC,
|
|
1
|
+
{"version":3,"file":"networkStakeStepPoolRewards.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepPoolRewards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAE9G"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
|
-
export declare function networkStakeStepRewardAddressShare(
|
|
3
|
+
export declare function networkStakeStepRewardAddressShare(_address: Address, _step: number, _block: number): Promisable<[bigint, bigint]>;
|
|
4
4
|
//# sourceMappingURL=networkStakeStepRewardAddressShare.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepRewardAddressShare.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardAddressShare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,kCAAkC,CAAC,
|
|
1
|
+
{"version":3,"file":"networkStakeStepRewardAddressShare.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardAddressShare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEjI"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise';
|
|
2
|
-
export declare function networkStakeStepRewardForStep(
|
|
2
|
+
export declare function networkStakeStepRewardForStep(_step: number): Promisable<bigint>;
|
|
3
3
|
//# sourceMappingURL=networkStakeStepRewardForStep.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepRewardForStep.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardForStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,6BAA6B,CAAC,
|
|
1
|
+
{"version":3,"file":"networkStakeStepRewardForStep.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardForStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAE/E"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise';
|
|
2
|
-
export declare function networkStakeStepRewardPositionWeight(
|
|
2
|
+
export declare function networkStakeStepRewardPositionWeight(_position: bigint, _step: number): Promisable<number>;
|
|
3
3
|
//# sourceMappingURL=networkStakeStepRewardPositionWeight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepRewardPositionWeight.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardPositionWeight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,oCAAoC,CAAC,
|
|
1
|
+
{"version":3,"file":"networkStakeStepRewardPositionWeight.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardPositionWeight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,oCAAoC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAEzG"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise';
|
|
2
|
-
export declare function networkStakeStepRewardPotentialPositionLoss(
|
|
2
|
+
export declare function networkStakeStepRewardPotentialPositionLoss(_position: bigint, _step: number): Promisable<bigint>;
|
|
3
3
|
//# sourceMappingURL=networkStakeStepRewardPotentialPositionLoss.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepRewardPotentialPositionLoss.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardPotentialPositionLoss.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,2CAA2C,CAAC,
|
|
1
|
+
{"version":3,"file":"networkStakeStepRewardPotentialPositionLoss.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardPotentialPositionLoss.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,2CAA2C,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAEhH"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise';
|
|
2
|
-
export declare function networkStakeStepRewardRandomizer(
|
|
2
|
+
export declare function networkStakeStepRewardRandomizer(_step: number, _block: number): Promisable<bigint>;
|
|
3
3
|
//# sourceMappingURL=networkStakeStepRewardRandomizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepRewardRandomizer.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardRandomizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gCAAgC,CAAC,
|
|
1
|
+
{"version":3,"file":"networkStakeStepRewardRandomizer.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardRandomizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAElG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
|
-
export declare function networkStakeStepRewardWeightForAddress(
|
|
3
|
+
export declare function networkStakeStepRewardWeightForAddress(_address: Address, _step: number): Promisable<bigint>;
|
|
4
4
|
//# sourceMappingURL=networkStakeStepRewardWeightForAddress.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStakeStepRewardWeightForAddress.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardWeightForAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,sCAAsC,CAAC,
|
|
1
|
+
{"version":3,"file":"networkStakeStepRewardWeightForAddress.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/networkStakeStepRewardWeightForAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAE3G"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
|
-
export declare function unclaimedRewards(
|
|
3
|
+
export declare function unclaimedRewards(_address: Address): Promisable<bigint>;
|
|
4
4
|
//# sourceMappingURL=unclaimedRewards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unclaimedRewards.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/unclaimedRewards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"unclaimedRewards.d.ts","sourceRoot":"","sources":["../../../../src/steps/primitives/unclaimedRewards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAEtE"}
|
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.15.
|
|
4
|
+
"version": "1.15.2",
|
|
5
5
|
"description": "XYO Layer One SDK Protocol",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -46,25 +46,25 @@
|
|
|
46
46
|
"@xylabs/promise": "~5.0.11",
|
|
47
47
|
"@xylabs/telemetry": "~5.0.11",
|
|
48
48
|
"@xylabs/typeof": "~5.0.11",
|
|
49
|
-
"@xyo-network/account-model": "~5.1.
|
|
50
|
-
"@xyo-network/archivist-model": "~5.1.
|
|
51
|
-
"@xyo-network/boundwitness-builder": "~5.1.
|
|
52
|
-
"@xyo-network/boundwitness-model": "~5.1.
|
|
53
|
-
"@xyo-network/payload-builder": "~5.1.
|
|
54
|
-
"@xyo-network/payload-model": "~5.1.
|
|
49
|
+
"@xyo-network/account-model": "~5.1.3",
|
|
50
|
+
"@xyo-network/archivist-model": "~5.1.3",
|
|
51
|
+
"@xyo-network/boundwitness-builder": "~5.1.3",
|
|
52
|
+
"@xyo-network/boundwitness-model": "~5.1.3",
|
|
53
|
+
"@xyo-network/payload-builder": "~5.1.3",
|
|
54
|
+
"@xyo-network/payload-model": "~5.1.3",
|
|
55
55
|
"@xyo-network/typechain": "^4.0.8",
|
|
56
|
-
"@xyo-network/wallet": "~5.1.
|
|
57
|
-
"@xyo-network/wallet-model": "~5.1.
|
|
58
|
-
"@xyo-network/xl1-protocol": "~1.12.
|
|
59
|
-
"zod": "~4.1.
|
|
56
|
+
"@xyo-network/wallet": "~5.1.3",
|
|
57
|
+
"@xyo-network/wallet-model": "~5.1.3",
|
|
58
|
+
"@xyo-network/xl1-protocol": "~1.12.40",
|
|
59
|
+
"zod": "~4.1.11"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@types/node": "~24.
|
|
62
|
+
"@types/node": "~24.5.2",
|
|
63
63
|
"@xylabs/ts-scripts-yarn3": "~7.1.7",
|
|
64
64
|
"@xylabs/tsconfig": "~7.1.7",
|
|
65
|
-
"@xyo-network/account": "~5.1.
|
|
66
|
-
"@xyo-network/boundwitness-validator": "~5.1.
|
|
67
|
-
"eslint": "^9.
|
|
65
|
+
"@xyo-network/account": "~5.1.3",
|
|
66
|
+
"@xyo-network/boundwitness-validator": "~5.1.3",
|
|
67
|
+
"eslint": "^9.36.0",
|
|
68
68
|
"typescript": "~5.9.2",
|
|
69
69
|
"vitest": "~3.2.4"
|
|
70
70
|
},
|
package/src/instances/Address.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex'
|
|
2
2
|
import type { Promisable } from '@xylabs/promise'
|
|
3
|
+
import type { XL1AmountInstance } from '@xyo-network/xl1-protocol'
|
|
3
4
|
|
|
4
5
|
import type {
|
|
5
6
|
BlockWindowInstance, BlockWindowStateInstance, ValidatableInstance,
|
|
6
7
|
} from './modifiers/index.ts'
|
|
7
|
-
import type { XL1AmountInstance } from './XL1Amount.ts'
|
|
8
8
|
|
|
9
9
|
export interface AddressInstance extends ValidatableInstance {
|
|
10
10
|
address: Address
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
/* eslint-disable sonarjs/deprecation */
|
|
1
2
|
/* eslint-disable @typescript-eslint/member-ordering */
|
|
2
3
|
|
|
3
4
|
import type {
|
|
4
5
|
AttoXL1, FemtoXL1, MicroXL1, MilliXL1, NanoXL1, PicoXL1,
|
|
5
6
|
} from '@xyo-network/xl1-protocol'
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
+
import type { ShiftedBigIntConfig } from './ShiftedBigIntConfig.ts'
|
|
8
9
|
|
|
10
|
+
/** @deprecated use from @xyo-network/xl1-protocol instead */
|
|
9
11
|
export interface XL1AmountInstance {
|
|
10
12
|
value: AttoXL1
|
|
11
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex'
|
|
2
2
|
import type { Promisable } from '@xylabs/promise'
|
|
3
3
|
|
|
4
|
-
export function networkStakeStepAddressReward(address: Address,
|
|
4
|
+
export function networkStakeStepAddressReward(address: Address, _step: number, _block: number): Promisable<Record<Address, bigint>> {
|
|
5
5
|
return { [address]: 0n }
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex'
|
|
2
2
|
import type { Promisable } from '@xylabs/promise'
|
|
3
3
|
|
|
4
|
-
export function networkStakeStepPoolRewardShares(
|
|
4
|
+
export function networkStakeStepPoolRewardShares(_step: number, _block: number): Promisable<Record<Address, bigint>> {
|
|
5
5
|
return {}
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex'
|
|
2
2
|
import type { Promisable } from '@xylabs/promise'
|
|
3
3
|
|
|
4
|
-
export function networkStakeStepPoolRewards(
|
|
4
|
+
export function networkStakeStepPoolRewards(_step: number, _block: number): Promisable<Record<Address, bigint>> {
|
|
5
5
|
return {}
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex'
|
|
2
2
|
import type { Promisable } from '@xylabs/promise'
|
|
3
3
|
|
|
4
|
-
export function networkStakeStepRewardAddressShare(
|
|
4
|
+
export function networkStakeStepRewardAddressShare(_address: Address, _step: number, _block: number): Promisable<[bigint, bigint]> {
|
|
5
5
|
throw new Error('Method not implemented.')
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise'
|
|
2
2
|
|
|
3
|
-
export function networkStakeStepRewardPositionWeight(
|
|
3
|
+
export function networkStakeStepRewardPositionWeight(_position: bigint, _step: number): Promisable<number> {
|
|
4
4
|
throw new Error('Method not implemented.')
|
|
5
5
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise'
|
|
2
2
|
|
|
3
|
-
export function networkStakeStepRewardPotentialPositionLoss(
|
|
3
|
+
export function networkStakeStepRewardPotentialPositionLoss(_position: bigint, _step: number): Promisable<bigint> {
|
|
4
4
|
throw new Error('Method not implemented.')
|
|
5
5
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise'
|
|
2
2
|
|
|
3
|
-
export function networkStakeStepRewardRandomizer(
|
|
3
|
+
export function networkStakeStepRewardRandomizer(_step: number, _block: number): Promisable<bigint> {
|
|
4
4
|
throw new Error('Method not implemented.')
|
|
5
5
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex'
|
|
2
2
|
import type { Promisable } from '@xylabs/promise'
|
|
3
3
|
|
|
4
|
-
export function networkStakeStepRewardWeightForAddress(
|
|
4
|
+
export function networkStakeStepRewardWeightForAddress(_address: Address, _step: number): Promisable<bigint> {
|
|
5
5
|
throw new Error('Method not implemented.')
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex'
|
|
2
2
|
import type { Promisable } from '@xylabs/promise'
|
|
3
3
|
|
|
4
|
-
export function unclaimedRewards(
|
|
4
|
+
export function unclaimedRewards(_address: Address): Promisable<bigint> {
|
|
5
5
|
throw new Error('Method not implemented.')
|
|
6
6
|
}
|