@xyo-network/xl1-protocol-sdk 1.16.19 → 1.16.21

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 (30) hide show
  1. package/dist/neutral/index.mjs +250 -29
  2. package/dist/neutral/index.mjs.map +1 -1
  3. package/dist/neutral/model/ChainContext/ChainStakeContext.d.ts +1 -2
  4. package/dist/neutral/model/ChainContext/ChainStakeContext.d.ts.map +1 -1
  5. package/dist/neutral/provider/XyoClient.d.ts +2 -1
  6. package/dist/neutral/provider/XyoClient.d.ts.map +1 -1
  7. package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts +34 -0
  8. package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts.map +1 -0
  9. package/dist/neutral/simple/chainStake/index.d.ts +2 -0
  10. package/dist/neutral/simple/chainStake/index.d.ts.map +1 -0
  11. package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts +15 -0
  12. package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts.map +1 -0
  13. package/dist/neutral/simple/chainStakeEvents/index.d.ts +2 -0
  14. package/dist/neutral/simple/chainStakeEvents/index.d.ts.map +1 -0
  15. package/dist/neutral/simple/client/SimpleXyoClient.d.ts +3 -3
  16. package/dist/neutral/simple/client/SimpleXyoClient.d.ts.map +1 -1
  17. package/dist/neutral/simple/index.d.ts +1 -0
  18. package/dist/neutral/simple/index.d.ts.map +1 -1
  19. package/dist/neutral/viewers/Stake.d.ts +2 -1
  20. package/dist/neutral/viewers/Stake.d.ts.map +1 -1
  21. package/package.json +13 -12
  22. package/src/model/ChainContext/ChainStakeContext.ts +1 -4
  23. package/src/provider/XyoClient.ts +2 -1
  24. package/src/simple/chainStake/SimpleChainStakeViewer.ts +147 -0
  25. package/src/simple/chainStake/index.ts +1 -0
  26. package/src/simple/chainStakeEvents/SimpleChainStakeEventsViewer.ts +87 -0
  27. package/src/simple/chainStakeEvents/index.ts +1 -0
  28. package/src/simple/client/SimpleXyoClient.ts +3 -3
  29. package/src/simple/index.ts +1 -0
  30. package/src/viewers/Stake.ts +2 -1
@@ -1,10 +1,9 @@
1
- import type { StakeEventsViewer, StakeRunner, StakeViewer } from '../../viewers/index.ts';
1
+ import type { StakeRunner, StakeViewer } from '../../viewers/index.ts';
2
2
  import type { ChainIdentity } from '../ChainIdentity.ts';
3
3
  export interface ChainStakeContextWrite extends ChainIdentity {
4
4
  stake: StakeRunner;
5
5
  }
6
6
  export interface ChainStakeContextRead extends ChainIdentity {
7
- events: StakeEventsViewer;
8
7
  stake: StakeViewer;
9
8
  }
10
9
  export type ChainStakeContext = ChainStakeContextRead & ChainStakeContextWrite;
@@ -1 +1 @@
1
- {"version":3,"file":"ChainStakeContext.d.ts","sourceRoot":"","sources":["../../../../src/model/ChainContext/ChainStakeContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAC5C,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,MAAM,EAAE,iBAAiB,CAAA;IACzB,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,sBAAsB,CAAA"}
1
+ {"version":3,"file":"ChainStakeContext.d.ts","sourceRoot":"","sources":["../../../../src/model/ChainContext/ChainStakeContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,sBAAsB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import type { GatewayName } from '@xyo-network/xl1-protocol';
2
2
  import type { XyoPermissions } from './permissions/index.ts';
3
3
  import type { XyoGateway } from './XyoGateway.ts';
4
+ import type { XyoGatewayRunner } from './XyoGatewayRunner.ts';
4
5
  export interface XyoGatewayConfig {
5
6
  name: GatewayName;
6
7
  }
@@ -9,7 +10,7 @@ export interface XyoRpcGatewayConfig extends XyoGatewayConfig {
9
10
  networkEndpoint: string;
10
11
  }
11
12
  export interface XyoClient {
12
- gateways: Readonly<Partial<Record<GatewayName, XyoGateway>>>;
13
+ gateways: Readonly<Partial<Record<GatewayName, XyoGatewayRunner>>>;
13
14
  permissions: XyoPermissions;
14
15
  addGateway?(providerOrConfig: XyoGatewayConfig | XyoRpcGatewayConfig | XyoGateway): Promise<XyoGateway>;
15
16
  removeGateway?(name: GatewayName): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"XyoClient.d.ts","sourceRoot":"","sources":["../../../src/provider/XyoClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IAC5D,WAAW,EAAE,cAAc,CAAA;IAE3B,UAAU,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACvG,aAAa,CAAC,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjD"}
1
+ {"version":3,"file":"XyoClient.d.ts","sourceRoot":"","sources":["../../../src/provider/XyoClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAClE,WAAW,EAAE,cAAc,CAAA;IAE3B,UAAU,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACvG,aAAa,CAAC,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjD"}
@@ -0,0 +1,34 @@
1
+ import { type Address } from '@xylabs/sdk-js';
2
+ import { AbstractCreatable, CreatableParams } from '@xylabs/sdk-js';
3
+ import { PayloadMap, Position } from '../../model/index.ts';
4
+ import { StakeEventsViewer, StakeViewer } from '../../viewers/index.ts';
5
+ export interface SimpleChainStakeParams extends CreatableParams {
6
+ chainId?: Address;
7
+ chainMap: PayloadMap;
8
+ minWithdrawalBlocks?: number;
9
+ positions: Position[];
10
+ }
11
+ export declare class SimpleChainStakeViewer extends AbstractCreatable<SimpleChainStakeParams> implements StakeViewer {
12
+ private _chainId;
13
+ private _chainStakeEventsViewer;
14
+ get chainId(): Address;
15
+ get chainMap(): PayloadMap;
16
+ get minWithdrawalBlocks(): number;
17
+ get rewardsContract(): Address;
18
+ get stakeEvents(): StakeEventsViewer;
19
+ get stakingTokenAddress(): Address;
20
+ protected get positions(): Position[];
21
+ active(): bigint;
22
+ activeByAddressStaked(staked: Address): bigint;
23
+ activeByStaker(staker: Address): bigint;
24
+ pending(): bigint;
25
+ pendingByStaker(staker: Address): bigint;
26
+ stakeById(id: number): Position;
27
+ stakeByStaker(staker: Address, slot: number): Position;
28
+ stakesByStaked(staked: Address, range?: [number, number | undefined]): Position[];
29
+ stakesByStaker(staker: Address, range?: [number, number | undefined]): Position[];
30
+ withdrawn(): bigint;
31
+ withdrawnByStaker(staker: Address): bigint;
32
+ protected startHandler(): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=SimpleChainStakeViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleChainStakeViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/chainStake/SimpleChainStakeViewer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,iBAAiB,EACN,eAAe,EAC3B,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGvE,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,UAAU,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB;AAED,qBACa,sBAAuB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAE,YAAW,WAAW;IAC1G,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,uBAAuB,CAA+B;IAE9D,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,QAAQ,eAEX;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,WAAW,sBAEd;IAED,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,SAAS,KAAK,SAAS,eAEtB;IAED,MAAM,IAAI,MAAM;IAUhB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAU9C,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAUvC,OAAO,IAAI,MAAM;IAUjB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAUxC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAI/B,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAItD,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAkB,GAAG,QAAQ,EAAE;IAKjG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAkB,GAAG,QAAQ,EAAE;IAKjG,SAAS,IAAI,MAAM;IAUnB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;cAUjB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAKvD"}
@@ -0,0 +1,2 @@
1
+ export * from './SimpleChainStakeViewer.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/simple/chainStake/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { AbstractCreatable, CreatableParams } from '@xylabs/sdk-js';
2
+ import { Position } from '../../model/index.ts';
3
+ import { StakeEvent, StakeEventFilter, StakeEventName, StakeEventsViewer } from '../../viewers/index.ts';
4
+ export interface SimpleChainStakeEventsParams extends CreatableParams {
5
+ positions: Position[];
6
+ }
7
+ export declare class SimpleChainStakeEventsViewer extends AbstractCreatable<SimpleChainStakeEventsParams> implements StakeEventsViewer {
8
+ protected get positions(): Position[];
9
+ positionCount(range: [number, number | 'latest']): number;
10
+ stakeEvents<TName extends StakeEventName>(range: [number, number | 'latest'], { name }?: StakeEventFilter<TName>): StakeEvent<TName>[];
11
+ protected startHandler(): Promise<void>;
12
+ private eventsFromPositions;
13
+ private positionsFromRange;
14
+ }
15
+ //# sourceMappingURL=SimpleChainStakeEventsViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleChainStakeEventsViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/chainStakeEvents/SimpleChainStakeEventsViewer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACN,eAAe,EAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EACL,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAChE,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,4BAA6B,SAAQ,eAAe;IACnE,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB;AAED,qBACa,4BAA6B,SAAQ,iBAAiB,CAAC,4BAA4B,CAAE,YAAW,iBAAiB;IAC5H,SAAS,KAAK,SAAS,eAEtB;IAED,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM;IAIzD,WAAW,CAAC,KAAK,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,GAAE,gBAAgB,CAAC,KAAK,CAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE;cASjH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAItD,OAAO,CAAC,mBAAmB;IAyC3B,OAAO,CAAC,kBAAkB;CAQ3B"}
@@ -0,0 +1,2 @@
1
+ export * from './SimpleChainStakeEventsViewer.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/simple/chainStakeEvents/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA"}
@@ -1,7 +1,7 @@
1
- import type { XyoClient, XyoGateway, XyoPermissions } from '../../provider/index.ts';
1
+ import type { XyoClient, XyoGatewayRunner, XyoPermissions } from '../../provider/index.ts';
2
2
  export declare class SimpleXyoClient implements XyoClient {
3
- gateways: Readonly<Record<string, XyoGateway>>;
3
+ gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>;
4
4
  permissions: XyoPermissions;
5
- constructor(gateways: Readonly<Record<string, XyoGateway>>, permissions: XyoPermissions);
5
+ constructor(gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>, permissions: XyoPermissions);
6
6
  }
7
7
  //# sourceMappingURL=SimpleXyoClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleXyoClient.d.ts","sourceRoot":"","sources":["../../../../src/simple/client/SimpleXyoClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAAE,UAAU,EAAE,cAAc,EACtC,MAAM,yBAAyB,CAAA;AAEhC,qBAAa,eAAgB,YAAW,SAAS;IAC/C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IAC9C,WAAW,EAAE,cAAc,CAAA;gBAEf,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc;CAIxF"}
1
+ {"version":3,"file":"SimpleXyoClient.d.ts","sourceRoot":"","sources":["../../../../src/simple/client/SimpleXyoClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAC5C,MAAM,yBAAyB,CAAA;AAEhC,qBAAa,eAAgB,YAAW,SAAS;IAC/C,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC7D,WAAW,EAAE,cAAc,CAAA;gBAEf,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc;CAIvG"}
@@ -1,4 +1,5 @@
1
1
  export * from './accountBalance/index.ts';
2
+ export * from './chainStake/index.ts';
2
3
  export * from './client/index.ts';
3
4
  export * from './datalake/index.ts';
4
5
  export * from './gateway/index.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/simple/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/simple/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA"}
@@ -2,8 +2,10 @@ import type { Address, Promisable } from '@xylabs/sdk-js';
2
2
  import type { Position } from '../model/index.ts';
3
3
  import type { StakeEventsViewer } from './StakeEvents.ts';
4
4
  export interface StakeViewerProperties {
5
+ chainId: Address;
5
6
  minWithdrawalBlocks: number;
6
7
  rewardsContract: Address;
8
+ stakeEvents: StakeEventsViewer;
7
9
  stakingTokenAddress: Address;
8
10
  }
9
11
  export interface StakeViewerMethods {
@@ -22,7 +24,6 @@ export interface StakeViewer extends StakeViewerMethods, StakeViewerProperties {
22
24
  withdrawnByStaker(staker: string, time?: number): Promisable<bigint>;
23
25
  }
24
26
  export interface StakeRunner extends StakeViewer {
25
- events: StakeEventsViewer;
26
27
  addStake(staked: string, amount: bigint): Promise<boolean>;
27
28
  removeStake(slot: bigint): Promise<boolean>;
28
29
  withdrawStake(slot: bigint): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"Stake.d.ts","sourceRoot":"","sources":["../../../src/viewers/Stake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAClE,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;IACvD,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;CACxD;AAED,MAAM,WAAW,WAAY,SAAQ,kBAAkB,EAAE,qBAAqB;IAC5E,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACzE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1C,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;CACrE;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,MAAM,EAAE,iBAAiB,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9C"}
1
+ {"version":3,"file":"Stake.d.ts","sourceRoot":"","sources":["../../../src/viewers/Stake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAClE,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;IACvD,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;CACxD;AAED,MAAM,WAAW,WAAY,SAAQ,kBAAkB,EAAE,qBAAqB;IAC5E,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACzE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1C,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;CACrE;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9C"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-protocol-sdk",
4
- "version": "1.16.19",
4
+ "version": "1.16.21",
5
5
  "description": "XYO Layer One SDK Protocol",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -41,15 +41,16 @@
41
41
  "dependencies": {
42
42
  "@xylabs/sdk-js": "~5.0.37",
43
43
  "@xylabs/telemetry": "~5.0.37",
44
- "@xyo-network/account-model": "~5.1.23",
45
- "@xyo-network/archivist-memory": "~5.1.23",
46
- "@xyo-network/archivist-model": "~5.1.23",
47
- "@xyo-network/boundwitness-builder": "~5.1.23",
48
- "@xyo-network/boundwitness-model": "~5.1.23",
49
- "@xyo-network/payload-builder": "~5.1.23",
50
- "@xyo-network/payload-model": "~5.1.23",
51
- "@xyo-network/wallet": "~5.1.23",
52
- "@xyo-network/wallet-model": "~5.1.23",
44
+ "@xyo-network/account": "~5.1.24",
45
+ "@xyo-network/account-model": "~5.1.24",
46
+ "@xyo-network/archivist-memory": "~5.1.24",
47
+ "@xyo-network/archivist-model": "~5.1.24",
48
+ "@xyo-network/boundwitness-builder": "~5.1.24",
49
+ "@xyo-network/boundwitness-model": "~5.1.24",
50
+ "@xyo-network/payload-builder": "~5.1.24",
51
+ "@xyo-network/payload-model": "~5.1.24",
52
+ "@xyo-network/wallet": "~5.1.24",
53
+ "@xyo-network/wallet-model": "~5.1.24",
53
54
  "@xyo-network/xl1-protocol": "~1.13.11",
54
55
  "async-mutex": "~0.5.0",
55
56
  "ethers": "~6.15.0",
@@ -60,8 +61,8 @@
60
61
  "@types/node": "~24.10.1",
61
62
  "@xylabs/ts-scripts-yarn3": "~7.2.8",
62
63
  "@xylabs/tsconfig": "~7.2.8",
63
- "@xyo-network/account": "~5.1.23",
64
- "@xyo-network/boundwitness-validator": "~5.1.23",
64
+ "@xyo-network/account": "~5.1.24",
65
+ "@xyo-network/boundwitness-validator": "~5.1.24",
65
66
  "axios": "^1.13.2",
66
67
  "eslint": "^9.39.1",
67
68
  "typescript": "~5.9.3",
@@ -1,6 +1,4 @@
1
- import type {
2
- StakeEventsViewer, StakeRunner, StakeViewer,
3
- } from '../../viewers/index.ts'
1
+ import type { StakeRunner, StakeViewer } from '../../viewers/index.ts'
4
2
  import type { ChainIdentity } from '../ChainIdentity.ts'
5
3
 
6
4
  export interface ChainStakeContextWrite extends ChainIdentity {
@@ -8,7 +6,6 @@ export interface ChainStakeContextWrite extends ChainIdentity {
8
6
  }
9
7
 
10
8
  export interface ChainStakeContextRead extends ChainIdentity {
11
- events: StakeEventsViewer
12
9
  stake: StakeViewer
13
10
  }
14
11
 
@@ -2,6 +2,7 @@ import type { GatewayName } from '@xyo-network/xl1-protocol'
2
2
 
3
3
  import type { XyoPermissions } from './permissions/index.ts'
4
4
  import type { XyoGateway } from './XyoGateway.ts'
5
+ import type { XyoGatewayRunner } from './XyoGatewayRunner.ts'
5
6
 
6
7
  export interface XyoGatewayConfig {
7
8
  name: GatewayName
@@ -13,7 +14,7 @@ export interface XyoRpcGatewayConfig extends XyoGatewayConfig {
13
14
  }
14
15
 
15
16
  export interface XyoClient {
16
- gateways: Readonly<Partial<Record<GatewayName, XyoGateway>>>
17
+ gateways: Readonly<Partial<Record<GatewayName, XyoGatewayRunner>>>
17
18
  permissions: XyoPermissions
18
19
 
19
20
  addGateway?(providerOrConfig: XyoGatewayConfig | XyoRpcGatewayConfig | XyoGateway): Promise<XyoGateway>
@@ -0,0 +1,147 @@
1
+ import {
2
+ type Address, asAddress, toAddress,
3
+ } from '@xylabs/sdk-js'
4
+ import {
5
+ AbstractCreatable, assertEx,
6
+ creatable, CreatableParams,
7
+ } from '@xylabs/sdk-js'
8
+ import { Account } from '@xyo-network/account'
9
+
10
+ import { PayloadMap, Position } from '../../model/index.ts'
11
+ import { StakeEventsViewer, StakeViewer } from '../../viewers/index.ts'
12
+ import { SimpleChainStakeEventsViewer } from '../chainStakeEvents/index.ts'
13
+
14
+ export interface SimpleChainStakeParams extends CreatableParams {
15
+ chainId?: Address
16
+ chainMap: PayloadMap
17
+ minWithdrawalBlocks?: number
18
+ positions: Position[]
19
+ }
20
+
21
+ @creatable()
22
+ export class SimpleChainStakeViewer extends AbstractCreatable<SimpleChainStakeParams> implements StakeViewer {
23
+ private _chainId: Address | undefined
24
+ private _chainStakeEventsViewer: StakeEventsViewer | undefined
25
+
26
+ get chainId(): Address {
27
+ return assertEx(this._chainId, () => 'Chain ID not set')
28
+ }
29
+
30
+ get chainMap() {
31
+ return this.params.chainMap
32
+ }
33
+
34
+ get minWithdrawalBlocks(): number {
35
+ return this.params.minWithdrawalBlocks ?? 10
36
+ }
37
+
38
+ get rewardsContract(): Address {
39
+ return toAddress('0x000000000000000000000000000000')
40
+ }
41
+
42
+ get stakeEvents() {
43
+ return assertEx(this._chainStakeEventsViewer, () => 'Stake events viewer not set')
44
+ }
45
+
46
+ get stakingTokenAddress(): Address {
47
+ return toAddress('0x000000000000000000000000000011')
48
+ }
49
+
50
+ protected get positions() {
51
+ return this.params.positions
52
+ }
53
+
54
+ active(): bigint {
55
+ let active = 0n
56
+ for (const position of this.positions) {
57
+ if (position.removeBlock === 0) {
58
+ active += position.amount
59
+ }
60
+ }
61
+ return active
62
+ }
63
+
64
+ activeByAddressStaked(staked: Address): bigint {
65
+ let active = 0n
66
+ for (const position of this.positions) {
67
+ if (position.removeBlock === 0 && asAddress(position.staked) === asAddress(staked)) {
68
+ active += position.amount
69
+ }
70
+ }
71
+ return active
72
+ }
73
+
74
+ activeByStaker(staker: Address): bigint {
75
+ let active = 0n
76
+ for (const position of this.positions) {
77
+ if (position.removeBlock === 0 && asAddress(position.staker) === asAddress(staker)) {
78
+ active += position.amount
79
+ }
80
+ }
81
+ return active
82
+ }
83
+
84
+ pending(): bigint {
85
+ let pending = 0n
86
+ for (const position of this.positions) {
87
+ if (position.removeBlock !== 0 && position.withdrawBlock === 0) {
88
+ pending += position.amount
89
+ }
90
+ }
91
+ return pending
92
+ }
93
+
94
+ pendingByStaker(staker: Address): bigint {
95
+ let pending = 0n
96
+ for (const position of this.positions) {
97
+ if (position.removeBlock !== 0 && position.withdrawBlock === 0 && asAddress(position.staker) === asAddress(staker)) {
98
+ pending += position.amount
99
+ }
100
+ }
101
+ return pending
102
+ }
103
+
104
+ stakeById(id: number): Position {
105
+ return assertEx(this.positions[id], () => new Error(`Stake with id ${id} not found`))
106
+ }
107
+
108
+ stakeByStaker(staker: Address, slot: number): Position {
109
+ return this.positions.filter(s => asAddress(s.staker) === asAddress(staker))[slot]
110
+ }
111
+
112
+ stakesByStaked(staked: Address, range: [number, number | undefined] = [0, undefined]): Position[] {
113
+ const endBlock = (range[1] ?? Number.MAX_SAFE_INTEGER)
114
+ return this.positions.filter(s => asAddress(s.staked) === asAddress(staked) && s.addBlock <= endBlock && s.removeBlock <= endBlock)
115
+ }
116
+
117
+ stakesByStaker(staker: Address, range: [number, number | undefined] = [0, undefined]): Position[] {
118
+ const endBlock = (range[1] ?? Number.MAX_SAFE_INTEGER)
119
+ return this.positions.filter(s => asAddress(s.staker) === asAddress(staker) && s.addBlock <= endBlock && s.removeBlock <= endBlock)
120
+ }
121
+
122
+ withdrawn(): bigint {
123
+ let withdrawn = 0n
124
+ for (const position of this.positions) {
125
+ if (position.withdrawBlock !== 0) {
126
+ withdrawn += position.amount
127
+ }
128
+ }
129
+ return withdrawn
130
+ }
131
+
132
+ withdrawnByStaker(staker: Address): bigint {
133
+ let withdrawn = 0n
134
+ for (const position of this.positions) {
135
+ if (position.withdrawBlock !== 0 && asAddress(position.staker) === asAddress(staker)) {
136
+ withdrawn += position.amount
137
+ }
138
+ }
139
+ return withdrawn
140
+ }
141
+
142
+ protected override async startHandler(): Promise<void> {
143
+ await super.startHandler()
144
+ this._chainId = this.params.chainId ?? (await Account.random()).address
145
+ this._chainStakeEventsViewer = await SimpleChainStakeEventsViewer.create({ positions: this.positions })
146
+ }
147
+ }
@@ -0,0 +1 @@
1
+ export * from './SimpleChainStakeViewer.ts'
@@ -0,0 +1,87 @@
1
+ import {
2
+ AbstractCreatable,
3
+ creatable, CreatableParams, isDefined,
4
+ } from '@xylabs/sdk-js'
5
+
6
+ import { Position } from '../../model/index.ts'
7
+ import {
8
+ StakeEvent, StakeEventFilter, StakeEventName, StakeEventsViewer,
9
+ } from '../../viewers/index.ts'
10
+
11
+ export interface SimpleChainStakeEventsParams extends CreatableParams {
12
+ positions: Position[]
13
+ }
14
+
15
+ @creatable()
16
+ export class SimpleChainStakeEventsViewer extends AbstractCreatable<SimpleChainStakeEventsParams> implements StakeEventsViewer {
17
+ protected get positions() {
18
+ return this.params.positions
19
+ }
20
+
21
+ positionCount(range: [number, number | 'latest']): number {
22
+ return this.positionsFromRange(range).length
23
+ }
24
+
25
+ stakeEvents<TName extends StakeEventName>(range: [number, number | 'latest'], { name }: StakeEventFilter<TName> = {}): StakeEvent<TName>[] {
26
+ const positions = this.positionsFromRange(range)
27
+ const events = this.eventsFromPositions(positions)
28
+ if (isDefined(name)) {
29
+ return events.filter((event): event is StakeEvent<TName> => event.name === name)
30
+ }
31
+ return events as StakeEvent<TName>[]
32
+ }
33
+
34
+ protected override async startHandler(): Promise<void> {
35
+ await super.startHandler()
36
+ }
37
+
38
+ private eventsFromPositions(positions: Position[]): StakeEvent<StakeEventName>[] {
39
+ const events = positions.map((position) => {
40
+ const events: StakeEvent<StakeEventName>[] = [{
41
+ name: 'StakeAdded',
42
+ time: position.addBlock,
43
+ args: {
44
+ staker: position.staker,
45
+ staked: position.staked,
46
+ amount: position.amount,
47
+ id: position.id,
48
+ },
49
+ }]
50
+ if (position.removeBlock !== 0) {
51
+ events.push({
52
+ name: 'StakeRemoved',
53
+ time: position.removeBlock,
54
+ args: {
55
+ staker: position.staker,
56
+ staked: position.staked,
57
+ amount: position.amount,
58
+ id: position.id,
59
+ },
60
+ })
61
+ }
62
+ if (position.withdrawBlock !== 0) {
63
+ events.push({
64
+ name: 'StakeWithdrawn',
65
+ time: position.withdrawBlock,
66
+ args: {
67
+ staker: position.staker,
68
+ staked: position.staked,
69
+ amount: position.amount,
70
+ id: position.id,
71
+ },
72
+ })
73
+ }
74
+ return events
75
+ })
76
+ return events.flat()
77
+ }
78
+
79
+ private positionsFromRange(range: [number, number | 'latest']): Position[] {
80
+ const startBlock = range[0]
81
+ const endBlock = range[1] === 'latest' ? Number.MAX_SAFE_INTEGER : range[1]
82
+ const filteredPositions = this.positions.filter((position) => {
83
+ return position.addBlock <= endBlock && (position.removeBlock === 0 || position.removeBlock >= startBlock)
84
+ })
85
+ return filteredPositions
86
+ }
87
+ }
@@ -0,0 +1 @@
1
+ export * from './SimpleChainStakeEventsViewer.ts'
@@ -1,12 +1,12 @@
1
1
  import type {
2
- XyoClient, XyoGateway, XyoPermissions,
2
+ XyoClient, XyoGatewayRunner, XyoPermissions,
3
3
  } from '../../provider/index.ts'
4
4
 
5
5
  export class SimpleXyoClient implements XyoClient {
6
- gateways: Readonly<Record<string, XyoGateway>>
6
+ gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>
7
7
  permissions: XyoPermissions
8
8
 
9
- constructor(gateways: Readonly<Record<string, XyoGateway>>, permissions: XyoPermissions) {
9
+ constructor(gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>, permissions: XyoPermissions) {
10
10
  this.gateways = gateways
11
11
  this.permissions = permissions
12
12
  }
@@ -1,4 +1,5 @@
1
1
  export * from './accountBalance/index.ts'
2
+ export * from './chainStake/index.ts'
2
3
  export * from './client/index.ts'
3
4
  export * from './datalake/index.ts'
4
5
  export * from './gateway/index.ts'
@@ -4,8 +4,10 @@ import type { Position } from '../model/index.ts'
4
4
  import type { StakeEventsViewer } from './StakeEvents.ts'
5
5
 
6
6
  export interface StakeViewerProperties {
7
+ chainId: Address
7
8
  minWithdrawalBlocks: number
8
9
  rewardsContract: Address
10
+ stakeEvents: StakeEventsViewer
9
11
  stakingTokenAddress: Address
10
12
  }
11
13
 
@@ -27,7 +29,6 @@ export interface StakeViewer extends StakeViewerMethods, StakeViewerProperties {
27
29
  }
28
30
 
29
31
  export interface StakeRunner extends StakeViewer {
30
- events: StakeEventsViewer
31
32
  addStake(staked: string, amount: bigint): Promise<boolean>
32
33
  removeStake(slot: bigint): Promise<boolean>
33
34
  withdrawStake(slot: bigint): Promise<boolean>