@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.
- package/dist/neutral/index.mjs +250 -29
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/model/ChainContext/ChainStakeContext.d.ts +1 -2
- package/dist/neutral/model/ChainContext/ChainStakeContext.d.ts.map +1 -1
- package/dist/neutral/provider/XyoClient.d.ts +2 -1
- package/dist/neutral/provider/XyoClient.d.ts.map +1 -1
- package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts +34 -0
- package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts.map +1 -0
- package/dist/neutral/simple/chainStake/index.d.ts +2 -0
- package/dist/neutral/simple/chainStake/index.d.ts.map +1 -0
- package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts +15 -0
- package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts.map +1 -0
- package/dist/neutral/simple/chainStakeEvents/index.d.ts +2 -0
- package/dist/neutral/simple/chainStakeEvents/index.d.ts.map +1 -0
- package/dist/neutral/simple/client/SimpleXyoClient.d.ts +3 -3
- package/dist/neutral/simple/client/SimpleXyoClient.d.ts.map +1 -1
- package/dist/neutral/simple/index.d.ts +1 -0
- package/dist/neutral/simple/index.d.ts.map +1 -1
- package/dist/neutral/viewers/Stake.d.ts +2 -1
- package/dist/neutral/viewers/Stake.d.ts.map +1 -1
- package/package.json +13 -12
- package/src/model/ChainContext/ChainStakeContext.ts +1 -4
- package/src/provider/XyoClient.ts +2 -1
- package/src/simple/chainStake/SimpleChainStakeViewer.ts +147 -0
- package/src/simple/chainStake/index.ts +1 -0
- package/src/simple/chainStakeEvents/SimpleChainStakeEventsViewer.ts +87 -0
- package/src/simple/chainStakeEvents/index.ts +1 -0
- package/src/simple/client/SimpleXyoClient.ts +3 -3
- package/src/simple/index.ts +1 -0
- package/src/viewers/Stake.ts +2 -1
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type {
|
|
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,
|
|
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,
|
|
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;
|
|
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 @@
|
|
|
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 @@
|
|
|
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,
|
|
1
|
+
import type { XyoClient, XyoGatewayRunner, XyoPermissions } from '../../provider/index.ts';
|
|
2
2
|
export declare class SimpleXyoClient implements XyoClient {
|
|
3
|
-
gateways: Readonly<Record<string,
|
|
3
|
+
gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>;
|
|
4
4
|
permissions: XyoPermissions;
|
|
5
|
-
constructor(gateways: Readonly<Record<string,
|
|
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,
|
|
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 +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,
|
|
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.
|
|
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
|
|
45
|
-
"@xyo-network/
|
|
46
|
-
"@xyo-network/archivist-
|
|
47
|
-
"@xyo-network/
|
|
48
|
-
"@xyo-network/boundwitness-
|
|
49
|
-
"@xyo-network/
|
|
50
|
-
"@xyo-network/payload-
|
|
51
|
-
"@xyo-network/
|
|
52
|
-
"@xyo-network/wallet
|
|
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.
|
|
64
|
-
"@xyo-network/boundwitness-validator": "~5.1.
|
|
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,
|
|
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,
|
|
2
|
+
XyoClient, XyoGatewayRunner, XyoPermissions,
|
|
3
3
|
} from '../../provider/index.ts'
|
|
4
4
|
|
|
5
5
|
export class SimpleXyoClient implements XyoClient {
|
|
6
|
-
gateways: Readonly<Record<string,
|
|
6
|
+
gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>
|
|
7
7
|
permissions: XyoPermissions
|
|
8
8
|
|
|
9
|
-
constructor(gateways: Readonly<Record<string,
|
|
9
|
+
constructor(gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>, permissions: XyoPermissions) {
|
|
10
10
|
this.gateways = gateways
|
|
11
11
|
this.permissions = permissions
|
|
12
12
|
}
|
package/src/simple/index.ts
CHANGED
package/src/viewers/Stake.ts
CHANGED
|
@@ -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>
|