@xyo-network/xl1-rpc 1.15.1 → 1.15.3
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/README.md +11897 -1213
- package/dist/neutral/engine/index-node.d.ts +2 -2
- package/dist/neutral/engine/index-node.d.ts.map +1 -1
- package/dist/neutral/engine/index.d.ts +2 -1
- package/dist/neutral/engine/index.d.ts.map +1 -1
- package/dist/neutral/engine/rpcEngineFromConnection.d.ts +4 -0
- package/dist/neutral/engine/rpcEngineFromConnection.d.ts.map +1 -0
- package/dist/neutral/engine/rpcMethodHandlersFromConnection.d.ts +4 -0
- package/dist/neutral/engine/rpcMethodHandlersFromConnection.d.ts.map +1 -0
- package/dist/neutral/engine/rpcMethodHandlersFromPermissions.d.ts +4 -0
- package/dist/neutral/engine/rpcMethodHandlersFromPermissions.d.ts.map +1 -0
- package/dist/neutral/engine/rpcMethodHandlersFromViewer.d.ts.map +1 -1
- package/dist/neutral/index.mjs +894 -437
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/provider/client/MemoryXyoClient.d.ts +2 -2
- package/dist/neutral/provider/client/MemoryXyoClient.d.ts.map +1 -1
- package/dist/neutral/provider/client/index.d.ts +0 -1
- package/dist/neutral/provider/client/index.d.ts.map +1 -1
- package/dist/neutral/provider/index.d.ts +1 -0
- package/dist/neutral/provider/index.d.ts.map +1 -1
- package/dist/neutral/provider/permissions/MemoryXyoPermissions.d.ts +17 -0
- package/dist/neutral/provider/permissions/MemoryXyoPermissions.d.ts.map +1 -0
- package/dist/neutral/provider/permissions/RpcXyoPermissions.d.ts +11 -0
- package/dist/neutral/provider/permissions/RpcXyoPermissions.d.ts.map +1 -0
- package/dist/neutral/provider/permissions/index.d.ts +4 -0
- package/dist/neutral/provider/permissions/index.d.ts.map +1 -0
- package/dist/neutral/provider/permissions/spec/MemoryXyoPermissions.spec.d.ts +2 -0
- package/dist/neutral/provider/permissions/spec/MemoryXyoPermissions.spec.d.ts.map +1 -0
- package/dist/neutral/provider/permissions/store/MemoryPermissions.d.ts +16 -0
- package/dist/neutral/provider/permissions/store/MemoryPermissions.d.ts.map +1 -0
- package/dist/neutral/provider/permissions/store/PermissionsStore.d.ts +12 -0
- package/dist/neutral/provider/permissions/store/PermissionsStore.d.ts.map +1 -0
- package/dist/neutral/provider/permissions/store/index.d.ts +3 -0
- package/dist/neutral/provider/permissions/store/index.d.ts.map +1 -0
- package/dist/neutral/provider/signer/JsonRpcXyoSigner.d.ts +3 -2
- package/dist/neutral/provider/signer/JsonRpcXyoSigner.d.ts.map +1 -1
- package/dist/neutral/provider/signer/MemoryXyoSigner.d.ts +2 -2
- package/dist/neutral/provider/signer/MemoryXyoSigner.d.ts.map +1 -1
- package/dist/neutral/provider/viewer/JsonRpcXyoViewer.d.ts +26 -9
- package/dist/neutral/provider/viewer/JsonRpcXyoViewer.d.ts.map +1 -1
- package/dist/neutral/transport/post-message/index.d.ts +0 -1
- package/dist/neutral/transport/post-message/index.d.ts.map +1 -1
- package/dist/neutral/types/ErrorCodes.d.ts.map +1 -1
- package/dist/neutral/types/XyoPermissions.d.ts +7 -0
- package/dist/neutral/types/XyoPermissions.d.ts.map +1 -0
- package/dist/neutral/types/index.d.ts +1 -2
- package/dist/neutral/types/index.d.ts.map +1 -1
- package/dist/neutral/types/schema/AllRpcSchemas.d.ts +914 -80
- package/dist/neutral/types/schema/AllRpcSchemas.d.ts.map +1 -1
- package/dist/neutral/types/schema/XyoPermissionsRpcSchemas.d.ts +74 -0
- package/dist/neutral/types/schema/XyoPermissionsRpcSchemas.d.ts.map +1 -0
- package/dist/neutral/types/schema/XyoProviderRpcSchemas.d.ts +4 -4
- package/dist/neutral/types/schema/XyoRunnerRpcSchemas.d.ts +4 -4
- package/dist/neutral/types/schema/XyoSignerRpcSchemas.d.ts +19 -19
- package/dist/neutral/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
- package/dist/neutral/types/schema/XyoViewerRpcSchemas.d.ts +828 -64
- package/dist/neutral/types/schema/XyoViewerRpcSchemas.d.ts.map +1 -1
- package/dist/neutral/types/schema/common/BlockBoundWitness.d.ts +4 -4
- package/dist/neutral/types/schema/common/Chain.d.ts +2 -2
- package/dist/neutral/types/schema/common/Chain.d.ts.map +1 -1
- package/dist/neutral/types/schema/common/HydratedBlock.d.ts +5 -5
- package/dist/neutral/types/schema/common/HydratedTransaction.d.ts +14 -14
- package/dist/neutral/types/schema/common/Permission.d.ts +53 -0
- package/dist/neutral/types/schema/common/Permission.d.ts.map +1 -0
- package/dist/neutral/types/schema/common/Stake.d.ts +11 -5
- package/dist/neutral/types/schema/common/Stake.d.ts.map +1 -1
- package/dist/neutral/types/schema/common/StepContext.d.ts +6 -0
- package/dist/neutral/types/schema/common/StepContext.d.ts.map +1 -0
- package/dist/neutral/types/schema/common/TransactionBoundWitness.d.ts +4 -4
- package/dist/neutral/types/schema/common/Transfer.d.ts +33 -0
- package/dist/neutral/types/schema/common/Transfer.d.ts.map +1 -0
- package/dist/neutral/types/schema/common/index.d.ts +3 -0
- package/dist/neutral/types/schema/common/index.d.ts.map +1 -1
- package/dist/neutral/types/schema/index.d.ts +1 -1
- package/dist/neutral/types/schema/index.d.ts.map +1 -1
- package/dist/node/engine/index-node.d.ts +2 -2
- package/dist/node/engine/index-node.d.ts.map +1 -1
- package/dist/node/engine/index.d.ts +2 -1
- package/dist/node/engine/index.d.ts.map +1 -1
- package/dist/node/engine/rpcEngineFromConnection.d.ts +4 -0
- package/dist/node/engine/rpcEngineFromConnection.d.ts.map +1 -0
- package/dist/node/engine/rpcMethodHandlersFromConnection.d.ts +4 -0
- package/dist/node/engine/rpcMethodHandlersFromConnection.d.ts.map +1 -0
- package/dist/node/engine/rpcMethodHandlersFromPermissions.d.ts +4 -0
- package/dist/node/engine/rpcMethodHandlersFromPermissions.d.ts.map +1 -0
- package/dist/node/engine/rpcMethodHandlersFromViewer.d.ts.map +1 -1
- package/dist/node/index-node.mjs +900 -443
- package/dist/node/index-node.mjs.map +1 -1
- package/dist/node/provider/client/MemoryXyoClient.d.ts +2 -2
- package/dist/node/provider/client/MemoryXyoClient.d.ts.map +1 -1
- package/dist/node/provider/client/index.d.ts +0 -1
- package/dist/node/provider/client/index.d.ts.map +1 -1
- package/dist/node/provider/index.d.ts +1 -0
- package/dist/node/provider/index.d.ts.map +1 -1
- package/dist/node/provider/permissions/MemoryXyoPermissions.d.ts +17 -0
- package/dist/node/provider/permissions/MemoryXyoPermissions.d.ts.map +1 -0
- package/dist/node/provider/permissions/RpcXyoPermissions.d.ts +11 -0
- package/dist/node/provider/permissions/RpcXyoPermissions.d.ts.map +1 -0
- package/dist/node/provider/permissions/index.d.ts +4 -0
- package/dist/node/provider/permissions/index.d.ts.map +1 -0
- package/dist/node/provider/permissions/spec/MemoryXyoPermissions.spec.d.ts +2 -0
- package/dist/node/provider/permissions/spec/MemoryXyoPermissions.spec.d.ts.map +1 -0
- package/dist/node/provider/permissions/store/MemoryPermissions.d.ts +16 -0
- package/dist/node/provider/permissions/store/MemoryPermissions.d.ts.map +1 -0
- package/dist/node/provider/permissions/store/PermissionsStore.d.ts +12 -0
- package/dist/node/provider/permissions/store/PermissionsStore.d.ts.map +1 -0
- package/dist/node/provider/permissions/store/index.d.ts +3 -0
- package/dist/node/provider/permissions/store/index.d.ts.map +1 -0
- package/dist/node/provider/signer/JsonRpcXyoSigner.d.ts +3 -2
- package/dist/node/provider/signer/JsonRpcXyoSigner.d.ts.map +1 -1
- package/dist/node/provider/signer/MemoryXyoSigner.d.ts +2 -2
- package/dist/node/provider/signer/MemoryXyoSigner.d.ts.map +1 -1
- package/dist/node/provider/viewer/JsonRpcXyoViewer.d.ts +26 -9
- package/dist/node/provider/viewer/JsonRpcXyoViewer.d.ts.map +1 -1
- package/dist/node/transport/post-message/index.d.ts +0 -1
- package/dist/node/transport/post-message/index.d.ts.map +1 -1
- package/dist/node/types/ErrorCodes.d.ts.map +1 -1
- package/dist/node/types/XyoPermissions.d.ts +7 -0
- package/dist/node/types/XyoPermissions.d.ts.map +1 -0
- package/dist/node/types/index.d.ts +1 -2
- package/dist/node/types/index.d.ts.map +1 -1
- package/dist/node/types/schema/AllRpcSchemas.d.ts +914 -80
- package/dist/node/types/schema/AllRpcSchemas.d.ts.map +1 -1
- package/dist/node/types/schema/XyoPermissionsRpcSchemas.d.ts +74 -0
- package/dist/node/types/schema/XyoPermissionsRpcSchemas.d.ts.map +1 -0
- package/dist/node/types/schema/XyoProviderRpcSchemas.d.ts +4 -4
- package/dist/node/types/schema/XyoRunnerRpcSchemas.d.ts +4 -4
- package/dist/node/types/schema/XyoSignerRpcSchemas.d.ts +19 -19
- package/dist/node/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
- package/dist/node/types/schema/XyoViewerRpcSchemas.d.ts +828 -64
- package/dist/node/types/schema/XyoViewerRpcSchemas.d.ts.map +1 -1
- package/dist/node/types/schema/common/BlockBoundWitness.d.ts +4 -4
- package/dist/node/types/schema/common/Chain.d.ts +2 -2
- package/dist/node/types/schema/common/Chain.d.ts.map +1 -1
- package/dist/node/types/schema/common/HydratedBlock.d.ts +5 -5
- package/dist/node/types/schema/common/HydratedTransaction.d.ts +14 -14
- package/dist/node/types/schema/common/Permission.d.ts +53 -0
- package/dist/node/types/schema/common/Permission.d.ts.map +1 -0
- package/dist/node/types/schema/common/Stake.d.ts +11 -5
- package/dist/node/types/schema/common/Stake.d.ts.map +1 -1
- package/dist/node/types/schema/common/StepContext.d.ts +6 -0
- package/dist/node/types/schema/common/StepContext.d.ts.map +1 -0
- package/dist/node/types/schema/common/TransactionBoundWitness.d.ts +4 -4
- package/dist/node/types/schema/common/Transfer.d.ts +33 -0
- package/dist/node/types/schema/common/Transfer.d.ts.map +1 -0
- package/dist/node/types/schema/common/index.d.ts +3 -0
- package/dist/node/types/schema/common/index.d.ts.map +1 -1
- package/dist/node/types/schema/index.d.ts +1 -1
- package/dist/node/types/schema/index.d.ts.map +1 -1
- package/package.json +36 -36
- package/src/engine/index-node.ts +2 -2
- package/src/engine/index.ts +2 -1
- package/src/engine/{rpcEngineFromProvider.ts → rpcEngineFromConnection.ts} +3 -3
- package/src/engine/{rpcMethodHandlersFromProvider.ts → rpcMethodHandlersFromConnection.ts} +3 -3
- package/src/engine/rpcMethodHandlersFromPermissions.ts +11 -0
- package/src/engine/rpcMethodHandlersFromViewer.ts +19 -1
- package/src/provider/client/MemoryXyoClient.ts +2 -1
- package/src/provider/client/index.ts +0 -1
- package/src/provider/client/spec/MemoryXyoClient.spec.ts +17 -31
- package/src/provider/index.ts +1 -0
- package/src/provider/permissions/MemoryXyoPermissions.ts +82 -0
- package/src/provider/permissions/RpcXyoPermissions.ts +30 -0
- package/src/provider/permissions/index.ts +3 -0
- package/src/provider/permissions/spec/MemoryXyoPermissions.spec.ts +93 -0
- package/src/provider/permissions/store/MemoryPermissions.ts +32 -0
- package/src/provider/permissions/store/PermissionsStore.ts +15 -0
- package/src/provider/permissions/store/index.ts +2 -0
- package/src/provider/signer/JsonRpcXyoSigner.ts +3 -2
- package/src/provider/signer/MemoryXyoSigner.ts +2 -2
- package/src/provider/signer/spec/RpcEngineXyoSigner.spec.ts +5 -5
- package/src/provider/viewer/JsonRpcXyoViewer.ts +105 -30
- package/src/transport/post-message/index.ts +0 -1
- package/src/types/ErrorCodes.ts +1 -0
- package/src/types/XyoPermissions.ts +13 -0
- package/src/types/index.ts +1 -2
- package/src/types/schema/AllRpcSchemas.ts +2 -0
- package/src/types/schema/XyoPermissionsRpcSchemas.ts +40 -0
- package/src/types/schema/XyoSignerRpcSchemas.ts +1 -1
- package/src/types/schema/XyoViewerRpcSchemas.ts +261 -15
- package/src/types/schema/common/Chain.ts +2 -2
- package/src/types/schema/common/Permission.ts +23 -0
- package/src/types/schema/common/Stake.ts +3 -3
- package/src/types/schema/common/StepContext.ts +6 -0
- package/src/types/schema/common/Transfer.ts +14 -0
- package/src/types/schema/common/index.ts +3 -0
- package/src/types/schema/index.ts +1 -1
- package/dist/neutral/engine/rpcEngineFromProvider.d.ts +0 -4
- package/dist/neutral/engine/rpcEngineFromProvider.d.ts.map +0 -1
- package/dist/neutral/engine/rpcMethodHandlersFromProvider.d.ts +0 -4
- package/dist/neutral/engine/rpcMethodHandlersFromProvider.d.ts.map +0 -1
- package/dist/neutral/provider/client/PermissionsStore/MemoryPermissionsStore.d.ts +0 -11
- package/dist/neutral/provider/client/PermissionsStore/MemoryPermissionsStore.d.ts.map +0 -1
- package/dist/neutral/provider/client/PermissionsStore/PermissionsStore.d.ts +0 -8
- package/dist/neutral/provider/client/PermissionsStore/PermissionsStore.d.ts.map +0 -1
- package/dist/neutral/provider/client/PermissionsStore/getPermissionsStoreFromTransport.d.ts +0 -5
- package/dist/neutral/provider/client/PermissionsStore/getPermissionsStoreFromTransport.d.ts.map +0 -1
- package/dist/neutral/provider/client/PermissionsStore/index.d.ts +0 -4
- package/dist/neutral/provider/client/PermissionsStore/index.d.ts.map +0 -1
- package/dist/neutral/provider/client/PermissionsStore/spec/MemoryPermissionsStore.spec.d.ts +0 -2
- package/dist/neutral/provider/client/PermissionsStore/spec/MemoryPermissionsStore.spec.d.ts.map +0 -1
- package/dist/neutral/transport/post-message/LegacyPostMessageRpcTransport.d.ts +0 -15
- package/dist/neutral/transport/post-message/LegacyPostMessageRpcTransport.d.ts.map +0 -1
- package/dist/neutral/types/XyoGatewayRpc.d.ts +0 -8
- package/dist/neutral/types/XyoGatewayRpc.d.ts.map +0 -1
- package/dist/neutral/types/schema/XyoGatewayRpcSchemas.d.ts +0 -437
- package/dist/neutral/types/schema/XyoGatewayRpcSchemas.d.ts.map +0 -1
- package/dist/node/engine/rpcEngineFromProvider.d.ts +0 -4
- package/dist/node/engine/rpcEngineFromProvider.d.ts.map +0 -1
- package/dist/node/engine/rpcMethodHandlersFromProvider.d.ts +0 -4
- package/dist/node/engine/rpcMethodHandlersFromProvider.d.ts.map +0 -1
- package/dist/node/provider/client/PermissionsStore/MemoryPermissionsStore.d.ts +0 -11
- package/dist/node/provider/client/PermissionsStore/MemoryPermissionsStore.d.ts.map +0 -1
- package/dist/node/provider/client/PermissionsStore/PermissionsStore.d.ts +0 -8
- package/dist/node/provider/client/PermissionsStore/PermissionsStore.d.ts.map +0 -1
- package/dist/node/provider/client/PermissionsStore/getPermissionsStoreFromTransport.d.ts +0 -5
- package/dist/node/provider/client/PermissionsStore/getPermissionsStoreFromTransport.d.ts.map +0 -1
- package/dist/node/provider/client/PermissionsStore/index.d.ts +0 -4
- package/dist/node/provider/client/PermissionsStore/index.d.ts.map +0 -1
- package/dist/node/provider/client/PermissionsStore/spec/MemoryPermissionsStore.spec.d.ts +0 -2
- package/dist/node/provider/client/PermissionsStore/spec/MemoryPermissionsStore.spec.d.ts.map +0 -1
- package/dist/node/transport/post-message/LegacyPostMessageRpcTransport.d.ts +0 -15
- package/dist/node/transport/post-message/LegacyPostMessageRpcTransport.d.ts.map +0 -1
- package/dist/node/types/XyoGatewayRpc.d.ts +0 -8
- package/dist/node/types/XyoGatewayRpc.d.ts.map +0 -1
- package/dist/node/types/schema/XyoGatewayRpcSchemas.d.ts +0 -437
- package/dist/node/types/schema/XyoGatewayRpcSchemas.d.ts.map +0 -1
- package/src/provider/client/PermissionsStore/MemoryPermissionsStore.ts +0 -33
- package/src/provider/client/PermissionsStore/PermissionsStore.ts +0 -8
- package/src/provider/client/PermissionsStore/getPermissionsStoreFromTransport.ts +0 -12
- package/src/provider/client/PermissionsStore/index.ts +0 -3
- package/src/provider/client/PermissionsStore/spec/MemoryPermissionsStore.spec.ts +0 -78
- package/src/transport/post-message/LegacyPostMessageRpcTransport.ts +0 -120
- package/src/types/XyoGatewayRpc.ts +0 -15
- package/src/types/schema/XyoGatewayRpcSchemas.ts +0 -108
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
PermissionsProvider, XyoClient, XyoGatewayProvider,
|
|
3
|
+
XyoPermissions,
|
|
3
4
|
} from '@xyo-network/xl1-protocol'
|
|
4
5
|
|
|
5
6
|
export class MemoryXyoClient implements XyoClient {
|
|
6
7
|
gateways: Readonly<Record<string, XyoGatewayProvider>>
|
|
7
8
|
permissions: PermissionsProvider
|
|
8
9
|
|
|
9
|
-
constructor(gateways: Readonly<Record<string, XyoGatewayProvider>>, permissions:
|
|
10
|
+
constructor(gateways: Readonly<Record<string, XyoGatewayProvider>>, permissions: XyoPermissions) {
|
|
10
11
|
this.gateways = gateways
|
|
11
12
|
this.permissions = permissions
|
|
12
13
|
}
|
|
@@ -1,35 +1,27 @@
|
|
|
1
|
-
import { isHash } from '@xylabs/hex'
|
|
2
1
|
import type { AccountInstance } from '@xyo-network/account-model'
|
|
3
|
-
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
4
|
-
import type { Payload } from '@xyo-network/payload-model'
|
|
5
2
|
import { HDWallet } from '@xyo-network/wallet'
|
|
6
3
|
import type {
|
|
7
|
-
|
|
8
|
-
XyoConnection,
|
|
4
|
+
GatewayName, XyoClient, XyoConnection,
|
|
9
5
|
} from '@xyo-network/xl1-protocol'
|
|
10
|
-
import { HashSchema } from '@xyo-network/xl1-protocol'
|
|
11
6
|
import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-protocol-sdk'
|
|
12
7
|
import {
|
|
13
|
-
|
|
8
|
+
beforeEach, describe, expect, it,
|
|
14
9
|
} from 'vitest'
|
|
15
10
|
|
|
16
11
|
import { HttpRpcXyoConnection } from '../../connection/index.ts'
|
|
17
12
|
import { MemoryXyoGateway } from '../../gateway/index.ts'
|
|
13
|
+
import { MemoryPermissionsStore, MemoryXyoPermissions } from '../../permissions/index.ts'
|
|
18
14
|
import { MemoryXyoSigner } from '../../signer/index.ts'
|
|
19
15
|
import { MemoryXyoClient } from '../MemoryXyoClient.ts'
|
|
20
|
-
import { MemoryPermissionsStore } from '../PermissionsStore/index.ts'
|
|
21
16
|
|
|
22
|
-
|
|
23
|
-
id: string
|
|
24
|
-
schema: 'network.xyo.test'
|
|
25
|
-
}>
|
|
26
|
-
|
|
27
|
-
describe.skip('Client', () => {
|
|
17
|
+
describe('Client', () => {
|
|
28
18
|
const endpoint = 'http://localhost:8080/rpc'
|
|
19
|
+
const invoker = 'http://localhost:3000'
|
|
29
20
|
// const dataLakeEndpoint = 'http://localhost:8080/chain/archivist'
|
|
30
21
|
let account: AccountInstance
|
|
31
22
|
let signer: MemoryXyoSigner
|
|
32
|
-
let store
|
|
23
|
+
let store
|
|
24
|
+
let permissions: MemoryXyoPermissions
|
|
33
25
|
let connection: XyoConnection
|
|
34
26
|
let gateway: MemoryXyoGateway
|
|
35
27
|
let client: XyoClient
|
|
@@ -39,27 +31,26 @@ describe.skip('Client', () => {
|
|
|
39
31
|
const wallet = await generateXyoBaseWalletFromPhrase(mnemonic)
|
|
40
32
|
account = await wallet.derivePath(ADDRESS_INDEX.XYO)
|
|
41
33
|
signer = new MemoryXyoSigner(account)
|
|
42
|
-
store = new MemoryPermissionsStore()
|
|
34
|
+
store = new MemoryPermissionsStore(invoker)
|
|
35
|
+
permissions = new MemoryXyoPermissions(store)
|
|
43
36
|
connection = new HttpRpcXyoConnection({
|
|
44
37
|
endpoint,
|
|
45
38
|
account,
|
|
46
39
|
// storage: dataLakeEndpoint,
|
|
47
40
|
})
|
|
48
41
|
gateway = new MemoryXyoGateway(signer, connection)
|
|
49
|
-
client = new MemoryXyoClient({ localhost: gateway },
|
|
42
|
+
client = new MemoryXyoClient({ localhost: gateway }, permissions)
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
describe('permissions', () => {
|
|
46
|
+
it('should be have permissions', () => {
|
|
47
|
+
const permissions = client.permissions
|
|
48
|
+
expect(permissions).toBeDefined()
|
|
49
|
+
})
|
|
50
50
|
})
|
|
51
51
|
|
|
52
52
|
describe('gateways', () => {
|
|
53
53
|
describe('connection', () => {
|
|
54
|
-
let onChainPayloads: AllowedBlockPayload[]
|
|
55
|
-
let offChainPayloads: Payload[]
|
|
56
|
-
beforeAll(async () => {
|
|
57
|
-
const id = new PayloadBuilder<TestPayload>({ schema: 'network.xyo.test' }).fields({ id: Date.now().toString() }).build()
|
|
58
|
-
const hash = await PayloadBuilder.hash(id)
|
|
59
|
-
const hashPayload: HashPayload = new PayloadBuilder<HashPayload>({ schema: HashSchema }).fields({ hash }).build()
|
|
60
|
-
onChainPayloads = [hashPayload]
|
|
61
|
-
offChainPayloads = [id]
|
|
62
|
-
})
|
|
63
54
|
it('should be defined', () => {
|
|
64
55
|
const gateway = client.gateways['localhost' as GatewayName].connection()
|
|
65
56
|
expect(gateway).toBeDefined()
|
|
@@ -68,11 +59,6 @@ describe.skip('Client', () => {
|
|
|
68
59
|
const chainId = await (await client.gateways['localhost' as GatewayName]?.connection())?.viewer?.chainId()
|
|
69
60
|
expect(chainId).toBeDefined()
|
|
70
61
|
})
|
|
71
|
-
it.only('should allow for submitting transactions', async () => {
|
|
72
|
-
const [hash, tx] = await client.gateways['localhost' as GatewayName]?.addPayloadsToChain?.(onChainPayloads, offChainPayloads) ?? []
|
|
73
|
-
expect(isHash(hash)).toBeTruthy()
|
|
74
|
-
expect(tx).toBeDefined()
|
|
75
|
-
})
|
|
76
62
|
})
|
|
77
63
|
})
|
|
78
64
|
})
|
package/src/provider/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './connection/index.ts'
|
|
|
3
3
|
export * from './datalake/index.ts'
|
|
4
4
|
export * from './gateway/index.ts'
|
|
5
5
|
export * from './network/index.ts'
|
|
6
|
+
export * from './permissions/index.ts'
|
|
6
7
|
export * from './runner/index.ts'
|
|
7
8
|
export * from './signer/index.ts'
|
|
8
9
|
export * from './viewer/index.ts'
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import type {
|
|
3
|
+
CaveatTypes, InvokerPermission, PermissionRequest, RequestedPermission,
|
|
4
|
+
XyoPermissions,
|
|
5
|
+
} from '@xyo-network/xl1-protocol'
|
|
6
|
+
|
|
7
|
+
import type { Invoker, PermissionsStore } from './store/index.ts'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* In-memory implementation of XyoPermissions for testing or ephemeral use cases.
|
|
11
|
+
* Does not persist data beyond the lifetime of the instance.
|
|
12
|
+
* Assumes all permission requests are granted and revocations always succeed.
|
|
13
|
+
*/
|
|
14
|
+
export class MemoryXyoPermissions implements XyoPermissions {
|
|
15
|
+
invoker: Invoker
|
|
16
|
+
private _store: PermissionsStore
|
|
17
|
+
|
|
18
|
+
constructor(store: PermissionsStore) {
|
|
19
|
+
this._store = store
|
|
20
|
+
this.invoker = store.invoker
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get store(): PermissionsStore {
|
|
24
|
+
return assertEx(this._store, () => 'Store must be defined to get permissions')
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async getPermissions(): Promise<InvokerPermission[]> {
|
|
28
|
+
return await this.store.getPermissions()
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// assumed the permissions are always granted
|
|
32
|
+
async requestPermissions(permissions: PermissionRequest[]): Promise<RequestedPermission[]> {
|
|
33
|
+
await Promise.resolve()
|
|
34
|
+
// Flatten PermissionRequest[] into InvokerPermission[]
|
|
35
|
+
const newPermissions: InvokerPermission[] = []
|
|
36
|
+
const now = Date.now()
|
|
37
|
+
for (const req of permissions) {
|
|
38
|
+
for (const parentCapability in req) {
|
|
39
|
+
newPermissions.push({
|
|
40
|
+
invoker: this.invoker,
|
|
41
|
+
parentCapability,
|
|
42
|
+
caveats: Object.entries(req[parentCapability]).map(([type, value]) => ({ type: type as CaveatTypes, value })),
|
|
43
|
+
date: now,
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Update or add permissions in the store
|
|
49
|
+
const existingPermissions = await this.getPermissions()
|
|
50
|
+
for (const perm of newPermissions) {
|
|
51
|
+
const idx = existingPermissions.findIndex(
|
|
52
|
+
p => p.invoker === perm.invoker && p.parentCapability === perm.parentCapability,
|
|
53
|
+
)
|
|
54
|
+
if (idx === -1) {
|
|
55
|
+
existingPermissions.push(perm)
|
|
56
|
+
} else {
|
|
57
|
+
existingPermissions[idx] = perm
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
await this.store.setPermissions(existingPermissions)
|
|
61
|
+
|
|
62
|
+
// Return the granted permissions in RequestedPermission shape
|
|
63
|
+
return newPermissions.map(({ parentCapability, date }) => ({ parentCapability, date }))
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Assumes the permissions are always revoked
|
|
67
|
+
async revokePermissions(permissions: PermissionRequest): Promise<RequestedPermission[]> {
|
|
68
|
+
const existingPermissions = await this.getPermissions()
|
|
69
|
+
const revoked: RequestedPermission[] = []
|
|
70
|
+
for (const parentCapability in permissions) {
|
|
71
|
+
const idx = existingPermissions.findIndex(
|
|
72
|
+
p => p.invoker === this.invoker && p.parentCapability === parentCapability,
|
|
73
|
+
)
|
|
74
|
+
if (idx !== -1) {
|
|
75
|
+
const removed = existingPermissions.splice(idx, 1)[0]
|
|
76
|
+
revoked.push({ parentCapability: removed.parentCapability, date: removed.date })
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
await this.store.setPermissions(existingPermissions)
|
|
80
|
+
return revoked
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
InvokerPermission,
|
|
3
|
+
PermissionRequest,
|
|
4
|
+
RequestedPermission,
|
|
5
|
+
XyoPermissions,
|
|
6
|
+
} from '@xyo-network/xl1-protocol'
|
|
7
|
+
|
|
8
|
+
import type { RpcTransport } from '../../transport/index.ts'
|
|
9
|
+
import type { XyoPermissionsRpcSchemas } from '../../types/index.ts'
|
|
10
|
+
|
|
11
|
+
export class RpcXyoPermissions implements XyoPermissions {
|
|
12
|
+
protected readonly transport: RpcTransport<typeof XyoPermissionsRpcSchemas>
|
|
13
|
+
|
|
14
|
+
constructor(transport: RpcTransport<typeof XyoPermissionsRpcSchemas>) {
|
|
15
|
+
this.transport = transport
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async getPermissions(): Promise<InvokerPermission[]> {
|
|
19
|
+
return await this.transport.sendRequest('xyoPermissions_getPermissions', [])
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async requestPermissions(permissions: PermissionRequest[]): Promise<RequestedPermission[]> {
|
|
23
|
+
return await this.transport.sendRequest('xyoPermissions_requestPermissions', [permissions])
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async revokePermissions(_permissions: PermissionRequest): Promise<RequestedPermission[]> {
|
|
27
|
+
await Promise.resolve()
|
|
28
|
+
throw new Error('Method not implemented.')
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { PermissionRequest } from '@xyo-network/xl1-protocol'
|
|
2
|
+
import {
|
|
3
|
+
beforeEach, describe, expect, it,
|
|
4
|
+
} from 'vitest'
|
|
5
|
+
|
|
6
|
+
import { MemoryXyoPermissions } from '../MemoryXyoPermissions.ts'
|
|
7
|
+
import { MemoryPermissionsStore } from '../store/index.ts'
|
|
8
|
+
|
|
9
|
+
describe('MemoryXyoPermissions', () => {
|
|
10
|
+
const invoker = 'https://example.com'
|
|
11
|
+
const parentCapability = 'xyoViewer_chainId'
|
|
12
|
+
let memoryPermissions: MemoryXyoPermissions
|
|
13
|
+
|
|
14
|
+
// Helper to build PermissionRequest
|
|
15
|
+
const buildPermissionRequest = (cap: string, caveats: Record<string, unknown> = {}) =>
|
|
16
|
+
({ [cap]: caveats }) as PermissionRequest
|
|
17
|
+
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
memoryPermissions = new MemoryXyoPermissions(new MemoryPermissionsStore(invoker))
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('returns an empty list initially', async () => {
|
|
23
|
+
const permissions = await memoryPermissions.getPermissions()
|
|
24
|
+
expect(permissions).toEqual([])
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('adds and retrieves a permission', async () => {
|
|
28
|
+
const req = buildPermissionRequest(parentCapability)
|
|
29
|
+
const result = await memoryPermissions.requestPermissions([req])
|
|
30
|
+
expect(Array.isArray(result)).toBe(true)
|
|
31
|
+
expect(result.length).toBe(1)
|
|
32
|
+
expect(result[0].parentCapability).toBe(parentCapability)
|
|
33
|
+
expect(typeof result[0].date).toBe('number')
|
|
34
|
+
|
|
35
|
+
const permissions = await memoryPermissions.getPermissions()
|
|
36
|
+
expect(permissions.length).toBe(1)
|
|
37
|
+
expect(permissions[0].parentCapability).toBe(parentCapability)
|
|
38
|
+
expect(permissions[0].invoker).toBe(invoker)
|
|
39
|
+
expect(typeof permissions[0].date).toBe('number')
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('replaces an existing permission with the same key', async () => {
|
|
43
|
+
const req = buildPermissionRequest(parentCapability)
|
|
44
|
+
await memoryPermissions.requestPermissions([req])
|
|
45
|
+
const originalDate = (await memoryPermissions.getPermissions())[0].date
|
|
46
|
+
|
|
47
|
+
await new Promise(r => setTimeout(r, 5)) // ensure timestamp difference
|
|
48
|
+
await memoryPermissions.requestPermissions([req])
|
|
49
|
+
const updatedDate = (await memoryPermissions.getPermissions())[0].date
|
|
50
|
+
|
|
51
|
+
expect(updatedDate).toBeGreaterThan(originalDate!)
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('revokes a previously granted permission', async () => {
|
|
55
|
+
const req = buildPermissionRequest(parentCapability)
|
|
56
|
+
await memoryPermissions.requestPermissions([req])
|
|
57
|
+
expect((await memoryPermissions.getPermissions()).length).toBe(1)
|
|
58
|
+
|
|
59
|
+
const result = await memoryPermissions.revokePermissions(req)
|
|
60
|
+
expect(Array.isArray(result)).toBe(true)
|
|
61
|
+
expect(result.length).toBe(1)
|
|
62
|
+
expect(result[0].parentCapability).toBe(parentCapability)
|
|
63
|
+
|
|
64
|
+
const permissions = await memoryPermissions.getPermissions()
|
|
65
|
+
expect(permissions).toEqual([])
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('revoking a non-existent permission does nothing and returns empty array', async () => {
|
|
69
|
+
const req = buildPermissionRequest(parentCapability)
|
|
70
|
+
const result = await memoryPermissions.revokePermissions(req)
|
|
71
|
+
expect(result).toEqual([])
|
|
72
|
+
expect(await memoryPermissions.getPermissions()).toEqual([])
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
it('can handle multiple permissions from different invokers', async () => {
|
|
76
|
+
const memoryPermissionsA = new MemoryXyoPermissions(new MemoryPermissionsStore('https://a.com'))
|
|
77
|
+
const memoryPermissionsB = new MemoryXyoPermissions(new MemoryPermissionsStore('https://b.com'))
|
|
78
|
+
const reqA1 = buildPermissionRequest('xyo_1')
|
|
79
|
+
const reqA2 = buildPermissionRequest('xyo_3')
|
|
80
|
+
const reqB = buildPermissionRequest('xyo_2')
|
|
81
|
+
|
|
82
|
+
await memoryPermissionsA.requestPermissions([reqA1, reqA2])
|
|
83
|
+
await memoryPermissionsB.requestPermissions([reqB])
|
|
84
|
+
|
|
85
|
+
const resultsA = await memoryPermissionsA.getPermissions()
|
|
86
|
+
const resultsB = await memoryPermissionsB.getPermissions()
|
|
87
|
+
|
|
88
|
+
expect(resultsA.length).toBe(2)
|
|
89
|
+
expect(resultsB.length).toBe(1)
|
|
90
|
+
expect(resultsA.map(p => p.parentCapability).toSorted((a, b) => a.localeCompare(b))).toEqual(['xyo_1', 'xyo_3'])
|
|
91
|
+
expect(resultsB[0].parentCapability).toBe('xyo_2')
|
|
92
|
+
})
|
|
93
|
+
})
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import type { InvokerPermission } from '@xyo-network/xl1-protocol'
|
|
3
|
+
|
|
4
|
+
import type { Invoker, PermissionsStore } from './PermissionsStore.ts'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* In-memory implementation of XyoPermissions for testing or ephemeral use cases.
|
|
8
|
+
* Does not persist data beyond the lifetime of the instance.
|
|
9
|
+
* Assumes all permission requests are granted and revocations always succeed.
|
|
10
|
+
*/
|
|
11
|
+
export class MemoryPermissionsStore implements PermissionsStore {
|
|
12
|
+
private _invoker: Invoker
|
|
13
|
+
private permissions: InvokerPermission[] = []
|
|
14
|
+
|
|
15
|
+
constructor(invoker: Invoker) {
|
|
16
|
+
this._invoker = invoker
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get invoker(): Invoker {
|
|
20
|
+
return assertEx(this._invoker, () => 'Invoker must be defined to get permissions')
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async getPermissions(): Promise<InvokerPermission[]> {
|
|
24
|
+
await Promise.resolve()
|
|
25
|
+
return this.permissions
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async setPermissions(permissions: InvokerPermission[]): Promise<void> {
|
|
29
|
+
await Promise.resolve()
|
|
30
|
+
this.permissions = permissions
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { InvokerPermission, PermissionsGetHandler } from '@xyo-network/xl1-protocol'
|
|
2
|
+
|
|
3
|
+
export type Invoker = string
|
|
4
|
+
export type ParentCapability = string
|
|
5
|
+
/**
|
|
6
|
+
* Interface for a permissions store that abstracts away the storage medium.
|
|
7
|
+
* (i.e. in-memory, browser storage, database, etc.)
|
|
8
|
+
*/
|
|
9
|
+
export interface PermissionsStore extends PermissionsGetHandler {
|
|
10
|
+
// The invoker associated with this permissions store
|
|
11
|
+
readonly invoker: Invoker
|
|
12
|
+
// Retrieve all permissions associated with the invoker.
|
|
13
|
+
// Store or update permissions for the invoker
|
|
14
|
+
setPermissions(permissions: InvokerPermission[]): Promise<void>
|
|
15
|
+
}
|
|
@@ -3,7 +3,7 @@ import type { Signed } from '@xyo-network/boundwitness-model'
|
|
|
3
3
|
import type { Payload } from '@xyo-network/payload-model'
|
|
4
4
|
import type {
|
|
5
5
|
AllowedBlockPayload,
|
|
6
|
-
|
|
6
|
+
ChainId,
|
|
7
7
|
SignedHydratedTransaction,
|
|
8
8
|
TransactionBoundWitness,
|
|
9
9
|
TransactionFeesBigInt,
|
|
@@ -25,8 +25,9 @@ export class RpcXyoSigner implements XyoSigner {
|
|
|
25
25
|
return await this.transport.sendRequest('xyoSigner_address')
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/** @deprecated - use signTransaction instead */
|
|
28
29
|
async createSignedTransaction(
|
|
29
|
-
chain:
|
|
30
|
+
chain: ChainId,
|
|
30
31
|
elevatedPayloads: AllowedBlockPayload[],
|
|
31
32
|
additionalPayloads: Payload[],
|
|
32
33
|
nbf: number,
|
|
@@ -3,7 +3,7 @@ import type { AccountInstance } from '@xyo-network/account-model'
|
|
|
3
3
|
import type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model'
|
|
4
4
|
import { type Payload } from '@xyo-network/payload-model'
|
|
5
5
|
import type {
|
|
6
|
-
AllowedBlockPayload,
|
|
6
|
+
AllowedBlockPayload, ChainId, TransactionBoundWitness, TransactionFeesBigInt, XyoSigner,
|
|
7
7
|
} from '@xyo-network/xl1-protocol'
|
|
8
8
|
import { buildTransaction, signTransaction } from '@xyo-network/xl1-protocol-sdk'
|
|
9
9
|
|
|
@@ -19,7 +19,7 @@ export class MemoryXyoSigner implements XyoSigner {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
async createSignedTransaction(
|
|
22
|
-
chain:
|
|
22
|
+
chain: ChainId,
|
|
23
23
|
elevatedPayloads: AllowedBlockPayload[],
|
|
24
24
|
additionalPayloads: Payload[],
|
|
25
25
|
nbf: number,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { asAddress, toAddress } from '@xylabs/hex'
|
|
2
2
|
import { Account } from '@xyo-network/account'
|
|
3
|
-
import type {
|
|
3
|
+
import type { ChainId, XyoSigner } from '@xyo-network/xl1-protocol'
|
|
4
4
|
import { defaultTransactionFees } from '@xyo-network/xl1-protocol'
|
|
5
5
|
import {
|
|
6
6
|
beforeAll, describe, expect, it,
|
|
7
7
|
} from 'vitest'
|
|
8
8
|
|
|
9
9
|
// eslint-disable-next-line import-x/no-internal-modules
|
|
10
|
-
import {
|
|
10
|
+
import { rpcEngineFromConnection } from '../../../engine/index-node.ts'
|
|
11
11
|
import { XyoSignerRpcSchemas } from '../../../index-node.ts'
|
|
12
12
|
import { MemoryRpcTransport } from '../../../transport/index.ts'
|
|
13
13
|
import { XyoBaseConnection } from '../../connection/index.ts'
|
|
@@ -16,12 +16,12 @@ import { MemoryXyoSigner } from '../MemoryXyoSigner.ts'
|
|
|
16
16
|
|
|
17
17
|
describe('RpcEngine - XyoSigner', () => {
|
|
18
18
|
let sut: XyoSigner
|
|
19
|
-
const chain = toAddress('2AAE728aFd1777b79c34D79c4523797F9D9965b0') as
|
|
19
|
+
const chain = toAddress('2AAE728aFd1777b79c34D79c4523797F9D9965b0') as ChainId
|
|
20
20
|
beforeAll(async () => {
|
|
21
21
|
const account = await Account.random()
|
|
22
22
|
const signer = new MemoryXyoSigner(account)
|
|
23
|
-
const
|
|
24
|
-
const engine =
|
|
23
|
+
const connection = new XyoBaseConnection({ signer })
|
|
24
|
+
const engine = rpcEngineFromConnection(connection)
|
|
25
25
|
const transport = new MemoryRpcTransport(engine, XyoSignerRpcSchemas)
|
|
26
26
|
sut = new RpcXyoSigner(transport)
|
|
27
27
|
})
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import type { Address, Hash } from '@xylabs/hex'
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
import type {
|
|
3
|
+
AttoXL1,
|
|
4
|
+
ChainId,
|
|
5
|
+
ForkHistory,
|
|
6
|
+
HydratedBlock, SignedHydratedTransaction,
|
|
7
|
+
Stake,
|
|
8
|
+
StepContext,
|
|
9
|
+
Transfer,
|
|
10
|
+
TransferBalanceHistoryItem,
|
|
11
|
+
TransferPair,
|
|
12
|
+
XyoViewer,
|
|
11
13
|
} from '@xyo-network/xl1-protocol'
|
|
14
|
+
import { asAttoXL1, asHydratedBlock } from '@xyo-network/xl1-protocol'
|
|
12
15
|
|
|
13
16
|
import type { RpcTransport } from '../../transport/index.ts'
|
|
14
17
|
import type { XyoViewerRpcSchemas } from '../../types/index.ts'
|
|
@@ -24,63 +27,119 @@ export class JsonRpcXyoViewer implements XyoViewer {
|
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
async accountBalanceHistory(address: Address): Promise<[Hash, Hash, Transfer][]> {
|
|
27
|
-
return (await this.transport.sendRequest('xyoViewer_accountBalanceHistory', [address]))
|
|
30
|
+
return (await this.transport.sendRequest('xyoViewer_accountBalanceHistory', [address]))
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
async blockByHash(hash: Hash): Promise<HydratedBlock | null> {
|
|
31
|
-
return (await this.transport.sendRequest('xyoViewer_blockByHash', [hash]))
|
|
34
|
+
return asHydratedBlock(await this.transport.sendRequest('xyoViewer_blockByHash', [hash])) ?? null
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
async blockByNumber(blockNumber: number): Promise<HydratedBlock | null> {
|
|
35
|
-
return (await this.transport.sendRequest('xyoViewer_blockByNumber', [blockNumber]))
|
|
38
|
+
return asHydratedBlock(await this.transport.sendRequest('xyoViewer_blockByNumber', [blockNumber])) ?? null
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
async blocksByHash(hash: Hash, limit?: number): Promise<HydratedBlock[]> {
|
|
39
|
-
return (await this.transport.sendRequest('xyoViewer_blocksByHash', [hash, limit]))
|
|
42
|
+
return (await this.transport.sendRequest('xyoViewer_blocksByHash', [hash, limit])).map(b => asHydratedBlock(b, { required: true }))
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
async chainId(): Promise<Address> {
|
|
43
46
|
return await this.transport.sendRequest('xyoViewer_chainId')
|
|
44
47
|
}
|
|
45
48
|
|
|
46
|
-
async chainIdAtBlock(blockNumber: number): Promise<
|
|
47
|
-
return (await this.transport.sendRequest('xyoViewer_chainIdAtBlock', [blockNumber]))
|
|
49
|
+
async chainIdAtBlock(blockNumber: number): Promise<ChainId | undefined> {
|
|
50
|
+
return (await this.transport.sendRequest('xyoViewer_chainIdAtBlock', [blockNumber]))
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
async currentBlock(): Promise<HydratedBlock> {
|
|
51
|
-
return (await this.transport.sendRequest('xyoViewer_currentBlock')
|
|
54
|
+
return asHydratedBlock(await this.transport.sendRequest('xyoViewer_currentBlock'), { required: true })
|
|
52
55
|
}
|
|
53
56
|
|
|
54
57
|
async currentBlockHash(): Promise<Hash> {
|
|
55
|
-
return (await this.transport.sendRequest('xyoViewer_currentBlockHash'))
|
|
58
|
+
return (await this.transport.sendRequest('xyoViewer_currentBlockHash'))
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
async currentBlockNumber(): Promise<number> {
|
|
59
|
-
return (await this.transport.sendRequest('xyoViewer_currentBlockNumber'))
|
|
62
|
+
return (await this.transport.sendRequest('xyoViewer_currentBlockNumber'))
|
|
60
63
|
}
|
|
61
64
|
|
|
62
|
-
forkHistory():
|
|
63
|
-
|
|
65
|
+
async forkHistory(): Promise<ForkHistory> {
|
|
66
|
+
return (await this.transport.sendRequest('xyoViewer_forkHistory'))
|
|
64
67
|
}
|
|
65
68
|
|
|
66
|
-
async
|
|
67
|
-
return (await this.transport.sendRequest('
|
|
69
|
+
async networkStakeStepRewardAddressHistory(address: Address): Promise<Record<Address, bigint>> {
|
|
70
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardAddressHistory', [address]))
|
|
68
71
|
}
|
|
69
72
|
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
async networkStakeStepRewardAddressReward(context: StepContext, address: Address): Promise<Record<Address, bigint>> {
|
|
74
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardAddressReward', [context, address]))
|
|
72
75
|
}
|
|
73
76
|
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
async networkStakeStepRewardAddressShare(context: StepContext, address: Address): Promise<[bigint, bigint]> {
|
|
78
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardAddressShare', [context, address]))
|
|
76
79
|
}
|
|
77
80
|
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
async networkStakeStepRewardClaimedByAddress(address: Address): Promise<bigint> {
|
|
82
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardClaimedByAddress', [address]))
|
|
80
83
|
}
|
|
81
84
|
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
async networkStakeStepRewardForStep(context: StepContext): Promise<bigint> {
|
|
86
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardForStep', [context]))
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
async networkStakeStepRewardForStepForPosition(context: StepContext, position: number): Promise<[bigint, bigint]> {
|
|
90
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardForStepForPosition', [context, position]))
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async networkStakeStepRewardPoolRewards(context: StepContext): Promise<Record<Address, bigint>> {
|
|
94
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardPoolRewards', [context]))
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async networkStakeStepRewardPoolShares(context: StepContext): Promise<Record<Address, bigint>> {
|
|
98
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardPoolShares', [context]))
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async networkStakeStepRewardPositionWeight(context: StepContext, position: number): Promise<bigint> {
|
|
102
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardPositionWeight', [context, position]))
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async networkStakeStepRewardPotentialPositionLoss(context: StepContext, position: number): Promise<bigint> {
|
|
106
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardPotentialPositionLoss', [context, position]))
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async networkStakeStepRewardRandomizer(context: StepContext): Promise<bigint> {
|
|
110
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardRandomizer', [context]))
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
async networkStakeStepRewardStakerCount(context: StepContext): Promise<number> {
|
|
114
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardStakerCount', [context]))
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async networkStakeStepRewardUnclaimedByAddress(address: Address): Promise<bigint> {
|
|
118
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardUnclaimedByAddress', [address]))
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
async networkStakeStepRewardWeightForAddress(context: StepContext, address: Address): Promise<bigint> {
|
|
122
|
+
return (await this.transport.sendRequest('xyoViewer_networkStakeStepRewardWeightForAddress', [context, address]))
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async stakeById(id: number): Promise<Stake> {
|
|
126
|
+
return (await this.transport.sendRequest('xyoViewer_stakeById', [id]))
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
async stakeByStaker(staker: Address, slot: number): Promise<Stake> {
|
|
130
|
+
return (await this.transport.sendRequest('xyoViewer_stakeByStaker', [staker, slot]))
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
async stakedByStaker(staker: Address): Promise<Address[]> {
|
|
134
|
+
return (await this.transport.sendRequest('xyoViewer_stakedByStaker', [staker]))
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
async stakesByStaked(staked: Address): Promise<Stake[]> {
|
|
138
|
+
return (await this.transport.sendRequest('xyoViewer_stakesByStaked', [staked]))
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
async stakesByStaker(staker: Address): Promise<Stake[]> {
|
|
142
|
+
return (await this.transport.sendRequest('xyoViewer_stakesByStaker', [staker]))
|
|
84
143
|
}
|
|
85
144
|
|
|
86
145
|
async transactionByBlockHashAndIndex(blockHash: Hash, transactionIndex: number): Promise<SignedHydratedTransaction | null> {
|
|
@@ -94,4 +153,20 @@ export class JsonRpcXyoViewer implements XyoViewer {
|
|
|
94
153
|
async transactionByHash(transactionHash: Hash): Promise<SignedHydratedTransaction | null> {
|
|
95
154
|
return (await this.transport.sendRequest('xyoViewer_transactionByHash', [transactionHash])) as SignedHydratedTransaction | null
|
|
96
155
|
}
|
|
156
|
+
|
|
157
|
+
async transferBalance(address: Address): Promise<AttoXL1> {
|
|
158
|
+
return asAttoXL1(await this.transport.sendRequest('xyoViewer_transferBalance', [address]))
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
async transferBalanceHistory(address: Address): Promise<TransferBalanceHistoryItem[]> {
|
|
162
|
+
return (await this.transport.sendRequest('xyoViewer_transferBalanceHistory', [address])) as TransferBalanceHistoryItem[]
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
async transferPairBalance(address: TransferPair): Promise<AttoXL1> {
|
|
166
|
+
return asAttoXL1(await this.transport.sendRequest('xyoViewer_transferPairBalance', [address]))
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
async transferPairBalanceHistory(address: TransferPair): Promise<TransferBalanceHistoryItem[]> {
|
|
170
|
+
return (await this.transport.sendRequest('xyoViewer_transferPairBalanceHistory', [address])) as TransferBalanceHistoryItem[]
|
|
171
|
+
}
|
|
97
172
|
}
|
package/src/types/ErrorCodes.ts
CHANGED
|
@@ -6,4 +6,5 @@ export const JsonRpcErrorCodes: Record<string, { code: number; message: string }
|
|
|
6
6
|
InvalidParams: { code: -32_602, message: 'Invalid method parameter(s).' },
|
|
7
7
|
InvalidRequest: { code: -32_600, message: 'The JSON sent is not a valid Request object.' },
|
|
8
8
|
MethodNotFound: { code: -32_601, message: 'The method does not exist or is not available.' },
|
|
9
|
+
UserRejected: { code: 4001, message: 'User rejected the request.' },
|
|
9
10
|
}
|