@xyo-network/xl1-protocol 1.4.3 → 1.4.4

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/index.d.ts CHANGED
@@ -21,53 +21,36 @@ interface OpenTelemetryProviders {
21
21
  traceProvider?: TracerProvider;
22
22
  }
23
23
 
24
- type XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto';
25
- type TypingFunc<T extends bigint> = {
26
- (value: bigint): T;
27
- toAtto: () => AttoXL1;
28
- };
24
+ type TypingFunc<T extends bigint> = (value: bigint) => T;
29
25
  type XL1 = bigint & {
30
26
  readonly _tag: 'XL1';
31
27
  };
32
- declare function XL1(value: bigint): XL1 & {
33
- toAtto(): AttoXL1;
34
- };
28
+ declare const XL1: TypingFunc<XL1>;
35
29
  type MilliXL1 = bigint & {
36
30
  readonly _tag: 'MilliXL1';
37
31
  };
38
- declare function MilliXL1(value: bigint): MilliXL1 & {
39
- toAtto(): AttoXL1;
40
- };
32
+ declare const MilliXL1: TypingFunc<MilliXL1>;
41
33
  type MicroXL1 = bigint & {
42
34
  readonly _tag: 'MicroXL1';
43
35
  };
44
- declare function MicroXL1(value: bigint): MicroXL1 & {
45
- toAtto(): AttoXL1;
46
- };
36
+ declare const MicroXL1: TypingFunc<MicroXL1>;
47
37
  type NanoXL1 = bigint & {
48
38
  readonly _tag: 'NanoXL1';
49
39
  };
50
- declare function NanoXL1(value: bigint): NanoXL1 & {
51
- toAtto(): AttoXL1;
52
- };
40
+ declare const NanoXL1: TypingFunc<NanoXL1>;
53
41
  type PicoXL1 = bigint & {
54
42
  readonly _tag: 'PicoXL1';
55
43
  };
56
- declare function PicoXL1(value: bigint): PicoXL1 & {
57
- toAtto(): AttoXL1;
58
- };
44
+ declare const PicoXL1: TypingFunc<PicoXL1>;
59
45
  type FemtoXL1 = bigint & {
60
46
  readonly _tag: 'FemtoXL1';
61
47
  };
62
- declare function FemtoXL1(value: bigint): FemtoXL1 & {
63
- toAtto(): AttoXL1;
64
- };
48
+ declare const FemtoXL1: TypingFunc<FemtoXL1>;
65
49
  type AttoXL1 = bigint & {
66
50
  readonly _tag: 'AttoXL1';
67
51
  };
68
- declare function AttoXL1(value: bigint): AttoXL1 & {
69
- toAtto(): AttoXL1;
70
- };
52
+ declare const AttoXL1: TypingFunc<AttoXL1>;
53
+ type XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto';
71
54
  declare const XL1ConvertDict: Record<XL1Units, number>;
72
55
  declare const XL1Places: Record<XL1Units, bigint>;
73
56
  declare const AttoXL1ConvertFactor: Record<XL1Units, bigint>;
@@ -253,31 +236,11 @@ interface ChainAnalyzer<T extends Payload = Payload> {
253
236
  declare const StepSizes: readonly [10, 105, 1103, 11576, 121551, 1276282, 13400956];
254
237
 
255
238
  declare const TransactionGasCosts: {
256
- readonly characterStorage: bigint & {
257
- readonly _tag: "MicroXL1";
258
- } & {
259
- toAtto(): AttoXL1;
260
- };
261
- readonly payloadValidation: bigint & {
262
- readonly _tag: "MicroXL1";
263
- } & {
264
- toAtto(): AttoXL1;
265
- };
266
- readonly signatureValidation: bigint & {
267
- readonly _tag: "MicroXL1";
268
- } & {
269
- toAtto(): AttoXL1;
270
- };
271
- readonly hashValidation: bigint & {
272
- readonly _tag: "MicroXL1";
273
- } & {
274
- toAtto(): AttoXL1;
275
- };
276
- readonly balanceValidation: bigint & {
277
- readonly _tag: "MicroXL1";
278
- } & {
279
- toAtto(): AttoXL1;
280
- };
239
+ readonly characterStorage: MicroXL1;
240
+ readonly payloadValidation: MicroXL1;
241
+ readonly signatureValidation: MicroXL1;
242
+ readonly hashValidation: MicroXL1;
243
+ readonly balanceValidation: MicroXL1;
281
244
  };
282
245
 
283
246
  interface ReadRepository<TId, TData> {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../src/Initializable.ts","../src/OpenTelemetryProviders.ts","../src/xl1/XL1.ts","../src/fields/Addressable.ts","../src/fields/BlockDuration.ts","../src/fields/BlockNumber.ts","../src/fields/ChainReference.ts","../src/payload/elevatable/Executable.ts","../src/payload/elevatable/ChainStakeIntent.ts","../src/payload/elevatable/Hash.ts","../src/payload/elevatable/TransferPayload.ts","../src/transaction/TransactionFeesFields.ts","../src/transaction/TransactionBoundWitness.ts","../src/transaction/HydratedTransaction.ts","../src/block/AllowedBlockPayload.ts","../src/block/BlockBoundWitness.ts","../src/block/HydratedBlock.ts","../src/chain/ChainAnalyzer.ts","../src/constants/StepSizes.ts","../src/constants/TransactionGasCosts.ts","../src/repository/Repository.ts","../src/repository/TransactionReadRepository.ts","../src/repository/TransactionRepositoryIterator.ts","../src/repository/TransactionWriteRepository.ts","../src/repository/TransactionRepository.ts","../src/services/AccountBalanceService.ts","../src/services/BlockProducer.ts","../src/services/Service.ts","../src/services/BlockReward.ts","../src/services/Chain/ChainContractViewer.ts","../src/services/Chain/ChainIdentification.ts","../src/services/Chain/ChainInformation.ts","../src/services/Chain/ChainStaker.ts","../src/services/Chain/ChainStakeViewer.ts","../src/services/Chain/ChainService.ts","../src/services/Election.ts","../src/services/stakeIntent/ChainIndexingServiceStateSchema.ts","../src/services/stakeIntent/StakeIntentService.ts","../src/services/ChainServiceCollection.ts","../src/services/Params.ts","../src/services/PendingTransactionsService.ts","../src/iterator/ChainIteratorEventData.ts","../src/iterator/ChainIterator.ts","../src/network/NetworkId.ts","../src/network/Status.ts","../src/provider/v1/XyoDataLake.ts","../src/provider/v1/XyoNetwork.ts","../src/provider/v1/XyoRunner.ts","../src/provider/v1/XyoSigner.ts","../src/provider/v1/XyoViewer.ts","../src/provider/v1/XyoWallet.ts","../src/provider/v1/XyoProvider.ts","../src/validation/block/BlockValidationFunction.ts","../src/validation/block/HydratedBlockStateValidationFunction.ts","../src/validation/block/HydratedBlockValidationFunction.ts","../src/validation/boundwitness/BoundWitnessValidationFunction.ts","../src/validation/boundwitness/HydratedBoundWitnessValidationFunction.ts","../src/validation/payload/InBlockPayloadValidationFunction.ts","../src/validation/transaction/HydratedTransactionStateValidationFunction.ts","../src/validation/transaction/HydratedTransactionValidationFunction.ts"],"sourcesContent":["import type { Promisable } from '@xylabs/promise'\n\nexport type Initializable<T, R> = (params: T) => Promisable<R>\n","import type { MeterProvider, TracerProvider } from '@opentelemetry/api'\n\nexport interface OpenTelemetryProviders {\n meterProvider?: MeterProvider\n traceProvider?: TracerProvider\n}\n","export type XL1 = bigint & { readonly _tag: 'XL1' } // 1e-18\nexport type MilliXL1 = bigint & { readonly _tag: 'MilliXL1' } // 1e-15 [XL1 * 1e3 = milliXL1] [milliXL1 / 1e3 = XL1]\nexport type MicroXL1 = bigint & { readonly _tag: 'MicroXL1' } // 1e-12 [XL1 * 1e6 = microXL1] [microXL1 / 1e6 = XL1]\nexport type NanoXL1 = bigint & { readonly _tag: 'NanoXL1' } // 1e-9 [XL1 * 1e9 = nanoXL1] [nanoXL1 / 1e9 = XL1]\nexport type PicoXL1 = bigint & { readonly _tag: 'PicoXL1' } // 1e-6 [XL1 * 1e12 = picoXL1] [picoXL1 / 1e12 = XL1]\nexport type FemtoXL1 = bigint & { readonly _tag: 'FemtoXL1' } // 1e-3 [XL1 * 1e15 = femtoXL1] [femtoXL1 / 1e15 = XL1]\nexport type AttoXL1 = bigint & { readonly _tag: 'AttoXL1' } // 1e-0 [XL1 * 1e18 = attoXL1] [attoXL1 / 1e18 = XL1]\n\ntype XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto'\n\nexport type TypingFunc<T extends bigint> = {\n (value: bigint): T\n toAtto: () => AttoXL1\n}\n\nexport function XL1(value: bigint): XL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as XL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.xl1)\n }\n return Reflect.get(target, prop)\n },\n }) as XL1 & { toAtto(): AttoXL1 }\n}\n\nexport function MilliXL1(value: bigint): MilliXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as MilliXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.milli)\n }\n return Reflect.get(target, prop)\n },\n }) as MilliXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function MicroXL1(value: bigint): MicroXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as MicroXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.micro)\n }\n return Reflect.get(target, prop)\n },\n }) as MicroXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function NanoXL1(value: bigint): NanoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as NanoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.nano)\n }\n return Reflect.get(target, prop)\n },\n }) as NanoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function PicoXL1(value: bigint): PicoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as PicoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.pico)\n }\n return Reflect.get(target, prop)\n },\n }) as PicoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function FemtoXL1(value: bigint): FemtoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as FemtoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.femto)\n }\n return Reflect.get(target, prop)\n },\n }) as FemtoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function AttoXL1(value: bigint): AttoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as AttoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.atto)\n }\n return Reflect.get(target, prop)\n },\n }) as AttoXL1 & { toAtto(): AttoXL1 }\n}\n\n/** @deprecated use XL1Places and xl1ConvertFactor(unit) instead */\nexport const XL1ConvertDict: Record<XL1Units, number> = {\n xl1: 18,\n milli: 15,\n micro: 12,\n nano: 9,\n pico: 6,\n femto: 3,\n atto: 0,\n} as const\n\nexport const XL1Places: Record<XL1Units, bigint> = {\n xl1: 18n,\n milli: 15n,\n micro: 12n,\n nano: 9n,\n pico: 6n,\n femto: 3n,\n atto: 0n,\n} as const\n\n/**\n * Convert factor by which a respective unit is multiplied to convert it to AttoXL1 or\n * by which AttoXL1 is divided to convert it to respective unit is multiplied.\n */\nexport const AttoXL1ConvertFactor: Record<XL1Units, bigint> = {\n xl1: 10n ** XL1Places.xl1,\n milli: 10n ** XL1Places.milli,\n micro: 10n ** XL1Places.micro,\n nano: 10n ** XL1Places.nano,\n pico: 10n ** XL1Places.pico,\n femto: 10n ** XL1Places.femto,\n atto: 10n ** XL1Places.atto,\n} as const\n\n/** @deprecated use AttoXL1ConvertFactor instead */\nexport function xl1ConvertFactor(unit: XL1Units) {\n return 10n ** XL1Places[unit]\n}\n","import type { Address } from '@xylabs/hex'\n\n// NOTE: Minimal interface in case of reuse across validators, producers, wallets, modules, etc.\nexport interface Addressable {\n address: Address\n}\n","export interface BlockStart {\n /**\n * The block at which the duration starts\n */\n nbf: number\n}\n\nexport interface BlockEnd {\n /**\n * The block at which the duration ends\n */\n exp: number\n}\n\n/**\n * A optional duration referenced to block numbers\n */\nexport interface OptionalBlockDuration extends Partial<BlockStart>, Partial<BlockEnd> {}\n\n/**\n * A duration referenced to block numbers\n */\nexport interface BlockDuration extends BlockStart, BlockEnd {}\n","import type { Hex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nexport const BlockNumberSchema = 'network.xyo.chain.block.number' as const\nexport type BlockNumberSchema = typeof BlockNumberSchema\n\nexport interface BlockNumberFields {\n /**\n * The block number\n */\n block: Hex\n /**\n * The chain id\n */\n chain?: Hex\n}\n/**\n * The number of a block\n */\nexport type BlockNumber = Payload<BlockNumberFields, BlockNumberSchema>\n\n/**\n * Identity function for determining if an object is a BlockNumber\n */\nexport const isBlockNumber = isPayloadOfSchemaType<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumber = AsObjectFactory.create<BlockNumber>(isBlockNumber)\nexport const asOptionalBlockNumber = AsObjectFactory.createOptional<BlockNumber>(isBlockNumber)\n\n/**\n * Identity function for determining if an object is a BlockNumber with sources\n */\nexport const isBlockNumberWithSources = isPayloadOfSchemaTypeWithSources<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumberWithSources = AsObjectFactory.create<WithSources<BlockNumber>>(isBlockNumberWithSources)\nexport const asOptionalBlockNumberWithSources = AsObjectFactory.createOptional<WithSources<BlockNumber>>(isBlockNumberWithSources)\n","import type { Address } from '@xylabs/hex'\n\n/**\n * Required info for a chain reference\n */\nexport interface ChainReference {\n /**\n * The contract address referenced by the chain\n */\n chain: Address\n}\n","import type { Address } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport { isAnyPayload } from '@xyo-network/payload-model'\n\nexport interface FromFields {\n // the address that is treated as the source of this action\n from: Address\n}\n\nexport const hasFrom = (value: unknown): value is FromFields => {\n return (value as FromFields).from !== undefined\n}\n\nexport interface ExecutableFields {\n script: string[]\n}\n\nexport type Executable<T extends EmptyObject = EmptyObject> = T & ExecutableFields\nexport type OptionalExecutable<T extends EmptyObject = EmptyObject> = T & Partial<ExecutableFields>\n\nexport const isExecutable = <T extends EmptyObject>(value: T | undefined): value is Executable<T> => {\n return isAnyPayload(value) && Array.isArray((value as unknown as ExecutableFields).script)\n}\n\nexport const asExecutable = <T extends EmptyObject>(value: T | undefined): Executable<T> | undefined => {\n return isExecutable(value)\n ? value as unknown as Executable<T>\n : undefined\n}\n","import { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const ChainStakeIntentSchema = 'network.xyo.chain.stake.intent' as const\nexport type ChainStakeIntentSchema = typeof ChainStakeIntentSchema\n\nexport type Intent = 'producer' // | 'bank'\n\nexport interface ChainStakeIntentFields extends BlockDuration, FromFields {\n /*\n * The intent of the staking\n */\n intent: Intent\n}\n\nexport type ChainStakeIntent = Payload<ChainStakeIntentFields, ChainStakeIntentSchema>\n\nexport const isChainStakeIntent = (x?: unknown | null): x is ChainStakeIntent => {\n return isPayloadOfSchemaType<ChainStakeIntent>(ChainStakeIntentSchema)(x)\n && asNonNegativeInteger(x.nbf) !== undefined\n && asNonNegativeInteger(x.exp) !== undefined\n}\nexport const asChainStakeIntent = AsObjectFactory.create(isChainStakeIntent)\nexport const asOptionalChainStakeIntent = AsObjectFactory.createOptional(isChainStakeIntent)\n\nconst asNonNegativeInteger = (num: number) => {\n return (Number.isInteger(num) && num >= 0) ? num : undefined\n}\n","import type { Hash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const HashSchema = 'network.xyo.hash' as const\nexport type HashSchema = typeof HashSchema\n\nexport interface HashFields {\n hash: Hash\n}\n\nexport type HashPayload = Payload<HashFields, HashSchema>\n\nexport const isHashPayload = isPayloadOfSchemaType<HashPayload>(HashSchema)\n\nexport const asHashPayload = AsObjectFactory.create(isHashPayload)\nexport const asHashPayloadWithStorageMeta = AsObjectFactory.create(isHashPayload)\nexport const asOptionalHashPayload = AsObjectFactory.createOptional(isHashPayload)\n","import type {\n Address,\n Hex,\n} from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const TransferSchema = 'network.xyo.transfer' as const\nexport type TransferSchema = typeof TransferSchema\n\nexport interface TransferFields extends FromFields {\n epoch: number\n // the amount that is being sent to another address\n transfers: Record<Address, Hex>\n}\n\n// if this payload is included in a boundwitness, it needs to be available for inspection to be included in block\nexport type Transfer = Payload<TransferFields, TransferSchema>\n\nexport const isTransfer = isPayloadOfSchemaType<Transfer>(TransferSchema)\n\nexport const asTransfer = AsObjectFactory.create(isTransfer)\nexport const asOptionalTransfer = AsObjectFactory.createOptional(isTransfer)\n","import type { Hex } from '@xylabs/hex'\n\nimport type { AttoXL1 } from '../xl1/index.ts'\nimport { MicroXL1 } from '../xl1/index.ts'\n\nexport interface TransactionFeesBigInt {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n}\n\nexport type TransactionFeesHex = {\n [K in keyof TransactionFeesBigInt]: Hex;\n}\n\nexport interface TransactionFeesFields {\n fees: TransactionFeesHex\n}\n\nexport const minTransactionFees: TransactionFeesBigInt = {\n base: MicroXL1(1000n).toAtto(),\n gasPrice: MicroXL1(1n).toAtto(),\n gasLimit: MicroXL1(1000n).toAtto(),\n priority: MicroXL1(0n).toAtto(),\n} as const\n\nexport const defaultTransactionFees: TransactionFeesBigInt = {\n base: minTransactionFees.base,\n gasPrice: MicroXL1(10n).toAtto(),\n gasLimit: MicroXL1(1_000_000n).toAtto(),\n priority: minTransactionFees.priority,\n} as const\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness, Signed } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\nimport type { FromFields, OptionalExecutable } from '#payload'\n\nimport type { TransactionFeesFields } from './TransactionFeesFields.ts'\n\nexport interface TransactionBoundWitnessFields extends BlockDuration, TransactionFeesFields {\n chain: Address\n}\n\nexport type TransactionBoundWitness = BoundWitness<TransactionBoundWitnessFields & OptionalExecutable & FromFields>\n\nexport const isTransactionBoundWitness = (value: unknown): value is TransactionBoundWitness => {\n const typedObj = value as TransactionBoundWitness\n return isBoundWitness(value)\n && typedObj.chain !== undefined\n && typedObj.fees !== undefined\n && typedObj.exp !== undefined\n && typedObj.nbf !== undefined\n}\n\nexport const isSignedTransactionBoundWitness = (value: unknown): value is Signed<TransactionBoundWitness> => {\n return isTransactionBoundWitness(value) && isSigned(value)\n}\n\nexport const isSigned = <T extends BoundWitness = BoundWitness>(value: unknown): value is Signed<T> =>\n isBoundWitness(value)\n && value.$signatures.length === value.addresses.length\n && value.addresses.length > 0\n\nexport const isTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<TransactionBoundWitness> =>\n isTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const isSignedTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<Signed<TransactionBoundWitness>> =>\n isSignedTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const asTransactionBoundWitness = AsObjectFactory.create(isTransactionBoundWitness)\nexport const asOptionalTransactionBoundWitness = AsObjectFactory.createOptional(isTransactionBoundWitness)\n\nexport const asTransactionBoundWitnessWithStorageMeta = AsObjectFactory.create(isTransactionBoundWitnessWithStorageMeta)\nexport const asOptionalTransactionBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isTransactionBoundWitnessWithStorageMeta)\n","import type { Signed } from '@xyo-network/boundwitness-model'\nimport type {\n Payload, WithHashStorageMeta, WithStorageMeta,\n} from '@xyo-network/payload-model'\n\nimport type { TransactionBoundWitness } from './TransactionBoundWitness.ts'\n\nexport type HydratedTransaction<T extends TransactionBoundWitness = TransactionBoundWitness, P extends Payload = Payload> = [T, P[]]\n\nexport type HydratedTransactionWithStorageMeta<T extends HydratedTransaction = HydratedTransaction>\n = [WithStorageMeta<T[0]>, WithStorageMeta<T[1][number]>[]]\n\nexport type HydratedTransactionWithHashStorageMeta<T extends HydratedTransaction = HydratedTransaction>\n = [WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]\n\nexport type SignedHydratedTransaction<T extends HydratedTransaction = HydratedTransaction> = [Signed<T[0]>, T[1][number][]] & HydratedTransaction\n\nexport type SignedHydratedTransactionWithStorageMeta<T extends HydratedTransaction = HydratedTransaction>\n = [WithStorageMeta<Signed<T[0]>>, WithStorageMeta<T[1][number]>[]] & SignedHydratedTransaction<T> & HydratedTransaction\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isHashStorageMeta, isSchema } from '@xyo-network/payload-model'\nimport type { SchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport { isSchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\nimport type {\n ChainStakeIntent, HashPayload, Transfer,\n} from '#payload'\nimport {\n ChainStakeIntentSchema, HashSchema, isChainStakeIntent, isHashPayload, isTransfer, TransferSchema,\n} from '#payload'\nimport { isTransactionBoundWitness, type TransactionBoundWitness } from '#transaction'\n\nexport type AllowedBlockPayload = Transfer | ChainStakeIntent | SchemaPayload | TransactionBoundWitness | HashPayload\nexport const AllowedBlockPayloadSchemas: Schema[] = [TransferSchema, ChainStakeIntentSchema, SchemaSchema, BoundWitnessSchema, HashSchema]\nexport type AllowedBlockPayloadSchema = typeof AllowedBlockPayloadSchemas[number]\n\nexport const isAllowedBlockPayloadSchema = (value: unknown): value is AllowedBlockPayloadSchema => {\n return isSchema(value) && AllowedBlockPayloadSchemas.includes(value)\n}\n\nexport const isAllowedBlockPayload = (value: unknown): value is AllowedBlockPayload => {\n return isTransfer(value) || isChainStakeIntent(value) || isSchemaPayload(value) || isTransactionBoundWitness(value) || isHashPayload(value)\n}\n\nexport const isAllowedBlockPayloadWithHashStorageMeta = (value: unknown): value is WithStorageMeta<AllowedBlockPayload> => {\n return isAllowedBlockPayload(value) && isHashStorageMeta(value)\n}\n","import type { Hash, Hex } from '@xylabs/hex'\nimport { isHex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface BlockBoundWitnessMeta {\n $epoch: number\n}\n\nexport interface BlockBoundWitnessFields {\n /** Block number */\n block: number\n /** Chain id - this should be \"0\" for the genesis block */\n chain: Hex\n /** Previous block hash if not block 0 */\n previous: Hash | null /* the previous block hash */\n /** Version of the protocol being used major * 1,000,000 + minor * 1,000 + patch */\n protocol: number\n /** Step hashes */\n step_hashes: Hex[]\n}\n\nexport type BlockBoundWitness = BoundWitness<BlockBoundWitnessFields & BlockBoundWitnessMeta>\n\nexport const isBlockBoundWitness = (value: unknown): value is BlockBoundWitness => {\n const typedObj = value as BlockBoundWitness\n return isBoundWitness(value)\n && Number.isInteger(typedObj.block)\n && isHex(typedObj.chain)\n}\n\nexport const isBlockBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<BlockBoundWitness> => {\n return isBlockBoundWitness(value) && isStorageMeta(value)\n}\n\nexport const asBlockBoundWitness = AsObjectFactory.create(isBlockBoundWitness)\nexport const asOptionalBlockBoundWitness = AsObjectFactory.createOptional(isBlockBoundWitness)\n\nexport const asBlockBoundWitnessWithStorageMeta = AsObjectFactory.create(isBlockBoundWitnessWithStorageMeta)\nexport const asOptionalBlockBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isBlockBoundWitnessWithStorageMeta)\n","import type { Signed } from '@xyo-network/boundwitness-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\n\nimport type { BlockBoundWitness } from './BlockBoundWitness.ts'\n\nexport type HydratedBlock = [WithStorageMeta<BlockBoundWitness>, WithStorageMeta<Payload>[]]\n\nexport type SignedHydratedBlock = [WithStorageMeta<Signed<BlockBoundWitness>>, WithStorageMeta<Payload>[]] & HydratedBlock\n","import type { Promisable } from '@xylabs/promise'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport type { HydratedBlock } from '#block'\n\nexport interface ChainAnalyzer<T extends Payload = Payload> {\n onBlock(block: HydratedBlock): Promisable<boolean>\n result(): T\n shouldContinue(): boolean\n}\n","export const StepSizes = [10, 105, 1103, 11_576, 121_551, 1_276_282, 13_400_956] as const\n","import { MicroXL1 } from '../xl1/index.ts'\n\nexport const TransactionGasCosts = {\n /**\n * The cost of storing each character that is added to the chain\n * This includes the transaction JSON and all the elevated payloads' JSON\n */\n characterStorage: MicroXL1(10n),\n\n /** The cost of static validating every payload that will be included in the chain */\n payloadValidation: MicroXL1(1000n),\n\n /** The cost of validating each signature that will be included in the chain */\n signatureValidation: MicroXL1(1000n),\n\n /** The cost of validating each hash that will be included in the chain */\n hashValidation: MicroXL1(100n),\n\n /** The cost of validating a balance state, triggered by a Transfer payload or gas collection */\n balanceValidation: MicroXL1(100n),\n} as const\n\n/** Gas Calculation\n *\n * 1 Million microXL1 (mXL1) = 1 XL1\n *\n * Gas amount is calculated as follows:\n *\n * 1. Each byte in the transaction cost 10 gas\n * 2. Each payload validation in the transaction costs 1000 gas\n * 3. Each signature verification in the transaction costs 1000 gas\n * 4. Each hash validation in the transaction costs 100 gas\n * 5. Each balance validation in the transaction costs 100 gas\n * 6. Processing/Compute/Storage Cost?\n * 7. operation Costs?\n *\n * The total gas cost is calculated by multiplying the gas amount by the gas price.\n *\n * minGasPrice is initially set to 100 mXL1\n * minBase is initially set to 1000 mXL1\n * minPriority is always 0 mXL1, but can be set to increase the priority of the transaction\n *\n */\n","export interface ReadRepository<TId, TData> {\n get(id: TId): Promise<TData | undefined>\n}\n\nexport interface IterableRepository<TId, TData> {\n next(id: TId): Promise<TData | undefined>\n}\n\nexport interface WriteRepository<TData, TResp> {\n insert(data: TData): Promise<TResp>\n}\n","import type { HydratedTransaction, TransactionBoundWitness } from '#transaction'\n\nimport type { ReadRepository } from './Repository.ts'\n\nexport interface TransactionReadRepository extends ReadRepository<TransactionBoundWitness, HydratedTransaction> {}\n","import type { HydratedTransaction, TransactionBoundWitness } from '#transaction'\n\nimport type { IterableRepository } from './Repository.ts'\n\nexport interface TransactionRepositoryIterator extends IterableRepository<TransactionBoundWitness, HydratedTransaction> {}\n","import type { HydratedTransaction } from '#transaction'\n\nimport type { WriteRepository } from './Repository.ts'\n\nexport interface TransactionWriteRepository extends WriteRepository<HydratedTransaction, boolean> {}\n","import type { TransactionReadRepository } from './TransactionReadRepository.ts'\nimport type { TransactionRepositoryIterator } from './TransactionRepositoryIterator.ts'\nimport type { TransactionWriteRepository } from './TransactionWriteRepository.ts'\n\nexport interface TransactionRepository extends TransactionReadRepository, TransactionWriteRepository {}\n\nexport interface ReadonlyIterableTransactionRepository extends TransactionReadRepository, TransactionRepositoryIterator {}\n\nexport interface IterableTransactionRepository extends TransactionRepository, TransactionRepositoryIterator {}\n","import type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\n\nexport interface AccountBalanceService {\n getBalanceValue?: (address: Address) => bigint\n getBalanceValues?: Record<Address, bigint>\n\n getBalance(address: Address): Hex\n getBalances(): Record<Address, Hex>\n sync(head: Hash): Promise<void>\n}\n","import type { BlockBoundWitness, HydratedBlock } from '#block'\nimport type { Addressable } from '#fields'\nimport type { IterableRepository } from '#repository'\n\nexport type NextBlockProducer = IterableRepository<BlockBoundWitness, HydratedBlock>\n\nexport interface BlockProducer extends Addressable, NextBlockProducer {}\n","import type { Meter, Tracer } from '@opentelemetry/api'\nimport type { Logger } from '@xylabs/logger'\n\nexport type ServiceName = Exclude<string, 'reserved-service-name-value'>\n\nexport interface Service {\n logger?: Logger\n meter?: Meter\n tracer?: Tracer\n}\n","import type { Promisable } from '@xylabs/promise'\n\nimport type { Service } from './Service.ts'\n\nexport interface BlockRewardService extends Service {\n getRewardForBlock(block: bigint): Promisable<bigint>\n}\n","import type { Address } from '@xylabs/hex'\n\nexport interface ChainContractViewer {\n active(): Promise<bigint>\n chainId(): Promise<Address>\n forkedAtBlockNumber(): Promise<bigint>\n forkedAtHash(): Promise<bigint>\n forkedChainId(): Promise<Address>\n minWithdrawalBlocks(): Promise<bigint>\n rewardsContract(): Promise<string>\n stakingTokenAddress(): Promise<string>\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainIdentificationPayloadSchema = 'network.xyo.chain.identification' as const\nexport type ChainIdentificationPayloadSchema = typeof ChainIdentificationPayloadSchema\n\n/**\n * Identification required to uniquely identify a chain\n */\nexport interface ChainIdentification {\n /** @field the id of the chain */\n id: Address\n}\n\nexport type ChainIdentificationPayload = Payload<ChainIdentification, ChainIdentificationPayloadSchema>\nexport const isChainIdentificationPayload = isPayloadOfSchemaType<ChainIdentificationPayload>(ChainIdentificationPayloadSchema)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainInformationPayloadSchema = 'network.xyo.chain.information' as const\nexport type ChainInformationPayloadSchema = typeof ChainInformationPayloadSchema\n\nimport type { ChainIdentification } from './ChainIdentification.ts'\n\n/**\n * Information required to produce a chain\n */\nexport interface ChainInformation extends ChainIdentification {\n // TODO: Add these fields which are currently promises on the smart contract\n // forkedAtBlockNumber: bigint\n // forkedAtHash: Hash\n // forkedChainId: Address\n}\n\nexport type ChainInformationPayload = Payload<ChainIdentification, ChainInformationPayloadSchema>\nexport const isChainInformationPayload = isPayloadOfSchemaType<ChainInformationPayload>(ChainInformationPayloadSchema)\n","export interface ChainStaker {\n addStake(staked: string, amount: bigint): Promise<boolean>\n removeStake(slot: bigint): Promise<boolean>\n withdrawStake(slot: bigint): Promise<boolean>\n}\n","import type { ChainContractViewer } from './ChainContractViewer.ts'\n\nexport interface ChainStakeViewer extends ChainContractViewer {\n activeByAddressStaked(address: string): Promise<bigint>\n activeByStaker(address: string): Promise<bigint>\n pending(): Promise<bigint>\n pendingByStaker(staker: string): Promise<bigint>\n withdrawn(): Promise<bigint>\n withdrawnByStaker(staker: string): Promise<bigint>\n}\n","import type { Service } from '../Service.ts'\nimport type { ChainContractViewer } from './ChainContractViewer.ts'\nimport type { ChainInformation } from './ChainInformation.ts'\nimport type { ChainStaker } from './ChainStaker.ts'\nimport type { ChainStakeViewer } from './ChainStakeViewer.ts'\n\nexport interface ChainService extends ChainInformation, ChainContractViewer, ChainStakeViewer, ChainStaker, Service {}\n","import type { Address } from '@xylabs/hex'\n\nimport type { BlockBoundWitness } from '#block'\n\nimport type { Service } from './Service.ts'\n\nexport interface ElectionService extends Service {\n\n /**\n * Given the current block, get the leader for the next block\n * @param current The previous block\n */\n getCreatorCommitteeForNextBlock(current: BlockBoundWitness): Promise<Address[]>\n\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {\n /**\n * The hash of the last block that this service has indexing\n */\n endBlockHash: Hash\n /**\n * The hash of the block that the service started indexing. If undefined, the service is\n * assumed to have started indexing from the genesis block\n */\n startBlockHash?: Hash\n /**\n * The indexed state for the range\n */\n state: T\n}\nexport const ChainIndexingServiceStateSchema = 'network.xyo.chain.indexing.service.state' as const\nexport type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema\n\n/**\n * The result of a ChainIndexingServiceState\n */\nexport type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>\n\n/**\n * Identity functions for determining if an object is an ChainIndexingServiceState\n */\nexport const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {\n return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)\n}\nexport const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)\n\nexport const isChainIndexingServiceStateWithStorageMeta\n= <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>\n isChainIndexingServiceState<T>(value) && isStorageMeta(value)\n\nexport const asChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n\nexport const asOptionalChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.createOptional<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n","import type { Address } from '@xylabs/hex'\n\nimport type { Intent } from '#payload'\n\nexport interface StakeIntentService {\n\n /**\n * Gets the declared ranges for an address based on historical on-chain data\n * @param address The address to get the declared ranges for\n * @param intent The declared intent to filter for\n */\n getDeclaredCandidateRanges(address: Address, intent: Intent): Promise<Readonly<Readonly<[number, number]>[]>>\n\n /**\n * Gets the declared candidates for a block based on historical on-chain data\n * @param block The block number to get the declared candidates for\n * @param intent The declared intent to filter for\n */\n getDeclaredCandidatesForBlock(block: number, intent: Intent): Promise<Address[]>\n\n /**\n * Checks if the address is staked for a block for a given intent\n * @param block The block number to check\n * @param intent The declared intent to filter for\n * @param address The address to check\n */\n isStakedForBlock(block: number, intent: Intent, address: Address): Promise<boolean>\n}\n","import type { ArchivistInstance, WriteArchivist } from '@xyo-network/archivist-model'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\n\nimport type { EventingChainBlockNumberIterator } from '../iterator/index.ts'\nimport type { AccountBalanceService } from './AccountBalanceService.ts'\nimport type { BlockProducer } from './BlockProducer.ts'\nimport type { BlockRewardService } from './BlockReward.ts'\nimport type {\n ChainContractViewer, ChainInformation, ChainStaker, ChainStakeViewer,\n} from './Chain/index.ts'\nimport type { ElectionService } from './Election.ts'\nimport type { StakeIntentService } from './stakeIntent/index.ts'\n\nexport interface ChainServiceCollection {\n\n account: WalletInstance\n /**\n * Services for working with account balances\n */\n balanceService: AccountBalanceService\n /**\n * The archivist which the chain data is stored in\n */\n chainArchivist: ArchivistInstance\n chainContractViewer: ChainContractViewer\n /**\n * Hydrated information about the chain\n */\n chainInformation: ChainInformation\n /**\n * The chain iterator\n */\n chainIterator?: EventingChainBlockNumberIterator\n chainStakeViewer: ChainStakeViewer\n chainStaker: ChainStaker\n chainSubmissionsArchivistWrite: WriteArchivist\n electionService: ElectionService\n producer: BlockProducer\n rewardService: BlockRewardService\n /**\n * Services for working with staked intents\n */\n stakeIntentService: StakeIntentService\n}\n","import type { BaseParams } from '@xylabs/base'\nimport type { EmptyObject } from '@xylabs/object'\nimport type { AccountInstance } from '@xyo-network/account-model'\n\nimport type { OpenTelemetryProviders } from '../OpenTelemetryProviders.ts'\n\nexport type BaseServiceParams<TAdditionalParams extends EmptyObject = EmptyObject> = BaseParams<TAdditionalParams & OpenTelemetryProviders>\n\nexport type BaseAccountableServiceParams = BaseServiceParams<{\n account: AccountInstance\n}>\n","import type { Hash } from '@xylabs/hex'\n\nimport type { HydratedTransaction } from '#transaction'\n\nimport type { Service } from './Service.ts'\n\nexport interface PendingTransactionsService extends Service {\n getPendingTransactions(head: Hash, limit: number, timeout?: number): Promise<HydratedTransaction[]>\n}\n","import type { EventData } from '@xylabs/events'\n\nimport type { BlockBoundWitness } from '#block'\n\nexport type HeadEventArgs = { blocks: [BlockBoundWitness] }\n\nexport interface HeadEventData extends EventData {\n headUpdated: HeadEventArgs\n}\n\nexport interface ChainIteratorEventData extends HeadEventData { }\n","import type { BaseParams } from '@xylabs/base'\nimport type { BaseEmitter } from '@xylabs/events'\nimport type { Hash } from '@xylabs/hex'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport type { BlockBoundWitness } from '#block'\nimport type { IterableRepository, ReadRepository } from '#repository'\nimport type { BaseServiceParams, ChainIdentification } from '#services'\n\nimport type { ChainIteratorEventData } from './ChainIteratorEventData.ts'\n\nexport interface ChainIterator<TKey, THead> extends ReadRepository<TKey, BlockBoundWitness>, IterableRepository<TKey, BlockBoundWitness> {\n chainIdentification: ChainIdentification\n head(): Promise<THead>\n previous(cursor?: TKey | undefined, limit?: number): Promise<BlockBoundWitness[]>\n updateHead(head: THead): Promise<void>\n}\n\nexport interface EventingChainIterator<TKey, THead> extends ChainIterator<TKey, THead>, BaseEmitter<BaseParams, ChainIteratorEventData> { }\n\nexport interface ChainBlockNumberIterator extends ChainIterator<number, BlockBoundWitness> { }\nexport interface EventingChainBlockNumberIterator extends EventingChainIterator<number, BlockBoundWitness> { }\n\nexport interface ChainHashIterator extends ChainIterator<Hash, Hash> { }\nexport interface EventingChainHashIterator extends EventingChainIterator<Hash, Hash> { }\n\nexport interface XyoChainIteratorParams extends BaseServiceParams {\n chainArchivist: ArchivistInstance\n head: BlockBoundWitness\n}\n","export type DefaultNetworkIds = 'mainnet' | 'sequence' | 'local'\nexport type NetworkId<T extends string | void = void> = | T extends void ? DefaultNetworkIds : T | DefaultNetworkIds\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const NetworkStatusSchema = 'network.xyo.chain.status' as const\nexport type NetworkStatusSchema = typeof NetworkStatusSchema\n\nexport type NetworkStatusState = 'online' | 'offline' | 'degraded' | 'unknown'\n\nexport type NetworkStatusUpdate = {\n end: number\n start: number\n update: string\n}\n\nexport interface NetworkStatusFields {\n description: string\n state: NetworkStatusState\n updates?: NetworkStatusUpdate[]\n}\n\nexport type NetworkStatus = Payload<NetworkStatusFields, NetworkStatusSchema>\n\nexport const isNetworkStatus = isPayloadOfSchemaType<NetworkStatus>(NetworkStatusSchema)\n","import type { Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport interface XyoPayloadLakeViewer {\n getPayloads(hashes: Hash[]): Promisable<Payload[]>\n}\n\nexport interface XyoPayloadLakeProvider extends XyoPayloadLakeViewer {\n addPayloads(payloads: Payload[]): Promisable<Hash[]>\n}\n\nexport interface XyoDataLakeViewer extends XyoPayloadLakeViewer {\n // if resolves to hash payload, keep going until hitting a non-payload or maxDepth, or unable to find\n fetch(hashes: Hash[], maxDepth?: number): Promisable<(ArrayBuffer | Payload)[]>\n // same as fetch but never follows hash payloads\n get(hashes: Hash[]): Promisable<(ArrayBuffer | Payload)[]>\n // same as fetch, except returns each step\n trace(hashes: Hash[]): Promisable<[(ArrayBuffer | Payload), Payload[]][]>\n}\n\nexport interface XyoDataLakeProvider extends XyoDataLakeViewer, XyoPayloadLakeProvider {\n add(items: ArrayBuffer[]): Promisable<Hash[]>\n}\n","import type { Promisable } from '@xylabs/promise'\n\nimport type { NetworkStatus } from '#network'\n\nexport interface XyoNetwork {\n status(): Promisable<NetworkStatus>\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type { SignedHydratedTransaction } from '#transaction'\n\nexport interface XyoRunner {\n broadcastTransaction(transaction: SignedHydratedTransaction): Promisable<Hash>\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { Signed } from '@xyo-network/boundwitness-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport type { AllowedBlockPayload } from '#block'\nimport type { TransactionBoundWitness, TransactionFeesBigInt } from '#transaction'\n\nexport interface XyoSigner {\n address(): Promisable<Address>\n createSignedTransaction(\n chain: Address,\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n nbf: number,\n exp: number,\n fees: TransactionFeesBigInt,\n from?: Address,\n ): Promisable<Signed<TransactionBoundWitness>>\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type { SignedHydratedBlock } from '#block'\nimport type { Transfer } from '#payload'\nimport type { SignedHydratedTransaction, TransactionBoundWitness } from '#transaction'\n\nexport interface XyoViewer {\n accountBalance: (address: Address) => Promisable<bigint>\n accountHistory: (address: Address) => Promisable<[TransactionBoundWitness[], Transfer[]]>\n\n blockByHash(hash: Hash): Promisable<SignedHydratedBlock | null>\n blockByNumber(blockNumber: number): Promisable<SignedHydratedBlock | null>\n blocksByHash(hash: Hash, limit?: number): Promisable<SignedHydratedBlock[]>\n\n chainId(): Promisable<Address>\n\n currentBlock(): Promisable<SignedHydratedBlock>\n currentBlockHash(): Promisable<Hash>\n currentBlockNumber(): Promisable<number>\n\n transactionByBlockHashAndIndex(blockHash: Hash, transactionIndex: number): Promisable<SignedHydratedTransaction | null>\n transactionByBlockNumberAndIndex(blockNumber: number, transactionIndex: number): Promisable<SignedHydratedTransaction | null>\n transactionByHash(transactionHash: Hash): Promisable<SignedHydratedTransaction | null>\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\n// TODO: define the permissions object and return object types\n\nexport interface XyoWallet {\n accounts(): Promisable<Address[]>\n addChain(chain: Address, name?: string): Promisable<object>\n chain(): Promisable<Address>\n chains(): Promisable<object>\n permissions(): Promisable<Record<string, object>>\n requestPermissions(permissions: object): Promisable<object>\n revokePermissions(permissions: object): Promisable<object>\n switchChain(chain: Address): Promisable<void>\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Signed } from '@xyo-network/boundwitness-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport type { AllowedBlockPayload } from '#block'\nimport type { TransactionBoundWitness, TransactionFeesBigInt } from '#transaction'\n\nimport type { XyoDataLakeProvider } from './XyoDataLake.ts'\nimport type { XyoNetwork } from './XyoNetwork.ts'\nimport type { XyoRunner } from './XyoRunner.ts'\nimport type { XyoSigner } from './XyoSigner.ts'\nimport type { XyoViewer } from './XyoViewer.ts'\nimport type { XyoWallet } from './XyoWallet.ts'\n\nexport interface XyoProvider {\n network?: XyoNetwork\n runner?: XyoRunner\n send?: (\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n chain?: Address,\n nbf?: number,\n exp?: number,\n from?: Address,\n fees?: TransactionFeesBigInt,\n ) => Promise<Signed<TransactionBoundWitness>>\n signer?: XyoSigner\n storage?: XyoDataLakeProvider\n viewer?: XyoViewer\n wallet?: XyoWallet\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type { BlockBoundWitness } from '#block'\n\nexport type BlockValidatorFunction = (\n block: BlockBoundWitness,\n chainId?: Address,\n) => Promisable<Error[]>\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\n\nimport type { HydratedBlock } from '#block'\n\n/**\n * A function that validates a hydrated block against chain state.\n * @param hydratedBlock The hydrated block to validate.\n * @param chainId The chain ID to use for validation.\n * @param archivist The archivist to use for validation.\n * @returns An array of errors if the block is invalid, or an empty array if it is valid.\n */\nexport type HydratedBlockStateValidationFunction = (\n hydratedBlock: HydratedBlock,\n chainId: Address,\n archivist: ReadArchivist,\n) => Promisable<Error[]>\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type { HydratedBlock } from '#block'\n\n/**\n * A function that validates a hydrated block.\n * @param hydratedBlock The hydrated block to validate.\n * @param chainId The chain ID to use for validation.\n * @returns An array of errors if the block is invalid, or an empty array if it is valid.\n */\nexport type HydratedBlockValidatorFunction = (\n hydratedBlock: HydratedBlock,\n chainId?: Address,\n) => Promisable<Error[]>\n","import type { Promisable } from '@xylabs/promise'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\n\nexport type BoundWitnessValidationFunction<T extends BoundWitness = BoundWitness> = (\n bw: T\n) => Promisable<Error[]>\n","import type { Promisable } from '@xylabs/promise'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\n\nexport type HydratedBoundWitnessWithHashStorageMeta<T extends BoundWitness = BoundWitness, P extends Payload = Payload>\n = [WithHashStorageMeta<T>, WithHashStorageMeta<P>[]]\n\nexport type HydratedBoundWitnessValidationFunction<T extends BoundWitness = BoundWitness> = (\n bw: HydratedBoundWitnessWithHashStorageMeta<T>\n) => Promisable<Error[]>\n","import type { Promisable } from '@xylabs/promise'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\n\nimport type { HydratedBlock } from '#block'\n\nexport type InBlockPayloadValidationFunction = (\n payload: WithHashStorageMeta<Payload>, block: HydratedBlock\n) => Promisable<Error[]>\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { HydratedBoundWitnessWithStorageMeta, ReadArchivist } from '@xyo-network/archivist-model'\n\nimport type { TransactionBoundWitness } from '#transaction'\n\n/**\n * A function that validates a hydrated transaction against chain state.\n * @param hydratedTransaction The hydrated transaction to validate.\n * @param chainId The chain ID to use for validation.\n * @param archivist The archivist to use for validation.\n * @returns An array of errors if the transaction is invalid, or an empty array if it is valid.\n */\nexport type HydratedTransactionStateValidationFunction<T extends TransactionBoundWitness = TransactionBoundWitness> = (\n hydratedTransaction: HydratedBoundWitnessWithStorageMeta<T>,\n chainId: Address,\n archivist: ReadArchivist,\n) => Promisable<Error[]>\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type {\n HydratedTransaction, HydratedTransactionWithHashStorageMeta, TransactionBoundWitness,\n} from '#transaction'\n\n/**\n * A function that validates a hydrated transaction.\n * @param bw The hydrated transaction to validate.\n * @param chainId The chain ID to use for validation.\n * @returns An array of errors if the transaction is invalid, or an empty array if it is valid.\n */\nexport type HydratedTransactionValidatorFunction<T extends TransactionBoundWitness = TransactionBoundWitness> = (\n hydratedTransaction: HydratedTransactionWithHashStorageMeta<HydratedTransaction<T>>,\n chainId?: Address,\n) => Promisable<Error[]>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACO;;ACAA;AACP;AACA;AACA;;ACiBA;AACO;AACP;AACA;AACA;AAzBO;AACP;AACA;AAwBO;AACP;AACA;AAzBO;AACP;AACA;AAwBO;AACP;AACA;AAzBO;AACP;AACA;AAwBO;AACP;AACA;AAzBO;AACP;AACA;AAwBO;AACP;AACA;AAzBO;AACP;AACA;AAwBO;AACP;AACA;AAzBO;AACP;AACA;AAwBO;AACP;AACA;AAzBO;AACP;AACA;AAwBO;AACP;AACA;AACO;AACA;AACA;AACA;;ACjDA;AACP;AACA;;ACHO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACO;AACP;;ACPO;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;;ACnBA;AACP;AACA;;ACDO;AACP;AACA;AACO;AACA;AACP;AACA;AACO;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACP;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;;ACbA;AACA;AACA;AACP;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;;ACdA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;;ACbA;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACA;;ACTA;AACP;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;;ACrBA;AACA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;;ACtBA;AACA;;ACDA;AACP;AACA;AACA;AACA;;ACPO;;ACAA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;;ACNO;AACP;;ACDO;AACP;;ACDO;AACP;;ACAO;AACP;AACO;AACP;AACO;AACP;;ACPO;AACP;AACA;AACA;AACA;AACA;AACA;;ACJO;AACA;AACP;;ACHO;AACA;AACP;AACA;AACA;AACA;;ACLO;AACP;AACA;;ACHO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRO;AACA;AACA;AACP;AACA;AACO;AACA;;ACPA;AACA;;AAEA;AACP;AACO;AACA;;ACPA;AACP;AACA;AACA;AACA;;ACHO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;ACHO;AACP;;ACHO;AACP;AACA;;ACFO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;;ACnBA;AACP;AACA;AACA;AACA;;ACGO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBO;AACA;AACP;AACA;;ACJO;AACP;AACA;;ACHO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;;ACDO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACA;AACA;;AC3BO;AACA;;ACAA;AACA;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACA;;ACZA;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;;ACdO;AACP;AACA;;ACDO;AACP;AACA;;ACCO;AACP;AACA;AACA;;ACJO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBO;;ACCA;;ACDA;;ACDA;;ACCA;AACA;;ACDA;;ACCA;;ACDA;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../src/Initializable.ts","../src/OpenTelemetryProviders.ts","../src/xl1/XL1.ts","../src/fields/Addressable.ts","../src/fields/BlockDuration.ts","../src/fields/BlockNumber.ts","../src/fields/ChainReference.ts","../src/payload/elevatable/Executable.ts","../src/payload/elevatable/ChainStakeIntent.ts","../src/payload/elevatable/Hash.ts","../src/payload/elevatable/TransferPayload.ts","../src/transaction/TransactionFeesFields.ts","../src/transaction/TransactionBoundWitness.ts","../src/transaction/HydratedTransaction.ts","../src/block/AllowedBlockPayload.ts","../src/block/BlockBoundWitness.ts","../src/block/HydratedBlock.ts","../src/chain/ChainAnalyzer.ts","../src/constants/StepSizes.ts","../src/constants/TransactionGasCosts.ts","../src/repository/Repository.ts","../src/repository/TransactionReadRepository.ts","../src/repository/TransactionRepositoryIterator.ts","../src/repository/TransactionWriteRepository.ts","../src/repository/TransactionRepository.ts","../src/services/AccountBalanceService.ts","../src/services/BlockProducer.ts","../src/services/Service.ts","../src/services/BlockReward.ts","../src/services/Chain/ChainContractViewer.ts","../src/services/Chain/ChainIdentification.ts","../src/services/Chain/ChainInformation.ts","../src/services/Chain/ChainStaker.ts","../src/services/Chain/ChainStakeViewer.ts","../src/services/Chain/ChainService.ts","../src/services/Election.ts","../src/services/stakeIntent/ChainIndexingServiceStateSchema.ts","../src/services/stakeIntent/StakeIntentService.ts","../src/services/ChainServiceCollection.ts","../src/services/Params.ts","../src/services/PendingTransactionsService.ts","../src/iterator/ChainIteratorEventData.ts","../src/iterator/ChainIterator.ts","../src/network/NetworkId.ts","../src/network/Status.ts","../src/provider/v1/XyoDataLake.ts","../src/provider/v1/XyoNetwork.ts","../src/provider/v1/XyoRunner.ts","../src/provider/v1/XyoSigner.ts","../src/provider/v1/XyoViewer.ts","../src/provider/v1/XyoWallet.ts","../src/provider/v1/XyoProvider.ts","../src/validation/block/BlockValidationFunction.ts","../src/validation/block/HydratedBlockStateValidationFunction.ts","../src/validation/block/HydratedBlockValidationFunction.ts","../src/validation/boundwitness/BoundWitnessValidationFunction.ts","../src/validation/boundwitness/HydratedBoundWitnessValidationFunction.ts","../src/validation/payload/InBlockPayloadValidationFunction.ts","../src/validation/transaction/HydratedTransactionStateValidationFunction.ts","../src/validation/transaction/HydratedTransactionValidationFunction.ts"],"sourcesContent":["import type { Promisable } from '@xylabs/promise'\n\nexport type Initializable<T, R> = (params: T) => Promisable<R>\n","import type { MeterProvider, TracerProvider } from '@opentelemetry/api'\n\nexport interface OpenTelemetryProviders {\n meterProvider?: MeterProvider\n traceProvider?: TracerProvider\n}\n","export type XL1 = bigint & { readonly _tag: 'XL1' } // 1e-18\nexport type MilliXL1 = bigint & { readonly _tag: 'MilliXL1' } // 1e-15 [XL1 * 1e3 = milliXL1] [milliXL1 / 1e3 = XL1]\nexport type MicroXL1 = bigint & { readonly _tag: 'MicroXL1' } // 1e-12 [XL1 * 1e6 = microXL1] [microXL1 / 1e6 = XL1]\nexport type NanoXL1 = bigint & { readonly _tag: 'NanoXL1' } // 1e-9 [XL1 * 1e9 = nanoXL1] [nanoXL1 / 1e9 = XL1]\nexport type PicoXL1 = bigint & { readonly _tag: 'PicoXL1' } // 1e-6 [XL1 * 1e12 = picoXL1] [picoXL1 / 1e12 = XL1]\nexport type FemtoXL1 = bigint & { readonly _tag: 'FemtoXL1' } // 1e-3 [XL1 * 1e15 = femtoXL1] [femtoXL1 / 1e15 = XL1]\nexport type AttoXL1 = bigint & { readonly _tag: 'AttoXL1' } // 1e-0 [XL1 * 1e18 = attoXL1] [attoXL1 / 1e18 = XL1]\n\nexport type TypingFunc<T extends bigint> = (value: bigint) => T\n\nexport const XL1: TypingFunc<XL1> = (value: bigint): XL1 => value as XL1\nexport const MilliXL1: TypingFunc<MilliXL1> = (value: bigint): MilliXL1 => value as MilliXL1\nexport const MicroXL1: TypingFunc<MicroXL1> = (value: bigint): MicroXL1 => value as MicroXL1\nexport const NanoXL1: TypingFunc<NanoXL1> = (value: bigint): NanoXL1 => value as NanoXL1\nexport const PicoXL1: TypingFunc<PicoXL1> = (value: bigint): PicoXL1 => value as PicoXL1\nexport const FemtoXL1: TypingFunc<FemtoXL1> = (value: bigint): FemtoXL1 => value as FemtoXL1\nexport const AttoXL1: TypingFunc<AttoXL1> = (value: bigint): AttoXL1 => value as AttoXL1\n\ntype XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto'\n\n/** @deprecated use XL1Places and xl1ConvertFactor(unit) instead */\nexport const XL1ConvertDict: Record<XL1Units, number> = {\n xl1: 18,\n milli: 15,\n micro: 12,\n nano: 9,\n pico: 6,\n femto: 3,\n atto: 0,\n} as const\n\nexport const XL1Places: Record<XL1Units, bigint> = {\n xl1: 18n,\n milli: 15n,\n micro: 12n,\n nano: 9n,\n pico: 6n,\n femto: 3n,\n atto: 0n,\n} as const\n\n/**\n * Convert factor by which a respective unit is multiplied to convert it to AttoXL1 or\n * by which AttoXL1 is divided to convert it to respective unit is multiplied.\n */\nexport const AttoXL1ConvertFactor: Record<XL1Units, bigint> = {\n xl1: 10n ** XL1Places.xl1,\n milli: 10n ** XL1Places.milli,\n micro: 10n ** XL1Places.micro,\n nano: 10n ** XL1Places.nano,\n pico: 10n ** XL1Places.pico,\n femto: 10n ** XL1Places.femto,\n atto: 10n ** XL1Places.atto,\n} as const\n\n/** @deprecated use AttoXL1ConvertFactor instead */\nexport function xl1ConvertFactor(unit: XL1Units) {\n return 10n ** XL1Places[unit]\n}\n","import type { Address } from '@xylabs/hex'\n\n// NOTE: Minimal interface in case of reuse across validators, producers, wallets, modules, etc.\nexport interface Addressable {\n address: Address\n}\n","export interface BlockStart {\n /**\n * The block at which the duration starts\n */\n nbf: number\n}\n\nexport interface BlockEnd {\n /**\n * The block at which the duration ends\n */\n exp: number\n}\n\n/**\n * A optional duration referenced to block numbers\n */\nexport interface OptionalBlockDuration extends Partial<BlockStart>, Partial<BlockEnd> {}\n\n/**\n * A duration referenced to block numbers\n */\nexport interface BlockDuration extends BlockStart, BlockEnd {}\n","import type { Hex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nexport const BlockNumberSchema = 'network.xyo.chain.block.number' as const\nexport type BlockNumberSchema = typeof BlockNumberSchema\n\nexport interface BlockNumberFields {\n /**\n * The block number\n */\n block: Hex\n /**\n * The chain id\n */\n chain?: Hex\n}\n/**\n * The number of a block\n */\nexport type BlockNumber = Payload<BlockNumberFields, BlockNumberSchema>\n\n/**\n * Identity function for determining if an object is a BlockNumber\n */\nexport const isBlockNumber = isPayloadOfSchemaType<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumber = AsObjectFactory.create<BlockNumber>(isBlockNumber)\nexport const asOptionalBlockNumber = AsObjectFactory.createOptional<BlockNumber>(isBlockNumber)\n\n/**\n * Identity function for determining if an object is a BlockNumber with sources\n */\nexport const isBlockNumberWithSources = isPayloadOfSchemaTypeWithSources<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumberWithSources = AsObjectFactory.create<WithSources<BlockNumber>>(isBlockNumberWithSources)\nexport const asOptionalBlockNumberWithSources = AsObjectFactory.createOptional<WithSources<BlockNumber>>(isBlockNumberWithSources)\n","import type { Address } from '@xylabs/hex'\n\n/**\n * Required info for a chain reference\n */\nexport interface ChainReference {\n /**\n * The contract address referenced by the chain\n */\n chain: Address\n}\n","import type { Address } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport { isAnyPayload } from '@xyo-network/payload-model'\n\nexport interface FromFields {\n // the address that is treated as the source of this action\n from: Address\n}\n\nexport const hasFrom = (value: unknown): value is FromFields => {\n return (value as FromFields).from !== undefined\n}\n\nexport interface ExecutableFields {\n script: string[]\n}\n\nexport type Executable<T extends EmptyObject = EmptyObject> = T & ExecutableFields\nexport type OptionalExecutable<T extends EmptyObject = EmptyObject> = T & Partial<ExecutableFields>\n\nexport const isExecutable = <T extends EmptyObject>(value: T | undefined): value is Executable<T> => {\n return isAnyPayload(value) && Array.isArray((value as unknown as ExecutableFields).script)\n}\n\nexport const asExecutable = <T extends EmptyObject>(value: T | undefined): Executable<T> | undefined => {\n return isExecutable(value)\n ? value as unknown as Executable<T>\n : undefined\n}\n","import { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const ChainStakeIntentSchema = 'network.xyo.chain.stake.intent' as const\nexport type ChainStakeIntentSchema = typeof ChainStakeIntentSchema\n\nexport type Intent = 'producer' // | 'bank'\n\nexport interface ChainStakeIntentFields extends BlockDuration, FromFields {\n /*\n * The intent of the staking\n */\n intent: Intent\n}\n\nexport type ChainStakeIntent = Payload<ChainStakeIntentFields, ChainStakeIntentSchema>\n\nexport const isChainStakeIntent = (x?: unknown | null): x is ChainStakeIntent => {\n return isPayloadOfSchemaType<ChainStakeIntent>(ChainStakeIntentSchema)(x)\n && asNonNegativeInteger(x.nbf) !== undefined\n && asNonNegativeInteger(x.exp) !== undefined\n}\nexport const asChainStakeIntent = AsObjectFactory.create(isChainStakeIntent)\nexport const asOptionalChainStakeIntent = AsObjectFactory.createOptional(isChainStakeIntent)\n\nconst asNonNegativeInteger = (num: number) => {\n return (Number.isInteger(num) && num >= 0) ? num : undefined\n}\n","import type { Hash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const HashSchema = 'network.xyo.hash' as const\nexport type HashSchema = typeof HashSchema\n\nexport interface HashFields {\n hash: Hash\n}\n\nexport type HashPayload = Payload<HashFields, HashSchema>\n\nexport const isHashPayload = isPayloadOfSchemaType<HashPayload>(HashSchema)\n\nexport const asHashPayload = AsObjectFactory.create(isHashPayload)\nexport const asHashPayloadWithStorageMeta = AsObjectFactory.create(isHashPayload)\nexport const asOptionalHashPayload = AsObjectFactory.createOptional(isHashPayload)\n","import type {\n Address,\n Hex,\n} from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const TransferSchema = 'network.xyo.transfer' as const\nexport type TransferSchema = typeof TransferSchema\n\nexport interface TransferFields extends FromFields {\n epoch: number\n // the amount that is being sent to another address\n transfers: Record<Address, Hex>\n}\n\n// if this payload is included in a boundwitness, it needs to be available for inspection to be included in block\nexport type Transfer = Payload<TransferFields, TransferSchema>\n\nexport const isTransfer = isPayloadOfSchemaType<Transfer>(TransferSchema)\n\nexport const asTransfer = AsObjectFactory.create(isTransfer)\nexport const asOptionalTransfer = AsObjectFactory.createOptional(isTransfer)\n","import type { Hex } from '@xylabs/hex'\n\nimport {\n AttoXL1,\n AttoXL1ConvertFactor,\n} from '../xl1/index.ts'\n\nexport interface TransactionFeesBigInt {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n}\n\nexport type TransactionFeesHex = {\n [K in keyof TransactionFeesBigInt]: Hex;\n}\n\nexport interface TransactionFeesFields {\n fees: TransactionFeesHex\n}\n\nexport const minTransactionFees: TransactionFeesBigInt = {\n base: AttoXL1(1000n * AttoXL1ConvertFactor.micro),\n gasPrice: AttoXL1(1n * AttoXL1ConvertFactor.micro),\n gasLimit: AttoXL1(1000n * AttoXL1ConvertFactor.micro),\n priority: AttoXL1(0n * AttoXL1ConvertFactor.micro),\n} as const\n\nexport const defaultTransactionFees: TransactionFeesBigInt = {\n base: minTransactionFees.base,\n gasPrice: AttoXL1(10n * AttoXL1ConvertFactor.micro),\n gasLimit: AttoXL1(1_000_000n * AttoXL1ConvertFactor.micro),\n priority: minTransactionFees.priority,\n} as const\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness, Signed } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\nimport type { FromFields, OptionalExecutable } from '#payload'\n\nimport type { TransactionFeesFields } from './TransactionFeesFields.ts'\n\nexport interface TransactionBoundWitnessFields extends BlockDuration, TransactionFeesFields {\n chain: Address\n}\n\nexport type TransactionBoundWitness = BoundWitness<TransactionBoundWitnessFields & OptionalExecutable & FromFields>\n\nexport const isTransactionBoundWitness = (value: unknown): value is TransactionBoundWitness => {\n const typedObj = value as TransactionBoundWitness\n return isBoundWitness(value)\n && typedObj.chain !== undefined\n && typedObj.fees !== undefined\n && typedObj.exp !== undefined\n && typedObj.nbf !== undefined\n}\n\nexport const isSignedTransactionBoundWitness = (value: unknown): value is Signed<TransactionBoundWitness> => {\n return isTransactionBoundWitness(value) && isSigned(value)\n}\n\nexport const isSigned = <T extends BoundWitness = BoundWitness>(value: unknown): value is Signed<T> =>\n isBoundWitness(value)\n && value.$signatures.length === value.addresses.length\n && value.addresses.length > 0\n\nexport const isTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<TransactionBoundWitness> =>\n isTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const isSignedTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<Signed<TransactionBoundWitness>> =>\n isSignedTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const asTransactionBoundWitness = AsObjectFactory.create(isTransactionBoundWitness)\nexport const asOptionalTransactionBoundWitness = AsObjectFactory.createOptional(isTransactionBoundWitness)\n\nexport const asTransactionBoundWitnessWithStorageMeta = AsObjectFactory.create(isTransactionBoundWitnessWithStorageMeta)\nexport const asOptionalTransactionBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isTransactionBoundWitnessWithStorageMeta)\n","import type { Signed } from '@xyo-network/boundwitness-model'\nimport type {\n Payload, WithHashStorageMeta, WithStorageMeta,\n} from '@xyo-network/payload-model'\n\nimport type { TransactionBoundWitness } from './TransactionBoundWitness.ts'\n\nexport type HydratedTransaction<T extends TransactionBoundWitness = TransactionBoundWitness, P extends Payload = Payload> = [T, P[]]\n\nexport type HydratedTransactionWithStorageMeta<T extends HydratedTransaction = HydratedTransaction>\n = [WithStorageMeta<T[0]>, WithStorageMeta<T[1][number]>[]]\n\nexport type HydratedTransactionWithHashStorageMeta<T extends HydratedTransaction = HydratedTransaction>\n = [WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]\n\nexport type SignedHydratedTransaction<T extends HydratedTransaction = HydratedTransaction> = [Signed<T[0]>, T[1][number][]] & HydratedTransaction\n\nexport type SignedHydratedTransactionWithStorageMeta<T extends HydratedTransaction = HydratedTransaction>\n = [WithStorageMeta<Signed<T[0]>>, WithStorageMeta<T[1][number]>[]] & SignedHydratedTransaction<T> & HydratedTransaction\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isHashStorageMeta, isSchema } from '@xyo-network/payload-model'\nimport type { SchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport { isSchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\nimport type {\n ChainStakeIntent, HashPayload, Transfer,\n} from '#payload'\nimport {\n ChainStakeIntentSchema, HashSchema, isChainStakeIntent, isHashPayload, isTransfer, TransferSchema,\n} from '#payload'\nimport { isTransactionBoundWitness, type TransactionBoundWitness } from '#transaction'\n\nexport type AllowedBlockPayload = Transfer | ChainStakeIntent | SchemaPayload | TransactionBoundWitness | HashPayload\nexport const AllowedBlockPayloadSchemas: Schema[] = [TransferSchema, ChainStakeIntentSchema, SchemaSchema, BoundWitnessSchema, HashSchema]\nexport type AllowedBlockPayloadSchema = typeof AllowedBlockPayloadSchemas[number]\n\nexport const isAllowedBlockPayloadSchema = (value: unknown): value is AllowedBlockPayloadSchema => {\n return isSchema(value) && AllowedBlockPayloadSchemas.includes(value)\n}\n\nexport const isAllowedBlockPayload = (value: unknown): value is AllowedBlockPayload => {\n return isTransfer(value) || isChainStakeIntent(value) || isSchemaPayload(value) || isTransactionBoundWitness(value) || isHashPayload(value)\n}\n\nexport const isAllowedBlockPayloadWithHashStorageMeta = (value: unknown): value is WithStorageMeta<AllowedBlockPayload> => {\n return isAllowedBlockPayload(value) && isHashStorageMeta(value)\n}\n","import type { Hash, Hex } from '@xylabs/hex'\nimport { isHex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface BlockBoundWitnessMeta {\n $epoch: number\n}\n\nexport interface BlockBoundWitnessFields {\n /** Block number */\n block: number\n /** Chain id - this should be \"0\" for the genesis block */\n chain: Hex\n /** Previous block hash if not block 0 */\n previous: Hash | null /* the previous block hash */\n /** Version of the protocol being used major * 1,000,000 + minor * 1,000 + patch */\n protocol: number\n /** Step hashes */\n step_hashes: Hex[]\n}\n\nexport type BlockBoundWitness = BoundWitness<BlockBoundWitnessFields & BlockBoundWitnessMeta>\n\nexport const isBlockBoundWitness = (value: unknown): value is BlockBoundWitness => {\n const typedObj = value as BlockBoundWitness\n return isBoundWitness(value)\n && Number.isInteger(typedObj.block)\n && isHex(typedObj.chain)\n}\n\nexport const isBlockBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<BlockBoundWitness> => {\n return isBlockBoundWitness(value) && isStorageMeta(value)\n}\n\nexport const asBlockBoundWitness = AsObjectFactory.create(isBlockBoundWitness)\nexport const asOptionalBlockBoundWitness = AsObjectFactory.createOptional(isBlockBoundWitness)\n\nexport const asBlockBoundWitnessWithStorageMeta = AsObjectFactory.create(isBlockBoundWitnessWithStorageMeta)\nexport const asOptionalBlockBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isBlockBoundWitnessWithStorageMeta)\n","import type { Signed } from '@xyo-network/boundwitness-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\n\nimport type { BlockBoundWitness } from './BlockBoundWitness.ts'\n\nexport type HydratedBlock = [WithStorageMeta<BlockBoundWitness>, WithStorageMeta<Payload>[]]\n\nexport type SignedHydratedBlock = [WithStorageMeta<Signed<BlockBoundWitness>>, WithStorageMeta<Payload>[]] & HydratedBlock\n","import type { Promisable } from '@xylabs/promise'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport type { HydratedBlock } from '#block'\n\nexport interface ChainAnalyzer<T extends Payload = Payload> {\n onBlock(block: HydratedBlock): Promisable<boolean>\n result(): T\n shouldContinue(): boolean\n}\n","export const StepSizes = [10, 105, 1103, 11_576, 121_551, 1_276_282, 13_400_956] as const\n","import { MicroXL1 } from '../xl1/index.ts'\n\nexport const TransactionGasCosts = {\n /**\n * The cost of storing each character that is added to the chain\n * This includes the transaction JSON and all the elevated payloads' JSON\n */\n characterStorage: MicroXL1(10n),\n\n /** The cost of static validating every payload that will be included in the chain */\n payloadValidation: MicroXL1(1000n),\n\n /** The cost of validating each signature that will be included in the chain */\n signatureValidation: MicroXL1(1000n),\n\n /** The cost of validating each hash that will be included in the chain */\n hashValidation: MicroXL1(100n),\n\n /** The cost of validating a balance state, triggered by a Transfer payload or gas collection */\n balanceValidation: MicroXL1(100n),\n} as const\n\n/** Gas Calculation\n *\n * 1 Million microXL1 (mXL1) = 1 XL1\n *\n * Gas amount is calculated as follows:\n *\n * 1. Each byte in the transaction cost 10 gas\n * 2. Each payload validation in the transaction costs 1000 gas\n * 3. Each signature verification in the transaction costs 1000 gas\n * 4. Each hash validation in the transaction costs 100 gas\n * 5. Each balance validation in the transaction costs 100 gas\n * 6. Processing/Compute/Storage Cost?\n * 7. operation Costs?\n *\n * The total gas cost is calculated by multiplying the gas amount by the gas price.\n *\n * minGasPrice is initially set to 100 mXL1\n * minBase is initially set to 1000 mXL1\n * minPriority is always 0 mXL1, but can be set to increase the priority of the transaction\n *\n */\n","export interface ReadRepository<TId, TData> {\n get(id: TId): Promise<TData | undefined>\n}\n\nexport interface IterableRepository<TId, TData> {\n next(id: TId): Promise<TData | undefined>\n}\n\nexport interface WriteRepository<TData, TResp> {\n insert(data: TData): Promise<TResp>\n}\n","import type { HydratedTransaction, TransactionBoundWitness } from '#transaction'\n\nimport type { ReadRepository } from './Repository.ts'\n\nexport interface TransactionReadRepository extends ReadRepository<TransactionBoundWitness, HydratedTransaction> {}\n","import type { HydratedTransaction, TransactionBoundWitness } from '#transaction'\n\nimport type { IterableRepository } from './Repository.ts'\n\nexport interface TransactionRepositoryIterator extends IterableRepository<TransactionBoundWitness, HydratedTransaction> {}\n","import type { HydratedTransaction } from '#transaction'\n\nimport type { WriteRepository } from './Repository.ts'\n\nexport interface TransactionWriteRepository extends WriteRepository<HydratedTransaction, boolean> {}\n","import type { TransactionReadRepository } from './TransactionReadRepository.ts'\nimport type { TransactionRepositoryIterator } from './TransactionRepositoryIterator.ts'\nimport type { TransactionWriteRepository } from './TransactionWriteRepository.ts'\n\nexport interface TransactionRepository extends TransactionReadRepository, TransactionWriteRepository {}\n\nexport interface ReadonlyIterableTransactionRepository extends TransactionReadRepository, TransactionRepositoryIterator {}\n\nexport interface IterableTransactionRepository extends TransactionRepository, TransactionRepositoryIterator {}\n","import type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\n\nexport interface AccountBalanceService {\n getBalanceValue?: (address: Address) => bigint\n getBalanceValues?: Record<Address, bigint>\n\n getBalance(address: Address): Hex\n getBalances(): Record<Address, Hex>\n sync(head: Hash): Promise<void>\n}\n","import type { BlockBoundWitness, HydratedBlock } from '#block'\nimport type { Addressable } from '#fields'\nimport type { IterableRepository } from '#repository'\n\nexport type NextBlockProducer = IterableRepository<BlockBoundWitness, HydratedBlock>\n\nexport interface BlockProducer extends Addressable, NextBlockProducer {}\n","import type { Meter, Tracer } from '@opentelemetry/api'\nimport type { Logger } from '@xylabs/logger'\n\nexport type ServiceName = Exclude<string, 'reserved-service-name-value'>\n\nexport interface Service {\n logger?: Logger\n meter?: Meter\n tracer?: Tracer\n}\n","import type { Promisable } from '@xylabs/promise'\n\nimport type { Service } from './Service.ts'\n\nexport interface BlockRewardService extends Service {\n getRewardForBlock(block: bigint): Promisable<bigint>\n}\n","import type { Address } from '@xylabs/hex'\n\nexport interface ChainContractViewer {\n active(): Promise<bigint>\n chainId(): Promise<Address>\n forkedAtBlockNumber(): Promise<bigint>\n forkedAtHash(): Promise<bigint>\n forkedChainId(): Promise<Address>\n minWithdrawalBlocks(): Promise<bigint>\n rewardsContract(): Promise<string>\n stakingTokenAddress(): Promise<string>\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainIdentificationPayloadSchema = 'network.xyo.chain.identification' as const\nexport type ChainIdentificationPayloadSchema = typeof ChainIdentificationPayloadSchema\n\n/**\n * Identification required to uniquely identify a chain\n */\nexport interface ChainIdentification {\n /** @field the id of the chain */\n id: Address\n}\n\nexport type ChainIdentificationPayload = Payload<ChainIdentification, ChainIdentificationPayloadSchema>\nexport const isChainIdentificationPayload = isPayloadOfSchemaType<ChainIdentificationPayload>(ChainIdentificationPayloadSchema)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainInformationPayloadSchema = 'network.xyo.chain.information' as const\nexport type ChainInformationPayloadSchema = typeof ChainInformationPayloadSchema\n\nimport type { ChainIdentification } from './ChainIdentification.ts'\n\n/**\n * Information required to produce a chain\n */\nexport interface ChainInformation extends ChainIdentification {\n // TODO: Add these fields which are currently promises on the smart contract\n // forkedAtBlockNumber: bigint\n // forkedAtHash: Hash\n // forkedChainId: Address\n}\n\nexport type ChainInformationPayload = Payload<ChainIdentification, ChainInformationPayloadSchema>\nexport const isChainInformationPayload = isPayloadOfSchemaType<ChainInformationPayload>(ChainInformationPayloadSchema)\n","export interface ChainStaker {\n addStake(staked: string, amount: bigint): Promise<boolean>\n removeStake(slot: bigint): Promise<boolean>\n withdrawStake(slot: bigint): Promise<boolean>\n}\n","import type { ChainContractViewer } from './ChainContractViewer.ts'\n\nexport interface ChainStakeViewer extends ChainContractViewer {\n activeByAddressStaked(address: string): Promise<bigint>\n activeByStaker(address: string): Promise<bigint>\n pending(): Promise<bigint>\n pendingByStaker(staker: string): Promise<bigint>\n withdrawn(): Promise<bigint>\n withdrawnByStaker(staker: string): Promise<bigint>\n}\n","import type { Service } from '../Service.ts'\nimport type { ChainContractViewer } from './ChainContractViewer.ts'\nimport type { ChainInformation } from './ChainInformation.ts'\nimport type { ChainStaker } from './ChainStaker.ts'\nimport type { ChainStakeViewer } from './ChainStakeViewer.ts'\n\nexport interface ChainService extends ChainInformation, ChainContractViewer, ChainStakeViewer, ChainStaker, Service {}\n","import type { Address } from '@xylabs/hex'\n\nimport type { BlockBoundWitness } from '#block'\n\nimport type { Service } from './Service.ts'\n\nexport interface ElectionService extends Service {\n\n /**\n * Given the current block, get the leader for the next block\n * @param current The previous block\n */\n getCreatorCommitteeForNextBlock(current: BlockBoundWitness): Promise<Address[]>\n\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {\n /**\n * The hash of the last block that this service has indexing\n */\n endBlockHash: Hash\n /**\n * The hash of the block that the service started indexing. If undefined, the service is\n * assumed to have started indexing from the genesis block\n */\n startBlockHash?: Hash\n /**\n * The indexed state for the range\n */\n state: T\n}\nexport const ChainIndexingServiceStateSchema = 'network.xyo.chain.indexing.service.state' as const\nexport type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema\n\n/**\n * The result of a ChainIndexingServiceState\n */\nexport type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>\n\n/**\n * Identity functions for determining if an object is an ChainIndexingServiceState\n */\nexport const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {\n return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)\n}\nexport const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)\n\nexport const isChainIndexingServiceStateWithStorageMeta\n= <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>\n isChainIndexingServiceState<T>(value) && isStorageMeta(value)\n\nexport const asChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n\nexport const asOptionalChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.createOptional<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n","import type { Address } from '@xylabs/hex'\n\nimport type { Intent } from '#payload'\n\nexport interface StakeIntentService {\n\n /**\n * Gets the declared ranges for an address based on historical on-chain data\n * @param address The address to get the declared ranges for\n * @param intent The declared intent to filter for\n */\n getDeclaredCandidateRanges(address: Address, intent: Intent): Promise<Readonly<Readonly<[number, number]>[]>>\n\n /**\n * Gets the declared candidates for a block based on historical on-chain data\n * @param block The block number to get the declared candidates for\n * @param intent The declared intent to filter for\n */\n getDeclaredCandidatesForBlock(block: number, intent: Intent): Promise<Address[]>\n\n /**\n * Checks if the address is staked for a block for a given intent\n * @param block The block number to check\n * @param intent The declared intent to filter for\n * @param address The address to check\n */\n isStakedForBlock(block: number, intent: Intent, address: Address): Promise<boolean>\n}\n","import type { ArchivistInstance, WriteArchivist } from '@xyo-network/archivist-model'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\n\nimport type { EventingChainBlockNumberIterator } from '../iterator/index.ts'\nimport type { AccountBalanceService } from './AccountBalanceService.ts'\nimport type { BlockProducer } from './BlockProducer.ts'\nimport type { BlockRewardService } from './BlockReward.ts'\nimport type {\n ChainContractViewer, ChainInformation, ChainStaker, ChainStakeViewer,\n} from './Chain/index.ts'\nimport type { ElectionService } from './Election.ts'\nimport type { StakeIntentService } from './stakeIntent/index.ts'\n\nexport interface ChainServiceCollection {\n\n account: WalletInstance\n /**\n * Services for working with account balances\n */\n balanceService: AccountBalanceService\n /**\n * The archivist which the chain data is stored in\n */\n chainArchivist: ArchivistInstance\n chainContractViewer: ChainContractViewer\n /**\n * Hydrated information about the chain\n */\n chainInformation: ChainInformation\n /**\n * The chain iterator\n */\n chainIterator?: EventingChainBlockNumberIterator\n chainStakeViewer: ChainStakeViewer\n chainStaker: ChainStaker\n chainSubmissionsArchivistWrite: WriteArchivist\n electionService: ElectionService\n producer: BlockProducer\n rewardService: BlockRewardService\n /**\n * Services for working with staked intents\n */\n stakeIntentService: StakeIntentService\n}\n","import type { BaseParams } from '@xylabs/base'\nimport type { EmptyObject } from '@xylabs/object'\nimport type { AccountInstance } from '@xyo-network/account-model'\n\nimport type { OpenTelemetryProviders } from '../OpenTelemetryProviders.ts'\n\nexport type BaseServiceParams<TAdditionalParams extends EmptyObject = EmptyObject> = BaseParams<TAdditionalParams & OpenTelemetryProviders>\n\nexport type BaseAccountableServiceParams = BaseServiceParams<{\n account: AccountInstance\n}>\n","import type { Hash } from '@xylabs/hex'\n\nimport type { HydratedTransaction } from '#transaction'\n\nimport type { Service } from './Service.ts'\n\nexport interface PendingTransactionsService extends Service {\n getPendingTransactions(head: Hash, limit: number, timeout?: number): Promise<HydratedTransaction[]>\n}\n","import type { EventData } from '@xylabs/events'\n\nimport type { BlockBoundWitness } from '#block'\n\nexport type HeadEventArgs = { blocks: [BlockBoundWitness] }\n\nexport interface HeadEventData extends EventData {\n headUpdated: HeadEventArgs\n}\n\nexport interface ChainIteratorEventData extends HeadEventData { }\n","import type { BaseParams } from '@xylabs/base'\nimport type { BaseEmitter } from '@xylabs/events'\nimport type { Hash } from '@xylabs/hex'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport type { BlockBoundWitness } from '#block'\nimport type { IterableRepository, ReadRepository } from '#repository'\nimport type { BaseServiceParams, ChainIdentification } from '#services'\n\nimport type { ChainIteratorEventData } from './ChainIteratorEventData.ts'\n\nexport interface ChainIterator<TKey, THead> extends ReadRepository<TKey, BlockBoundWitness>, IterableRepository<TKey, BlockBoundWitness> {\n chainIdentification: ChainIdentification\n head(): Promise<THead>\n previous(cursor?: TKey | undefined, limit?: number): Promise<BlockBoundWitness[]>\n updateHead(head: THead): Promise<void>\n}\n\nexport interface EventingChainIterator<TKey, THead> extends ChainIterator<TKey, THead>, BaseEmitter<BaseParams, ChainIteratorEventData> { }\n\nexport interface ChainBlockNumberIterator extends ChainIterator<number, BlockBoundWitness> { }\nexport interface EventingChainBlockNumberIterator extends EventingChainIterator<number, BlockBoundWitness> { }\n\nexport interface ChainHashIterator extends ChainIterator<Hash, Hash> { }\nexport interface EventingChainHashIterator extends EventingChainIterator<Hash, Hash> { }\n\nexport interface XyoChainIteratorParams extends BaseServiceParams {\n chainArchivist: ArchivistInstance\n head: BlockBoundWitness\n}\n","export type DefaultNetworkIds = 'mainnet' | 'sequence' | 'local'\nexport type NetworkId<T extends string | void = void> = | T extends void ? DefaultNetworkIds : T | DefaultNetworkIds\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const NetworkStatusSchema = 'network.xyo.chain.status' as const\nexport type NetworkStatusSchema = typeof NetworkStatusSchema\n\nexport type NetworkStatusState = 'online' | 'offline' | 'degraded' | 'unknown'\n\nexport type NetworkStatusUpdate = {\n end: number\n start: number\n update: string\n}\n\nexport interface NetworkStatusFields {\n description: string\n state: NetworkStatusState\n updates?: NetworkStatusUpdate[]\n}\n\nexport type NetworkStatus = Payload<NetworkStatusFields, NetworkStatusSchema>\n\nexport const isNetworkStatus = isPayloadOfSchemaType<NetworkStatus>(NetworkStatusSchema)\n","import type { Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport interface XyoPayloadLakeViewer {\n getPayloads(hashes: Hash[]): Promisable<Payload[]>\n}\n\nexport interface XyoPayloadLakeProvider extends XyoPayloadLakeViewer {\n addPayloads(payloads: Payload[]): Promisable<Hash[]>\n}\n\nexport interface XyoDataLakeViewer extends XyoPayloadLakeViewer {\n // if resolves to hash payload, keep going until hitting a non-payload or maxDepth, or unable to find\n fetch(hashes: Hash[], maxDepth?: number): Promisable<(ArrayBuffer | Payload)[]>\n // same as fetch but never follows hash payloads\n get(hashes: Hash[]): Promisable<(ArrayBuffer | Payload)[]>\n // same as fetch, except returns each step\n trace(hashes: Hash[]): Promisable<[(ArrayBuffer | Payload), Payload[]][]>\n}\n\nexport interface XyoDataLakeProvider extends XyoDataLakeViewer, XyoPayloadLakeProvider {\n add(items: ArrayBuffer[]): Promisable<Hash[]>\n}\n","import type { Promisable } from '@xylabs/promise'\n\nimport type { NetworkStatus } from '#network'\n\nexport interface XyoNetwork {\n status(): Promisable<NetworkStatus>\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type { SignedHydratedTransaction } from '#transaction'\n\nexport interface XyoRunner {\n broadcastTransaction(transaction: SignedHydratedTransaction): Promisable<Hash>\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { Signed } from '@xyo-network/boundwitness-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport type { AllowedBlockPayload } from '#block'\nimport type { TransactionBoundWitness, TransactionFeesBigInt } from '#transaction'\n\nexport interface XyoSigner {\n address(): Promisable<Address>\n createSignedTransaction(\n chain: Address,\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n nbf: number,\n exp: number,\n fees: TransactionFeesBigInt,\n from?: Address,\n ): Promisable<Signed<TransactionBoundWitness>>\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type { SignedHydratedBlock } from '#block'\nimport type { Transfer } from '#payload'\nimport type { SignedHydratedTransaction, TransactionBoundWitness } from '#transaction'\n\nexport interface XyoViewer {\n accountBalance: (address: Address) => Promisable<bigint>\n accountHistory: (address: Address) => Promisable<[TransactionBoundWitness[], Transfer[]]>\n\n blockByHash(hash: Hash): Promisable<SignedHydratedBlock | null>\n blockByNumber(blockNumber: number): Promisable<SignedHydratedBlock | null>\n blocksByHash(hash: Hash, limit?: number): Promisable<SignedHydratedBlock[]>\n\n chainId(): Promisable<Address>\n\n currentBlock(): Promisable<SignedHydratedBlock>\n currentBlockHash(): Promisable<Hash>\n currentBlockNumber(): Promisable<number>\n\n transactionByBlockHashAndIndex(blockHash: Hash, transactionIndex: number): Promisable<SignedHydratedTransaction | null>\n transactionByBlockNumberAndIndex(blockNumber: number, transactionIndex: number): Promisable<SignedHydratedTransaction | null>\n transactionByHash(transactionHash: Hash): Promisable<SignedHydratedTransaction | null>\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\n// TODO: define the permissions object and return object types\n\nexport interface XyoWallet {\n accounts(): Promisable<Address[]>\n addChain(chain: Address, name?: string): Promisable<object>\n chain(): Promisable<Address>\n chains(): Promisable<object>\n permissions(): Promisable<Record<string, object>>\n requestPermissions(permissions: object): Promisable<object>\n revokePermissions(permissions: object): Promisable<object>\n switchChain(chain: Address): Promisable<void>\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Signed } from '@xyo-network/boundwitness-model'\nimport type { Payload } from '@xyo-network/payload-model'\n\nimport type { AllowedBlockPayload } from '#block'\nimport type { TransactionBoundWitness, TransactionFeesBigInt } from '#transaction'\n\nimport type { XyoDataLakeProvider } from './XyoDataLake.ts'\nimport type { XyoNetwork } from './XyoNetwork.ts'\nimport type { XyoRunner } from './XyoRunner.ts'\nimport type { XyoSigner } from './XyoSigner.ts'\nimport type { XyoViewer } from './XyoViewer.ts'\nimport type { XyoWallet } from './XyoWallet.ts'\n\nexport interface XyoProvider {\n network?: XyoNetwork\n runner?: XyoRunner\n send?: (\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n chain?: Address,\n nbf?: number,\n exp?: number,\n from?: Address,\n fees?: TransactionFeesBigInt,\n ) => Promise<Signed<TransactionBoundWitness>>\n signer?: XyoSigner\n storage?: XyoDataLakeProvider\n viewer?: XyoViewer\n wallet?: XyoWallet\n}\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type { BlockBoundWitness } from '#block'\n\nexport type BlockValidatorFunction = (\n block: BlockBoundWitness,\n chainId?: Address,\n) => Promisable<Error[]>\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\n\nimport type { HydratedBlock } from '#block'\n\n/**\n * A function that validates a hydrated block against chain state.\n * @param hydratedBlock The hydrated block to validate.\n * @param chainId The chain ID to use for validation.\n * @param archivist The archivist to use for validation.\n * @returns An array of errors if the block is invalid, or an empty array if it is valid.\n */\nexport type HydratedBlockStateValidationFunction = (\n hydratedBlock: HydratedBlock,\n chainId: Address,\n archivist: ReadArchivist,\n) => Promisable<Error[]>\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type { HydratedBlock } from '#block'\n\n/**\n * A function that validates a hydrated block.\n * @param hydratedBlock The hydrated block to validate.\n * @param chainId The chain ID to use for validation.\n * @returns An array of errors if the block is invalid, or an empty array if it is valid.\n */\nexport type HydratedBlockValidatorFunction = (\n hydratedBlock: HydratedBlock,\n chainId?: Address,\n) => Promisable<Error[]>\n","import type { Promisable } from '@xylabs/promise'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\n\nexport type BoundWitnessValidationFunction<T extends BoundWitness = BoundWitness> = (\n bw: T\n) => Promisable<Error[]>\n","import type { Promisable } from '@xylabs/promise'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\n\nexport type HydratedBoundWitnessWithHashStorageMeta<T extends BoundWitness = BoundWitness, P extends Payload = Payload>\n = [WithHashStorageMeta<T>, WithHashStorageMeta<P>[]]\n\nexport type HydratedBoundWitnessValidationFunction<T extends BoundWitness = BoundWitness> = (\n bw: HydratedBoundWitnessWithHashStorageMeta<T>\n) => Promisable<Error[]>\n","import type { Promisable } from '@xylabs/promise'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\n\nimport type { HydratedBlock } from '#block'\n\nexport type InBlockPayloadValidationFunction = (\n payload: WithHashStorageMeta<Payload>, block: HydratedBlock\n) => Promisable<Error[]>\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { HydratedBoundWitnessWithStorageMeta, ReadArchivist } from '@xyo-network/archivist-model'\n\nimport type { TransactionBoundWitness } from '#transaction'\n\n/**\n * A function that validates a hydrated transaction against chain state.\n * @param hydratedTransaction The hydrated transaction to validate.\n * @param chainId The chain ID to use for validation.\n * @param archivist The archivist to use for validation.\n * @returns An array of errors if the transaction is invalid, or an empty array if it is valid.\n */\nexport type HydratedTransactionStateValidationFunction<T extends TransactionBoundWitness = TransactionBoundWitness> = (\n hydratedTransaction: HydratedBoundWitnessWithStorageMeta<T>,\n chainId: Address,\n archivist: ReadArchivist,\n) => Promisable<Error[]>\n","import type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\n\nimport type {\n HydratedTransaction, HydratedTransactionWithHashStorageMeta, TransactionBoundWitness,\n} from '#transaction'\n\n/**\n * A function that validates a hydrated transaction.\n * @param bw The hydrated transaction to validate.\n * @param chainId The chain ID to use for validation.\n * @returns An array of errors if the transaction is invalid, or an empty array if it is valid.\n */\nexport type HydratedTransactionValidatorFunction<T extends TransactionBoundWitness = TransactionBoundWitness> = (\n hydratedTransaction: HydratedTransactionWithHashStorageMeta<HydratedTransaction<T>>,\n chainId?: Address,\n) => Promisable<Error[]>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACO;;ACAA;AACP;AACA;AACA;;ACiBO;AArBA;AACP;AACA;AAoBO;AAnBA;AACP;AACA;AAkBO;AAjBA;AACP;AACA;AAgBO;AAfA;AACP;AACA;AAcO;AAbA;AACP;AACA;AAYO;AAXA;AACP;AACA;AAUO;AATA;AACP;AACA;AAQO;AACP;AACO;AACA;AACA;AACA;;AChCA;AACP;AACA;;ACHO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACO;AACP;;ACPO;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;;ACnBA;AACP;AACA;;ACDO;AACP;AACA;AACO;AACA;AACP;AACA;AACO;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACP;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;;ACbA;AACA;AACA;AACP;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACO;;ACdA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACO;;ACbA;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACA;;ACTA;AACP;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;;ACrBA;AACA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;;ACtBA;AACA;;ACDA;AACP;AACA;AACA;AACA;;ACPO;;ACCA;AACP;AACA;AACA;AACA;AACA;AACA;;ACPO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;;ACNO;AACP;;ACDO;AACP;;ACDO;AACP;;ACAO;AACP;AACO;AACP;AACO;AACP;;ACPO;AACP;AACA;AACA;AACA;AACA;AACA;;ACJO;AACA;AACP;;ACHO;AACA;AACP;AACA;AACA;AACA;;ACLO;AACP;AACA;;ACHO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRO;AACA;AACA;AACP;AACA;AACO;AACA;;ACPA;AACA;;AAEA;AACP;AACO;AACA;;ACPA;AACP;AACA;AACA;AACA;;ACHO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;ACHO;AACP;;ACHO;AACP;AACA;;ACFO;AACP;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACO;;ACnBA;AACP;AACA;AACA;AACA;;ACGO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBO;AACA;AACP;AACA;;ACJO;AACP;AACA;;ACHO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;;ACDO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACA;AACA;;AC3BO;AACA;;ACAA;AACA;AACA;AACA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACA;;ACZA;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;;ACdO;AACP;AACA;;ACDO;AACP;AACA;;ACCO;AACP;AACA;AACA;;ACJO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBO;;ACCA;;ACDA;;ACDA;;ACCA;AACA;;ACDA;;ACCA;;ACDA;;;"}
@@ -1,81 +1,11 @@
1
1
  // src/xl1/XL1.ts
2
- function XL1(value) {
3
- const xl1Value = value;
4
- return new Proxy(xl1Value, {
5
- get(target, prop) {
6
- if (prop === "toAtto") {
7
- return () => AttoXL1(target * AttoXL1ConvertFactor.xl1);
8
- }
9
- return Reflect.get(target, prop);
10
- }
11
- });
12
- }
13
- function MilliXL1(value) {
14
- const xl1Value = value;
15
- return new Proxy(xl1Value, {
16
- get(target, prop) {
17
- if (prop === "toAtto") {
18
- return () => AttoXL1(target * AttoXL1ConvertFactor.milli);
19
- }
20
- return Reflect.get(target, prop);
21
- }
22
- });
23
- }
24
- function MicroXL1(value) {
25
- const xl1Value = value;
26
- return new Proxy(xl1Value, {
27
- get(target, prop) {
28
- if (prop === "toAtto") {
29
- return () => AttoXL1(target * AttoXL1ConvertFactor.micro);
30
- }
31
- return Reflect.get(target, prop);
32
- }
33
- });
34
- }
35
- function NanoXL1(value) {
36
- const xl1Value = value;
37
- return new Proxy(xl1Value, {
38
- get(target, prop) {
39
- if (prop === "toAtto") {
40
- return () => AttoXL1(target * AttoXL1ConvertFactor.nano);
41
- }
42
- return Reflect.get(target, prop);
43
- }
44
- });
45
- }
46
- function PicoXL1(value) {
47
- const xl1Value = value;
48
- return new Proxy(xl1Value, {
49
- get(target, prop) {
50
- if (prop === "toAtto") {
51
- return () => AttoXL1(target * AttoXL1ConvertFactor.pico);
52
- }
53
- return Reflect.get(target, prop);
54
- }
55
- });
56
- }
57
- function FemtoXL1(value) {
58
- const xl1Value = value;
59
- return new Proxy(xl1Value, {
60
- get(target, prop) {
61
- if (prop === "toAtto") {
62
- return () => AttoXL1(target * AttoXL1ConvertFactor.femto);
63
- }
64
- return Reflect.get(target, prop);
65
- }
66
- });
67
- }
68
- function AttoXL1(value) {
69
- const xl1Value = value;
70
- return new Proxy(xl1Value, {
71
- get(target, prop) {
72
- if (prop === "toAtto") {
73
- return () => AttoXL1(target * AttoXL1ConvertFactor.atto);
74
- }
75
- return Reflect.get(target, prop);
76
- }
77
- });
78
- }
2
+ var XL1 = (value) => value;
3
+ var MilliXL1 = (value) => value;
4
+ var MicroXL1 = (value) => value;
5
+ var NanoXL1 = (value) => value;
6
+ var PicoXL1 = (value) => value;
7
+ var FemtoXL1 = (value) => value;
8
+ var AttoXL1 = (value) => value;
79
9
  var XL1ConvertDict = {
80
10
  xl1: 18,
81
11
  milli: 15,
@@ -175,15 +105,15 @@ var asOptionalTransactionBoundWitnessWithStorageMeta = AsObjectFactory4.createOp
175
105
 
176
106
  // src/transaction/TransactionFeesFields.ts
177
107
  var minTransactionFees = {
178
- base: MicroXL1(1000n).toAtto(),
179
- gasPrice: MicroXL1(1n).toAtto(),
180
- gasLimit: MicroXL1(1000n).toAtto(),
181
- priority: MicroXL1(0n).toAtto()
108
+ base: AttoXL1(1000n * AttoXL1ConvertFactor.micro),
109
+ gasPrice: AttoXL1(1n * AttoXL1ConvertFactor.micro),
110
+ gasLimit: AttoXL1(1000n * AttoXL1ConvertFactor.micro),
111
+ priority: AttoXL1(0n * AttoXL1ConvertFactor.micro)
182
112
  };
183
113
  var defaultTransactionFees = {
184
114
  base: minTransactionFees.base,
185
- gasPrice: MicroXL1(10n).toAtto(),
186
- gasLimit: MicroXL1(1000000n).toAtto(),
115
+ gasPrice: AttoXL1(10n * AttoXL1ConvertFactor.micro),
116
+ gasLimit: AttoXL1(1000000n * AttoXL1ConvertFactor.micro),
187
117
  priority: minTransactionFees.priority
188
118
  };
189
119
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/xl1/XL1.ts","../../src/block/AllowedBlockPayload.ts","../../src/payload/elevatable/ChainStakeIntent.ts","../../src/payload/elevatable/Executable.ts","../../src/payload/elevatable/Hash.ts","../../src/payload/elevatable/TransferPayload.ts","../../src/transaction/TransactionBoundWitness.ts","../../src/transaction/TransactionFeesFields.ts","../../src/block/BlockBoundWitness.ts","../../src/constants/StepSizes.ts","../../src/constants/TransactionGasCosts.ts","../../src/fields/BlockNumber.ts","../../src/network/Status.ts","../../src/services/Chain/ChainIdentification.ts","../../src/services/Chain/ChainInformation.ts","../../src/services/stakeIntent/ChainIndexingServiceStateSchema.ts"],"sourcesContent":["export type XL1 = bigint & { readonly _tag: 'XL1' } // 1e-18\nexport type MilliXL1 = bigint & { readonly _tag: 'MilliXL1' } // 1e-15 [XL1 * 1e3 = milliXL1] [milliXL1 / 1e3 = XL1]\nexport type MicroXL1 = bigint & { readonly _tag: 'MicroXL1' } // 1e-12 [XL1 * 1e6 = microXL1] [microXL1 / 1e6 = XL1]\nexport type NanoXL1 = bigint & { readonly _tag: 'NanoXL1' } // 1e-9 [XL1 * 1e9 = nanoXL1] [nanoXL1 / 1e9 = XL1]\nexport type PicoXL1 = bigint & { readonly _tag: 'PicoXL1' } // 1e-6 [XL1 * 1e12 = picoXL1] [picoXL1 / 1e12 = XL1]\nexport type FemtoXL1 = bigint & { readonly _tag: 'FemtoXL1' } // 1e-3 [XL1 * 1e15 = femtoXL1] [femtoXL1 / 1e15 = XL1]\nexport type AttoXL1 = bigint & { readonly _tag: 'AttoXL1' } // 1e-0 [XL1 * 1e18 = attoXL1] [attoXL1 / 1e18 = XL1]\n\ntype XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto'\n\nexport type TypingFunc<T extends bigint> = {\n (value: bigint): T\n toAtto: () => AttoXL1\n}\n\nexport function XL1(value: bigint): XL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as XL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.xl1)\n }\n return Reflect.get(target, prop)\n },\n }) as XL1 & { toAtto(): AttoXL1 }\n}\n\nexport function MilliXL1(value: bigint): MilliXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as MilliXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.milli)\n }\n return Reflect.get(target, prop)\n },\n }) as MilliXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function MicroXL1(value: bigint): MicroXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as MicroXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.micro)\n }\n return Reflect.get(target, prop)\n },\n }) as MicroXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function NanoXL1(value: bigint): NanoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as NanoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.nano)\n }\n return Reflect.get(target, prop)\n },\n }) as NanoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function PicoXL1(value: bigint): PicoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as PicoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.pico)\n }\n return Reflect.get(target, prop)\n },\n }) as PicoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function FemtoXL1(value: bigint): FemtoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as FemtoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.femto)\n }\n return Reflect.get(target, prop)\n },\n }) as FemtoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function AttoXL1(value: bigint): AttoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as AttoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.atto)\n }\n return Reflect.get(target, prop)\n },\n }) as AttoXL1 & { toAtto(): AttoXL1 }\n}\n\n/** @deprecated use XL1Places and xl1ConvertFactor(unit) instead */\nexport const XL1ConvertDict: Record<XL1Units, number> = {\n xl1: 18,\n milli: 15,\n micro: 12,\n nano: 9,\n pico: 6,\n femto: 3,\n atto: 0,\n} as const\n\nexport const XL1Places: Record<XL1Units, bigint> = {\n xl1: 18n,\n milli: 15n,\n micro: 12n,\n nano: 9n,\n pico: 6n,\n femto: 3n,\n atto: 0n,\n} as const\n\n/**\n * Convert factor by which a respective unit is multiplied to convert it to AttoXL1 or\n * by which AttoXL1 is divided to convert it to respective unit is multiplied.\n */\nexport const AttoXL1ConvertFactor: Record<XL1Units, bigint> = {\n xl1: 10n ** XL1Places.xl1,\n milli: 10n ** XL1Places.milli,\n micro: 10n ** XL1Places.micro,\n nano: 10n ** XL1Places.nano,\n pico: 10n ** XL1Places.pico,\n femto: 10n ** XL1Places.femto,\n atto: 10n ** XL1Places.atto,\n} as const\n\n/** @deprecated use AttoXL1ConvertFactor instead */\nexport function xl1ConvertFactor(unit: XL1Units) {\n return 10n ** XL1Places[unit]\n}\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isHashStorageMeta, isSchema } from '@xyo-network/payload-model'\nimport type { SchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport { isSchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\nimport type {\n ChainStakeIntent, HashPayload, Transfer,\n} from '#payload'\nimport {\n ChainStakeIntentSchema, HashSchema, isChainStakeIntent, isHashPayload, isTransfer, TransferSchema,\n} from '#payload'\nimport { isTransactionBoundWitness, type TransactionBoundWitness } from '#transaction'\n\nexport type AllowedBlockPayload = Transfer | ChainStakeIntent | SchemaPayload | TransactionBoundWitness | HashPayload\nexport const AllowedBlockPayloadSchemas: Schema[] = [TransferSchema, ChainStakeIntentSchema, SchemaSchema, BoundWitnessSchema, HashSchema]\nexport type AllowedBlockPayloadSchema = typeof AllowedBlockPayloadSchemas[number]\n\nexport const isAllowedBlockPayloadSchema = (value: unknown): value is AllowedBlockPayloadSchema => {\n return isSchema(value) && AllowedBlockPayloadSchemas.includes(value)\n}\n\nexport const isAllowedBlockPayload = (value: unknown): value is AllowedBlockPayload => {\n return isTransfer(value) || isChainStakeIntent(value) || isSchemaPayload(value) || isTransactionBoundWitness(value) || isHashPayload(value)\n}\n\nexport const isAllowedBlockPayloadWithHashStorageMeta = (value: unknown): value is WithStorageMeta<AllowedBlockPayload> => {\n return isAllowedBlockPayload(value) && isHashStorageMeta(value)\n}\n","import { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const ChainStakeIntentSchema = 'network.xyo.chain.stake.intent' as const\nexport type ChainStakeIntentSchema = typeof ChainStakeIntentSchema\n\nexport type Intent = 'producer' // | 'bank'\n\nexport interface ChainStakeIntentFields extends BlockDuration, FromFields {\n /*\n * The intent of the staking\n */\n intent: Intent\n}\n\nexport type ChainStakeIntent = Payload<ChainStakeIntentFields, ChainStakeIntentSchema>\n\nexport const isChainStakeIntent = (x?: unknown | null): x is ChainStakeIntent => {\n return isPayloadOfSchemaType<ChainStakeIntent>(ChainStakeIntentSchema)(x)\n && asNonNegativeInteger(x.nbf) !== undefined\n && asNonNegativeInteger(x.exp) !== undefined\n}\nexport const asChainStakeIntent = AsObjectFactory.create(isChainStakeIntent)\nexport const asOptionalChainStakeIntent = AsObjectFactory.createOptional(isChainStakeIntent)\n\nconst asNonNegativeInteger = (num: number) => {\n return (Number.isInteger(num) && num >= 0) ? num : undefined\n}\n","import type { Address } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport { isAnyPayload } from '@xyo-network/payload-model'\n\nexport interface FromFields {\n // the address that is treated as the source of this action\n from: Address\n}\n\nexport const hasFrom = (value: unknown): value is FromFields => {\n return (value as FromFields).from !== undefined\n}\n\nexport interface ExecutableFields {\n script: string[]\n}\n\nexport type Executable<T extends EmptyObject = EmptyObject> = T & ExecutableFields\nexport type OptionalExecutable<T extends EmptyObject = EmptyObject> = T & Partial<ExecutableFields>\n\nexport const isExecutable = <T extends EmptyObject>(value: T | undefined): value is Executable<T> => {\n return isAnyPayload(value) && Array.isArray((value as unknown as ExecutableFields).script)\n}\n\nexport const asExecutable = <T extends EmptyObject>(value: T | undefined): Executable<T> | undefined => {\n return isExecutable(value)\n ? value as unknown as Executable<T>\n : undefined\n}\n","import type { Hash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const HashSchema = 'network.xyo.hash' as const\nexport type HashSchema = typeof HashSchema\n\nexport interface HashFields {\n hash: Hash\n}\n\nexport type HashPayload = Payload<HashFields, HashSchema>\n\nexport const isHashPayload = isPayloadOfSchemaType<HashPayload>(HashSchema)\n\nexport const asHashPayload = AsObjectFactory.create(isHashPayload)\nexport const asHashPayloadWithStorageMeta = AsObjectFactory.create(isHashPayload)\nexport const asOptionalHashPayload = AsObjectFactory.createOptional(isHashPayload)\n","import type {\n Address,\n Hex,\n} from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const TransferSchema = 'network.xyo.transfer' as const\nexport type TransferSchema = typeof TransferSchema\n\nexport interface TransferFields extends FromFields {\n epoch: number\n // the amount that is being sent to another address\n transfers: Record<Address, Hex>\n}\n\n// if this payload is included in a boundwitness, it needs to be available for inspection to be included in block\nexport type Transfer = Payload<TransferFields, TransferSchema>\n\nexport const isTransfer = isPayloadOfSchemaType<Transfer>(TransferSchema)\n\nexport const asTransfer = AsObjectFactory.create(isTransfer)\nexport const asOptionalTransfer = AsObjectFactory.createOptional(isTransfer)\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness, Signed } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\nimport type { FromFields, OptionalExecutable } from '#payload'\n\nimport type { TransactionFeesFields } from './TransactionFeesFields.ts'\n\nexport interface TransactionBoundWitnessFields extends BlockDuration, TransactionFeesFields {\n chain: Address\n}\n\nexport type TransactionBoundWitness = BoundWitness<TransactionBoundWitnessFields & OptionalExecutable & FromFields>\n\nexport const isTransactionBoundWitness = (value: unknown): value is TransactionBoundWitness => {\n const typedObj = value as TransactionBoundWitness\n return isBoundWitness(value)\n && typedObj.chain !== undefined\n && typedObj.fees !== undefined\n && typedObj.exp !== undefined\n && typedObj.nbf !== undefined\n}\n\nexport const isSignedTransactionBoundWitness = (value: unknown): value is Signed<TransactionBoundWitness> => {\n return isTransactionBoundWitness(value) && isSigned(value)\n}\n\nexport const isSigned = <T extends BoundWitness = BoundWitness>(value: unknown): value is Signed<T> =>\n isBoundWitness(value)\n && value.$signatures.length === value.addresses.length\n && value.addresses.length > 0\n\nexport const isTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<TransactionBoundWitness> =>\n isTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const isSignedTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<Signed<TransactionBoundWitness>> =>\n isSignedTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const asTransactionBoundWitness = AsObjectFactory.create(isTransactionBoundWitness)\nexport const asOptionalTransactionBoundWitness = AsObjectFactory.createOptional(isTransactionBoundWitness)\n\nexport const asTransactionBoundWitnessWithStorageMeta = AsObjectFactory.create(isTransactionBoundWitnessWithStorageMeta)\nexport const asOptionalTransactionBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isTransactionBoundWitnessWithStorageMeta)\n","import type { Hex } from '@xylabs/hex'\n\nimport type { AttoXL1 } from '../xl1/index.ts'\nimport { MicroXL1 } from '../xl1/index.ts'\n\nexport interface TransactionFeesBigInt {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n}\n\nexport type TransactionFeesHex = {\n [K in keyof TransactionFeesBigInt]: Hex;\n}\n\nexport interface TransactionFeesFields {\n fees: TransactionFeesHex\n}\n\nexport const minTransactionFees: TransactionFeesBigInt = {\n base: MicroXL1(1000n).toAtto(),\n gasPrice: MicroXL1(1n).toAtto(),\n gasLimit: MicroXL1(1000n).toAtto(),\n priority: MicroXL1(0n).toAtto(),\n} as const\n\nexport const defaultTransactionFees: TransactionFeesBigInt = {\n base: minTransactionFees.base,\n gasPrice: MicroXL1(10n).toAtto(),\n gasLimit: MicroXL1(1_000_000n).toAtto(),\n priority: minTransactionFees.priority,\n} as const\n","import type { Hash, Hex } from '@xylabs/hex'\nimport { isHex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface BlockBoundWitnessMeta {\n $epoch: number\n}\n\nexport interface BlockBoundWitnessFields {\n /** Block number */\n block: number\n /** Chain id - this should be \"0\" for the genesis block */\n chain: Hex\n /** Previous block hash if not block 0 */\n previous: Hash | null /* the previous block hash */\n /** Version of the protocol being used major * 1,000,000 + minor * 1,000 + patch */\n protocol: number\n /** Step hashes */\n step_hashes: Hex[]\n}\n\nexport type BlockBoundWitness = BoundWitness<BlockBoundWitnessFields & BlockBoundWitnessMeta>\n\nexport const isBlockBoundWitness = (value: unknown): value is BlockBoundWitness => {\n const typedObj = value as BlockBoundWitness\n return isBoundWitness(value)\n && Number.isInteger(typedObj.block)\n && isHex(typedObj.chain)\n}\n\nexport const isBlockBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<BlockBoundWitness> => {\n return isBlockBoundWitness(value) && isStorageMeta(value)\n}\n\nexport const asBlockBoundWitness = AsObjectFactory.create(isBlockBoundWitness)\nexport const asOptionalBlockBoundWitness = AsObjectFactory.createOptional(isBlockBoundWitness)\n\nexport const asBlockBoundWitnessWithStorageMeta = AsObjectFactory.create(isBlockBoundWitnessWithStorageMeta)\nexport const asOptionalBlockBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isBlockBoundWitnessWithStorageMeta)\n","export const StepSizes = [10, 105, 1103, 11_576, 121_551, 1_276_282, 13_400_956] as const\n","import { MicroXL1 } from '../xl1/index.ts'\n\nexport const TransactionGasCosts = {\n /**\n * The cost of storing each character that is added to the chain\n * This includes the transaction JSON and all the elevated payloads' JSON\n */\n characterStorage: MicroXL1(10n),\n\n /** The cost of static validating every payload that will be included in the chain */\n payloadValidation: MicroXL1(1000n),\n\n /** The cost of validating each signature that will be included in the chain */\n signatureValidation: MicroXL1(1000n),\n\n /** The cost of validating each hash that will be included in the chain */\n hashValidation: MicroXL1(100n),\n\n /** The cost of validating a balance state, triggered by a Transfer payload or gas collection */\n balanceValidation: MicroXL1(100n),\n} as const\n\n/** Gas Calculation\n *\n * 1 Million microXL1 (mXL1) = 1 XL1\n *\n * Gas amount is calculated as follows:\n *\n * 1. Each byte in the transaction cost 10 gas\n * 2. Each payload validation in the transaction costs 1000 gas\n * 3. Each signature verification in the transaction costs 1000 gas\n * 4. Each hash validation in the transaction costs 100 gas\n * 5. Each balance validation in the transaction costs 100 gas\n * 6. Processing/Compute/Storage Cost?\n * 7. operation Costs?\n *\n * The total gas cost is calculated by multiplying the gas amount by the gas price.\n *\n * minGasPrice is initially set to 100 mXL1\n * minBase is initially set to 1000 mXL1\n * minPriority is always 0 mXL1, but can be set to increase the priority of the transaction\n *\n */\n","import type { Hex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nexport const BlockNumberSchema = 'network.xyo.chain.block.number' as const\nexport type BlockNumberSchema = typeof BlockNumberSchema\n\nexport interface BlockNumberFields {\n /**\n * The block number\n */\n block: Hex\n /**\n * The chain id\n */\n chain?: Hex\n}\n/**\n * The number of a block\n */\nexport type BlockNumber = Payload<BlockNumberFields, BlockNumberSchema>\n\n/**\n * Identity function for determining if an object is a BlockNumber\n */\nexport const isBlockNumber = isPayloadOfSchemaType<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumber = AsObjectFactory.create<BlockNumber>(isBlockNumber)\nexport const asOptionalBlockNumber = AsObjectFactory.createOptional<BlockNumber>(isBlockNumber)\n\n/**\n * Identity function for determining if an object is a BlockNumber with sources\n */\nexport const isBlockNumberWithSources = isPayloadOfSchemaTypeWithSources<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumberWithSources = AsObjectFactory.create<WithSources<BlockNumber>>(isBlockNumberWithSources)\nexport const asOptionalBlockNumberWithSources = AsObjectFactory.createOptional<WithSources<BlockNumber>>(isBlockNumberWithSources)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const NetworkStatusSchema = 'network.xyo.chain.status' as const\nexport type NetworkStatusSchema = typeof NetworkStatusSchema\n\nexport type NetworkStatusState = 'online' | 'offline' | 'degraded' | 'unknown'\n\nexport type NetworkStatusUpdate = {\n end: number\n start: number\n update: string\n}\n\nexport interface NetworkStatusFields {\n description: string\n state: NetworkStatusState\n updates?: NetworkStatusUpdate[]\n}\n\nexport type NetworkStatus = Payload<NetworkStatusFields, NetworkStatusSchema>\n\nexport const isNetworkStatus = isPayloadOfSchemaType<NetworkStatus>(NetworkStatusSchema)\n","import type { Address } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainIdentificationPayloadSchema = 'network.xyo.chain.identification' as const\nexport type ChainIdentificationPayloadSchema = typeof ChainIdentificationPayloadSchema\n\n/**\n * Identification required to uniquely identify a chain\n */\nexport interface ChainIdentification {\n /** @field the id of the chain */\n id: Address\n}\n\nexport type ChainIdentificationPayload = Payload<ChainIdentification, ChainIdentificationPayloadSchema>\nexport const isChainIdentificationPayload = isPayloadOfSchemaType<ChainIdentificationPayload>(ChainIdentificationPayloadSchema)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainInformationPayloadSchema = 'network.xyo.chain.information' as const\nexport type ChainInformationPayloadSchema = typeof ChainInformationPayloadSchema\n\nimport type { ChainIdentification } from './ChainIdentification.ts'\n\n/**\n * Information required to produce a chain\n */\nexport interface ChainInformation extends ChainIdentification {\n // TODO: Add these fields which are currently promises on the smart contract\n // forkedAtBlockNumber: bigint\n // forkedAtHash: Hash\n // forkedChainId: Address\n}\n\nexport type ChainInformationPayload = Payload<ChainIdentification, ChainInformationPayloadSchema>\nexport const isChainInformationPayload = isPayloadOfSchemaType<ChainInformationPayload>(ChainInformationPayloadSchema)\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {\n /**\n * The hash of the last block that this service has indexing\n */\n endBlockHash: Hash\n /**\n * The hash of the block that the service started indexing. If undefined, the service is\n * assumed to have started indexing from the genesis block\n */\n startBlockHash?: Hash\n /**\n * The indexed state for the range\n */\n state: T\n}\nexport const ChainIndexingServiceStateSchema = 'network.xyo.chain.indexing.service.state' as const\nexport type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema\n\n/**\n * The result of a ChainIndexingServiceState\n */\nexport type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>\n\n/**\n * Identity functions for determining if an object is an ChainIndexingServiceState\n */\nexport const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {\n return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)\n}\nexport const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)\n\nexport const isChainIndexingServiceStateWithStorageMeta\n= <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>\n isChainIndexingServiceState<T>(value) && isStorageMeta(value)\n\nexport const asChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n\nexport const asOptionalChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.createOptional<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n"],"mappings":"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","names":["AsObjectFactory","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","AsObjectFactory","AsObjectFactory","isBoundWitness","isStorageMeta","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta"]}
1
+ {"version":3,"sources":["../../src/xl1/XL1.ts","../../src/block/AllowedBlockPayload.ts","../../src/payload/elevatable/ChainStakeIntent.ts","../../src/payload/elevatable/Executable.ts","../../src/payload/elevatable/Hash.ts","../../src/payload/elevatable/TransferPayload.ts","../../src/transaction/TransactionBoundWitness.ts","../../src/transaction/TransactionFeesFields.ts","../../src/block/BlockBoundWitness.ts","../../src/constants/StepSizes.ts","../../src/constants/TransactionGasCosts.ts","../../src/fields/BlockNumber.ts","../../src/network/Status.ts","../../src/services/Chain/ChainIdentification.ts","../../src/services/Chain/ChainInformation.ts","../../src/services/stakeIntent/ChainIndexingServiceStateSchema.ts"],"sourcesContent":["export type XL1 = bigint & { readonly _tag: 'XL1' } // 1e-18\nexport type MilliXL1 = bigint & { readonly _tag: 'MilliXL1' } // 1e-15 [XL1 * 1e3 = milliXL1] [milliXL1 / 1e3 = XL1]\nexport type MicroXL1 = bigint & { readonly _tag: 'MicroXL1' } // 1e-12 [XL1 * 1e6 = microXL1] [microXL1 / 1e6 = XL1]\nexport type NanoXL1 = bigint & { readonly _tag: 'NanoXL1' } // 1e-9 [XL1 * 1e9 = nanoXL1] [nanoXL1 / 1e9 = XL1]\nexport type PicoXL1 = bigint & { readonly _tag: 'PicoXL1' } // 1e-6 [XL1 * 1e12 = picoXL1] [picoXL1 / 1e12 = XL1]\nexport type FemtoXL1 = bigint & { readonly _tag: 'FemtoXL1' } // 1e-3 [XL1 * 1e15 = femtoXL1] [femtoXL1 / 1e15 = XL1]\nexport type AttoXL1 = bigint & { readonly _tag: 'AttoXL1' } // 1e-0 [XL1 * 1e18 = attoXL1] [attoXL1 / 1e18 = XL1]\n\nexport type TypingFunc<T extends bigint> = (value: bigint) => T\n\nexport const XL1: TypingFunc<XL1> = (value: bigint): XL1 => value as XL1\nexport const MilliXL1: TypingFunc<MilliXL1> = (value: bigint): MilliXL1 => value as MilliXL1\nexport const MicroXL1: TypingFunc<MicroXL1> = (value: bigint): MicroXL1 => value as MicroXL1\nexport const NanoXL1: TypingFunc<NanoXL1> = (value: bigint): NanoXL1 => value as NanoXL1\nexport const PicoXL1: TypingFunc<PicoXL1> = (value: bigint): PicoXL1 => value as PicoXL1\nexport const FemtoXL1: TypingFunc<FemtoXL1> = (value: bigint): FemtoXL1 => value as FemtoXL1\nexport const AttoXL1: TypingFunc<AttoXL1> = (value: bigint): AttoXL1 => value as AttoXL1\n\ntype XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto'\n\n/** @deprecated use XL1Places and xl1ConvertFactor(unit) instead */\nexport const XL1ConvertDict: Record<XL1Units, number> = {\n xl1: 18,\n milli: 15,\n micro: 12,\n nano: 9,\n pico: 6,\n femto: 3,\n atto: 0,\n} as const\n\nexport const XL1Places: Record<XL1Units, bigint> = {\n xl1: 18n,\n milli: 15n,\n micro: 12n,\n nano: 9n,\n pico: 6n,\n femto: 3n,\n atto: 0n,\n} as const\n\n/**\n * Convert factor by which a respective unit is multiplied to convert it to AttoXL1 or\n * by which AttoXL1 is divided to convert it to respective unit is multiplied.\n */\nexport const AttoXL1ConvertFactor: Record<XL1Units, bigint> = {\n xl1: 10n ** XL1Places.xl1,\n milli: 10n ** XL1Places.milli,\n micro: 10n ** XL1Places.micro,\n nano: 10n ** XL1Places.nano,\n pico: 10n ** XL1Places.pico,\n femto: 10n ** XL1Places.femto,\n atto: 10n ** XL1Places.atto,\n} as const\n\n/** @deprecated use AttoXL1ConvertFactor instead */\nexport function xl1ConvertFactor(unit: XL1Units) {\n return 10n ** XL1Places[unit]\n}\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isHashStorageMeta, isSchema } from '@xyo-network/payload-model'\nimport type { SchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport { isSchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\nimport type {\n ChainStakeIntent, HashPayload, Transfer,\n} from '#payload'\nimport {\n ChainStakeIntentSchema, HashSchema, isChainStakeIntent, isHashPayload, isTransfer, TransferSchema,\n} from '#payload'\nimport { isTransactionBoundWitness, type TransactionBoundWitness } from '#transaction'\n\nexport type AllowedBlockPayload = Transfer | ChainStakeIntent | SchemaPayload | TransactionBoundWitness | HashPayload\nexport const AllowedBlockPayloadSchemas: Schema[] = [TransferSchema, ChainStakeIntentSchema, SchemaSchema, BoundWitnessSchema, HashSchema]\nexport type AllowedBlockPayloadSchema = typeof AllowedBlockPayloadSchemas[number]\n\nexport const isAllowedBlockPayloadSchema = (value: unknown): value is AllowedBlockPayloadSchema => {\n return isSchema(value) && AllowedBlockPayloadSchemas.includes(value)\n}\n\nexport const isAllowedBlockPayload = (value: unknown): value is AllowedBlockPayload => {\n return isTransfer(value) || isChainStakeIntent(value) || isSchemaPayload(value) || isTransactionBoundWitness(value) || isHashPayload(value)\n}\n\nexport const isAllowedBlockPayloadWithHashStorageMeta = (value: unknown): value is WithStorageMeta<AllowedBlockPayload> => {\n return isAllowedBlockPayload(value) && isHashStorageMeta(value)\n}\n","import { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const ChainStakeIntentSchema = 'network.xyo.chain.stake.intent' as const\nexport type ChainStakeIntentSchema = typeof ChainStakeIntentSchema\n\nexport type Intent = 'producer' // | 'bank'\n\nexport interface ChainStakeIntentFields extends BlockDuration, FromFields {\n /*\n * The intent of the staking\n */\n intent: Intent\n}\n\nexport type ChainStakeIntent = Payload<ChainStakeIntentFields, ChainStakeIntentSchema>\n\nexport const isChainStakeIntent = (x?: unknown | null): x is ChainStakeIntent => {\n return isPayloadOfSchemaType<ChainStakeIntent>(ChainStakeIntentSchema)(x)\n && asNonNegativeInteger(x.nbf) !== undefined\n && asNonNegativeInteger(x.exp) !== undefined\n}\nexport const asChainStakeIntent = AsObjectFactory.create(isChainStakeIntent)\nexport const asOptionalChainStakeIntent = AsObjectFactory.createOptional(isChainStakeIntent)\n\nconst asNonNegativeInteger = (num: number) => {\n return (Number.isInteger(num) && num >= 0) ? num : undefined\n}\n","import type { Address } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport { isAnyPayload } from '@xyo-network/payload-model'\n\nexport interface FromFields {\n // the address that is treated as the source of this action\n from: Address\n}\n\nexport const hasFrom = (value: unknown): value is FromFields => {\n return (value as FromFields).from !== undefined\n}\n\nexport interface ExecutableFields {\n script: string[]\n}\n\nexport type Executable<T extends EmptyObject = EmptyObject> = T & ExecutableFields\nexport type OptionalExecutable<T extends EmptyObject = EmptyObject> = T & Partial<ExecutableFields>\n\nexport const isExecutable = <T extends EmptyObject>(value: T | undefined): value is Executable<T> => {\n return isAnyPayload(value) && Array.isArray((value as unknown as ExecutableFields).script)\n}\n\nexport const asExecutable = <T extends EmptyObject>(value: T | undefined): Executable<T> | undefined => {\n return isExecutable(value)\n ? value as unknown as Executable<T>\n : undefined\n}\n","import type { Hash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const HashSchema = 'network.xyo.hash' as const\nexport type HashSchema = typeof HashSchema\n\nexport interface HashFields {\n hash: Hash\n}\n\nexport type HashPayload = Payload<HashFields, HashSchema>\n\nexport const isHashPayload = isPayloadOfSchemaType<HashPayload>(HashSchema)\n\nexport const asHashPayload = AsObjectFactory.create(isHashPayload)\nexport const asHashPayloadWithStorageMeta = AsObjectFactory.create(isHashPayload)\nexport const asOptionalHashPayload = AsObjectFactory.createOptional(isHashPayload)\n","import type {\n Address,\n Hex,\n} from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const TransferSchema = 'network.xyo.transfer' as const\nexport type TransferSchema = typeof TransferSchema\n\nexport interface TransferFields extends FromFields {\n epoch: number\n // the amount that is being sent to another address\n transfers: Record<Address, Hex>\n}\n\n// if this payload is included in a boundwitness, it needs to be available for inspection to be included in block\nexport type Transfer = Payload<TransferFields, TransferSchema>\n\nexport const isTransfer = isPayloadOfSchemaType<Transfer>(TransferSchema)\n\nexport const asTransfer = AsObjectFactory.create(isTransfer)\nexport const asOptionalTransfer = AsObjectFactory.createOptional(isTransfer)\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness, Signed } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\nimport type { FromFields, OptionalExecutable } from '#payload'\n\nimport type { TransactionFeesFields } from './TransactionFeesFields.ts'\n\nexport interface TransactionBoundWitnessFields extends BlockDuration, TransactionFeesFields {\n chain: Address\n}\n\nexport type TransactionBoundWitness = BoundWitness<TransactionBoundWitnessFields & OptionalExecutable & FromFields>\n\nexport const isTransactionBoundWitness = (value: unknown): value is TransactionBoundWitness => {\n const typedObj = value as TransactionBoundWitness\n return isBoundWitness(value)\n && typedObj.chain !== undefined\n && typedObj.fees !== undefined\n && typedObj.exp !== undefined\n && typedObj.nbf !== undefined\n}\n\nexport const isSignedTransactionBoundWitness = (value: unknown): value is Signed<TransactionBoundWitness> => {\n return isTransactionBoundWitness(value) && isSigned(value)\n}\n\nexport const isSigned = <T extends BoundWitness = BoundWitness>(value: unknown): value is Signed<T> =>\n isBoundWitness(value)\n && value.$signatures.length === value.addresses.length\n && value.addresses.length > 0\n\nexport const isTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<TransactionBoundWitness> =>\n isTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const isSignedTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<Signed<TransactionBoundWitness>> =>\n isSignedTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const asTransactionBoundWitness = AsObjectFactory.create(isTransactionBoundWitness)\nexport const asOptionalTransactionBoundWitness = AsObjectFactory.createOptional(isTransactionBoundWitness)\n\nexport const asTransactionBoundWitnessWithStorageMeta = AsObjectFactory.create(isTransactionBoundWitnessWithStorageMeta)\nexport const asOptionalTransactionBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isTransactionBoundWitnessWithStorageMeta)\n","import type { Hex } from '@xylabs/hex'\n\nimport {\n AttoXL1,\n AttoXL1ConvertFactor,\n} from '../xl1/index.ts'\n\nexport interface TransactionFeesBigInt {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n}\n\nexport type TransactionFeesHex = {\n [K in keyof TransactionFeesBigInt]: Hex;\n}\n\nexport interface TransactionFeesFields {\n fees: TransactionFeesHex\n}\n\nexport const minTransactionFees: TransactionFeesBigInt = {\n base: AttoXL1(1000n * AttoXL1ConvertFactor.micro),\n gasPrice: AttoXL1(1n * AttoXL1ConvertFactor.micro),\n gasLimit: AttoXL1(1000n * AttoXL1ConvertFactor.micro),\n priority: AttoXL1(0n * AttoXL1ConvertFactor.micro),\n} as const\n\nexport const defaultTransactionFees: TransactionFeesBigInt = {\n base: minTransactionFees.base,\n gasPrice: AttoXL1(10n * AttoXL1ConvertFactor.micro),\n gasLimit: AttoXL1(1_000_000n * AttoXL1ConvertFactor.micro),\n priority: minTransactionFees.priority,\n} as const\n","import type { Hash, Hex } from '@xylabs/hex'\nimport { isHex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface BlockBoundWitnessMeta {\n $epoch: number\n}\n\nexport interface BlockBoundWitnessFields {\n /** Block number */\n block: number\n /** Chain id - this should be \"0\" for the genesis block */\n chain: Hex\n /** Previous block hash if not block 0 */\n previous: Hash | null /* the previous block hash */\n /** Version of the protocol being used major * 1,000,000 + minor * 1,000 + patch */\n protocol: number\n /** Step hashes */\n step_hashes: Hex[]\n}\n\nexport type BlockBoundWitness = BoundWitness<BlockBoundWitnessFields & BlockBoundWitnessMeta>\n\nexport const isBlockBoundWitness = (value: unknown): value is BlockBoundWitness => {\n const typedObj = value as BlockBoundWitness\n return isBoundWitness(value)\n && Number.isInteger(typedObj.block)\n && isHex(typedObj.chain)\n}\n\nexport const isBlockBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<BlockBoundWitness> => {\n return isBlockBoundWitness(value) && isStorageMeta(value)\n}\n\nexport const asBlockBoundWitness = AsObjectFactory.create(isBlockBoundWitness)\nexport const asOptionalBlockBoundWitness = AsObjectFactory.createOptional(isBlockBoundWitness)\n\nexport const asBlockBoundWitnessWithStorageMeta = AsObjectFactory.create(isBlockBoundWitnessWithStorageMeta)\nexport const asOptionalBlockBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isBlockBoundWitnessWithStorageMeta)\n","export const StepSizes = [10, 105, 1103, 11_576, 121_551, 1_276_282, 13_400_956] as const\n","import { MicroXL1 } from '../xl1/index.ts'\n\nexport const TransactionGasCosts = {\n /**\n * The cost of storing each character that is added to the chain\n * This includes the transaction JSON and all the elevated payloads' JSON\n */\n characterStorage: MicroXL1(10n),\n\n /** The cost of static validating every payload that will be included in the chain */\n payloadValidation: MicroXL1(1000n),\n\n /** The cost of validating each signature that will be included in the chain */\n signatureValidation: MicroXL1(1000n),\n\n /** The cost of validating each hash that will be included in the chain */\n hashValidation: MicroXL1(100n),\n\n /** The cost of validating a balance state, triggered by a Transfer payload or gas collection */\n balanceValidation: MicroXL1(100n),\n} as const\n\n/** Gas Calculation\n *\n * 1 Million microXL1 (mXL1) = 1 XL1\n *\n * Gas amount is calculated as follows:\n *\n * 1. Each byte in the transaction cost 10 gas\n * 2. Each payload validation in the transaction costs 1000 gas\n * 3. Each signature verification in the transaction costs 1000 gas\n * 4. Each hash validation in the transaction costs 100 gas\n * 5. Each balance validation in the transaction costs 100 gas\n * 6. Processing/Compute/Storage Cost?\n * 7. operation Costs?\n *\n * The total gas cost is calculated by multiplying the gas amount by the gas price.\n *\n * minGasPrice is initially set to 100 mXL1\n * minBase is initially set to 1000 mXL1\n * minPriority is always 0 mXL1, but can be set to increase the priority of the transaction\n *\n */\n","import type { Hex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nexport const BlockNumberSchema = 'network.xyo.chain.block.number' as const\nexport type BlockNumberSchema = typeof BlockNumberSchema\n\nexport interface BlockNumberFields {\n /**\n * The block number\n */\n block: Hex\n /**\n * The chain id\n */\n chain?: Hex\n}\n/**\n * The number of a block\n */\nexport type BlockNumber = Payload<BlockNumberFields, BlockNumberSchema>\n\n/**\n * Identity function for determining if an object is a BlockNumber\n */\nexport const isBlockNumber = isPayloadOfSchemaType<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumber = AsObjectFactory.create<BlockNumber>(isBlockNumber)\nexport const asOptionalBlockNumber = AsObjectFactory.createOptional<BlockNumber>(isBlockNumber)\n\n/**\n * Identity function for determining if an object is a BlockNumber with sources\n */\nexport const isBlockNumberWithSources = isPayloadOfSchemaTypeWithSources<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumberWithSources = AsObjectFactory.create<WithSources<BlockNumber>>(isBlockNumberWithSources)\nexport const asOptionalBlockNumberWithSources = AsObjectFactory.createOptional<WithSources<BlockNumber>>(isBlockNumberWithSources)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const NetworkStatusSchema = 'network.xyo.chain.status' as const\nexport type NetworkStatusSchema = typeof NetworkStatusSchema\n\nexport type NetworkStatusState = 'online' | 'offline' | 'degraded' | 'unknown'\n\nexport type NetworkStatusUpdate = {\n end: number\n start: number\n update: string\n}\n\nexport interface NetworkStatusFields {\n description: string\n state: NetworkStatusState\n updates?: NetworkStatusUpdate[]\n}\n\nexport type NetworkStatus = Payload<NetworkStatusFields, NetworkStatusSchema>\n\nexport const isNetworkStatus = isPayloadOfSchemaType<NetworkStatus>(NetworkStatusSchema)\n","import type { Address } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainIdentificationPayloadSchema = 'network.xyo.chain.identification' as const\nexport type ChainIdentificationPayloadSchema = typeof ChainIdentificationPayloadSchema\n\n/**\n * Identification required to uniquely identify a chain\n */\nexport interface ChainIdentification {\n /** @field the id of the chain */\n id: Address\n}\n\nexport type ChainIdentificationPayload = Payload<ChainIdentification, ChainIdentificationPayloadSchema>\nexport const isChainIdentificationPayload = isPayloadOfSchemaType<ChainIdentificationPayload>(ChainIdentificationPayloadSchema)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainInformationPayloadSchema = 'network.xyo.chain.information' as const\nexport type ChainInformationPayloadSchema = typeof ChainInformationPayloadSchema\n\nimport type { ChainIdentification } from './ChainIdentification.ts'\n\n/**\n * Information required to produce a chain\n */\nexport interface ChainInformation extends ChainIdentification {\n // TODO: Add these fields which are currently promises on the smart contract\n // forkedAtBlockNumber: bigint\n // forkedAtHash: Hash\n // forkedChainId: Address\n}\n\nexport type ChainInformationPayload = Payload<ChainIdentification, ChainInformationPayloadSchema>\nexport const isChainInformationPayload = isPayloadOfSchemaType<ChainInformationPayload>(ChainInformationPayloadSchema)\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {\n /**\n * The hash of the last block that this service has indexing\n */\n endBlockHash: Hash\n /**\n * The hash of the block that the service started indexing. If undefined, the service is\n * assumed to have started indexing from the genesis block\n */\n startBlockHash?: Hash\n /**\n * The indexed state for the range\n */\n state: T\n}\nexport const ChainIndexingServiceStateSchema = 'network.xyo.chain.indexing.service.state' as const\nexport type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema\n\n/**\n * The result of a ChainIndexingServiceState\n */\nexport type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>\n\n/**\n * Identity functions for determining if an object is an ChainIndexingServiceState\n */\nexport const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {\n return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)\n}\nexport const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)\n\nexport const isChainIndexingServiceStateWithStorageMeta\n= <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>\n isChainIndexingServiceState<T>(value) && isStorageMeta(value)\n\nexport const asChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n\nexport const asOptionalChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.createOptional<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n"],"mappings":"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","names":["AsObjectFactory","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","AsObjectFactory","AsObjectFactory","isBoundWitness","isStorageMeta","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta"]}
@@ -1,81 +1,11 @@
1
1
  // src/xl1/XL1.ts
2
- function XL1(value) {
3
- const xl1Value = value;
4
- return new Proxy(xl1Value, {
5
- get(target, prop) {
6
- if (prop === "toAtto") {
7
- return () => AttoXL1(target * AttoXL1ConvertFactor.xl1);
8
- }
9
- return Reflect.get(target, prop);
10
- }
11
- });
12
- }
13
- function MilliXL1(value) {
14
- const xl1Value = value;
15
- return new Proxy(xl1Value, {
16
- get(target, prop) {
17
- if (prop === "toAtto") {
18
- return () => AttoXL1(target * AttoXL1ConvertFactor.milli);
19
- }
20
- return Reflect.get(target, prop);
21
- }
22
- });
23
- }
24
- function MicroXL1(value) {
25
- const xl1Value = value;
26
- return new Proxy(xl1Value, {
27
- get(target, prop) {
28
- if (prop === "toAtto") {
29
- return () => AttoXL1(target * AttoXL1ConvertFactor.micro);
30
- }
31
- return Reflect.get(target, prop);
32
- }
33
- });
34
- }
35
- function NanoXL1(value) {
36
- const xl1Value = value;
37
- return new Proxy(xl1Value, {
38
- get(target, prop) {
39
- if (prop === "toAtto") {
40
- return () => AttoXL1(target * AttoXL1ConvertFactor.nano);
41
- }
42
- return Reflect.get(target, prop);
43
- }
44
- });
45
- }
46
- function PicoXL1(value) {
47
- const xl1Value = value;
48
- return new Proxy(xl1Value, {
49
- get(target, prop) {
50
- if (prop === "toAtto") {
51
- return () => AttoXL1(target * AttoXL1ConvertFactor.pico);
52
- }
53
- return Reflect.get(target, prop);
54
- }
55
- });
56
- }
57
- function FemtoXL1(value) {
58
- const xl1Value = value;
59
- return new Proxy(xl1Value, {
60
- get(target, prop) {
61
- if (prop === "toAtto") {
62
- return () => AttoXL1(target * AttoXL1ConvertFactor.femto);
63
- }
64
- return Reflect.get(target, prop);
65
- }
66
- });
67
- }
68
- function AttoXL1(value) {
69
- const xl1Value = value;
70
- return new Proxy(xl1Value, {
71
- get(target, prop) {
72
- if (prop === "toAtto") {
73
- return () => AttoXL1(target * AttoXL1ConvertFactor.atto);
74
- }
75
- return Reflect.get(target, prop);
76
- }
77
- });
78
- }
2
+ var XL1 = (value) => value;
3
+ var MilliXL1 = (value) => value;
4
+ var MicroXL1 = (value) => value;
5
+ var NanoXL1 = (value) => value;
6
+ var PicoXL1 = (value) => value;
7
+ var FemtoXL1 = (value) => value;
8
+ var AttoXL1 = (value) => value;
79
9
  var XL1ConvertDict = {
80
10
  xl1: 18,
81
11
  milli: 15,
@@ -175,15 +105,15 @@ var asOptionalTransactionBoundWitnessWithStorageMeta = AsObjectFactory4.createOp
175
105
 
176
106
  // src/transaction/TransactionFeesFields.ts
177
107
  var minTransactionFees = {
178
- base: MicroXL1(1000n).toAtto(),
179
- gasPrice: MicroXL1(1n).toAtto(),
180
- gasLimit: MicroXL1(1000n).toAtto(),
181
- priority: MicroXL1(0n).toAtto()
108
+ base: AttoXL1(1000n * AttoXL1ConvertFactor.micro),
109
+ gasPrice: AttoXL1(1n * AttoXL1ConvertFactor.micro),
110
+ gasLimit: AttoXL1(1000n * AttoXL1ConvertFactor.micro),
111
+ priority: AttoXL1(0n * AttoXL1ConvertFactor.micro)
182
112
  };
183
113
  var defaultTransactionFees = {
184
114
  base: minTransactionFees.base,
185
- gasPrice: MicroXL1(10n).toAtto(),
186
- gasLimit: MicroXL1(1000000n).toAtto(),
115
+ gasPrice: AttoXL1(10n * AttoXL1ConvertFactor.micro),
116
+ gasLimit: AttoXL1(1000000n * AttoXL1ConvertFactor.micro),
187
117
  priority: minTransactionFees.priority
188
118
  };
189
119
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/xl1/XL1.ts","../../src/block/AllowedBlockPayload.ts","../../src/payload/elevatable/ChainStakeIntent.ts","../../src/payload/elevatable/Executable.ts","../../src/payload/elevatable/Hash.ts","../../src/payload/elevatable/TransferPayload.ts","../../src/transaction/TransactionBoundWitness.ts","../../src/transaction/TransactionFeesFields.ts","../../src/block/BlockBoundWitness.ts","../../src/constants/StepSizes.ts","../../src/constants/TransactionGasCosts.ts","../../src/fields/BlockNumber.ts","../../src/network/Status.ts","../../src/services/Chain/ChainIdentification.ts","../../src/services/Chain/ChainInformation.ts","../../src/services/stakeIntent/ChainIndexingServiceStateSchema.ts"],"sourcesContent":["export type XL1 = bigint & { readonly _tag: 'XL1' } // 1e-18\nexport type MilliXL1 = bigint & { readonly _tag: 'MilliXL1' } // 1e-15 [XL1 * 1e3 = milliXL1] [milliXL1 / 1e3 = XL1]\nexport type MicroXL1 = bigint & { readonly _tag: 'MicroXL1' } // 1e-12 [XL1 * 1e6 = microXL1] [microXL1 / 1e6 = XL1]\nexport type NanoXL1 = bigint & { readonly _tag: 'NanoXL1' } // 1e-9 [XL1 * 1e9 = nanoXL1] [nanoXL1 / 1e9 = XL1]\nexport type PicoXL1 = bigint & { readonly _tag: 'PicoXL1' } // 1e-6 [XL1 * 1e12 = picoXL1] [picoXL1 / 1e12 = XL1]\nexport type FemtoXL1 = bigint & { readonly _tag: 'FemtoXL1' } // 1e-3 [XL1 * 1e15 = femtoXL1] [femtoXL1 / 1e15 = XL1]\nexport type AttoXL1 = bigint & { readonly _tag: 'AttoXL1' } // 1e-0 [XL1 * 1e18 = attoXL1] [attoXL1 / 1e18 = XL1]\n\ntype XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto'\n\nexport type TypingFunc<T extends bigint> = {\n (value: bigint): T\n toAtto: () => AttoXL1\n}\n\nexport function XL1(value: bigint): XL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as XL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.xl1)\n }\n return Reflect.get(target, prop)\n },\n }) as XL1 & { toAtto(): AttoXL1 }\n}\n\nexport function MilliXL1(value: bigint): MilliXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as MilliXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.milli)\n }\n return Reflect.get(target, prop)\n },\n }) as MilliXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function MicroXL1(value: bigint): MicroXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as MicroXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.micro)\n }\n return Reflect.get(target, prop)\n },\n }) as MicroXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function NanoXL1(value: bigint): NanoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as NanoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.nano)\n }\n return Reflect.get(target, prop)\n },\n }) as NanoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function PicoXL1(value: bigint): PicoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as PicoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.pico)\n }\n return Reflect.get(target, prop)\n },\n }) as PicoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function FemtoXL1(value: bigint): FemtoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as FemtoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.femto)\n }\n return Reflect.get(target, prop)\n },\n }) as FemtoXL1 & { toAtto(): AttoXL1 }\n}\n\nexport function AttoXL1(value: bigint): AttoXL1 & { toAtto(): AttoXL1 } {\n const xl1Value = value as AttoXL1\n\n return new Proxy(xl1Value, {\n get(target, prop) {\n if (prop === 'toAtto') {\n return () => AttoXL1(target * AttoXL1ConvertFactor.atto)\n }\n return Reflect.get(target, prop)\n },\n }) as AttoXL1 & { toAtto(): AttoXL1 }\n}\n\n/** @deprecated use XL1Places and xl1ConvertFactor(unit) instead */\nexport const XL1ConvertDict: Record<XL1Units, number> = {\n xl1: 18,\n milli: 15,\n micro: 12,\n nano: 9,\n pico: 6,\n femto: 3,\n atto: 0,\n} as const\n\nexport const XL1Places: Record<XL1Units, bigint> = {\n xl1: 18n,\n milli: 15n,\n micro: 12n,\n nano: 9n,\n pico: 6n,\n femto: 3n,\n atto: 0n,\n} as const\n\n/**\n * Convert factor by which a respective unit is multiplied to convert it to AttoXL1 or\n * by which AttoXL1 is divided to convert it to respective unit is multiplied.\n */\nexport const AttoXL1ConvertFactor: Record<XL1Units, bigint> = {\n xl1: 10n ** XL1Places.xl1,\n milli: 10n ** XL1Places.milli,\n micro: 10n ** XL1Places.micro,\n nano: 10n ** XL1Places.nano,\n pico: 10n ** XL1Places.pico,\n femto: 10n ** XL1Places.femto,\n atto: 10n ** XL1Places.atto,\n} as const\n\n/** @deprecated use AttoXL1ConvertFactor instead */\nexport function xl1ConvertFactor(unit: XL1Units) {\n return 10n ** XL1Places[unit]\n}\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isHashStorageMeta, isSchema } from '@xyo-network/payload-model'\nimport type { SchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport { isSchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\nimport type {\n ChainStakeIntent, HashPayload, Transfer,\n} from '#payload'\nimport {\n ChainStakeIntentSchema, HashSchema, isChainStakeIntent, isHashPayload, isTransfer, TransferSchema,\n} from '#payload'\nimport { isTransactionBoundWitness, type TransactionBoundWitness } from '#transaction'\n\nexport type AllowedBlockPayload = Transfer | ChainStakeIntent | SchemaPayload | TransactionBoundWitness | HashPayload\nexport const AllowedBlockPayloadSchemas: Schema[] = [TransferSchema, ChainStakeIntentSchema, SchemaSchema, BoundWitnessSchema, HashSchema]\nexport type AllowedBlockPayloadSchema = typeof AllowedBlockPayloadSchemas[number]\n\nexport const isAllowedBlockPayloadSchema = (value: unknown): value is AllowedBlockPayloadSchema => {\n return isSchema(value) && AllowedBlockPayloadSchemas.includes(value)\n}\n\nexport const isAllowedBlockPayload = (value: unknown): value is AllowedBlockPayload => {\n return isTransfer(value) || isChainStakeIntent(value) || isSchemaPayload(value) || isTransactionBoundWitness(value) || isHashPayload(value)\n}\n\nexport const isAllowedBlockPayloadWithHashStorageMeta = (value: unknown): value is WithStorageMeta<AllowedBlockPayload> => {\n return isAllowedBlockPayload(value) && isHashStorageMeta(value)\n}\n","import { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const ChainStakeIntentSchema = 'network.xyo.chain.stake.intent' as const\nexport type ChainStakeIntentSchema = typeof ChainStakeIntentSchema\n\nexport type Intent = 'producer' // | 'bank'\n\nexport interface ChainStakeIntentFields extends BlockDuration, FromFields {\n /*\n * The intent of the staking\n */\n intent: Intent\n}\n\nexport type ChainStakeIntent = Payload<ChainStakeIntentFields, ChainStakeIntentSchema>\n\nexport const isChainStakeIntent = (x?: unknown | null): x is ChainStakeIntent => {\n return isPayloadOfSchemaType<ChainStakeIntent>(ChainStakeIntentSchema)(x)\n && asNonNegativeInteger(x.nbf) !== undefined\n && asNonNegativeInteger(x.exp) !== undefined\n}\nexport const asChainStakeIntent = AsObjectFactory.create(isChainStakeIntent)\nexport const asOptionalChainStakeIntent = AsObjectFactory.createOptional(isChainStakeIntent)\n\nconst asNonNegativeInteger = (num: number) => {\n return (Number.isInteger(num) && num >= 0) ? num : undefined\n}\n","import type { Address } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport { isAnyPayload } from '@xyo-network/payload-model'\n\nexport interface FromFields {\n // the address that is treated as the source of this action\n from: Address\n}\n\nexport const hasFrom = (value: unknown): value is FromFields => {\n return (value as FromFields).from !== undefined\n}\n\nexport interface ExecutableFields {\n script: string[]\n}\n\nexport type Executable<T extends EmptyObject = EmptyObject> = T & ExecutableFields\nexport type OptionalExecutable<T extends EmptyObject = EmptyObject> = T & Partial<ExecutableFields>\n\nexport const isExecutable = <T extends EmptyObject>(value: T | undefined): value is Executable<T> => {\n return isAnyPayload(value) && Array.isArray((value as unknown as ExecutableFields).script)\n}\n\nexport const asExecutable = <T extends EmptyObject>(value: T | undefined): Executable<T> | undefined => {\n return isExecutable(value)\n ? value as unknown as Executable<T>\n : undefined\n}\n","import type { Hash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const HashSchema = 'network.xyo.hash' as const\nexport type HashSchema = typeof HashSchema\n\nexport interface HashFields {\n hash: Hash\n}\n\nexport type HashPayload = Payload<HashFields, HashSchema>\n\nexport const isHashPayload = isPayloadOfSchemaType<HashPayload>(HashSchema)\n\nexport const asHashPayload = AsObjectFactory.create(isHashPayload)\nexport const asHashPayloadWithStorageMeta = AsObjectFactory.create(isHashPayload)\nexport const asOptionalHashPayload = AsObjectFactory.createOptional(isHashPayload)\n","import type {\n Address,\n Hex,\n} from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const TransferSchema = 'network.xyo.transfer' as const\nexport type TransferSchema = typeof TransferSchema\n\nexport interface TransferFields extends FromFields {\n epoch: number\n // the amount that is being sent to another address\n transfers: Record<Address, Hex>\n}\n\n// if this payload is included in a boundwitness, it needs to be available for inspection to be included in block\nexport type Transfer = Payload<TransferFields, TransferSchema>\n\nexport const isTransfer = isPayloadOfSchemaType<Transfer>(TransferSchema)\n\nexport const asTransfer = AsObjectFactory.create(isTransfer)\nexport const asOptionalTransfer = AsObjectFactory.createOptional(isTransfer)\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness, Signed } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\nimport type { FromFields, OptionalExecutable } from '#payload'\n\nimport type { TransactionFeesFields } from './TransactionFeesFields.ts'\n\nexport interface TransactionBoundWitnessFields extends BlockDuration, TransactionFeesFields {\n chain: Address\n}\n\nexport type TransactionBoundWitness = BoundWitness<TransactionBoundWitnessFields & OptionalExecutable & FromFields>\n\nexport const isTransactionBoundWitness = (value: unknown): value is TransactionBoundWitness => {\n const typedObj = value as TransactionBoundWitness\n return isBoundWitness(value)\n && typedObj.chain !== undefined\n && typedObj.fees !== undefined\n && typedObj.exp !== undefined\n && typedObj.nbf !== undefined\n}\n\nexport const isSignedTransactionBoundWitness = (value: unknown): value is Signed<TransactionBoundWitness> => {\n return isTransactionBoundWitness(value) && isSigned(value)\n}\n\nexport const isSigned = <T extends BoundWitness = BoundWitness>(value: unknown): value is Signed<T> =>\n isBoundWitness(value)\n && value.$signatures.length === value.addresses.length\n && value.addresses.length > 0\n\nexport const isTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<TransactionBoundWitness> =>\n isTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const isSignedTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<Signed<TransactionBoundWitness>> =>\n isSignedTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const asTransactionBoundWitness = AsObjectFactory.create(isTransactionBoundWitness)\nexport const asOptionalTransactionBoundWitness = AsObjectFactory.createOptional(isTransactionBoundWitness)\n\nexport const asTransactionBoundWitnessWithStorageMeta = AsObjectFactory.create(isTransactionBoundWitnessWithStorageMeta)\nexport const asOptionalTransactionBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isTransactionBoundWitnessWithStorageMeta)\n","import type { Hex } from '@xylabs/hex'\n\nimport type { AttoXL1 } from '../xl1/index.ts'\nimport { MicroXL1 } from '../xl1/index.ts'\n\nexport interface TransactionFeesBigInt {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n}\n\nexport type TransactionFeesHex = {\n [K in keyof TransactionFeesBigInt]: Hex;\n}\n\nexport interface TransactionFeesFields {\n fees: TransactionFeesHex\n}\n\nexport const minTransactionFees: TransactionFeesBigInt = {\n base: MicroXL1(1000n).toAtto(),\n gasPrice: MicroXL1(1n).toAtto(),\n gasLimit: MicroXL1(1000n).toAtto(),\n priority: MicroXL1(0n).toAtto(),\n} as const\n\nexport const defaultTransactionFees: TransactionFeesBigInt = {\n base: minTransactionFees.base,\n gasPrice: MicroXL1(10n).toAtto(),\n gasLimit: MicroXL1(1_000_000n).toAtto(),\n priority: minTransactionFees.priority,\n} as const\n","import type { Hash, Hex } from '@xylabs/hex'\nimport { isHex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface BlockBoundWitnessMeta {\n $epoch: number\n}\n\nexport interface BlockBoundWitnessFields {\n /** Block number */\n block: number\n /** Chain id - this should be \"0\" for the genesis block */\n chain: Hex\n /** Previous block hash if not block 0 */\n previous: Hash | null /* the previous block hash */\n /** Version of the protocol being used major * 1,000,000 + minor * 1,000 + patch */\n protocol: number\n /** Step hashes */\n step_hashes: Hex[]\n}\n\nexport type BlockBoundWitness = BoundWitness<BlockBoundWitnessFields & BlockBoundWitnessMeta>\n\nexport const isBlockBoundWitness = (value: unknown): value is BlockBoundWitness => {\n const typedObj = value as BlockBoundWitness\n return isBoundWitness(value)\n && Number.isInteger(typedObj.block)\n && isHex(typedObj.chain)\n}\n\nexport const isBlockBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<BlockBoundWitness> => {\n return isBlockBoundWitness(value) && isStorageMeta(value)\n}\n\nexport const asBlockBoundWitness = AsObjectFactory.create(isBlockBoundWitness)\nexport const asOptionalBlockBoundWitness = AsObjectFactory.createOptional(isBlockBoundWitness)\n\nexport const asBlockBoundWitnessWithStorageMeta = AsObjectFactory.create(isBlockBoundWitnessWithStorageMeta)\nexport const asOptionalBlockBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isBlockBoundWitnessWithStorageMeta)\n","export const StepSizes = [10, 105, 1103, 11_576, 121_551, 1_276_282, 13_400_956] as const\n","import { MicroXL1 } from '../xl1/index.ts'\n\nexport const TransactionGasCosts = {\n /**\n * The cost of storing each character that is added to the chain\n * This includes the transaction JSON and all the elevated payloads' JSON\n */\n characterStorage: MicroXL1(10n),\n\n /** The cost of static validating every payload that will be included in the chain */\n payloadValidation: MicroXL1(1000n),\n\n /** The cost of validating each signature that will be included in the chain */\n signatureValidation: MicroXL1(1000n),\n\n /** The cost of validating each hash that will be included in the chain */\n hashValidation: MicroXL1(100n),\n\n /** The cost of validating a balance state, triggered by a Transfer payload or gas collection */\n balanceValidation: MicroXL1(100n),\n} as const\n\n/** Gas Calculation\n *\n * 1 Million microXL1 (mXL1) = 1 XL1\n *\n * Gas amount is calculated as follows:\n *\n * 1. Each byte in the transaction cost 10 gas\n * 2. Each payload validation in the transaction costs 1000 gas\n * 3. Each signature verification in the transaction costs 1000 gas\n * 4. Each hash validation in the transaction costs 100 gas\n * 5. Each balance validation in the transaction costs 100 gas\n * 6. Processing/Compute/Storage Cost?\n * 7. operation Costs?\n *\n * The total gas cost is calculated by multiplying the gas amount by the gas price.\n *\n * minGasPrice is initially set to 100 mXL1\n * minBase is initially set to 1000 mXL1\n * minPriority is always 0 mXL1, but can be set to increase the priority of the transaction\n *\n */\n","import type { Hex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nexport const BlockNumberSchema = 'network.xyo.chain.block.number' as const\nexport type BlockNumberSchema = typeof BlockNumberSchema\n\nexport interface BlockNumberFields {\n /**\n * The block number\n */\n block: Hex\n /**\n * The chain id\n */\n chain?: Hex\n}\n/**\n * The number of a block\n */\nexport type BlockNumber = Payload<BlockNumberFields, BlockNumberSchema>\n\n/**\n * Identity function for determining if an object is a BlockNumber\n */\nexport const isBlockNumber = isPayloadOfSchemaType<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumber = AsObjectFactory.create<BlockNumber>(isBlockNumber)\nexport const asOptionalBlockNumber = AsObjectFactory.createOptional<BlockNumber>(isBlockNumber)\n\n/**\n * Identity function for determining if an object is a BlockNumber with sources\n */\nexport const isBlockNumberWithSources = isPayloadOfSchemaTypeWithSources<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumberWithSources = AsObjectFactory.create<WithSources<BlockNumber>>(isBlockNumberWithSources)\nexport const asOptionalBlockNumberWithSources = AsObjectFactory.createOptional<WithSources<BlockNumber>>(isBlockNumberWithSources)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const NetworkStatusSchema = 'network.xyo.chain.status' as const\nexport type NetworkStatusSchema = typeof NetworkStatusSchema\n\nexport type NetworkStatusState = 'online' | 'offline' | 'degraded' | 'unknown'\n\nexport type NetworkStatusUpdate = {\n end: number\n start: number\n update: string\n}\n\nexport interface NetworkStatusFields {\n description: string\n state: NetworkStatusState\n updates?: NetworkStatusUpdate[]\n}\n\nexport type NetworkStatus = Payload<NetworkStatusFields, NetworkStatusSchema>\n\nexport const isNetworkStatus = isPayloadOfSchemaType<NetworkStatus>(NetworkStatusSchema)\n","import type { Address } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainIdentificationPayloadSchema = 'network.xyo.chain.identification' as const\nexport type ChainIdentificationPayloadSchema = typeof ChainIdentificationPayloadSchema\n\n/**\n * Identification required to uniquely identify a chain\n */\nexport interface ChainIdentification {\n /** @field the id of the chain */\n id: Address\n}\n\nexport type ChainIdentificationPayload = Payload<ChainIdentification, ChainIdentificationPayloadSchema>\nexport const isChainIdentificationPayload = isPayloadOfSchemaType<ChainIdentificationPayload>(ChainIdentificationPayloadSchema)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainInformationPayloadSchema = 'network.xyo.chain.information' as const\nexport type ChainInformationPayloadSchema = typeof ChainInformationPayloadSchema\n\nimport type { ChainIdentification } from './ChainIdentification.ts'\n\n/**\n * Information required to produce a chain\n */\nexport interface ChainInformation extends ChainIdentification {\n // TODO: Add these fields which are currently promises on the smart contract\n // forkedAtBlockNumber: bigint\n // forkedAtHash: Hash\n // forkedChainId: Address\n}\n\nexport type ChainInformationPayload = Payload<ChainIdentification, ChainInformationPayloadSchema>\nexport const isChainInformationPayload = isPayloadOfSchemaType<ChainInformationPayload>(ChainInformationPayloadSchema)\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {\n /**\n * The hash of the last block that this service has indexing\n */\n endBlockHash: Hash\n /**\n * The hash of the block that the service started indexing. If undefined, the service is\n * assumed to have started indexing from the genesis block\n */\n startBlockHash?: Hash\n /**\n * The indexed state for the range\n */\n state: T\n}\nexport const ChainIndexingServiceStateSchema = 'network.xyo.chain.indexing.service.state' as const\nexport type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema\n\n/**\n * The result of a ChainIndexingServiceState\n */\nexport type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>\n\n/**\n * Identity functions for determining if an object is an ChainIndexingServiceState\n */\nexport const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {\n return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)\n}\nexport const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)\n\nexport const isChainIndexingServiceStateWithStorageMeta\n= <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>\n isChainIndexingServiceState<T>(value) && isStorageMeta(value)\n\nexport const asChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n\nexport const asOptionalChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.createOptional<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n"],"mappings":"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","names":["AsObjectFactory","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","AsObjectFactory","AsObjectFactory","isBoundWitness","isStorageMeta","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta"]}
1
+ {"version":3,"sources":["../../src/xl1/XL1.ts","../../src/block/AllowedBlockPayload.ts","../../src/payload/elevatable/ChainStakeIntent.ts","../../src/payload/elevatable/Executable.ts","../../src/payload/elevatable/Hash.ts","../../src/payload/elevatable/TransferPayload.ts","../../src/transaction/TransactionBoundWitness.ts","../../src/transaction/TransactionFeesFields.ts","../../src/block/BlockBoundWitness.ts","../../src/constants/StepSizes.ts","../../src/constants/TransactionGasCosts.ts","../../src/fields/BlockNumber.ts","../../src/network/Status.ts","../../src/services/Chain/ChainIdentification.ts","../../src/services/Chain/ChainInformation.ts","../../src/services/stakeIntent/ChainIndexingServiceStateSchema.ts"],"sourcesContent":["export type XL1 = bigint & { readonly _tag: 'XL1' } // 1e-18\nexport type MilliXL1 = bigint & { readonly _tag: 'MilliXL1' } // 1e-15 [XL1 * 1e3 = milliXL1] [milliXL1 / 1e3 = XL1]\nexport type MicroXL1 = bigint & { readonly _tag: 'MicroXL1' } // 1e-12 [XL1 * 1e6 = microXL1] [microXL1 / 1e6 = XL1]\nexport type NanoXL1 = bigint & { readonly _tag: 'NanoXL1' } // 1e-9 [XL1 * 1e9 = nanoXL1] [nanoXL1 / 1e9 = XL1]\nexport type PicoXL1 = bigint & { readonly _tag: 'PicoXL1' } // 1e-6 [XL1 * 1e12 = picoXL1] [picoXL1 / 1e12 = XL1]\nexport type FemtoXL1 = bigint & { readonly _tag: 'FemtoXL1' } // 1e-3 [XL1 * 1e15 = femtoXL1] [femtoXL1 / 1e15 = XL1]\nexport type AttoXL1 = bigint & { readonly _tag: 'AttoXL1' } // 1e-0 [XL1 * 1e18 = attoXL1] [attoXL1 / 1e18 = XL1]\n\nexport type TypingFunc<T extends bigint> = (value: bigint) => T\n\nexport const XL1: TypingFunc<XL1> = (value: bigint): XL1 => value as XL1\nexport const MilliXL1: TypingFunc<MilliXL1> = (value: bigint): MilliXL1 => value as MilliXL1\nexport const MicroXL1: TypingFunc<MicroXL1> = (value: bigint): MicroXL1 => value as MicroXL1\nexport const NanoXL1: TypingFunc<NanoXL1> = (value: bigint): NanoXL1 => value as NanoXL1\nexport const PicoXL1: TypingFunc<PicoXL1> = (value: bigint): PicoXL1 => value as PicoXL1\nexport const FemtoXL1: TypingFunc<FemtoXL1> = (value: bigint): FemtoXL1 => value as FemtoXL1\nexport const AttoXL1: TypingFunc<AttoXL1> = (value: bigint): AttoXL1 => value as AttoXL1\n\ntype XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto'\n\n/** @deprecated use XL1Places and xl1ConvertFactor(unit) instead */\nexport const XL1ConvertDict: Record<XL1Units, number> = {\n xl1: 18,\n milli: 15,\n micro: 12,\n nano: 9,\n pico: 6,\n femto: 3,\n atto: 0,\n} as const\n\nexport const XL1Places: Record<XL1Units, bigint> = {\n xl1: 18n,\n milli: 15n,\n micro: 12n,\n nano: 9n,\n pico: 6n,\n femto: 3n,\n atto: 0n,\n} as const\n\n/**\n * Convert factor by which a respective unit is multiplied to convert it to AttoXL1 or\n * by which AttoXL1 is divided to convert it to respective unit is multiplied.\n */\nexport const AttoXL1ConvertFactor: Record<XL1Units, bigint> = {\n xl1: 10n ** XL1Places.xl1,\n milli: 10n ** XL1Places.milli,\n micro: 10n ** XL1Places.micro,\n nano: 10n ** XL1Places.nano,\n pico: 10n ** XL1Places.pico,\n femto: 10n ** XL1Places.femto,\n atto: 10n ** XL1Places.atto,\n} as const\n\n/** @deprecated use AttoXL1ConvertFactor instead */\nexport function xl1ConvertFactor(unit: XL1Units) {\n return 10n ** XL1Places[unit]\n}\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isHashStorageMeta, isSchema } from '@xyo-network/payload-model'\nimport type { SchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport { isSchemaPayload, SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\nimport type {\n ChainStakeIntent, HashPayload, Transfer,\n} from '#payload'\nimport {\n ChainStakeIntentSchema, HashSchema, isChainStakeIntent, isHashPayload, isTransfer, TransferSchema,\n} from '#payload'\nimport { isTransactionBoundWitness, type TransactionBoundWitness } from '#transaction'\n\nexport type AllowedBlockPayload = Transfer | ChainStakeIntent | SchemaPayload | TransactionBoundWitness | HashPayload\nexport const AllowedBlockPayloadSchemas: Schema[] = [TransferSchema, ChainStakeIntentSchema, SchemaSchema, BoundWitnessSchema, HashSchema]\nexport type AllowedBlockPayloadSchema = typeof AllowedBlockPayloadSchemas[number]\n\nexport const isAllowedBlockPayloadSchema = (value: unknown): value is AllowedBlockPayloadSchema => {\n return isSchema(value) && AllowedBlockPayloadSchemas.includes(value)\n}\n\nexport const isAllowedBlockPayload = (value: unknown): value is AllowedBlockPayload => {\n return isTransfer(value) || isChainStakeIntent(value) || isSchemaPayload(value) || isTransactionBoundWitness(value) || isHashPayload(value)\n}\n\nexport const isAllowedBlockPayloadWithHashStorageMeta = (value: unknown): value is WithStorageMeta<AllowedBlockPayload> => {\n return isAllowedBlockPayload(value) && isHashStorageMeta(value)\n}\n","import { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const ChainStakeIntentSchema = 'network.xyo.chain.stake.intent' as const\nexport type ChainStakeIntentSchema = typeof ChainStakeIntentSchema\n\nexport type Intent = 'producer' // | 'bank'\n\nexport interface ChainStakeIntentFields extends BlockDuration, FromFields {\n /*\n * The intent of the staking\n */\n intent: Intent\n}\n\nexport type ChainStakeIntent = Payload<ChainStakeIntentFields, ChainStakeIntentSchema>\n\nexport const isChainStakeIntent = (x?: unknown | null): x is ChainStakeIntent => {\n return isPayloadOfSchemaType<ChainStakeIntent>(ChainStakeIntentSchema)(x)\n && asNonNegativeInteger(x.nbf) !== undefined\n && asNonNegativeInteger(x.exp) !== undefined\n}\nexport const asChainStakeIntent = AsObjectFactory.create(isChainStakeIntent)\nexport const asOptionalChainStakeIntent = AsObjectFactory.createOptional(isChainStakeIntent)\n\nconst asNonNegativeInteger = (num: number) => {\n return (Number.isInteger(num) && num >= 0) ? num : undefined\n}\n","import type { Address } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport { isAnyPayload } from '@xyo-network/payload-model'\n\nexport interface FromFields {\n // the address that is treated as the source of this action\n from: Address\n}\n\nexport const hasFrom = (value: unknown): value is FromFields => {\n return (value as FromFields).from !== undefined\n}\n\nexport interface ExecutableFields {\n script: string[]\n}\n\nexport type Executable<T extends EmptyObject = EmptyObject> = T & ExecutableFields\nexport type OptionalExecutable<T extends EmptyObject = EmptyObject> = T & Partial<ExecutableFields>\n\nexport const isExecutable = <T extends EmptyObject>(value: T | undefined): value is Executable<T> => {\n return isAnyPayload(value) && Array.isArray((value as unknown as ExecutableFields).script)\n}\n\nexport const asExecutable = <T extends EmptyObject>(value: T | undefined): Executable<T> | undefined => {\n return isExecutable(value)\n ? value as unknown as Executable<T>\n : undefined\n}\n","import type { Hash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const HashSchema = 'network.xyo.hash' as const\nexport type HashSchema = typeof HashSchema\n\nexport interface HashFields {\n hash: Hash\n}\n\nexport type HashPayload = Payload<HashFields, HashSchema>\n\nexport const isHashPayload = isPayloadOfSchemaType<HashPayload>(HashSchema)\n\nexport const asHashPayload = AsObjectFactory.create(isHashPayload)\nexport const asHashPayloadWithStorageMeta = AsObjectFactory.create(isHashPayload)\nexport const asOptionalHashPayload = AsObjectFactory.createOptional(isHashPayload)\n","import type {\n Address,\n Hex,\n} from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { FromFields } from './Executable.ts'\n\nexport const TransferSchema = 'network.xyo.transfer' as const\nexport type TransferSchema = typeof TransferSchema\n\nexport interface TransferFields extends FromFields {\n epoch: number\n // the amount that is being sent to another address\n transfers: Record<Address, Hex>\n}\n\n// if this payload is included in a boundwitness, it needs to be available for inspection to be included in block\nexport type Transfer = Payload<TransferFields, TransferSchema>\n\nexport const isTransfer = isPayloadOfSchemaType<Transfer>(TransferSchema)\n\nexport const asTransfer = AsObjectFactory.create(isTransfer)\nexport const asOptionalTransfer = AsObjectFactory.createOptional(isTransfer)\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness, Signed } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nimport type { BlockDuration } from '#fields'\nimport type { FromFields, OptionalExecutable } from '#payload'\n\nimport type { TransactionFeesFields } from './TransactionFeesFields.ts'\n\nexport interface TransactionBoundWitnessFields extends BlockDuration, TransactionFeesFields {\n chain: Address\n}\n\nexport type TransactionBoundWitness = BoundWitness<TransactionBoundWitnessFields & OptionalExecutable & FromFields>\n\nexport const isTransactionBoundWitness = (value: unknown): value is TransactionBoundWitness => {\n const typedObj = value as TransactionBoundWitness\n return isBoundWitness(value)\n && typedObj.chain !== undefined\n && typedObj.fees !== undefined\n && typedObj.exp !== undefined\n && typedObj.nbf !== undefined\n}\n\nexport const isSignedTransactionBoundWitness = (value: unknown): value is Signed<TransactionBoundWitness> => {\n return isTransactionBoundWitness(value) && isSigned(value)\n}\n\nexport const isSigned = <T extends BoundWitness = BoundWitness>(value: unknown): value is Signed<T> =>\n isBoundWitness(value)\n && value.$signatures.length === value.addresses.length\n && value.addresses.length > 0\n\nexport const isTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<TransactionBoundWitness> =>\n isTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const isSignedTransactionBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<Signed<TransactionBoundWitness>> =>\n isSignedTransactionBoundWitness(value)\n && isStorageMeta(value)\n\nexport const asTransactionBoundWitness = AsObjectFactory.create(isTransactionBoundWitness)\nexport const asOptionalTransactionBoundWitness = AsObjectFactory.createOptional(isTransactionBoundWitness)\n\nexport const asTransactionBoundWitnessWithStorageMeta = AsObjectFactory.create(isTransactionBoundWitnessWithStorageMeta)\nexport const asOptionalTransactionBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isTransactionBoundWitnessWithStorageMeta)\n","import type { Hex } from '@xylabs/hex'\n\nimport {\n AttoXL1,\n AttoXL1ConvertFactor,\n} from '../xl1/index.ts'\n\nexport interface TransactionFeesBigInt {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n}\n\nexport type TransactionFeesHex = {\n [K in keyof TransactionFeesBigInt]: Hex;\n}\n\nexport interface TransactionFeesFields {\n fees: TransactionFeesHex\n}\n\nexport const minTransactionFees: TransactionFeesBigInt = {\n base: AttoXL1(1000n * AttoXL1ConvertFactor.micro),\n gasPrice: AttoXL1(1n * AttoXL1ConvertFactor.micro),\n gasLimit: AttoXL1(1000n * AttoXL1ConvertFactor.micro),\n priority: AttoXL1(0n * AttoXL1ConvertFactor.micro),\n} as const\n\nexport const defaultTransactionFees: TransactionFeesBigInt = {\n base: minTransactionFees.base,\n gasPrice: AttoXL1(10n * AttoXL1ConvertFactor.micro),\n gasLimit: AttoXL1(1_000_000n * AttoXL1ConvertFactor.micro),\n priority: minTransactionFees.priority,\n} as const\n","import type { Hash, Hex } from '@xylabs/hex'\nimport { isHex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface BlockBoundWitnessMeta {\n $epoch: number\n}\n\nexport interface BlockBoundWitnessFields {\n /** Block number */\n block: number\n /** Chain id - this should be \"0\" for the genesis block */\n chain: Hex\n /** Previous block hash if not block 0 */\n previous: Hash | null /* the previous block hash */\n /** Version of the protocol being used major * 1,000,000 + minor * 1,000 + patch */\n protocol: number\n /** Step hashes */\n step_hashes: Hex[]\n}\n\nexport type BlockBoundWitness = BoundWitness<BlockBoundWitnessFields & BlockBoundWitnessMeta>\n\nexport const isBlockBoundWitness = (value: unknown): value is BlockBoundWitness => {\n const typedObj = value as BlockBoundWitness\n return isBoundWitness(value)\n && Number.isInteger(typedObj.block)\n && isHex(typedObj.chain)\n}\n\nexport const isBlockBoundWitnessWithStorageMeta = (value: unknown): value is WithStorageMeta<BlockBoundWitness> => {\n return isBlockBoundWitness(value) && isStorageMeta(value)\n}\n\nexport const asBlockBoundWitness = AsObjectFactory.create(isBlockBoundWitness)\nexport const asOptionalBlockBoundWitness = AsObjectFactory.createOptional(isBlockBoundWitness)\n\nexport const asBlockBoundWitnessWithStorageMeta = AsObjectFactory.create(isBlockBoundWitnessWithStorageMeta)\nexport const asOptionalBlockBoundWitnessWithStorageMeta = AsObjectFactory.createOptional(isBlockBoundWitnessWithStorageMeta)\n","export const StepSizes = [10, 105, 1103, 11_576, 121_551, 1_276_282, 13_400_956] as const\n","import { MicroXL1 } from '../xl1/index.ts'\n\nexport const TransactionGasCosts = {\n /**\n * The cost of storing each character that is added to the chain\n * This includes the transaction JSON and all the elevated payloads' JSON\n */\n characterStorage: MicroXL1(10n),\n\n /** The cost of static validating every payload that will be included in the chain */\n payloadValidation: MicroXL1(1000n),\n\n /** The cost of validating each signature that will be included in the chain */\n signatureValidation: MicroXL1(1000n),\n\n /** The cost of validating each hash that will be included in the chain */\n hashValidation: MicroXL1(100n),\n\n /** The cost of validating a balance state, triggered by a Transfer payload or gas collection */\n balanceValidation: MicroXL1(100n),\n} as const\n\n/** Gas Calculation\n *\n * 1 Million microXL1 (mXL1) = 1 XL1\n *\n * Gas amount is calculated as follows:\n *\n * 1. Each byte in the transaction cost 10 gas\n * 2. Each payload validation in the transaction costs 1000 gas\n * 3. Each signature verification in the transaction costs 1000 gas\n * 4. Each hash validation in the transaction costs 100 gas\n * 5. Each balance validation in the transaction costs 100 gas\n * 6. Processing/Compute/Storage Cost?\n * 7. operation Costs?\n *\n * The total gas cost is calculated by multiplying the gas amount by the gas price.\n *\n * minGasPrice is initially set to 100 mXL1\n * minBase is initially set to 1000 mXL1\n * minPriority is always 0 mXL1, but can be set to increase the priority of the transaction\n *\n */\n","import type { Hex } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nexport const BlockNumberSchema = 'network.xyo.chain.block.number' as const\nexport type BlockNumberSchema = typeof BlockNumberSchema\n\nexport interface BlockNumberFields {\n /**\n * The block number\n */\n block: Hex\n /**\n * The chain id\n */\n chain?: Hex\n}\n/**\n * The number of a block\n */\nexport type BlockNumber = Payload<BlockNumberFields, BlockNumberSchema>\n\n/**\n * Identity function for determining if an object is a BlockNumber\n */\nexport const isBlockNumber = isPayloadOfSchemaType<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumber = AsObjectFactory.create<BlockNumber>(isBlockNumber)\nexport const asOptionalBlockNumber = AsObjectFactory.createOptional<BlockNumber>(isBlockNumber)\n\n/**\n * Identity function for determining if an object is a BlockNumber with sources\n */\nexport const isBlockNumberWithSources = isPayloadOfSchemaTypeWithSources<BlockNumber>(BlockNumberSchema)\nexport const asBlockNumberWithSources = AsObjectFactory.create<WithSources<BlockNumber>>(isBlockNumberWithSources)\nexport const asOptionalBlockNumberWithSources = AsObjectFactory.createOptional<WithSources<BlockNumber>>(isBlockNumberWithSources)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const NetworkStatusSchema = 'network.xyo.chain.status' as const\nexport type NetworkStatusSchema = typeof NetworkStatusSchema\n\nexport type NetworkStatusState = 'online' | 'offline' | 'degraded' | 'unknown'\n\nexport type NetworkStatusUpdate = {\n end: number\n start: number\n update: string\n}\n\nexport interface NetworkStatusFields {\n description: string\n state: NetworkStatusState\n updates?: NetworkStatusUpdate[]\n}\n\nexport type NetworkStatus = Payload<NetworkStatusFields, NetworkStatusSchema>\n\nexport const isNetworkStatus = isPayloadOfSchemaType<NetworkStatus>(NetworkStatusSchema)\n","import type { Address } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainIdentificationPayloadSchema = 'network.xyo.chain.identification' as const\nexport type ChainIdentificationPayloadSchema = typeof ChainIdentificationPayloadSchema\n\n/**\n * Identification required to uniquely identify a chain\n */\nexport interface ChainIdentification {\n /** @field the id of the chain */\n id: Address\n}\n\nexport type ChainIdentificationPayload = Payload<ChainIdentification, ChainIdentificationPayloadSchema>\nexport const isChainIdentificationPayload = isPayloadOfSchemaType<ChainIdentificationPayload>(ChainIdentificationPayloadSchema)\n","import type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const ChainInformationPayloadSchema = 'network.xyo.chain.information' as const\nexport type ChainInformationPayloadSchema = typeof ChainInformationPayloadSchema\n\nimport type { ChainIdentification } from './ChainIdentification.ts'\n\n/**\n * Information required to produce a chain\n */\nexport interface ChainInformation extends ChainIdentification {\n // TODO: Add these fields which are currently promises on the smart contract\n // forkedAtBlockNumber: bigint\n // forkedAtHash: Hash\n // forkedChainId: Address\n}\n\nexport type ChainInformationPayload = Payload<ChainIdentification, ChainInformationPayloadSchema>\nexport const isChainInformationPayload = isPayloadOfSchemaType<ChainInformationPayload>(ChainInformationPayloadSchema)\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'\n\nexport interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {\n /**\n * The hash of the last block that this service has indexing\n */\n endBlockHash: Hash\n /**\n * The hash of the block that the service started indexing. If undefined, the service is\n * assumed to have started indexing from the genesis block\n */\n startBlockHash?: Hash\n /**\n * The indexed state for the range\n */\n state: T\n}\nexport const ChainIndexingServiceStateSchema = 'network.xyo.chain.indexing.service.state' as const\nexport type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema\n\n/**\n * The result of a ChainIndexingServiceState\n */\nexport type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>\n\n/**\n * Identity functions for determining if an object is an ChainIndexingServiceState\n */\nexport const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {\n return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)\n}\nexport const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)\n\nexport const isChainIndexingServiceStateWithStorageMeta\n= <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>\n isChainIndexingServiceState<T>(value) && isStorageMeta(value)\n\nexport const asChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n\nexport const asOptionalChainIndexingServiceStateWithStorageMeta\n= AsObjectFactory.createOptional<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)\n"],"mappings":"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","names":["AsObjectFactory","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","AsObjectFactory","AsObjectFactory","isBoundWitness","isStorageMeta","AsObjectFactory","isPayloadOfSchemaType","isPayloadOfSchemaType","isPayloadOfSchemaType","isPayloadOfSchemaType","AsObjectFactory","isPayloadOfSchemaType","isStorageMeta"]}
@@ -1,37 +1,18 @@
1
+ import { MicroXL1 } from '../xl1/index.ts';
1
2
  export declare const TransactionGasCosts: {
2
3
  /**
3
4
  * The cost of storing each character that is added to the chain
4
5
  * This includes the transaction JSON and all the elevated payloads' JSON
5
6
  */
6
- readonly characterStorage: bigint & {
7
- readonly _tag: "MicroXL1";
8
- } & {
9
- toAtto(): import("../xl1/XL1.ts").AttoXL1;
10
- };
7
+ readonly characterStorage: MicroXL1;
11
8
  /** The cost of static validating every payload that will be included in the chain */
12
- readonly payloadValidation: bigint & {
13
- readonly _tag: "MicroXL1";
14
- } & {
15
- toAtto(): import("../xl1/XL1.ts").AttoXL1;
16
- };
9
+ readonly payloadValidation: MicroXL1;
17
10
  /** The cost of validating each signature that will be included in the chain */
18
- readonly signatureValidation: bigint & {
19
- readonly _tag: "MicroXL1";
20
- } & {
21
- toAtto(): import("../xl1/XL1.ts").AttoXL1;
22
- };
11
+ readonly signatureValidation: MicroXL1;
23
12
  /** The cost of validating each hash that will be included in the chain */
24
- readonly hashValidation: bigint & {
25
- readonly _tag: "MicroXL1";
26
- } & {
27
- toAtto(): import("../xl1/XL1.ts").AttoXL1;
28
- };
13
+ readonly hashValidation: MicroXL1;
29
14
  /** The cost of validating a balance state, triggered by a Transfer payload or gas collection */
30
- readonly balanceValidation: bigint & {
31
- readonly _tag: "MicroXL1";
32
- } & {
33
- toAtto(): import("../xl1/XL1.ts").AttoXL1;
34
- };
15
+ readonly balanceValidation: MicroXL1;
35
16
  };
36
17
  /** Gas Calculation
37
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionGasCosts.d.ts","sourceRoot":"","sources":["../../../src/constants/TransactionGasCosts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB;IAC9B;;;MAGE;;;;;;IAGF,qFAAqF;;;;;;IAGrF,+EAA+E;;;;;;IAG/E,0EAA0E;;;;;;IAG1E,gGAAgG;;;;;;CAExF,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;GAoBG"}
1
+ {"version":3,"file":"TransactionGasCosts.d.ts","sourceRoot":"","sources":["../../../src/constants/TransactionGasCosts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,eAAO,MAAM,mBAAmB;IAC9B;;;MAGE;;IAGF,qFAAqF;;IAGrF,+EAA+E;;IAG/E,0EAA0E;;IAG1E,gGAAgG;;CAExF,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;GAoBG"}
@@ -1,5 +1,5 @@
1
1
  import type { Hex } from '@xylabs/hex';
2
- import type { AttoXL1 } from '../xl1/index.ts';
2
+ import { AttoXL1 } from '../xl1/index.ts';
3
3
  export interface TransactionFeesBigInt {
4
4
  base: AttoXL1;
5
5
  gasLimit: AttoXL1;
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionFeesFields.d.ts","sourceRoot":"","sources":["../../../src/transaction/TransactionFeesFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG;KAC9B,CAAC,IAAI,MAAM,qBAAqB,GAAG,GAAG;CACxC,CAAA;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,kBAAkB,CAAA;CACzB;AAED,eAAO,MAAM,kBAAkB,EAAE,qBAKvB,CAAA;AAEV,eAAO,MAAM,sBAAsB,EAAE,qBAK3B,CAAA"}
1
+ {"version":3,"file":"TransactionFeesFields.d.ts","sourceRoot":"","sources":["../../../src/transaction/TransactionFeesFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EACL,OAAO,EAER,MAAM,iBAAiB,CAAA;AAExB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG;KAC9B,CAAC,IAAI,MAAM,qBAAqB,GAAG,GAAG;CACxC,CAAA;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,kBAAkB,CAAA;CACzB;AAED,eAAO,MAAM,kBAAkB,EAAE,qBAKvB,CAAA;AAEV,eAAO,MAAM,sBAAsB,EAAE,qBAK3B,CAAA"}
@@ -19,32 +19,15 @@ export type FemtoXL1 = bigint & {
19
19
  export type AttoXL1 = bigint & {
20
20
  readonly _tag: 'AttoXL1';
21
21
  };
22
+ export type TypingFunc<T extends bigint> = (value: bigint) => T;
23
+ export declare const XL1: TypingFunc<XL1>;
24
+ export declare const MilliXL1: TypingFunc<MilliXL1>;
25
+ export declare const MicroXL1: TypingFunc<MicroXL1>;
26
+ export declare const NanoXL1: TypingFunc<NanoXL1>;
27
+ export declare const PicoXL1: TypingFunc<PicoXL1>;
28
+ export declare const FemtoXL1: TypingFunc<FemtoXL1>;
29
+ export declare const AttoXL1: TypingFunc<AttoXL1>;
22
30
  type XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto';
23
- export type TypingFunc<T extends bigint> = {
24
- (value: bigint): T;
25
- toAtto: () => AttoXL1;
26
- };
27
- export declare function XL1(value: bigint): XL1 & {
28
- toAtto(): AttoXL1;
29
- };
30
- export declare function MilliXL1(value: bigint): MilliXL1 & {
31
- toAtto(): AttoXL1;
32
- };
33
- export declare function MicroXL1(value: bigint): MicroXL1 & {
34
- toAtto(): AttoXL1;
35
- };
36
- export declare function NanoXL1(value: bigint): NanoXL1 & {
37
- toAtto(): AttoXL1;
38
- };
39
- export declare function PicoXL1(value: bigint): PicoXL1 & {
40
- toAtto(): AttoXL1;
41
- };
42
- export declare function FemtoXL1(value: bigint): FemtoXL1 & {
43
- toAtto(): AttoXL1;
44
- };
45
- export declare function AttoXL1(value: bigint): AttoXL1 & {
46
- toAtto(): AttoXL1;
47
- };
48
31
  /** @deprecated use XL1Places and xl1ConvertFactor(unit) instead */
49
32
  export declare const XL1ConvertDict: Record<XL1Units, number>;
50
33
  export declare const XL1Places: Record<XL1Units, bigint>;
@@ -1 +1 @@
1
- {"version":3,"file":"XL1.d.ts","sourceRoot":"","sources":["../../../src/xl1/XL1.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAA;AACnD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAC7D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAC7D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAC3D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAC3D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAC7D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAE3D,KAAK,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAE9E,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI;IACzC,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAA;IAClB,MAAM,EAAE,MAAM,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG;IAAE,MAAM,IAAI,OAAO,CAAA;CAAE,CAW9D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG;IAAE,MAAM,IAAI,OAAO,CAAA;CAAE,CAWxE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG;IAAE,MAAM,IAAI,OAAO,CAAA;CAAE,CAWxE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG;IAAE,MAAM,IAAI,OAAO,CAAA;CAAE,CAWtE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG;IAAE,MAAM,IAAI,OAAO,CAAA;CAAE,CAWtE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG;IAAE,MAAM,IAAI,OAAO,CAAA;CAAE,CAWxE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG;IAAE,MAAM,IAAI,OAAO,CAAA;CAAE,CAWtE;AAED,mEAAmE;AACnE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQ1C,CAAA;AAEV,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQrC,CAAA;AAEV;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQhD,CAAA;AAEV,mDAAmD;AACnD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,UAE9C"}
1
+ {"version":3,"file":"XL1.d.ts","sourceRoot":"","sources":["../../../src/xl1/XL1.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAA;AACnD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAC7D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAC7D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAC3D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAC3D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAC7D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAE3D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAA;AAE/D,eAAO,MAAM,GAAG,EAAE,UAAU,CAAC,GAAG,CAAwC,CAAA;AACxE,eAAO,MAAM,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAkD,CAAA;AAC5F,eAAO,MAAM,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAkD,CAAA;AAC5F,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,OAAO,CAAgD,CAAA;AACxF,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,OAAO,CAAgD,CAAA;AACxF,eAAO,MAAM,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAkD,CAAA;AAC5F,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,OAAO,CAAgD,CAAA;AAExF,KAAK,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAE9E,mEAAmE;AACnE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQ1C,CAAA;AAEV,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQrC,CAAA;AAEV;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQhD,CAAA;AAEV,mDAAmD;AACnD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,UAE9C"}
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",
4
- "version": "1.4.3",
4
+ "version": "1.4.4",
5
5
  "description": "XYO Layer One Protocol",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -1,7 +1,9 @@
1
1
  import type { Hex } from '@xylabs/hex'
2
2
 
3
- import type { AttoXL1 } from '../xl1/index.ts'
4
- import { MicroXL1 } from '../xl1/index.ts'
3
+ import {
4
+ AttoXL1,
5
+ AttoXL1ConvertFactor,
6
+ } from '../xl1/index.ts'
5
7
 
6
8
  export interface TransactionFeesBigInt {
7
9
  base: AttoXL1
@@ -19,15 +21,15 @@ export interface TransactionFeesFields {
19
21
  }
20
22
 
21
23
  export const minTransactionFees: TransactionFeesBigInt = {
22
- base: MicroXL1(1000n).toAtto(),
23
- gasPrice: MicroXL1(1n).toAtto(),
24
- gasLimit: MicroXL1(1000n).toAtto(),
25
- priority: MicroXL1(0n).toAtto(),
24
+ base: AttoXL1(1000n * AttoXL1ConvertFactor.micro),
25
+ gasPrice: AttoXL1(1n * AttoXL1ConvertFactor.micro),
26
+ gasLimit: AttoXL1(1000n * AttoXL1ConvertFactor.micro),
27
+ priority: AttoXL1(0n * AttoXL1ConvertFactor.micro),
26
28
  } as const
27
29
 
28
30
  export const defaultTransactionFees: TransactionFeesBigInt = {
29
31
  base: minTransactionFees.base,
30
- gasPrice: MicroXL1(10n).toAtto(),
31
- gasLimit: MicroXL1(1_000_000n).toAtto(),
32
+ gasPrice: AttoXL1(10n * AttoXL1ConvertFactor.micro),
33
+ gasLimit: AttoXL1(1_000_000n * AttoXL1ConvertFactor.micro),
32
34
  priority: minTransactionFees.priority,
33
35
  } as const
package/src/xl1/XL1.ts CHANGED
@@ -6,103 +6,17 @@ export type PicoXL1 = bigint & { readonly _tag: 'PicoXL1' } // 1e-6 [XL1 * 1e12
6
6
  export type FemtoXL1 = bigint & { readonly _tag: 'FemtoXL1' } // 1e-3 [XL1 * 1e15 = femtoXL1] [femtoXL1 / 1e15 = XL1]
7
7
  export type AttoXL1 = bigint & { readonly _tag: 'AttoXL1' } // 1e-0 [XL1 * 1e18 = attoXL1] [attoXL1 / 1e18 = XL1]
8
8
 
9
- type XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto'
10
-
11
- export type TypingFunc<T extends bigint> = {
12
- (value: bigint): T
13
- toAtto: () => AttoXL1
14
- }
15
-
16
- export function XL1(value: bigint): XL1 & { toAtto(): AttoXL1 } {
17
- const xl1Value = value as XL1
18
-
19
- return new Proxy(xl1Value, {
20
- get(target, prop) {
21
- if (prop === 'toAtto') {
22
- return () => AttoXL1(target * AttoXL1ConvertFactor.xl1)
23
- }
24
- return Reflect.get(target, prop)
25
- },
26
- }) as XL1 & { toAtto(): AttoXL1 }
27
- }
28
-
29
- export function MilliXL1(value: bigint): MilliXL1 & { toAtto(): AttoXL1 } {
30
- const xl1Value = value as MilliXL1
31
-
32
- return new Proxy(xl1Value, {
33
- get(target, prop) {
34
- if (prop === 'toAtto') {
35
- return () => AttoXL1(target * AttoXL1ConvertFactor.milli)
36
- }
37
- return Reflect.get(target, prop)
38
- },
39
- }) as MilliXL1 & { toAtto(): AttoXL1 }
40
- }
41
-
42
- export function MicroXL1(value: bigint): MicroXL1 & { toAtto(): AttoXL1 } {
43
- const xl1Value = value as MicroXL1
44
-
45
- return new Proxy(xl1Value, {
46
- get(target, prop) {
47
- if (prop === 'toAtto') {
48
- return () => AttoXL1(target * AttoXL1ConvertFactor.micro)
49
- }
50
- return Reflect.get(target, prop)
51
- },
52
- }) as MicroXL1 & { toAtto(): AttoXL1 }
53
- }
9
+ export type TypingFunc<T extends bigint> = (value: bigint) => T
54
10
 
55
- export function NanoXL1(value: bigint): NanoXL1 & { toAtto(): AttoXL1 } {
56
- const xl1Value = value as NanoXL1
11
+ export const XL1: TypingFunc<XL1> = (value: bigint): XL1 => value as XL1
12
+ export const MilliXL1: TypingFunc<MilliXL1> = (value: bigint): MilliXL1 => value as MilliXL1
13
+ export const MicroXL1: TypingFunc<MicroXL1> = (value: bigint): MicroXL1 => value as MicroXL1
14
+ export const NanoXL1: TypingFunc<NanoXL1> = (value: bigint): NanoXL1 => value as NanoXL1
15
+ export const PicoXL1: TypingFunc<PicoXL1> = (value: bigint): PicoXL1 => value as PicoXL1
16
+ export const FemtoXL1: TypingFunc<FemtoXL1> = (value: bigint): FemtoXL1 => value as FemtoXL1
17
+ export const AttoXL1: TypingFunc<AttoXL1> = (value: bigint): AttoXL1 => value as AttoXL1
57
18
 
58
- return new Proxy(xl1Value, {
59
- get(target, prop) {
60
- if (prop === 'toAtto') {
61
- return () => AttoXL1(target * AttoXL1ConvertFactor.nano)
62
- }
63
- return Reflect.get(target, prop)
64
- },
65
- }) as NanoXL1 & { toAtto(): AttoXL1 }
66
- }
67
-
68
- export function PicoXL1(value: bigint): PicoXL1 & { toAtto(): AttoXL1 } {
69
- const xl1Value = value as PicoXL1
70
-
71
- return new Proxy(xl1Value, {
72
- get(target, prop) {
73
- if (prop === 'toAtto') {
74
- return () => AttoXL1(target * AttoXL1ConvertFactor.pico)
75
- }
76
- return Reflect.get(target, prop)
77
- },
78
- }) as PicoXL1 & { toAtto(): AttoXL1 }
79
- }
80
-
81
- export function FemtoXL1(value: bigint): FemtoXL1 & { toAtto(): AttoXL1 } {
82
- const xl1Value = value as FemtoXL1
83
-
84
- return new Proxy(xl1Value, {
85
- get(target, prop) {
86
- if (prop === 'toAtto') {
87
- return () => AttoXL1(target * AttoXL1ConvertFactor.femto)
88
- }
89
- return Reflect.get(target, prop)
90
- },
91
- }) as FemtoXL1 & { toAtto(): AttoXL1 }
92
- }
93
-
94
- export function AttoXL1(value: bigint): AttoXL1 & { toAtto(): AttoXL1 } {
95
- const xl1Value = value as AttoXL1
96
-
97
- return new Proxy(xl1Value, {
98
- get(target, prop) {
99
- if (prop === 'toAtto') {
100
- return () => AttoXL1(target * AttoXL1ConvertFactor.atto)
101
- }
102
- return Reflect.get(target, prop)
103
- },
104
- }) as AttoXL1 & { toAtto(): AttoXL1 }
105
- }
19
+ type XL1Units = 'xl1' | 'milli' | 'micro' | 'nano' | 'pico' | 'femto' | 'atto'
106
20
 
107
21
  /** @deprecated use XL1Places and xl1ConvertFactor(unit) instead */
108
22
  export const XL1ConvertDict: Record<XL1Units, number> = {