@xyo-network/xl1-protocol-sdk 1.16.21 → 1.16.23
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/ChainServiceCollectionV2.d.ts +3 -3
- package/dist/neutral/ChainServiceCollectionV2.d.ts.map +1 -1
- package/dist/neutral/block/primitives/index.d.ts +0 -1
- package/dist/neutral/block/primitives/index.d.ts.map +1 -1
- package/dist/neutral/config/Chain.d.ts +1 -0
- package/dist/neutral/config/Chain.d.ts.map +1 -1
- package/dist/neutral/config/Config.d.ts +2 -0
- package/dist/neutral/config/Config.d.ts.map +1 -1
- package/dist/neutral/config/Producer.d.ts +1 -0
- package/dist/neutral/config/Producer.d.ts.map +1 -1
- package/dist/neutral/index.d.ts +2 -0
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +794 -240
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/model/summary.d.ts +5 -0
- package/dist/neutral/model/summary.d.ts.map +1 -1
- package/dist/neutral/payloads/index.d.ts +1 -0
- package/dist/neutral/payloads/index.d.ts.map +1 -1
- package/dist/neutral/payloads/netSchemasForPayloads.d.ts +4 -0
- package/dist/neutral/payloads/netSchemasForPayloads.d.ts.map +1 -0
- package/dist/neutral/payloads/summary/SchemasStepSummary.d.ts +18 -0
- package/dist/neutral/payloads/summary/SchemasStepSummary.d.ts.map +1 -0
- package/dist/neutral/payloads/summary/index.d.ts +1 -0
- package/dist/neutral/payloads/summary/index.d.ts.map +1 -1
- package/dist/neutral/primitives/summary/index.d.ts +2 -1
- package/dist/neutral/primitives/summary/index.d.ts.map +1 -1
- package/dist/neutral/primitives/summary/schemas/index.d.ts +3 -0
- package/dist/neutral/primitives/summary/schemas/index.d.ts.map +1 -0
- package/dist/neutral/primitives/summary/schemas/schemasStepSummaryFromRange.d.ts +6 -0
- package/dist/neutral/primitives/summary/schemas/schemasStepSummaryFromRange.d.ts.map +1 -0
- package/dist/neutral/primitives/summary/schemas/schemasSummary.d.ts +4 -0
- package/dist/neutral/primitives/summary/schemas/schemasSummary.d.ts.map +1 -0
- package/dist/neutral/primitives/summary/transfers/transfersStepSummaryFromRange.d.ts.map +1 -1
- package/dist/neutral/primitives/summary/transfers/transfersSummary.d.ts +3 -2
- package/dist/neutral/primitives/summary/transfers/transfersSummary.d.ts.map +1 -1
- package/dist/neutral/primitives/timeBudget.d.ts +1 -1
- package/dist/neutral/primitives/timeBudget.d.ts.map +1 -1
- package/dist/neutral/services/SchemasService.d.ts +9 -0
- package/dist/neutral/services/SchemasService.d.ts.map +1 -0
- package/dist/neutral/services/StakeIntentService/ChainIndexingServiceStateSchema.d.ts +2 -2
- package/dist/neutral/services/StakeIntentService/ChainIndexingServiceStateSchema.d.ts.map +1 -1
- package/dist/neutral/services/index.d.ts +1 -1
- package/dist/neutral/services/index.d.ts.map +1 -1
- package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +2 -2
- package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts.map +1 -1
- package/dist/neutral/utils/index.d.ts +2 -0
- package/dist/neutral/utils/index.d.ts.map +1 -0
- package/dist/neutral/utils/isZodError.d.ts +4 -0
- package/dist/neutral/utils/isZodError.d.ts.map +1 -0
- package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts +2 -2
- package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -1
- package/dist/neutral/viewers/AccountBalance.d.ts +60 -12
- package/dist/neutral/viewers/AccountBalance.d.ts.map +1 -1
- package/dist/neutral/zod/ArrayBuffer.d.ts +4 -0
- package/dist/neutral/zod/ArrayBuffer.d.ts.map +1 -0
- package/dist/neutral/zod/BlockBoundWitness.d.ts +44 -0
- package/dist/neutral/zod/BlockBoundWitness.d.ts.map +1 -0
- package/dist/neutral/zod/BoundWitness.d.ts +123 -0
- package/dist/neutral/zod/BoundWitness.d.ts.map +1 -0
- package/dist/neutral/zod/Chain.d.ts +4 -0
- package/dist/neutral/zod/Chain.d.ts.map +1 -0
- package/dist/neutral/zod/HydratedBlock.d.ts +133 -0
- package/dist/neutral/zod/HydratedBlock.d.ts.map +1 -0
- package/dist/neutral/zod/HydratedTransaction.d.ts +210 -0
- package/dist/neutral/zod/HydratedTransaction.d.ts.map +1 -0
- package/dist/neutral/zod/Permission.d.ts +53 -0
- package/dist/neutral/zod/Permission.d.ts.map +1 -0
- package/dist/neutral/zod/RewardsRangeOptions.d.ts +11 -0
- package/dist/neutral/zod/RewardsRangeOptions.d.ts.map +1 -0
- package/dist/neutral/zod/Sequence.d.ts +9 -0
- package/dist/neutral/zod/Sequence.d.ts.map +1 -0
- package/dist/neutral/zod/Stake.d.ts +62 -0
- package/dist/neutral/zod/Stake.d.ts.map +1 -0
- package/dist/neutral/zod/TimeDomain.d.ts +3 -0
- package/dist/neutral/zod/TimeDomain.d.ts.map +1 -0
- package/dist/neutral/zod/TransactionBoundWitness.d.ts +75 -0
- package/dist/neutral/zod/TransactionBoundWitness.d.ts.map +1 -0
- package/dist/neutral/zod/TransactionFees.d.ts +53 -0
- package/dist/neutral/zod/TransactionFees.d.ts.map +1 -0
- package/dist/neutral/zod/TransferPair.d.ts +3 -0
- package/dist/neutral/zod/TransferPair.d.ts.map +1 -0
- package/dist/neutral/zod/index.d.ts +15 -0
- package/dist/neutral/zod/index.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/ChainServiceCollectionV2.ts +3 -3
- package/src/block/primitives/index.ts +0 -1
- package/src/config/Chain.ts +8 -0
- package/src/config/Producer.ts +6 -0
- package/src/index.ts +2 -0
- package/src/model/summary.ts +5 -0
- package/src/payloads/index.ts +1 -0
- package/src/payloads/netSchemasForPayloads.ts +22 -0
- package/src/payloads/summary/SchemasStepSummary.ts +26 -0
- package/src/payloads/summary/index.ts +1 -0
- package/src/primitives/summary/balances/balancesSummary.ts +1 -1
- package/src/primitives/summary/index.ts +2 -1
- package/src/primitives/summary/schemas/index.ts +2 -0
- package/src/primitives/summary/schemas/schemasStepSummaryFromRange.ts +83 -0
- package/src/primitives/summary/schemas/schemasSummary.ts +33 -0
- package/src/primitives/summary/transfers/transfersStepSummaryFromRange.ts +8 -6
- package/src/primitives/summary/transfers/transfersSummary.ts +11 -7
- package/src/primitives/timeBudget.ts +21 -2
- package/src/services/SchemasService.ts +9 -0
- package/src/services/index.ts +1 -1
- package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +5 -5
- package/src/simple/chainStake/SimpleChainStakeViewer.ts +1 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/isZodError.ts +9 -0
- package/src/validation/block/HydratedBlockStateValidationFunction.ts +2 -2
- package/src/viewers/AccountBalance.ts +17 -15
- package/src/zod/ArrayBuffer.ts +42 -0
- package/src/zod/BlockBoundWitness.ts +36 -0
- package/src/zod/BoundWitness.ts +56 -0
- package/src/zod/Chain.ts +5 -0
- package/src/zod/HydratedBlock.ts +32 -0
- package/src/zod/HydratedTransaction.ts +37 -0
- package/src/zod/Permission.ts +23 -0
- package/src/zod/RewardsRangeOptions.ts +10 -0
- package/src/zod/Sequence.ts +15 -0
- package/src/zod/Stake.ts +43 -0
- package/src/zod/TimeDomain.ts +7 -0
- package/src/zod/TransactionBoundWitness.ts +42 -0
- package/src/zod/TransactionFees.ts +45 -0
- package/src/zod/TransferPair.ts +6 -0
- package/src/zod/index.ts +14 -0
- package/dist/neutral/block/primitives/transfers/index.d.ts +0 -3
- package/dist/neutral/block/primitives/transfers/index.d.ts.map +0 -1
- package/dist/neutral/block/primitives/transfers/transfersStepSummaryFromRange.d.ts +0 -6
- package/dist/neutral/block/primitives/transfers/transfersStepSummaryFromRange.d.ts.map +0 -1
- package/dist/neutral/block/primitives/transfers/transfersSummary.d.ts +0 -5
- package/dist/neutral/block/primitives/transfers/transfersSummary.d.ts.map +0 -1
- package/dist/neutral/services/AccountBalanceService.d.ts +0 -4
- package/dist/neutral/services/AccountBalanceService.d.ts.map +0 -1
- package/src/block/primitives/transfers/index.ts +0 -2
- package/src/block/primitives/transfers/transfersStepSummaryFromRange.ts +0 -98
- package/src/block/primitives/transfers/transfersSummary.ts +0 -44
- package/src/services/AccountBalanceService.ts +0 -4
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
export declare const AttoZod: z.ZodBigInt;
|
|
3
|
+
export declare const JsonToAttoZod: z.ZodPipe<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>, z.ZodTransform<bigint, import("@xylabs/sdk-js").Hex>>, z.ZodTransform<import("@xyo-network/xl1-protocol").AttoXL1, bigint>>;
|
|
4
|
+
export declare const AttoToJsonZod: z.ZodPipe<z.ZodBigInt, z.ZodTransform<import("@xylabs/sdk-js").Hex, bigint>>;
|
|
5
|
+
export declare const TransactionFeesHexZod: z.ZodObject<{
|
|
6
|
+
base: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>;
|
|
7
|
+
gasLimit: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>;
|
|
8
|
+
gasPrice: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>;
|
|
9
|
+
priority: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type TransactionFeesHexZodType = z.infer<typeof TransactionFeesHexZod>;
|
|
12
|
+
export declare const TransactionFeesBigIntZod: z.ZodObject<{
|
|
13
|
+
base: z.ZodBigInt;
|
|
14
|
+
gasLimit: z.ZodBigInt;
|
|
15
|
+
gasPrice: z.ZodBigInt;
|
|
16
|
+
priority: z.ZodBigInt;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
export type TransactionFeesBigIntZodType = z.infer<typeof TransactionFeesBigIntZod>;
|
|
19
|
+
export declare const TransactionFeesJsonToBigIntZod: z.ZodPipe<z.ZodObject<{
|
|
20
|
+
base: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>;
|
|
21
|
+
gasLimit: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>;
|
|
22
|
+
gasPrice: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>;
|
|
23
|
+
priority: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hex, string>>;
|
|
24
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
25
|
+
base: bigint;
|
|
26
|
+
gasLimit: bigint;
|
|
27
|
+
gasPrice: bigint;
|
|
28
|
+
priority: bigint;
|
|
29
|
+
}, {
|
|
30
|
+
base: import("@xylabs/sdk-js").Hex;
|
|
31
|
+
gasLimit: import("@xylabs/sdk-js").Hex;
|
|
32
|
+
gasPrice: import("@xylabs/sdk-js").Hex;
|
|
33
|
+
priority: import("@xylabs/sdk-js").Hex;
|
|
34
|
+
}>>;
|
|
35
|
+
export declare const TransactionFeesBigIntToJsonZod: z.ZodPipe<z.ZodObject<{
|
|
36
|
+
base: z.ZodBigInt;
|
|
37
|
+
gasLimit: z.ZodBigInt;
|
|
38
|
+
gasPrice: z.ZodBigInt;
|
|
39
|
+
priority: z.ZodBigInt;
|
|
40
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
41
|
+
base: import("@xylabs/sdk-js").Hex;
|
|
42
|
+
gasLimit: import("@xylabs/sdk-js").Hex;
|
|
43
|
+
gasPrice: import("@xylabs/sdk-js").Hex;
|
|
44
|
+
priority: import("@xylabs/sdk-js").Hex;
|
|
45
|
+
}, {
|
|
46
|
+
base: bigint;
|
|
47
|
+
gasLimit: bigint;
|
|
48
|
+
gasPrice: bigint;
|
|
49
|
+
priority: bigint;
|
|
50
|
+
}>>;
|
|
51
|
+
export type TransactionFeesJsonToBigIntZodType = z.infer<typeof TransactionFeesJsonToBigIntZod>;
|
|
52
|
+
export type TransactionFeesBigIntToJsonZodType = z.infer<typeof TransactionFeesBigIntToJsonZod>;
|
|
53
|
+
//# sourceMappingURL=TransactionFees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionFees.d.ts","sourceRoot":"","sources":["../../../src/zod/TransactionFees.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,eAAO,MAAM,OAAO,aAAa,CAAA;AACjC,eAAO,MAAM,aAAa,+NAA+C,CAAA;AAEzE,eAAO,MAAM,aAAa,8EAAkB,CAAA;AAE5C,eAAO,MAAM,qBAAqB;;;;;iBAKhC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE7E,eAAO,MAAM,wBAAwB;;;;;iBAKnC,CAAA;AAEF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEnF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;GAKxC,CAAA;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;GAKxC,CAAA;AAEH,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAC/F,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export declare const TransferPairZod: z.ZodTuple<[z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Address, string>>, z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Address, string>>], null>;
|
|
3
|
+
//# sourceMappingURL=TransferPair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransferPair.d.ts","sourceRoot":"","sources":["../../../src/zod/TransferPair.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,eAAO,MAAM,eAAe,wLAE1B,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './ArrayBuffer.ts';
|
|
2
|
+
export * from './BlockBoundWitness.ts';
|
|
3
|
+
export * from './BoundWitness.ts';
|
|
4
|
+
export * from './Chain.ts';
|
|
5
|
+
export * from './HydratedBlock.ts';
|
|
6
|
+
export * from './HydratedTransaction.ts';
|
|
7
|
+
export * from './Permission.ts';
|
|
8
|
+
export * from './RewardsRangeOptions.ts';
|
|
9
|
+
export * from './Sequence.ts';
|
|
10
|
+
export * from './Stake.ts';
|
|
11
|
+
export * from './TimeDomain.ts';
|
|
12
|
+
export * from './TransactionBoundWitness.ts';
|
|
13
|
+
export * from './TransactionFees.ts';
|
|
14
|
+
export * from './TransferPair.ts';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/zod/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA"}
|
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.23",
|
|
5
5
|
"description": "XYO Layer One SDK Protocol",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"!**/*.test.*"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@xylabs/sdk-js": "~5.0.
|
|
43
|
-
"@xylabs/telemetry": "~5.0.
|
|
42
|
+
"@xylabs/sdk-js": "~5.0.39",
|
|
43
|
+
"@xylabs/telemetry": "~5.0.39",
|
|
44
44
|
"@xyo-network/account": "~5.1.24",
|
|
45
45
|
"@xyo-network/account-model": "~5.1.24",
|
|
46
46
|
"@xyo-network/archivist-memory": "~5.1.24",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"@xyo-network/payload-model": "~5.1.24",
|
|
52
52
|
"@xyo-network/wallet": "~5.1.24",
|
|
53
53
|
"@xyo-network/wallet-model": "~5.1.24",
|
|
54
|
-
"@xyo-network/xl1-protocol": "~1.13.
|
|
54
|
+
"@xyo-network/xl1-protocol": "~1.13.13",
|
|
55
55
|
"async-mutex": "~0.5.0",
|
|
56
56
|
"ethers": "~6.15.0",
|
|
57
57
|
"lru-cache": "^11.2.2",
|
|
@@ -2,12 +2,12 @@ import type { ArchivistInstance, WriteArchivist } from '@xyo-network/archivist-m
|
|
|
2
2
|
import type { WalletInstance } from '@xyo-network/wallet-model'
|
|
3
3
|
|
|
4
4
|
import type {
|
|
5
|
-
|
|
5
|
+
BlockProducerService, BlockRewardService,
|
|
6
6
|
ChainStaker, ChainStakeViewer, ElectionService, EventingChainBlockNumberIteratorService,
|
|
7
7
|
PendingTransactionsService,
|
|
8
8
|
StakeIntentService,
|
|
9
9
|
} from './services/index.ts'
|
|
10
|
-
import type { ChainContractViewer } from './viewers/index.ts'
|
|
10
|
+
import type { AccountBalanceViewer, ChainContractViewer } from './viewers/index.ts'
|
|
11
11
|
|
|
12
12
|
export interface ChainServiceCollectionV2 {
|
|
13
13
|
|
|
@@ -18,7 +18,7 @@ export interface ChainServiceCollectionV2 {
|
|
|
18
18
|
/**
|
|
19
19
|
* Services for working with account balances
|
|
20
20
|
*/
|
|
21
|
-
balance:
|
|
21
|
+
balance: AccountBalanceViewer
|
|
22
22
|
/**
|
|
23
23
|
* The archivist which the chain data is stored in
|
|
24
24
|
*/
|
package/src/config/Chain.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AddressZod } from '@xylabs/sdk-js'
|
|
1
2
|
import { globalRegistry } from 'zod'
|
|
2
3
|
import * as z from 'zod'
|
|
3
4
|
|
|
@@ -9,6 +10,13 @@ export const ChainConfigZod = z.object({
|
|
|
9
10
|
title: 'chain.id',
|
|
10
11
|
type: 'string',
|
|
11
12
|
}),
|
|
13
|
+
genesisRewardAddress: AddressZod.optional()
|
|
14
|
+
.register(globalRegistry, {
|
|
15
|
+
description:
|
|
16
|
+
'Address to send the initial genesis rewards to, if a new chain is being created.',
|
|
17
|
+
title: 'chain.genesisRewardAddress',
|
|
18
|
+
type: 'Address',
|
|
19
|
+
}),
|
|
12
20
|
})
|
|
13
21
|
|
|
14
22
|
export type ChainConfig = z.infer<typeof ChainConfigZod>
|
package/src/config/Producer.ts
CHANGED
|
@@ -16,6 +16,12 @@ export const ProducerConfigZod = z.object({
|
|
|
16
16
|
type: 'array',
|
|
17
17
|
})),
|
|
18
18
|
|
|
19
|
+
apiEndpoint: z.string().optional().register(globalRegistry, {
|
|
20
|
+
description: 'Endpoint of the API to use for chain data',
|
|
21
|
+
title: 'producer.apiEndpoint',
|
|
22
|
+
type: 'string',
|
|
23
|
+
}),
|
|
24
|
+
|
|
19
25
|
disableIntentRedeclaration: z.boolean().optional().register(globalRegistry, {
|
|
20
26
|
description: 'Should the producer skip redeclaring their intent to continue producing blocks',
|
|
21
27
|
title: 'producer.disableIntentRedeclaration',
|
package/src/index.ts
CHANGED
|
@@ -16,6 +16,8 @@ export * from './SignedBigInt.ts'
|
|
|
16
16
|
export * from './simple/index.ts'
|
|
17
17
|
export * from './time/index.ts'
|
|
18
18
|
export * from './transaction/index.ts'
|
|
19
|
+
export * from './utils/index.ts'
|
|
19
20
|
export * from './validation/index.ts'
|
|
20
21
|
export * from './viewers/index.ts'
|
|
21
22
|
export * from './wallet/index.ts'
|
|
23
|
+
export * from './zod/index.ts'
|
package/src/model/summary.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { Payload } from '@xyo-network/payload-model'
|
|
|
2
2
|
import type { Semaphore } from 'async-mutex'
|
|
3
3
|
|
|
4
4
|
import type { MapTypeRead, MapTypeWrite } from '../map/index.ts'
|
|
5
|
+
import type { SchemasStepSummary } from '../payloads/index.ts'
|
|
5
6
|
import type { BalancesStepSummary, TransfersStepSummary } from '../payloads/summary/index.ts'
|
|
6
7
|
import type { BaseContext, ChainContextRead } from './index.ts'
|
|
7
8
|
|
|
@@ -25,3 +26,7 @@ export interface BalanceStepSummaryContext extends ChainSummaryContext<BalancesS
|
|
|
25
26
|
export interface TransfersStepSummaryContextRead extends ChainSummaryContextRead<TransfersStepSummary> {}
|
|
26
27
|
|
|
27
28
|
export interface TransfersStepSummaryContext extends ChainSummaryContext<TransfersStepSummary> {}
|
|
29
|
+
|
|
30
|
+
export interface SchemasStepSummaryContextRead extends ChainSummaryContextRead<SchemasStepSummary> {}
|
|
31
|
+
|
|
32
|
+
export interface SchemasStepSummaryContext extends ChainSummaryContext<SchemasStepSummary> {}
|
package/src/payloads/index.ts
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type Address, type Hex, hexToBigInt, toAddress,
|
|
3
|
+
} from '@xylabs/sdk-js'
|
|
4
|
+
import { span } from '@xylabs/telemetry'
|
|
5
|
+
import type { Payload } from '@xyo-network/payload-model'
|
|
6
|
+
import { isTransfer } from '@xyo-network/xl1-protocol'
|
|
7
|
+
|
|
8
|
+
export const netSchemasForPayloads = (payloads: Payload[]) => {
|
|
9
|
+
return span('netSchemasForPayloads', () => {
|
|
10
|
+
const balances: Record<Address, bigint> = {}
|
|
11
|
+
for (const payload of payloads) {
|
|
12
|
+
if (isTransfer(payload)) {
|
|
13
|
+
const { from } = payload
|
|
14
|
+
for (let [address, amount] of Object.entries(payload.transfers) as [Address, Hex][]) {
|
|
15
|
+
balances[toAddress(address)] = (balances[toAddress(address)] ?? 0n) + hexToBigInt(amount)
|
|
16
|
+
balances[toAddress(from)] = (balances[toAddress(from)] ?? 0n) - hexToBigInt(amount)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return balances
|
|
21
|
+
})
|
|
22
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AsObjectFactory } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Schema, WithStorageMeta } from '@xyo-network/payload-model'
|
|
3
|
+
import { isPayloadOfSchemaType, isStorageMeta } from '@xyo-network/payload-model'
|
|
4
|
+
|
|
5
|
+
import type { StepSummary } from './StepSummary.ts'
|
|
6
|
+
|
|
7
|
+
export const SchemasStepSummarySchema: Schema = 'network.xyo.step.summary.schemas'
|
|
8
|
+
export type SchemasStepSummarySchema = typeof SchemasStepSummarySchema
|
|
9
|
+
|
|
10
|
+
export type SchemasStepSummary = StepSummary<{
|
|
11
|
+
schemas: Record<Schema, number>
|
|
12
|
+
}, SchemasStepSummarySchema>
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Identity function for determining if an object is an SchemasStepSummary
|
|
16
|
+
*/
|
|
17
|
+
export const isSchemasStepSummary = isPayloadOfSchemaType<SchemasStepSummary>(SchemasStepSummarySchema)
|
|
18
|
+
export const asSchemasStepSummary = AsObjectFactory.create<SchemasStepSummary>(isSchemasStepSummary)
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Identity function for determining if an object is an SchemasStepSummary with Storage Meta
|
|
22
|
+
*/
|
|
23
|
+
export const isSchemasStepSummaryWithStorageMeta = (value: unknown): value is WithStorageMeta<SchemasStepSummary> => {
|
|
24
|
+
return isSchemasStepSummary(value) && isStorageMeta(value)
|
|
25
|
+
}
|
|
26
|
+
export const asSchemasStepSummaryWithStorageMeta = AsObjectFactory.create<WithStorageMeta<SchemasStepSummary>>(isSchemasStepSummaryWithStorageMeta)
|
|
@@ -13,7 +13,7 @@ import { balancesStepSummaryFromRange } from './balancesStepSummaryFromRange.ts'
|
|
|
13
13
|
export async function balancesSummary(
|
|
14
14
|
context: BalanceStepSummaryContext,
|
|
15
15
|
): Promise<Partial<Record<Address, bigint>>> {
|
|
16
|
-
return await spanRootAsync('
|
|
16
|
+
return await spanRootAsync('balancesSummary', async () => {
|
|
17
17
|
const [headHash] = await context.head()
|
|
18
18
|
const headResult = await context.store.chainMap.get(headHash)
|
|
19
19
|
const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${headHash}`, { required: true })
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* eslint-disable max-statements */
|
|
2
|
+
import { assertEx } from '@xylabs/sdk-js'
|
|
3
|
+
import { isBoundWitnessWithStorageMeta } from '@xyo-network/boundwitness-model'
|
|
4
|
+
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
5
|
+
import type { Schema, WithStorageMeta } from '@xyo-network/payload-model'
|
|
6
|
+
import { isAnyPayload } from '@xyo-network/payload-model'
|
|
7
|
+
import type { XL1BlockRange } from '@xyo-network/xl1-protocol'
|
|
8
|
+
import { StepSizes } from '@xyo-network/xl1-protocol'
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
deepCalculateFramesFromRange, hashFromBlockNumber,
|
|
12
|
+
hydrateBlock,
|
|
13
|
+
} from '../../../block/index.ts'
|
|
14
|
+
import type { SchemasStepSummaryContext } from '../../../model/index.ts'
|
|
15
|
+
import type { SchemasStepSummary } from '../../../payloads/index.ts'
|
|
16
|
+
import { SchemasStepSummarySchema } from '../../../payloads/index.ts'
|
|
17
|
+
|
|
18
|
+
export async function schemasStepSummaryFromRange(
|
|
19
|
+
context: SchemasStepSummaryContext,
|
|
20
|
+
range: XL1BlockRange,
|
|
21
|
+
): Promise<WithStorageMeta<SchemasStepSummary>> {
|
|
22
|
+
// console.log(`balanceStepSummaryFromRange: head=${head}, range=${range[0]}-${range[1]}`)
|
|
23
|
+
const frameHeadHash = await hashFromBlockNumber(context, range[1])
|
|
24
|
+
const frameSize = range[1] - range[0] + 1
|
|
25
|
+
const [headHash] = await context.head()
|
|
26
|
+
|
|
27
|
+
let result: SchemasStepSummary | undefined = undefined
|
|
28
|
+
|
|
29
|
+
if (frameSize === 1) {
|
|
30
|
+
const hash = await hashFromBlockNumber(context, range[0])
|
|
31
|
+
const [block, payloads] = await hydrateBlock(context.store, hash)
|
|
32
|
+
const boundWitnesses = [block, ...payloads.filter(isBoundWitnessWithStorageMeta)]
|
|
33
|
+
const schemas: Record<Schema, number> = {}
|
|
34
|
+
for (const bw of boundWitnesses) {
|
|
35
|
+
schemas[bw.schema] = (schemas[bw.schema] ?? 0) + 1
|
|
36
|
+
for (const schema of bw.payload_schemas) {
|
|
37
|
+
schemas[schema] = (schemas[schema] ?? 0) + 1
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
result = {
|
|
41
|
+
schema: SchemasStepSummarySchema, hash: headHash, stepSize: -1, schemas,
|
|
42
|
+
}
|
|
43
|
+
} else {
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
+
const step = (StepSizes as any).indexOf(frameSize)
|
|
46
|
+
assertEx(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes.join(', ')}`)
|
|
47
|
+
|
|
48
|
+
const summaryResult = await context.summaryMap.get(`${frameHeadHash}|${frameSize}`)
|
|
49
|
+
if (isAnyPayload(summaryResult)) {
|
|
50
|
+
result = summaryResult as WithStorageMeta<SchemasStepSummary>
|
|
51
|
+
} else {
|
|
52
|
+
// We do not have it, so lets build it
|
|
53
|
+
await context.stepSemaphores[step].acquire()
|
|
54
|
+
try {
|
|
55
|
+
const subRanges = deepCalculateFramesFromRange(range, step - 1)
|
|
56
|
+
const promises = subRanges.map(subRange => schemasStepSummaryFromRange(
|
|
57
|
+
context,
|
|
58
|
+
subRange,
|
|
59
|
+
))
|
|
60
|
+
const subResults = await Promise.all(promises)
|
|
61
|
+
|
|
62
|
+
// add them all up
|
|
63
|
+
const schemas: Record<Schema, number> = {}
|
|
64
|
+
for (const subResult of subResults) {
|
|
65
|
+
for (const [schema, count] of Object.entries(subResult.schemas)) {
|
|
66
|
+
schemas[schema] = (schemas[schema] ?? 0) + count
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
result = {
|
|
71
|
+
schema: SchemasStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, schemas: schemas,
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
await context.summaryMap.set(`${frameHeadHash}|${frameSize}`, result)
|
|
75
|
+
} finally {
|
|
76
|
+
context.stepSemaphores[step].release()
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// console.log(`balanceStepSummaryFromRange-result: head=${head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)
|
|
81
|
+
const finalResult = await PayloadBuilder.addStorageMeta(result)
|
|
82
|
+
return finalResult
|
|
83
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { isDefined } from '@xylabs/sdk-js'
|
|
2
|
+
import { spanRootAsync } from '@xylabs/telemetry'
|
|
3
|
+
import type { Schema } from '@xyo-network/payload-model'
|
|
4
|
+
import {
|
|
5
|
+
asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,
|
|
6
|
+
} from '@xyo-network/xl1-protocol'
|
|
7
|
+
|
|
8
|
+
import { deepCalculateFramesFromRange } from '../../../block/index.ts'
|
|
9
|
+
import type { SchemasStepSummaryContext } from '../../../model/index.ts'
|
|
10
|
+
import { schemasStepSummaryFromRange } from './schemasStepSummaryFromRange.ts'
|
|
11
|
+
|
|
12
|
+
export async function schemasSummary(
|
|
13
|
+
context: SchemasStepSummaryContext,
|
|
14
|
+
): Promise<Partial<Record<Schema, number>>> {
|
|
15
|
+
return await spanRootAsync('schemasSummary', async () => {
|
|
16
|
+
const [headHash] = await context.head()
|
|
17
|
+
const headResult = await context.store.chainMap.get(headHash)
|
|
18
|
+
const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${headHash}`, { required: true })
|
|
19
|
+
const rangeStart = asXL1BlockNumber(isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0)
|
|
20
|
+
const ranges = deepCalculateFramesFromRange(asXL1BlockRange(
|
|
21
|
+
[rangeStart, headBoundWitness.block],
|
|
22
|
+
{ name: 'schemasSummary' },
|
|
23
|
+
))
|
|
24
|
+
const summaries = await Promise.all(ranges.map(range => schemasStepSummaryFromRange(context, range)))
|
|
25
|
+
const schemas: Partial<Record<Schema, number>> = {}
|
|
26
|
+
for (let summary of summaries) {
|
|
27
|
+
for (const [schema, count] of Object.entries(summary.schemas)) {
|
|
28
|
+
schemas[schema] = (schemas[schema] ?? 0) + count
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return schemas
|
|
32
|
+
})
|
|
33
|
+
}
|
|
@@ -8,8 +8,7 @@ import type { XL1BlockRange } from '@xyo-network/xl1-protocol'
|
|
|
8
8
|
import { StepSizes } from '@xyo-network/xl1-protocol'
|
|
9
9
|
|
|
10
10
|
import {
|
|
11
|
-
deepCalculateFramesFromRange,
|
|
12
|
-
hashFromBlockNumber, hydrateBlock,
|
|
11
|
+
deepCalculateFramesFromRange, hashFromBlockNumber, hydrateBlock,
|
|
13
12
|
} from '../../../block/index.ts'
|
|
14
13
|
import type { TransfersStepSummaryContext } from '../../../model/index.ts'
|
|
15
14
|
import type { TransfersStepSummary } from '../../../payloads/index.ts'
|
|
@@ -17,12 +16,13 @@ import { netTransfersForPayloads, TransfersStepSummarySchema } from '../../../pa
|
|
|
17
16
|
import {
|
|
18
17
|
parseSignedBigInt, type SignedBigInt, toSignedBigInt,
|
|
19
18
|
} from '../../../SignedBigInt.ts'
|
|
19
|
+
import { transfersSummaryKey } from './transfersSummary.ts'
|
|
20
20
|
|
|
21
21
|
export async function transfersStepSummaryFromRange(
|
|
22
22
|
context: TransfersStepSummaryContext,
|
|
23
23
|
range: XL1BlockRange,
|
|
24
24
|
): Promise<WithStorageMeta<TransfersStepSummary>> {
|
|
25
|
-
// console.log(`transfersStepSummaryFromRange: head=${head}, range=${range[0]}-${range[1]}`)
|
|
25
|
+
// console.log(`transfersStepSummaryFromRange: head=${context.head}, range=${range[0]}-${range[1]}`)
|
|
26
26
|
const frameHeadHash = await hashFromBlockNumber(context, range[1])
|
|
27
27
|
const frameSize = range[1] - range[0] + 1
|
|
28
28
|
const [headHash] = await context.head()
|
|
@@ -47,7 +47,9 @@ export async function transfersStepSummaryFromRange(
|
|
|
47
47
|
const step = (StepSizes as any).indexOf(frameSize)
|
|
48
48
|
assertEx(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes.join(', ')}`)
|
|
49
49
|
|
|
50
|
-
const
|
|
50
|
+
const key = transfersSummaryKey(frameHeadHash, frameSize)
|
|
51
|
+
|
|
52
|
+
const summaryResult = await context.summaryMap.get(key)
|
|
51
53
|
if (isAnyPayload(summaryResult)) {
|
|
52
54
|
result = summaryResult as WithStorageMeta<TransfersStepSummary>
|
|
53
55
|
} else {
|
|
@@ -84,13 +86,13 @@ export async function transfersStepSummaryFromRange(
|
|
|
84
86
|
schema: TransfersStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, transfers,
|
|
85
87
|
}
|
|
86
88
|
|
|
87
|
-
await context.summaryMap.set(
|
|
89
|
+
await context.summaryMap.set(key, result)
|
|
88
90
|
} finally {
|
|
89
91
|
context.stepSemaphores[step].release()
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
}
|
|
93
|
-
// console.log(`transfersStepSummaryFromRange-result: head=${head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)
|
|
95
|
+
// console.log(`transfersStepSummaryFromRange-result: head=${context.head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)
|
|
94
96
|
const finalResult = await PayloadBuilder.addStorageMeta(result)
|
|
95
97
|
return finalResult
|
|
96
98
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Address } from '@xylabs/sdk-js'
|
|
1
|
+
import type { Address, Hash } from '@xylabs/sdk-js'
|
|
2
2
|
import { asAddress, isDefined } from '@xylabs/sdk-js'
|
|
3
3
|
import { spanRootAsync } from '@xylabs/telemetry'
|
|
4
4
|
import {
|
|
@@ -12,18 +12,18 @@ import { transfersStepSummaryFromRange } from './transfersStepSummaryFromRange.t
|
|
|
12
12
|
|
|
13
13
|
// the summary of amount of rewards claimed from the step reward pool by addresses
|
|
14
14
|
export async function transfersSummary(
|
|
15
|
-
|
|
15
|
+
transferContext: TransfersStepSummaryContext,
|
|
16
16
|
): Promise<Partial<Record<Address, Partial<Record<Address, bigint>>>>> {
|
|
17
17
|
return await spanRootAsync('transferSummary', async () => {
|
|
18
|
-
const [headHash] = await
|
|
19
|
-
const headResult = await
|
|
20
|
-
const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${
|
|
21
|
-
const rangeStart = asXL1BlockNumber(isDefined(
|
|
18
|
+
const [headHash] = await transferContext.head()
|
|
19
|
+
const headResult = await transferContext.store.chainMap.get(headHash)
|
|
20
|
+
const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${transferContext.head}`, { required: true })
|
|
21
|
+
const rangeStart = asXL1BlockNumber(isDefined(transferContext.windowSize) ? Math.max(headBoundWitness.block - transferContext.windowSize + 1, 0) : 0)
|
|
22
22
|
const ranges = deepCalculateFramesFromRange(asXL1BlockRange(
|
|
23
23
|
[rangeStart, headBoundWitness.block],
|
|
24
24
|
{ name: 'transfersSummary' },
|
|
25
25
|
))
|
|
26
|
-
const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(
|
|
26
|
+
const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(transferContext, range)))
|
|
27
27
|
const transfers: Partial<Record<Address, Partial<Record<Address, bigint>>>> = {}
|
|
28
28
|
for (let summary of summaries) {
|
|
29
29
|
for (const [from, toMap] of Object.entries(summary.transfers)) {
|
|
@@ -38,3 +38,7 @@ export async function transfersSummary(
|
|
|
38
38
|
return transfers
|
|
39
39
|
})
|
|
40
40
|
}
|
|
41
|
+
|
|
42
|
+
export function transfersSummaryKey(frameHeadHash: Hash, frameSize: number) {
|
|
43
|
+
return `${frameHeadHash}|${frameSize}`
|
|
44
|
+
}
|
|
@@ -1,11 +1,30 @@
|
|
|
1
1
|
import { type Logger } from '@xylabs/sdk-js'
|
|
2
2
|
|
|
3
|
-
export async function timeBudget<TResult>(
|
|
3
|
+
export async function timeBudget<TResult>(
|
|
4
|
+
name: string,
|
|
5
|
+
logger: Logger | undefined,
|
|
6
|
+
func: () => Promise<TResult>,
|
|
7
|
+
budget: number,
|
|
8
|
+
status = false,
|
|
9
|
+
): Promise<TResult> {
|
|
4
10
|
const start = Date.now()
|
|
11
|
+
const timer = status
|
|
12
|
+
? setInterval(() => {
|
|
13
|
+
const duration = Date.now() - start
|
|
14
|
+
if ((budget > 0) && (duration > budget)) {
|
|
15
|
+
logger?.warn(`Function [${name}] execution is exceeding budget: ${duration}ms > ${budget}ms`)
|
|
16
|
+
}
|
|
17
|
+
}, Math.max(100, budget))
|
|
18
|
+
: undefined
|
|
19
|
+
|
|
5
20
|
const result = await func()
|
|
6
21
|
const duration = Date.now() - start
|
|
7
|
-
|
|
22
|
+
|
|
23
|
+
if (!timer && (budget > 0) && (duration > budget)) {
|
|
8
24
|
logger?.warn(`Function [${name}] execution exceeded budget: ${duration}ms > ${budget}ms`)
|
|
9
25
|
}
|
|
26
|
+
if (timer) {
|
|
27
|
+
clearInterval(timer)
|
|
28
|
+
}
|
|
10
29
|
return result
|
|
11
30
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Hash, Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Schema } from '@xyo-network/payload-model'
|
|
3
|
+
|
|
4
|
+
export interface SchemasProvider {
|
|
5
|
+
schema(head: Hash, schema: Schema): Promisable<number>
|
|
6
|
+
schemas(head: Hash, schemas: Schema[]): Promisable<Partial<Record<Schema, number>>>
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface SchemasService extends SchemasProvider {}
|
package/src/services/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './AccountBalanceService.ts'
|
|
2
1
|
export * from './AccountTransfersService.ts'
|
|
3
2
|
export * from './BlockProducerService.ts'
|
|
4
3
|
export * from './BlockRewardService.ts'
|
|
@@ -8,4 +7,5 @@ export * from './ChainIterator/index.ts'
|
|
|
8
7
|
export * from './Election.ts'
|
|
9
8
|
export * from './NetworkStakeService.ts'
|
|
10
9
|
export * from './PendingTransactionsService.ts'
|
|
10
|
+
export * from './SchemasService.ts'
|
|
11
11
|
export * from './StakeIntentService/index.ts'
|
|
@@ -14,10 +14,10 @@ import {
|
|
|
14
14
|
TransferSchema,
|
|
15
15
|
} from '@xyo-network/xl1-protocol'
|
|
16
16
|
|
|
17
|
-
import { deepCalculateFramesFromRange
|
|
17
|
+
import { deepCalculateFramesFromRange } from '../../block/index.ts'
|
|
18
18
|
import type { BalanceStepSummaryContext, TransfersStepSummaryContext } from '../../model/index.ts'
|
|
19
19
|
import type { TransfersStepSummary } from '../../payloads/index.ts'
|
|
20
|
-
import { balancesSummary } from '../../primitives/index.ts'
|
|
20
|
+
import { balancesSummary, transfersStepSummaryFromRange } from '../../primitives/index.ts'
|
|
21
21
|
import type {
|
|
22
22
|
AccountBalanceHistoryItem, AccountBalanceViewer, BlockViewer,
|
|
23
23
|
} from '../../viewers/index.ts'
|
|
@@ -34,7 +34,7 @@ export class SimpleAccountBalanceViewer implements AccountBalanceViewer {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
async accountBalance(address: Address, headOrRange?: XL1BlockRange | Hash): Promise<AttoXL1> {
|
|
37
|
-
const balances = await this.
|
|
37
|
+
const balances = await this.accountsBalances([address], headOrRange)
|
|
38
38
|
return balances[address] ?? AttoXL1(0n)
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -66,7 +66,7 @@ export class SimpleAccountBalanceViewer implements AccountBalanceViewer {
|
|
|
66
66
|
return result
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
async
|
|
69
|
+
async accountsBalances(address: Address[], _headOrRange?: XL1BlockRange | Hash): Promise<Partial<Record<Address, AttoXL1>>> {
|
|
70
70
|
return await spanRootAsync('balances', async () => {
|
|
71
71
|
const summary = await balancesSummary(
|
|
72
72
|
this.context,
|
|
@@ -80,7 +80,7 @@ export class SimpleAccountBalanceViewer implements AccountBalanceViewer {
|
|
|
80
80
|
})
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
accountsBalancesHistory(_addresses: Address[], _rangeOrHash?: XL1BlockRange | Hash): Promise<Partial<Record<Address, AccountBalanceHistoryItem[]>>> {
|
|
84
84
|
throw new Error('Method not implemented.')
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './isZodError.ts'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
2
|
import type { ChainId, HydratedBlock } from '@xyo-network/xl1-protocol'
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { AccountBalanceViewer } from '../../viewers/index.ts'
|
|
5
5
|
import type { HydratedBlockStateValidationError } from './error.ts'
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -14,5 +14,5 @@ import type { HydratedBlockStateValidationError } from './error.ts'
|
|
|
14
14
|
export type HydratedBlockStateValidationFunction = (
|
|
15
15
|
hydratedBlock: HydratedBlock,
|
|
16
16
|
chainId: ChainId,
|
|
17
|
-
services: { accountBalance:
|
|
17
|
+
services: { accountBalance: AccountBalanceViewer },
|
|
18
18
|
) => Promisable<HydratedBlockStateValidationError[]>
|