@xyo-network/xl1-protocol-sdk 1.18.39 → 1.19.0

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.
Files changed (25) hide show
  1. package/dist/neutral/config/Bridge.d.ts +15 -15
  2. package/dist/neutral/index.mjs +21 -11
  3. package/dist/neutral/index.mjs.map +1 -1
  4. package/dist/neutral/model/ChainQualification.d.ts +7 -7
  5. package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts +4 -2
  6. package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts.map +1 -1
  7. package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts +1 -1
  8. package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -1
  9. package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts +1 -1
  10. package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -1
  11. package/dist/neutral/viewers/ChainContract.d.ts +11 -7
  12. package/dist/neutral/viewers/ChainContract.d.ts.map +1 -1
  13. package/dist/neutral/viewers/Finalization.d.ts +1 -1
  14. package/dist/neutral/viewers/Finalization.d.ts.map +1 -1
  15. package/dist/neutral/viewers/WindowedBlock.d.ts +1 -2
  16. package/dist/neutral/viewers/WindowedBlock.d.ts.map +1 -1
  17. package/package.json +8 -9
  18. package/src/config/Bridge.ts +1 -1
  19. package/src/model/ChainQualification.ts +1 -1
  20. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +27 -8
  21. package/src/validation/block/HydratedBlockStateValidationFunction.ts +1 -1
  22. package/src/validation/block/HydratedBlockValidationFunction.ts +1 -1
  23. package/src/viewers/ChainContract.ts +15 -8
  24. package/src/viewers/Finalization.ts +1 -1
  25. package/src/viewers/WindowedBlock.ts +1 -2
@@ -1,11 +1,11 @@
1
1
  import { z } from 'zod';
2
2
  export declare const ChainQualificationZod: z.ZodObject<{
3
- head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHash, string>>;
3
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>;
4
4
  range: z.ZodTuple<[z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>], null>;
5
5
  }, z.core.$strip>;
6
6
  export type ChainQualification = z.infer<typeof ChainQualificationZod>;
7
7
  export declare const isChainQualification: <T>(value: T) => value is T & {
8
- head: import("@xylabs/hex").BrandedHash;
8
+ head: import("@xylabs/sdk-js").BrandedHash;
9
9
  range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
10
10
  };
11
11
  export declare const ChainQualifiedRangeConfigZod: z.ZodObject<{
@@ -16,27 +16,27 @@ export declare const isChainQualifiedRangeConfig: <T>(value: T) => value is T &
16
16
  range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
17
17
  };
18
18
  export declare const ChainQualifiedHeadConfigZod: z.ZodObject<{
19
- head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHash, string>>;
19
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>;
20
20
  }, z.core.$strip>;
21
21
  export type ChainQualifiedHeadConfig = z.infer<typeof ChainQualifiedHeadConfigZod>;
22
22
  export declare const isChainQualifiedHeadConfig: <T>(value: T) => value is T & {
23
- head: import("@xylabs/hex").BrandedHash;
23
+ head: import("@xylabs/sdk-js").BrandedHash;
24
24
  };
25
25
  export declare const ChainQualifiedConfigZod: z.ZodUnion<readonly [z.ZodObject<{
26
26
  range: z.ZodTuple<[z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>], null>;
27
27
  }, z.core.$strip>, z.ZodObject<{
28
- head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHash, string>>;
28
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>;
29
29
  }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>;
30
30
  export type ChainQualifiedConfig = z.infer<typeof ChainQualifiedConfigZod>;
31
31
  export declare const isChainQualifiedConfig: <T>(value: T) => value is T & ({
32
32
  range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
33
33
  } | {
34
- head: import("@xylabs/hex").BrandedHash;
34
+ head: import("@xylabs/sdk-js").BrandedHash;
35
35
  } | Record<string, never>);
36
36
  export declare const ExtendChainQualifiedConfigZod: <T>(zodType: z.ZodType<T>) => z.ZodType<T & ChainQualifiedConfig>;
37
37
  export type ChainQualified<T> = [T, ChainQualification];
38
38
  export declare const ChainQualifiedZod: <T>(zodType: z.ZodType<T>) => z.ZodTuple<[z.ZodType<T, unknown, z.core.$ZodTypeInternals<T, unknown>>, z.ZodObject<{
39
- head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHash, string>>;
39
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>;
40
40
  range: z.ZodTuple<[z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>], null>;
41
41
  }, z.core.$strip>], null>;
42
42
  //# sourceMappingURL=ChainQualification.d.ts.map
@@ -2,7 +2,7 @@ import { type SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'
2
2
  import type { CreatableProviderParams } from '../../CreatableProvider/index.ts';
3
3
  import { AbstractCreatableProvider } from '../../CreatableProvider/index.ts';
4
4
  import type { HydratedBlockStateValidationFunction, HydratedBlockValidationError, HydratedBlockValidationFunction } from '../../validation/index.ts';
5
- import type { BlockValidationConfig, BlockValidationQualification, BlockValidationViewer } from '../../viewers/index.ts';
5
+ import type { BlockValidationConfig, BlockValidationQualification, BlockValidationViewer, ChainContractViewer } from '../../viewers/index.ts';
6
6
  import { BlockViewer } from '../../viewers/index.ts';
7
7
  export interface SimpleBlockValidationViewerParams extends CreatableProviderParams {
8
8
  maxUncleWindowSize: number;
@@ -11,13 +11,15 @@ export interface SimpleBlockValidationViewerParams extends CreatableProviderPara
11
11
  }
12
12
  export declare class SimpleBlockValidationViewer extends AbstractCreatableProvider<SimpleBlockValidationViewerParams> implements BlockValidationViewer {
13
13
  static readonly defaultMoniker: "BlockValidationViewer";
14
- static readonly dependencies: ("BlockViewer" | "AccountBalanceViewer")[];
14
+ static readonly dependencies: ("BlockViewer" | "AccountBalanceViewer" | "ChainContractViewer")[];
15
15
  static readonly monikers: "BlockValidationViewer"[];
16
16
  moniker: "BlockValidationViewer";
17
17
  private _accountBalanceViewer;
18
18
  private _blockViewer;
19
+ private _chainContractViewer;
19
20
  private _uncleWindowedChainCache;
20
21
  protected get blockViewer(): BlockViewer<"BlockViewer">;
22
+ protected get chainContractViewer(): ChainContractViewer;
21
23
  protected get maxUncleWindowSize(): number;
22
24
  static paramsHandler(params: Partial<SimpleBlockValidationViewerParams>): Promise<SimpleBlockValidationViewerParams>;
23
25
  createHandler(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleBlockValidationViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/blockValidation/SimpleBlockValidationViewer.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,+BAA+B,EACrC,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAqB,MAAM,kCAAkC,CAAA;AAG/F,OAAO,KAAK,EACV,oCAAoC,EAAE,4BAA4B,EAAE,+BAA+B,EACpG,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAEV,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEyB,WAAW,EAC1C,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,iCAAkC,SAAQ,uBAAuB;IAChF,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,+BAA+B,CAAA;IAC1C,KAAK,CAAC,EAAE,oCAAoC,CAAA;CAC7C;AAED,qBACa,2BAA4B,SAAQ,yBAAyB,CAAC,iCAAiC,CAAE,YAAW,qBAAqB;IAC5I,MAAM,CAAC,QAAQ,CAAC,cAAc,0BAA+B;IAC7D,MAAM,CAAC,QAAQ,CAAC,YAAY,6CAAoD;IAChF,MAAM,CAAC,QAAQ,CAAC,QAAQ,4BAAiC;IACzD,OAAO,0BAA6C;IAEpD,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,wBAAwB,CAAiD;IAEjF,SAAS,KAAK,WAAW,+BAExB;IAED,SAAS,KAAK,kBAAkB,WAE/B;WAEqB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,iCAAiC,CAAC,GAAG,OAAO,CAAC,iCAAiC,CAAC;IAOpH,aAAa;IAMtB,sBAAsB,CAC1B,KAAK,EAAE,+BAA+B,EACtC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,4BAA4B,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAIpE,uBAAuB,CAC3B,MAAM,EAAE,+BAA+B,EAAE,EACzC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,4BAA4B,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAuBpE,aAAa,CAAC,KAAK,EAAE,+BAA+B,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAI9H,cAAc,CAAC,MAAM,EAAE,+BAA+B,EAAE,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;YAI1H,kBAAkB;YASlB,eAAe;YAmBf,wBAAwB;CAIvC"}
1
+ {"version":3,"file":"SimpleBlockValidationViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/blockValidation/SimpleBlockValidationViewer.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,+BAA+B,EACrC,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAqB,MAAM,kCAAkC,CAAA;AAG/F,OAAO,KAAK,EACV,oCAAoC,EAAE,4BAA4B,EAAE,+BAA+B,EACpG,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAEV,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEyB,WAAW,EAE1C,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,iCAAkC,SAAQ,uBAAuB;IAChF,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,+BAA+B,CAAA;IAC1C,KAAK,CAAC,EAAE,oCAAoC,CAAA;CAC7C;AAED,qBACa,2BAA4B,SAAQ,yBAAyB,CAAC,iCAAiC,CAAE,YAAW,qBAAqB;IAC5I,MAAM,CAAC,QAAQ,CAAC,cAAc,0BAA+B;IAC7D,MAAM,CAAC,QAAQ,CAAC,YAAY,qEAAgF;IAC5G,MAAM,CAAC,QAAQ,CAAC,QAAQ,4BAAiC;IACzD,OAAO,0BAA6C;IAEpD,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,wBAAwB,CAAiD;IAEjF,SAAS,KAAK,WAAW,+BAExB;IAED,SAAS,KAAK,mBAAmB,wBAEhC;IAED,SAAS,KAAK,kBAAkB,WAE/B;WAEqB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,iCAAiC,CAAC,GAAG,OAAO,CAAC,iCAAiC,CAAC;IASpH,aAAa;IAOtB,sBAAsB,CAC1B,KAAK,EAAE,+BAA+B,EACtC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,4BAA4B,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAIpE,uBAAuB,CAC3B,MAAM,EAAE,+BAA+B,EAAE,EACzC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,4BAA4B,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAwBpE,aAAa,CAAC,KAAK,EAAE,+BAA+B,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAI9H,cAAc,CAAC,MAAM,EAAE,+BAA+B,EAAE,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;YAI1H,kBAAkB;YAYlB,eAAe;YAsBf,wBAAwB;CAIvC"}
@@ -9,7 +9,7 @@ import type { HydratedBlockStateValidationError } from './error.ts';
9
9
  * @param archivist The archivist to use for validation.
10
10
  * @returns An array of errors if the block is invalid, or an empty array if it is valid.
11
11
  */
12
- export type HydratedBlockStateValidationFunction = (hydratedBlock: HydratedBlockWithHashMeta, chainId: ChainId, services: {
12
+ export type HydratedBlockStateValidationFunction = (hydratedBlock: HydratedBlockWithHashMeta, chainIdAtBlockNumber: (blockNumber: number) => Promisable<ChainId>, services: {
13
13
  accountBalance: AccountBalanceViewer;
14
14
  }) => Promisable<HydratedBlockStateValidationError[]>;
15
15
  //# sourceMappingURL=HydratedBlockStateValidationFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydratedBlockStateValidationFunction.d.ts","sourceRoot":"","sources":["../../../../src/validation/block/HydratedBlockStateValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,MAAM,oCAAoC,GAAG,CACjD,aAAa,EAAE,yBAAyB,EACxC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE;IAAE,cAAc,EAAE,oBAAoB,CAAA;CAAE,KAC/C,UAAU,CAAC,iCAAiC,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"HydratedBlockStateValidationFunction.d.ts","sourceRoot":"","sources":["../../../../src/validation/block/HydratedBlockStateValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,MAAM,oCAAoC,GAAG,CACjD,aAAa,EAAE,yBAAyB,EACxC,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,EAClE,QAAQ,EAAE;IAAE,cAAc,EAAE,oBAAoB,CAAA;CAAE,KAC/C,UAAU,CAAC,iCAAiC,EAAE,CAAC,CAAA"}
@@ -7,5 +7,5 @@ import type { HydratedBlockValidationError } from './error.ts';
7
7
  * @param chainId The chain ID to use for validation.
8
8
  * @returns An array of errors if the block is invalid, or an empty array if it is valid.
9
9
  */
10
- export type HydratedBlockValidationFunction = (hydratedBlock: HydratedBlockWithHashMeta, chainId?: ChainId) => Promisable<HydratedBlockValidationError[]>;
10
+ export type HydratedBlockValidationFunction = (hydratedBlock: HydratedBlockWithHashMeta, chainIdAtBlockNumber?: (blockNumber: number) => Promisable<ChainId>) => Promisable<HydratedBlockValidationError[]>;
11
11
  //# sourceMappingURL=HydratedBlockValidationFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydratedBlockValidationFunction.d.ts","sourceRoot":"","sources":["../../../../src/validation/block/HydratedBlockValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAC5C,aAAa,EAAE,yBAAyB,EACxC,OAAO,CAAC,EAAE,OAAO,KACd,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"HydratedBlockValidationFunction.d.ts","sourceRoot":"","sources":["../../../../src/validation/block/HydratedBlockValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAC5C,aAAa,EAAE,yBAAyB,EACxC,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,KAChE,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAA"}
@@ -1,15 +1,19 @@
1
- import type { Address } from '@xylabs/sdk-js';
1
+ import type { Address, Hash, Promisable } from '@xylabs/sdk-js';
2
+ import type { ChainId } from '@xyo-network/xl1-protocol';
2
3
  import type { Provider } from '../model/index.ts';
3
4
  export interface ChainContractViewerMethods {
4
- forkedAtBlockNumber(): Promise<bigint>;
5
- forkedAtHash(): Promise<bigint>;
6
- forkedChainId(): Promise<Address>;
7
- minWithdrawalBlocks(): Promise<bigint>;
8
- rewardsContract(): Promise<string>;
9
- stakingTokenAddress(): Promise<string>;
5
+ chainId(): Promisable<ChainId>;
6
+ forkedAtBlockNumber(): Promisable<number>;
7
+ forkedAtHash(): Promisable<Hash>;
8
+ forkedChainId(): Promisable<ChainId>;
9
+ minWithdrawalBlocks(): Promisable<number>;
10
+ rewardsContract(): Promisable<Address>;
11
+ stakingTokenAddress(): Promisable<Address>;
10
12
  }
11
13
  export declare const ChainContractViewerMoniker: "ChainContractViewer";
12
14
  export type ChainContractViewerMoniker = typeof ChainContractViewerMoniker;
13
15
  export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {
16
+ chainIdAtBlockNumber(blockNumber: number): Promisable<ChainId>;
17
+ forkedChainContractViewer(): Promisable<ChainContractViewer>;
14
18
  }
15
19
  //# sourceMappingURL=ChainContract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChainContract.d.ts","sourceRoot":"","sources":["../../../src/viewers/ChainContract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,0BAA0B;IACzC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACtC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACtC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACvC;AAED,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA;AACxE,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,WAAW,mBAAoB,SAAQ,0BAA0B,EAAE,QAAQ,CAAC,0BAA0B,CAAC;CAAG"}
1
+ {"version":3,"file":"ChainContract.d.ts","sourceRoot":"","sources":["../../../src/viewers/ChainContract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EAAE,UAAU,EAC1B,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,0BAA0B;IACzC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IAC9B,mBAAmB,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,aAAa,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IACpC,mBAAmB,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,eAAe,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IACtC,mBAAmB,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;CAC3C;AAED,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA;AACxE,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,WAAW,mBAAoB,SAAQ,0BAA0B,EAAE,QAAQ,CAAC,0BAA0B,CAAC;IAC3G,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAC9D,yBAAyB,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAA;CAC7D"}
@@ -1,4 +1,4 @@
1
- import type { Hash } from '@xylabs/hex';
1
+ import type { Hash } from '@xylabs/sdk-js';
2
2
  import type { SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, XL1BlockNumber } from '@xyo-network/xl1-protocol';
3
3
  import type { Provider } from '../model/index.ts';
4
4
  export interface FinalizationViewerMethods {
@@ -1 +1 @@
1
- {"version":3,"file":"Finalization.d.ts","sourceRoot":"","sources":["../../../src/viewers/Finalization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EACV,mCAAmC,EAAE,+BAA+B,EAAE,cAAc,EACrF,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,yBAAyB;IACxC,IAAI,IAAI,OAAO,CAAC,+BAA+B,CAAC,CAAA;CACjD;AAED,eAAO,MAAM,yBAAyB,EAAG,oBAA6B,CAAA;AACtE,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAA;AAExE,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB,CAAC;IACxG,SAAS,IAAI,OAAO,CAAC,mCAAmC,CAAC,CAAA;IACzD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAAA;CACtC"}
1
+ {"version":3,"file":"Finalization.d.ts","sourceRoot":"","sources":["../../../src/viewers/Finalization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EACV,mCAAmC,EAAE,+BAA+B,EAAE,cAAc,EACrF,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,yBAAyB;IACxC,IAAI,IAAI,OAAO,CAAC,+BAA+B,CAAC,CAAA;CACjD;AAED,eAAO,MAAM,yBAAyB,EAAG,oBAA6B,CAAA;AACtE,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAA;AAExE,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB,CAAC;IACxG,SAAS,IAAI,OAAO,CAAC,mCAAmC,CAAC,CAAA;IACzD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAAA;CACtC"}
@@ -1,5 +1,4 @@
1
- import type { Hash } from '@xylabs/hex';
2
- import type { Promisable } from '@xylabs/sdk-js';
1
+ import type { Hash, Promisable } from '@xylabs/sdk-js';
3
2
  import type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol';
4
3
  import type { Provider, ProviderMoniker } from '../model/index.ts';
5
4
  import type { BlockViewerMethods } from './Block.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"WindowedBlock.d.ts","sourceRoot":"","sources":["../../../src/viewers/WindowedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAE1E,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,KAAK,4BAA4B,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,cAAc,GAAG,kBAAkB,CAAC,CAAA;AAE1G,MAAM,WAAW,0BAA2B,SAAQ,4BAA4B;IAC9E,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAA;CACnF;AAED,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA;AACxE,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,eAAe,GAAG,0BAA0B,CAAE,SAAQ,0BAA0B,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACxJ,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAA;CACjF"}
1
+ {"version":3,"file":"WindowedBlock.d.ts","sourceRoot":"","sources":["../../../src/viewers/WindowedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAE1E,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,KAAK,4BAA4B,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,cAAc,GAAG,kBAAkB,CAAC,CAAA;AAE1G,MAAM,WAAW,0BAA2B,SAAQ,4BAA4B;IAC9E,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAA;CACnF;AAED,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA;AACxE,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,eAAe,GAAG,0BAA0B,CAAE,SAAQ,0BAA0B,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACxJ,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAA;CACjF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-protocol-sdk",
4
- "version": "1.18.39",
4
+ "version": "1.19.0",
5
5
  "description": "XYO Layer One SDK Protocol",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -40,9 +40,8 @@
40
40
  ],
41
41
  "dependencies": {
42
42
  "@opentelemetry/api": "^1.9.0",
43
- "@xylabs/hex": "~5.0.63",
44
- "@xylabs/sdk-js": "~5.0.63",
45
- "@xylabs/zod": "~5.0.63",
43
+ "@xylabs/sdk-js": "~5.0.64",
44
+ "@xylabs/zod": "~5.0.64",
46
45
  "@xyo-network/account": "~5.2.25",
47
46
  "@xyo-network/account-model": "~5.2.25",
48
47
  "@xyo-network/archivist-model": "~5.2.25",
@@ -52,17 +51,17 @@
52
51
  "@xyo-network/payload-model": "~5.2.25",
53
52
  "@xyo-network/wallet": "~5.2.25",
54
53
  "@xyo-network/wallet-model": "~5.2.25",
55
- "@xyo-network/xl1-protocol": "~1.18.39",
54
+ "@xyo-network/xl1-protocol": "~1.19.0",
56
55
  "async-mutex": "~0.5.0",
57
56
  "ethers": "^6.16.0",
58
57
  "lru-cache": "^11.2.4"
59
58
  },
60
59
  "devDependencies": {
61
60
  "@types/node": "~25.0.9",
62
- "@xylabs/events": "~5.0.63",
63
- "@xylabs/ts-scripts-yarn3": "~7.2.32",
64
- "@xylabs/tsconfig": "~7.2.32",
65
- "@xylabs/vitest-extended": "~5.0.63",
61
+ "@xylabs/events": "~5.0.64",
62
+ "@xylabs/ts-scripts-yarn3": "~7.3.1",
63
+ "@xylabs/tsconfig": "~7.3.1",
64
+ "@xylabs/vitest-extended": "~5.0.64",
66
65
  "@xyo-network/account": "~5.2.25",
67
66
  "@xyo-network/archivist-memory": "~5.2.25",
68
67
  "@xyo-network/archivist-mongodb": "~5.2.25",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AddressZod, HexZod, toAddress, toHex,
3
- } from '@xylabs/hex'
3
+ } from '@xylabs/sdk-js'
4
4
  import type { ChainId } from '@xyo-network/xl1-protocol'
5
5
  import { AttoXL1ConvertFactor, XL1 } from '@xyo-network/xl1-protocol'
6
6
  import { globalRegistry, z } from 'zod'
@@ -1,4 +1,4 @@
1
- import { HashZod } from '@xylabs/hex'
1
+ import { HashZod } from '@xylabs/sdk-js'
2
2
  import { zodIsFactory } from '@xylabs/zod'
3
3
  import { XL1BlockRangeZod } from '@xyo-network/xl1-protocol'
4
4
  import { z } from 'zod'
@@ -1,4 +1,6 @@
1
- import { assertEx, exists } from '@xylabs/sdk-js'
1
+ import {
2
+ assertEx, exists, Promisable,
3
+ } from '@xylabs/sdk-js'
2
4
  import {
3
5
  asXL1BlockRange,
4
6
  ChainId,
@@ -17,10 +19,12 @@ import type {
17
19
  BlockValidationConfig,
18
20
  BlockValidationQualification,
19
21
  BlockValidationViewer,
22
+ ChainContractViewer,
20
23
  } from '../../viewers/index.ts'
21
24
  import {
22
25
  AccountBalanceViewerMoniker,
23
26
  BlockValidationViewerMoniker, BlockViewer, BlockViewerMoniker,
27
+ ChainContractViewerMoniker,
24
28
  } from '../../viewers/index.ts'
25
29
 
26
30
  export interface SimpleBlockValidationViewerParams extends CreatableProviderParams {
@@ -32,18 +36,23 @@ export interface SimpleBlockValidationViewerParams extends CreatableProviderPara
32
36
  @creatableProvider()
33
37
  export class SimpleBlockValidationViewer extends AbstractCreatableProvider<SimpleBlockValidationViewerParams> implements BlockValidationViewer {
34
38
  static readonly defaultMoniker = BlockValidationViewerMoniker
35
- static readonly dependencies = [AccountBalanceViewerMoniker, BlockViewerMoniker]
39
+ static readonly dependencies = [AccountBalanceViewerMoniker, BlockViewerMoniker, ChainContractViewerMoniker]
36
40
  static readonly monikers = [BlockValidationViewerMoniker]
37
41
  moniker = SimpleBlockValidationViewer.defaultMoniker
38
42
 
39
43
  private _accountBalanceViewer!: AccountBalanceViewer
40
44
  private _blockViewer!: BlockViewer
45
+ private _chainContractViewer!: ChainContractViewer
41
46
  private _uncleWindowedChainCache: SignedHydratedBlockWithHashMeta[] | null = null
42
47
 
43
48
  protected get blockViewer() {
44
49
  return this._blockViewer
45
50
  }
46
51
 
52
+ protected get chainContractViewer() {
53
+ return this._chainContractViewer
54
+ }
55
+
47
56
  protected get maxUncleWindowSize() {
48
57
  return this.params.maxUncleWindowSize
49
58
  }
@@ -51,6 +60,8 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
51
60
  static override async paramsHandler(params: Partial<SimpleBlockValidationViewerParams>): Promise<SimpleBlockValidationViewerParams> {
52
61
  return {
53
62
  ...await super.paramsHandler(params),
63
+ protocol: params.protocol,
64
+ state: params.state,
54
65
  maxUncleWindowSize: params.maxUncleWindowSize ?? 100,
55
66
  } satisfies SimpleBlockValidationViewerParams
56
67
  }
@@ -59,6 +70,7 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
59
70
  await super.createHandler()
60
71
  this._accountBalanceViewer = await this.locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker)
61
72
  this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
73
+ this._chainContractViewer = await this.locator.getInstance<ChainContractViewer>(ChainContractViewerMoniker)
62
74
  }
63
75
 
64
76
  async qualifiedValidateBlock(
@@ -84,13 +96,14 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
84
96
  : undefined
85
97
 
86
98
  const headBlock = head ?? (await this.blockViewer.currentBlock())[0]
87
- const chainId = headBlock.chain
88
99
 
89
100
  const validateProtocol = value ? this.doValidateProtocol.bind(this) : undefined
90
101
  const validateState = state ? this.doValidateState.bind(this) : undefined
91
102
 
103
+ const chainIdAtBlockNumber = (blockNumber: number) => this.chainContractViewer.chainIdAtBlockNumber(blockNumber)
104
+
92
105
  return [(await Promise.all([
93
- validateProtocol?.(blocks, chainId), validateState?.(blocks, chainId),
106
+ validateProtocol?.(blocks, chainIdAtBlockNumber), validateState?.(blocks, chainIdAtBlockNumber),
94
107
  ].filter(exists))).flat(), { head: headBlock._hash, range: asXL1BlockRange([0, headBlock.block], true) }]
95
108
  }
96
109
 
@@ -102,16 +115,22 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
102
115
  return (await this.qualifiedValidateBlocks(blocks, config))[0]
103
116
  }
104
117
 
105
- private async doValidateProtocol(blocks: SignedHydratedBlockWithHashMeta[], chainId: ChainId): Promise<HydratedBlockValidationError[]> {
118
+ private async doValidateProtocol(
119
+ blocks: SignedHydratedBlockWithHashMeta[],
120
+ chainIdAtBlockNumber: (blockNumber: number) => Promisable<ChainId>,
121
+ ): Promise<HydratedBlockValidationError[]> {
106
122
  return (await Promise.all(blocks.map(async (block) => {
107
123
  return await this.params.protocol!(
108
124
  block,
109
- chainId,
125
+ chainIdAtBlockNumber,
110
126
  )
111
127
  }))).flat()
112
128
  }
113
129
 
114
- private async doValidateState(blocks: SignedHydratedBlockWithHashMeta[], chainId: ChainId): Promise<HydratedBlockValidationError[]> {
130
+ private async doValidateState(
131
+ blocks: SignedHydratedBlockWithHashMeta[],
132
+ chainIdAtBlockNumber: (blockNumber: number) => Promisable<ChainId>,
133
+ ): Promise<HydratedBlockValidationError[]> {
115
134
  const windowedUncleChain = await this.updateWindowedChainCache()
116
135
 
117
136
  const uncles = findUncles(this.context, windowedUncleChain, blocks)
@@ -124,7 +143,7 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
124
143
  return (await Promise.all(uncles[0].map(async (block) => {
125
144
  return await this.params.state!(
126
145
  block,
127
- chainId,
146
+ chainIdAtBlockNumber,
128
147
  { accountBalance: this._accountBalanceViewer },
129
148
  )
130
149
  }))).flat()
@@ -13,6 +13,6 @@ import type { HydratedBlockStateValidationError } from './error.ts'
13
13
  */
14
14
  export type HydratedBlockStateValidationFunction = (
15
15
  hydratedBlock: HydratedBlockWithHashMeta,
16
- chainId: ChainId,
16
+ chainIdAtBlockNumber: (blockNumber: number) => Promisable<ChainId>,
17
17
  services: { accountBalance: AccountBalanceViewer },
18
18
  ) => Promisable<HydratedBlockStateValidationError[]>
@@ -11,5 +11,5 @@ import type { HydratedBlockValidationError } from './error.ts'
11
11
  */
12
12
  export type HydratedBlockValidationFunction = (
13
13
  hydratedBlock: HydratedBlockWithHashMeta,
14
- chainId?: ChainId,
14
+ chainIdAtBlockNumber?: (blockNumber: number) => Promisable<ChainId>,
15
15
  ) => Promisable<HydratedBlockValidationError[]>
@@ -1,17 +1,24 @@
1
- import type { Address } from '@xylabs/sdk-js'
1
+ import type {
2
+ Address, Hash, Promisable,
3
+ } from '@xylabs/sdk-js'
4
+ import type { ChainId } from '@xyo-network/xl1-protocol'
2
5
 
3
6
  import type { Provider } from '../model/index.ts'
4
7
 
5
8
  export interface ChainContractViewerMethods {
6
- forkedAtBlockNumber(): Promise<bigint>
7
- forkedAtHash(): Promise<bigint>
8
- forkedChainId(): Promise<Address>
9
- minWithdrawalBlocks(): Promise<bigint>
10
- rewardsContract(): Promise<string>
11
- stakingTokenAddress(): Promise<string>
9
+ chainId(): Promisable<ChainId>
10
+ forkedAtBlockNumber(): Promisable<number>
11
+ forkedAtHash(): Promisable<Hash>
12
+ forkedChainId(): Promisable<ChainId>
13
+ minWithdrawalBlocks(): Promisable<number>
14
+ rewardsContract(): Promisable<Address>
15
+ stakingTokenAddress(): Promisable<Address>
12
16
  }
13
17
 
14
18
  export const ChainContractViewerMoniker = 'ChainContractViewer' as const
15
19
  export type ChainContractViewerMoniker = typeof ChainContractViewerMoniker
16
20
 
17
- export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {}
21
+ export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {
22
+ chainIdAtBlockNumber(blockNumber: number): Promisable<ChainId>
23
+ forkedChainContractViewer(): Promisable<ChainContractViewer>
24
+ }
@@ -1,4 +1,4 @@
1
- import type { Hash } from '@xylabs/hex'
1
+ import type { Hash } from '@xylabs/sdk-js'
2
2
  import type {
3
3
  SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, XL1BlockNumber,
4
4
  } from '@xyo-network/xl1-protocol'
@@ -1,5 +1,4 @@
1
- import type { Hash } from '@xylabs/hex'
2
- import type { Promisable } from '@xylabs/sdk-js'
1
+ import type { Hash, Promisable } from '@xylabs/sdk-js'
3
2
  import type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'
4
3
 
5
4
  import type { Provider, ProviderMoniker } from '../model/index.ts'