@xyo-network/xl1-protocol-sdk 1.19.0 → 1.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/neutral/CreatableProvider/CreatableProviderRegistry.d.ts.map +1 -1
  2. package/dist/neutral/index.mjs +44 -44
  3. package/dist/neutral/index.mjs.map +1 -1
  4. package/dist/neutral/provider/DataLake.d.ts +5 -3
  5. package/dist/neutral/provider/DataLake.d.ts.map +1 -1
  6. package/dist/neutral/provider/DataLakes.d.ts +20 -0
  7. package/dist/neutral/provider/DataLakes.d.ts.map +1 -0
  8. package/dist/neutral/provider/TransactionSubmitter.d.ts.map +1 -1
  9. package/dist/neutral/provider/XyoGateway.d.ts +14 -10
  10. package/dist/neutral/provider/XyoGateway.d.ts.map +1 -1
  11. package/dist/neutral/provider/XyoGatewayRunner.d.ts +10 -6
  12. package/dist/neutral/provider/XyoGatewayRunner.d.ts.map +1 -1
  13. package/dist/neutral/provider/index.d.ts +1 -0
  14. package/dist/neutral/provider/index.d.ts.map +1 -1
  15. package/dist/neutral/provider/signer/XyoSigner.d.ts +4 -1
  16. package/dist/neutral/provider/signer/XyoSigner.d.ts.map +1 -1
  17. package/dist/neutral/services/Chain/ChainService.d.ts +1 -0
  18. package/dist/neutral/services/Chain/ChainService.d.ts.map +1 -1
  19. package/dist/neutral/simple/gateway/SimpleXyoGateway.d.ts +15 -10
  20. package/dist/neutral/simple/gateway/SimpleXyoGateway.d.ts.map +1 -1
  21. package/dist/neutral/simple/gateway/SimpleXyoGatewayRunner.d.ts +19 -16
  22. package/dist/neutral/simple/gateway/SimpleXyoGatewayRunner.d.ts.map +1 -1
  23. package/package.json +2 -2
  24. package/src/CreatableProvider/CreatableProviderRegistry.ts +0 -1
  25. package/src/provider/DataLake.ts +5 -3
  26. package/src/provider/DataLakes.ts +26 -0
  27. package/src/provider/TransactionSubmitter.ts +0 -1
  28. package/src/provider/XyoGateway.ts +20 -12
  29. package/src/provider/XyoGatewayRunner.ts +11 -6
  30. package/src/provider/index.ts +1 -0
  31. package/src/provider/signer/XyoSigner.ts +5 -1
  32. package/src/services/Chain/ChainService.ts +1 -0
  33. package/src/simple/gateway/SimpleXyoGateway.ts +24 -19
  34. package/src/simple/gateway/SimpleXyoGatewayRunner.ts +35 -40
@@ -1,5 +1,5 @@
1
1
  import type {
2
- Address, Hash, Hex, Promisable,
2
+ Address, Hash, Hex,
3
3
  } from '@xylabs/sdk-js'
4
4
  import {
5
5
  assertEx, BigIntToJsonZod, isDefined,
@@ -18,50 +18,55 @@ import {
18
18
  TransferSchema,
19
19
  } from '@xyo-network/xl1-protocol'
20
20
 
21
+ import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
22
+ import { AbstractCreatableProvider } from '../../CreatableProvider/index.ts'
21
23
  import type {
22
24
  DataLakeRunner,
25
+ DataLakesRunner,
23
26
  TransactionOptions,
24
- XyoConnection, XyoGatewayRunner,
27
+ XyoConnection,
28
+ XyoGatewayRunner,
25
29
  XyoSigner,
26
30
  } from '../../provider/index.ts'
31
+ import {
32
+ XyoConnectionMoniker, XyoGatewayMoniker, XyoGatewayRunnerMoniker, XyoSignerMoniker,
33
+ } from '../../provider/index.ts'
27
34
  import type { ConfirmSubmittedTransactionOptions } from '../../transaction/index.ts'
28
35
  import { buildUnsignedTransaction, confirmSubmittedTransaction } from '../../transaction/index.ts'
29
36
 
30
- export class SimpleXyoGatewayRunner implements XyoGatewayRunner {
31
- private readonly _connection: XyoConnection
32
- private _dataLakes: (DataLakeRunner | null)[]
33
- private readonly _signer: XyoSigner
37
+ export interface SimpleXyoGatewayRunnerParams extends CreatableProviderParams {
38
+ dataLakes?: DataLakeRunner[]
39
+ }
40
+
41
+ export class SimpleXyoGatewayRunner extends AbstractCreatableProvider<SimpleXyoGatewayRunnerParams> implements XyoGatewayRunner {
42
+ static readonly defaultMoniker = XyoGatewayRunnerMoniker
43
+ static readonly dependencies = [XyoConnectionMoniker, XyoSignerMoniker]
44
+ static readonly monikers = [XyoGatewayRunnerMoniker, XyoGatewayMoniker]
45
+ moniker = SimpleXyoGatewayRunner.defaultMoniker
34
46
 
35
- constructor(connection: XyoConnection, signer: XyoSigner, dataLakes: DataLakeRunner[] = []) {
36
- this._connection = connection
37
- this._dataLakes = [...dataLakes]
38
- this._signer = signer
39
- }
47
+ private _connection!: XyoConnection
48
+ private _dataLakes?: DataLakesRunner
49
+ private _signer!: XyoSigner
40
50
 
41
- get connectionInstance(): XyoConnection {
51
+ get connection(): XyoConnection {
42
52
  return this._connection
43
53
  }
44
54
 
45
- get dataLakes(): DataLakeRunner[] {
55
+ get dataLakes(): DataLakesRunner {
46
56
  throw new Error('Method [dataLakes] not implemented.')
47
57
  }
48
58
 
49
- get signerInstance(): XyoSigner {
59
+ get signer(): XyoSigner {
50
60
  return this._signer
51
61
  }
52
62
 
53
- addDataLake(dataLake: DataLakeRunner): number {
54
- this._dataLakes.push(dataLake)
55
- return this._dataLakes.length - 1
56
- }
57
-
58
63
  async addPayloadsToChain(
59
64
  onChain: AllowedBlockPayload[],
60
65
  offChain: Payload[],
61
66
  options?: TransactionOptions,
62
67
  ): Promise<[Hash, SignedHydratedTransactionWithHashMeta]> {
63
68
  // Get chain providers
64
- const viewer = assertEx(this.connectionInstance.viewer, () => 'No viewer available on connection')
69
+ const viewer = assertEx(this.connection.viewer, () => 'No viewer available on connection')
65
70
 
66
71
  // Resolve transaction options
67
72
  const {
@@ -72,15 +77,14 @@ export class SimpleXyoGatewayRunner implements XyoGatewayRunner {
72
77
  const resolvedExp = asXL1BlockNumber(isDefined(exp) ? exp : resolvedNbf + 10, true)
73
78
 
74
79
  // Build, sign, and broadcast the transaction
75
- // eslint-disable-next-line sonarjs/deprecation
76
- const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await (await this.signer()).address(), fees)
80
+ const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await this.signer.address(), fees)
77
81
  return await this.addTransactionToChain(tx)
78
82
  }
79
83
 
80
84
  async addTransactionToChain(tx: UnsignedHydratedTransaction): Promise<[Hash, SignedHydratedTransactionWithHashMeta]> {
81
- const connection = this.connectionInstance
85
+ const connection = this.connection
82
86
 
83
- const signer = this.signerInstance
87
+ const signer = this.signer
84
88
  const runner = assertEx(connection.runner, () => 'No runner available on connection')
85
89
  const signedTx = await signer.signTransaction(tx)
86
90
  await this.addPayloadsToDataLakes(signedTx[1])
@@ -91,19 +95,15 @@ export class SimpleXyoGatewayRunner implements XyoGatewayRunner {
91
95
 
92
96
  async confirmSubmittedTransaction(txHash: Hash, options?: ConfirmSubmittedTransactionOptions): Promise<SignedHydratedTransaction> {
93
97
  return await confirmSubmittedTransaction(
94
- assertEx(this.connectionInstance.viewer, () => 'Connection viewer is undefined'),
98
+ assertEx(this.connection.viewer, () => 'Connection viewer is undefined'),
95
99
  txHash,
96
100
  options,
97
101
  )
98
102
  }
99
103
 
100
- /** @deprecated use connectionInstance instead */
101
- connection(): Promisable<XyoConnection> {
102
- return this.connectionInstance
103
- }
104
-
105
- removeDataLake(index: number): void {
106
- this._dataLakes[index] = null
104
+ override async createHandler() {
105
+ await super.createHandler()
106
+ this._signer = await this.locator.getInstance<XyoSigner>(XyoSignerMoniker)
107
107
  }
108
108
 
109
109
  async send(to: Address, amount: AttoXL1, options?: TransactionOptions): Promise<Hash> {
@@ -111,8 +111,7 @@ export class SimpleXyoGatewayRunner implements XyoGatewayRunner {
111
111
  }
112
112
 
113
113
  async sendMany(transfers: Record<Address, AttoXL1>, options?: TransactionOptions): Promise<Hash> {
114
- // eslint-disable-next-line sonarjs/deprecation
115
- const from = await (await this.signer()).address()
114
+ const from = await this.signer.address()
116
115
  const hexTransfers: Record<Address, Hex> = Object.fromEntries(
117
116
  Object.entries(transfers).map(([address, amount]) => ([
118
117
  address, BigIntToJsonZod.parse(amount),
@@ -127,13 +126,9 @@ export class SimpleXyoGatewayRunner implements XyoGatewayRunner {
127
126
  return hash
128
127
  }
129
128
 
130
- /** @deprecated use signerInstance instead */
131
- signer(): Promisable<XyoSigner> {
132
- return this.signerInstance
133
- }
134
-
135
129
  protected async addPayloadsToDataLakes(payloads: WithHashMeta<Payload>[]): Promise<void> {
136
- await Promise.all(this._dataLakes.map(async (dataLake) => {
130
+ const dataLakes = this._dataLakes?.dataLakes ?? []
131
+ await Promise.all(dataLakes.map(async (dataLake) => {
137
132
  await Promise.all(payloads.map(async (payload) => {
138
133
  await dataLake?.set(payload._hash, payload)
139
134
  }))