@xyo-network/xl1-rpc 1.7.11 → 1.7.13
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 +539 -261
- package/dist/neutral/engine/rpcMethodHandlersFromSigner.d.ts.map +1 -1
- package/dist/neutral/index.mjs +251 -91
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/provider/host/Abstract.d.ts +13 -0
- package/dist/neutral/provider/host/Abstract.d.ts.map +1 -0
- package/dist/neutral/provider/host/JsonRpcXyoGateway.d.ts +2 -11
- package/dist/neutral/provider/host/JsonRpcXyoGateway.d.ts.map +1 -1
- package/dist/neutral/provider/host/MemoryXyoGateway.d.ts +22 -0
- package/dist/neutral/provider/host/MemoryXyoGateway.d.ts.map +1 -0
- package/dist/neutral/provider/host/PermissionsStore/MemoryPermissionsStore.d.ts +11 -0
- package/dist/neutral/provider/host/PermissionsStore/MemoryPermissionsStore.d.ts.map +1 -0
- package/dist/neutral/provider/host/PermissionsStore/PermissionsStore.d.ts +8 -0
- package/dist/neutral/provider/host/PermissionsStore/PermissionsStore.d.ts.map +1 -0
- package/dist/neutral/provider/host/PermissionsStore/getPermissionsStoreFromTransport.d.ts +5 -0
- package/dist/neutral/provider/host/PermissionsStore/getPermissionsStoreFromTransport.d.ts.map +1 -0
- package/dist/neutral/provider/host/PermissionsStore/index.d.ts +4 -0
- package/dist/neutral/provider/host/PermissionsStore/index.d.ts.map +1 -0
- package/dist/neutral/provider/host/PermissionsStore/spec/MemoryPermissionsStore.spec.d.ts +2 -0
- package/dist/neutral/provider/host/PermissionsStore/spec/MemoryPermissionsStore.spec.d.ts.map +1 -0
- package/dist/neutral/provider/host/index.d.ts +3 -0
- package/dist/neutral/provider/host/index.d.ts.map +1 -1
- package/dist/neutral/provider/host/spec/MemoryXyoGateway.spec.d.ts +2 -0
- package/dist/neutral/provider/host/spec/MemoryXyoGateway.spec.d.ts.map +1 -0
- package/dist/neutral/provider/provider/XyoConnection.d.ts +6 -9
- package/dist/neutral/provider/provider/XyoConnection.d.ts.map +1 -1
- package/dist/neutral/provider/signer/JsonRpcXyoSigner.d.ts +9 -2
- package/dist/neutral/provider/signer/JsonRpcXyoSigner.d.ts.map +1 -1
- package/dist/neutral/provider/signer/MemoryXyoSigner.d.ts +3 -1
- package/dist/neutral/provider/signer/MemoryXyoSigner.d.ts.map +1 -1
- package/dist/neutral/transport/HttpRpcTransport.d.ts.map +1 -1
- package/dist/neutral/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
- package/dist/node/engine/rpcMethodHandlersFromSigner.d.ts.map +1 -1
- package/dist/node/index-node.mjs +253 -93
- package/dist/node/index-node.mjs.map +1 -1
- package/dist/node/provider/host/Abstract.d.ts +13 -0
- package/dist/node/provider/host/Abstract.d.ts.map +1 -0
- package/dist/node/provider/host/JsonRpcXyoGateway.d.ts +2 -11
- package/dist/node/provider/host/JsonRpcXyoGateway.d.ts.map +1 -1
- package/dist/node/provider/host/MemoryXyoGateway.d.ts +22 -0
- package/dist/node/provider/host/MemoryXyoGateway.d.ts.map +1 -0
- package/dist/node/provider/host/PermissionsStore/MemoryPermissionsStore.d.ts +11 -0
- package/dist/node/provider/host/PermissionsStore/MemoryPermissionsStore.d.ts.map +1 -0
- package/dist/node/provider/host/PermissionsStore/PermissionsStore.d.ts +8 -0
- package/dist/node/provider/host/PermissionsStore/PermissionsStore.d.ts.map +1 -0
- package/dist/node/provider/host/PermissionsStore/getPermissionsStoreFromTransport.d.ts +5 -0
- package/dist/node/provider/host/PermissionsStore/getPermissionsStoreFromTransport.d.ts.map +1 -0
- package/dist/node/provider/host/PermissionsStore/index.d.ts +4 -0
- package/dist/node/provider/host/PermissionsStore/index.d.ts.map +1 -0
- package/dist/node/provider/host/PermissionsStore/spec/MemoryPermissionsStore.spec.d.ts +2 -0
- package/dist/node/provider/host/PermissionsStore/spec/MemoryPermissionsStore.spec.d.ts.map +1 -0
- package/dist/node/provider/host/index.d.ts +3 -0
- package/dist/node/provider/host/index.d.ts.map +1 -1
- package/dist/node/provider/host/spec/MemoryXyoGateway.spec.d.ts +2 -0
- package/dist/node/provider/host/spec/MemoryXyoGateway.spec.d.ts.map +1 -0
- package/dist/node/provider/provider/XyoConnection.d.ts +6 -9
- package/dist/node/provider/provider/XyoConnection.d.ts.map +1 -1
- package/dist/node/provider/signer/JsonRpcXyoSigner.d.ts +9 -2
- package/dist/node/provider/signer/JsonRpcXyoSigner.d.ts.map +1 -1
- package/dist/node/provider/signer/MemoryXyoSigner.d.ts +3 -1
- package/dist/node/provider/signer/MemoryXyoSigner.d.ts.map +1 -1
- package/dist/node/transport/HttpRpcTransport.d.ts.map +1 -1
- package/dist/node/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
- package/package.json +26 -25
- package/src/engine/rpcMethodHandlersFromSigner.ts +1 -0
- package/src/provider/host/Abstract.ts +30 -0
- package/src/provider/host/JsonRpcXyoGateway.ts +2 -28
- package/src/provider/host/MemoryXyoGateway.ts +84 -0
- package/src/provider/host/PermissionsStore/MemoryPermissionsStore.ts +33 -0
- package/src/provider/host/PermissionsStore/PermissionsStore.ts +8 -0
- package/src/provider/host/PermissionsStore/getPermissionsStoreFromTransport.ts +13 -0
- package/src/provider/host/PermissionsStore/index.ts +3 -0
- package/src/provider/host/PermissionsStore/spec/MemoryPermissionsStore.spec.ts +78 -0
- package/src/provider/host/index.ts +3 -0
- package/src/provider/host/spec/MemoryXyoGateway.spec.ts +78 -0
- package/src/provider/provider/XyoConnection.ts +20 -10
- package/src/provider/signer/JsonRpcXyoSigner.ts +13 -2
- package/src/provider/signer/MemoryXyoSigner.ts +6 -1
- package/src/provider/signer/spec/RpcEngineXyoSigner.spec.ts +2 -2
- package/src/transport/HttpRpcTransport.ts +25 -16
- package/src/types/schema/XyoSignerRpcSchemas.ts +14 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Account } from '@xyo-network/account'
|
|
2
|
+
import type { AccountInstance } from '@xyo-network/account-model'
|
|
3
|
+
import {
|
|
4
|
+
beforeEach, describe, expect, it,
|
|
5
|
+
} from 'vitest'
|
|
6
|
+
|
|
7
|
+
import { RpcXyoConnection } from '../../provider/index.ts'
|
|
8
|
+
import { MemoryXyoSigner } from '../../signer/index.ts'
|
|
9
|
+
import { MemoryXyoGateway } from '../MemoryXyoGateway.ts'
|
|
10
|
+
import { MemoryPermissionsStore } from '../PermissionsStore/index.ts'
|
|
11
|
+
|
|
12
|
+
describe('MemoryXyoGateway', () => {
|
|
13
|
+
const endpoint = 'http://localhost:8080/rpc'
|
|
14
|
+
const dataLakeEndpoint = 'http://localhost:8080/chain/archivist'
|
|
15
|
+
let account: AccountInstance
|
|
16
|
+
let signer: MemoryXyoSigner
|
|
17
|
+
let store: MemoryPermissionsStore
|
|
18
|
+
let sut: MemoryXyoGateway
|
|
19
|
+
|
|
20
|
+
beforeEach(async () => {
|
|
21
|
+
account = await Account.random()
|
|
22
|
+
signer = new MemoryXyoSigner(account)
|
|
23
|
+
|
|
24
|
+
store = new MemoryPermissionsStore()
|
|
25
|
+
sut = new MemoryXyoGateway(signer, store)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
describe('addConnection', () => {
|
|
29
|
+
describe('should return the added', () => {
|
|
30
|
+
it('with config', async () => {
|
|
31
|
+
const config = {
|
|
32
|
+
name: 'localhost', dataLakeEndpoint, networkEndpoint: endpoint,
|
|
33
|
+
}
|
|
34
|
+
const response = await sut.addConnection(config)
|
|
35
|
+
expect(response).toBeDefined()
|
|
36
|
+
})
|
|
37
|
+
it('with connection', async () => {
|
|
38
|
+
const connection = new RpcXyoConnection({ endpoint, account })
|
|
39
|
+
const response = await sut.addConnection('localhost', connection)
|
|
40
|
+
expect(response).toBeDefined()
|
|
41
|
+
expect(response).toBe(connection)
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
describe('activeConnection', () => {
|
|
47
|
+
describe('with no connections', () => {
|
|
48
|
+
it('should have no active connection', () => {
|
|
49
|
+
expect(sut.activeConnection()).toBeUndefined()
|
|
50
|
+
})
|
|
51
|
+
})
|
|
52
|
+
describe('with connections', () => {
|
|
53
|
+
it('should return the active connection', async () => {
|
|
54
|
+
const connection = new RpcXyoConnection({ endpoint, account })
|
|
55
|
+
await sut.addConnection('localhost', connection)
|
|
56
|
+
expect(sut.activeConnection()).toBeDefined()
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
describe('connections', () => {
|
|
62
|
+
describe('with connections', () => {
|
|
63
|
+
const name = 'localhost'
|
|
64
|
+
let connection: RpcXyoConnection
|
|
65
|
+
beforeEach(async () => {
|
|
66
|
+
connection = new RpcXyoConnection({ endpoint, account })
|
|
67
|
+
await sut.addConnection(name, connection)
|
|
68
|
+
})
|
|
69
|
+
it('should return connections', async () => {
|
|
70
|
+
const response = await sut.connections()
|
|
71
|
+
expect(response).toBeDefined()
|
|
72
|
+
expect(response).toHaveProperty(name)
|
|
73
|
+
expect(Object.keys(response)).toHaveLength(1)
|
|
74
|
+
expect(response[name]).toBe(connection)
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
})
|
|
78
|
+
})
|
|
@@ -1,30 +1,35 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
2
|
import type { Address } from '@xylabs/hex'
|
|
3
3
|
import type { Signed } from '@xyo-network/boundwitness-model'
|
|
4
|
+
import { HydratedTransactionWrapper } from '@xyo-network/chain-wrappers'
|
|
4
5
|
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
5
|
-
import type
|
|
6
|
+
import { isAnyPayload, type Payload } from '@xyo-network/payload-model'
|
|
6
7
|
import type {
|
|
7
8
|
AllowedBlockPayload,
|
|
8
9
|
HydratedTransaction,
|
|
9
|
-
TransactionBoundWitness, TransactionFeesBigInt,
|
|
10
|
+
TransactionBoundWitness, TransactionFeesBigInt,
|
|
11
|
+
TransactionSubmitterOptions, XyoConnectionProvider, XyoDataLakeProvider, XyoDataLakeViewer, XyoNetwork, XyoRunner, XyoSigner, XyoViewer,
|
|
10
12
|
} from '@xyo-network/xl1-protocol'
|
|
11
|
-
import { defaultTransactionFees } from '@xyo-network/xl1-protocol'
|
|
13
|
+
import { defaultTransactionFees, isDataLakeProvider } from '@xyo-network/xl1-protocol'
|
|
12
14
|
|
|
13
15
|
export class XyoConnection implements XyoConnectionProvider {
|
|
14
16
|
private readonly _network?: XyoNetwork
|
|
15
17
|
private readonly _runner?: XyoRunner
|
|
16
18
|
private readonly _signer?: XyoSigner
|
|
19
|
+
private readonly _storage?: XyoDataLakeProvider | XyoDataLakeViewer
|
|
17
20
|
private readonly _viewer?: XyoViewer
|
|
18
21
|
|
|
19
22
|
constructor(params?: {
|
|
20
23
|
network?: XyoNetwork
|
|
21
24
|
runner?: XyoRunner
|
|
22
25
|
signer?: XyoSigner
|
|
26
|
+
storage?: XyoDataLakeProvider | XyoDataLakeViewer
|
|
23
27
|
viewer?: XyoViewer
|
|
24
28
|
}) {
|
|
25
29
|
this._network = params?.network
|
|
26
30
|
this._runner = params?.runner
|
|
27
31
|
this._signer = params?.signer
|
|
32
|
+
this._storage = params?.storage
|
|
28
33
|
this._viewer = params?.viewer
|
|
29
34
|
}
|
|
30
35
|
|
|
@@ -40,6 +45,10 @@ export class XyoConnection implements XyoConnectionProvider {
|
|
|
40
45
|
return this._signer
|
|
41
46
|
}
|
|
42
47
|
|
|
48
|
+
get storage(): XyoDataLakeProvider | XyoDataLakeViewer | undefined {
|
|
49
|
+
return this._storage
|
|
50
|
+
}
|
|
51
|
+
|
|
43
52
|
get viewer(): XyoViewer | undefined {
|
|
44
53
|
return this._viewer
|
|
45
54
|
}
|
|
@@ -64,17 +73,12 @@ export class XyoConnection implements XyoConnectionProvider {
|
|
|
64
73
|
additionalPayloads: Payload[],
|
|
65
74
|
{
|
|
66
75
|
chain, exp, fees, from, nbf,
|
|
67
|
-
}: {
|
|
68
|
-
chain?: Address
|
|
69
|
-
exp?: number
|
|
70
|
-
fees?: TransactionFeesBigInt
|
|
71
|
-
from?: Address
|
|
72
|
-
nbf?: number
|
|
73
|
-
} = {},
|
|
76
|
+
}: TransactionSubmitterOptions = {},
|
|
74
77
|
): Promise<HydratedTransaction> {
|
|
75
78
|
const viewer = assertEx(this.viewer, () => 'No viewer available')
|
|
76
79
|
const signer = assertEx(this.signer, () => 'No signer available')
|
|
77
80
|
const runner = assertEx(this.runner, () => 'No runner available')
|
|
81
|
+
const storage = this.storage
|
|
78
82
|
const chainResolved = chain ?? await viewer.chainId()
|
|
79
83
|
if (chainResolved === undefined) throw new Error('Failed to determine chain')
|
|
80
84
|
const nbfResolved = Math.max(await viewer.currentBlockNumber() ?? 0, nbf ?? 0)
|
|
@@ -94,6 +98,12 @@ export class XyoConnection implements XyoConnectionProvider {
|
|
|
94
98
|
const hydratedTransaction: HydratedTransaction = [await PayloadBuilder.addStorageMeta(signedTransaction),
|
|
95
99
|
await PayloadBuilder.addStorageMeta(elevatedPayloads)]
|
|
96
100
|
|
|
101
|
+
// if storage configured, add the external payloads to it
|
|
102
|
+
if (isDataLakeProvider(storage)) {
|
|
103
|
+
const wrapper = await HydratedTransactionWrapper.parse(hydratedTransaction)
|
|
104
|
+
await storage.add(Object.values(wrapper.externalPayloads).filter(isAnyPayload))
|
|
105
|
+
}
|
|
106
|
+
|
|
97
107
|
assertEx(await runner.broadcastTransaction(hydratedTransaction), () => 'Failed to broadcast transaction')
|
|
98
108
|
|
|
99
109
|
return hydratedTransaction
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Address } from '@xylabs/hex'
|
|
2
|
-
import type {
|
|
2
|
+
import type { Promisable } from '@xylabs/promise'
|
|
3
|
+
import type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model'
|
|
3
4
|
import type { Payload } from '@xyo-network/payload-model'
|
|
4
5
|
import type {
|
|
5
6
|
AllowedBlockPayload,
|
|
@@ -10,7 +11,8 @@ import type {
|
|
|
10
11
|
|
|
11
12
|
import type { RpcTransport } from '../../transport/index.ts'
|
|
12
13
|
import type { XyoSignerRpcSchemas } from '../../types/index.ts'
|
|
13
|
-
|
|
14
|
+
|
|
15
|
+
export class RpcXyoSigner implements XyoSigner {
|
|
14
16
|
protected readonly transport: RpcTransport<typeof XyoSignerRpcSchemas>
|
|
15
17
|
|
|
16
18
|
constructor(transport: RpcTransport<typeof XyoSignerRpcSchemas>) {
|
|
@@ -40,4 +42,13 @@ export class JsonRpcXyoSigner implements XyoSigner {
|
|
|
40
42
|
from,
|
|
41
43
|
])
|
|
42
44
|
}
|
|
45
|
+
|
|
46
|
+
signTransaction(tx: [UnsignedBoundWitness<TransactionBoundWitness>, Payload[]]): Promisable<[Signed<TransactionBoundWitness>, Payload[]]> {
|
|
47
|
+
throw new Error('Method not implemented.')
|
|
48
|
+
}
|
|
43
49
|
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated Use `RpcXyoSigner` instead.
|
|
53
|
+
*/
|
|
54
|
+
export class JsonRpcXyoSigner extends RpcXyoSigner {}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex'
|
|
2
|
+
import type { Promisable } from '@xylabs/promise'
|
|
2
3
|
import type { AccountInstance } from '@xyo-network/account-model'
|
|
3
|
-
import type { Signed } from '@xyo-network/boundwitness-model'
|
|
4
|
+
import type { Signed, UnsignedBoundWitness } from '@xyo-network/boundwitness-model'
|
|
4
5
|
import { type Payload } from '@xyo-network/payload-model'
|
|
5
6
|
import type {
|
|
6
7
|
AllowedBlockPayload, TransactionBoundWitness, TransactionFeesBigInt, XyoSigner,
|
|
@@ -40,4 +41,8 @@ export class MemoryXyoSigner implements XyoSigner {
|
|
|
40
41
|
)
|
|
41
42
|
return transaction[0]
|
|
42
43
|
}
|
|
44
|
+
|
|
45
|
+
signTransaction(_tx: [UnsignedBoundWitness<TransactionBoundWitness>, Payload[]]): Promisable<[Signed<TransactionBoundWitness>, Payload[]]> {
|
|
46
|
+
throw new Error('Method not implemented.')
|
|
47
|
+
}
|
|
43
48
|
}
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import { rpcEngineFromProvider } from '../../../engine/index-node.ts'
|
|
11
11
|
import { MemoryRpcTransport } from '../../../transport/index.ts'
|
|
12
12
|
import { XyoConnection } from '../../provider/index.ts'
|
|
13
|
-
import {
|
|
13
|
+
import { RpcXyoSigner } from '../JsonRpcXyoSigner.ts'
|
|
14
14
|
import { MemoryXyoSigner } from '../MemoryXyoSigner.ts'
|
|
15
15
|
|
|
16
16
|
describe('RpcEngine - XyoSigner', () => {
|
|
@@ -22,7 +22,7 @@ describe('RpcEngine - XyoSigner', () => {
|
|
|
22
22
|
const provider = new XyoConnection({ signer })
|
|
23
23
|
const engine = rpcEngineFromProvider(provider)
|
|
24
24
|
const transport = new MemoryRpcTransport(engine)
|
|
25
|
-
sut = new
|
|
25
|
+
sut = new RpcXyoSigner(transport)
|
|
26
26
|
})
|
|
27
27
|
describe('address', () => {
|
|
28
28
|
it('should return signer addresses', async () => {
|
|
@@ -2,7 +2,8 @@ import type {
|
|
|
2
2
|
JsonRpcFailure, JsonRpcRequest, JsonRpcSuccess,
|
|
3
3
|
} from '@metamask/utils'
|
|
4
4
|
import { AxiosJson } from '@xylabs/axios'
|
|
5
|
-
import { isUndefinedOrNull } from '@xylabs/typeof'
|
|
5
|
+
import { isError, isUndefinedOrNull } from '@xylabs/typeof'
|
|
6
|
+
import { isAxiosError } from 'axios'
|
|
6
7
|
import { v4 } from 'uuid'
|
|
7
8
|
import type { z } from 'zod'
|
|
8
9
|
|
|
@@ -37,24 +38,32 @@ export class HttpRpcTransport<T extends RpcSchemaMap = RpcSchemaMap> implements
|
|
|
37
38
|
method: TMethod,
|
|
38
39
|
params?: z.infer<TSchemas[TMethod]['params']['to']>,
|
|
39
40
|
): Promise<z.infer<TSchemas[TMethod]['result']['from']>> {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
try {
|
|
42
|
+
const id = v4()
|
|
43
|
+
const body: JsonRpcRequest = {
|
|
44
|
+
jsonrpc,
|
|
45
|
+
id,
|
|
46
|
+
method: method as string,
|
|
47
|
+
}
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
if (params) {
|
|
50
|
+
body.params = schemas[method].params.to.parse(params)
|
|
51
|
+
}
|
|
50
52
|
|
|
51
|
-
|
|
53
|
+
const res = await new AxiosJson().post(url, body)
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
const json = res.data
|
|
56
|
+
if (isUndefinedOrNull(json) || (json as Partial<JsonRpcFailure>).error) {
|
|
57
|
+
throw new Error((json as JsonRpcFailure).error.message)
|
|
58
|
+
}
|
|
57
59
|
|
|
58
|
-
|
|
60
|
+
return schemas[method].result.from.parse((json as JsonRpcSuccess).result)
|
|
61
|
+
} catch (ex) {
|
|
62
|
+
let message = isError(ex) ? ex.message : String(ex)
|
|
63
|
+
if (isAxiosError(ex)) {
|
|
64
|
+
message = `Http error occurred [${ex.status}|${ex.code ?? '<unknown>'}]: ${ex.message}`
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`Error occurred while calling RPC method ${String(method)}: ${message}`)
|
|
67
|
+
}
|
|
59
68
|
}
|
|
60
69
|
}
|
|
@@ -2,7 +2,10 @@ import { z } from 'zod'
|
|
|
2
2
|
|
|
3
3
|
import type { XyoSignerRpcMethodName } from '../XyoSignerRpc.ts'
|
|
4
4
|
import {
|
|
5
|
-
AddressFromStringSchema, AddressToStringSchema,
|
|
5
|
+
AddressFromStringSchema, AddressToStringSchema,
|
|
6
|
+
HydratedTransactionSchema,
|
|
7
|
+
PayloadSchema, SignedHydratedTransactionSchema, SignedTransactionBoundWitnessSchema,
|
|
8
|
+
TransactionFeesFromStingSchema,
|
|
6
9
|
TransactionFeesToStingSchema,
|
|
7
10
|
} from './common/index.ts'
|
|
8
11
|
import type { RpcSchemaMap } from './RpcSchemaMap.ts'
|
|
@@ -44,4 +47,14 @@ export const XyoSignerRpcSchemas: RpcSchemaMap<XyoSignerRpcMethodName> = {
|
|
|
44
47
|
from: SignedTransactionBoundWitnessSchema,
|
|
45
48
|
},
|
|
46
49
|
},
|
|
50
|
+
xyoSigner_signTransaction: {
|
|
51
|
+
params: {
|
|
52
|
+
to: z.tuple([HydratedTransactionSchema]),
|
|
53
|
+
from: z.tuple([HydratedTransactionSchema]),
|
|
54
|
+
},
|
|
55
|
+
result: {
|
|
56
|
+
to: SignedHydratedTransactionSchema,
|
|
57
|
+
from: SignedHydratedTransactionSchema,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
47
60
|
}
|