@xyo-network/xl1-rpc 1.15.25 → 1.15.27

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.
@@ -1,9 +1,9 @@
1
1
  import type { Hash } from '@xylabs/hex';
2
2
  import type { Promisable } from '@xylabs/promise';
3
3
  import type { Payload } from '@xyo-network/payload-model';
4
- import type { AllowedBlockPayload, SignedHydratedTransaction, XyoConnection, XyoGatewayProvider, XyoSigner } from '@xyo-network/xl1-protocol';
4
+ import type { AllowedBlockPayload, SignedHydratedTransaction, TransactionOptions, XyoConnection, XyoGatewayProvider, XyoSigner } from '@xyo-network/xl1-protocol';
5
5
  export declare abstract class AbstractXyoGateway implements XyoGatewayProvider {
6
- addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[]): Promise<[Hash, SignedHydratedTransaction]>;
6
+ addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[], options?: TransactionOptions): Promise<[Hash, SignedHydratedTransaction]>;
7
7
  addTransactionToChain(tx: SignedHydratedTransaction): Promise<Hash>;
8
8
  /** @deprecated use addPayloadsToChain instead */
9
9
  submitTransaction(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[]): Promise<SignedHydratedTransaction>;
@@ -1 +1 @@
1
- {"version":3,"file":"Abstract.d.ts","sourceRoot":"","sources":["../../../../src/provider/gateway/Abstract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAC7C,MAAM,2BAA2B,CAAA;AAGlC,8BAAsB,kBAAmB,YAAW,kBAAkB;IAC9D,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAgBnH,qBAAqB,CAAC,EAAE,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,iDAAiD;IAC3C,iBAAiB,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC;IASnI,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC;IAChD,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC;CACzC"}
1
+ {"version":3,"file":"Abstract.d.ts","sourceRoot":"","sources":["../../../../src/provider/gateway/Abstract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAC7C,MAAM,2BAA2B,CAAA;AAGlC,8BAAsB,kBAAmB,YAAW,kBAAkB;IAC9D,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAyBjJ,qBAAqB,CAAC,EAAE,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,iDAAiD;IAC3C,iBAAiB,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC;IASnI,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC;IAChD,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC;CACzC"}
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-rpc",
4
- "version": "1.15.25",
4
+ "version": "1.15.27",
5
5
  "description": "XYO Layer One API",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -75,8 +75,8 @@
75
75
  "@xyo-network/payload-builder": "~5.1.15",
76
76
  "@xyo-network/payload-model": "~5.1.15",
77
77
  "@xyo-network/xl1-protocol": "~1.12.95",
78
- "@xyo-network/xl1-protocol-sdk": "~1.15.25",
79
- "@xyo-network/xl1-wrappers": "~1.15.25",
78
+ "@xyo-network/xl1-protocol-sdk": "~1.15.27",
79
+ "@xyo-network/xl1-wrappers": "~1.15.27",
80
80
  "axios": "~1.13.1",
81
81
  "uuid": "~13.0.0",
82
82
  "zod": "~4.1.12"
@@ -89,7 +89,7 @@
89
89
  "@xylabs/tsconfig": "~7.1.8",
90
90
  "@xylabs/vitest-extended": "~5.0.17",
91
91
  "@xyo-network/account": "~5.1.15",
92
- "@xyo-network/chain-protocol": "~1.15.25",
92
+ "@xyo-network/chain-protocol": "~1.15.27",
93
93
  "@xyo-network/wallet": "~5.1.15",
94
94
  "dotenv": "~17.2.3",
95
95
  "eslint": "^9.39.0",
@@ -1,23 +1,34 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import type { Hash } from '@xylabs/hex'
3
3
  import type { Promisable } from '@xylabs/promise'
4
+ import { isDefined } from '@xylabs/typeof'
4
5
  import { PayloadBuilder } from '@xyo-network/payload-builder'
5
6
  import type { Payload } from '@xyo-network/payload-model'
6
7
  import type {
7
8
  AllowedBlockPayload,
8
9
  SignedHydratedTransaction,
10
+ TransactionOptions,
9
11
  XyoConnection, XyoGatewayProvider, XyoSigner,
10
12
  } from '@xyo-network/xl1-protocol'
11
13
  import { buildUnsignedTransaction } from '@xyo-network/xl1-protocol-sdk'
12
14
 
13
15
  export abstract class AbstractXyoGateway implements XyoGatewayProvider {
14
- async addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[]): Promise<[Hash, SignedHydratedTransaction]> {
16
+ async addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[], options?: TransactionOptions): Promise<[Hash, SignedHydratedTransaction]> {
17
+ // Get chain providers
15
18
  const connection = await this.connection()
16
19
  const viewer = assertEx(connection.viewer, () => 'No viewer available on connection')
17
20
  const signer = await this.signer()
18
- const chainId = await viewer.chainId()
19
- const nbf = await viewer.currentBlockNumber()
20
- const tx = await buildUnsignedTransaction(chainId, onChain, offChain, nbf, nbf + 1000, await signer.address())
21
+
22
+ // Resolve transaction options
23
+ const {
24
+ nbf, exp, chain, fees,
25
+ } = options ?? {}
26
+ const resolvedChainId = isDefined(chain) ? chain : await viewer.chainId()
27
+ const resolvedNbf = isDefined(nbf) ? nbf : await viewer?.currentBlockNumber()
28
+ const resolvedExp = isDefined(exp) ? exp : resolvedNbf + 10
29
+
30
+ // Build, sign, and broadcast the transaction
31
+ const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await signer.address(), fees)
21
32
  const runner = assertEx(connection.runner, () => 'No runner available on connection')
22
33
  const signedTx = await signer.signTransaction(tx)
23
34
  const hash = await runner.broadcastTransaction(
@@ -1,10 +1,15 @@
1
+ import { isAddress, isHash } from '@xylabs/hex'
1
2
  import { Account } from '@xyo-network/account'
2
3
  import type { AccountInstance } from '@xyo-network/account-model'
4
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
3
5
  import type { Payload } from '@xyo-network/payload-model'
4
- import type { AllowedBlockPayload } from '@xyo-network/xl1-protocol'
6
+ import type {
7
+ AllowedBlockPayload, ChainId, SignedHydratedTransaction,
8
+ } from '@xyo-network/xl1-protocol'
5
9
  import { buildUnsignedTransaction } from '@xyo-network/xl1-protocol-sdk'
6
10
  import {
7
11
  beforeEach, describe, expect, it,
12
+ vi,
8
13
  } from 'vitest'
9
14
 
10
15
  import { HttpRpcXyoConnection } from '../../connection/index.ts'
@@ -57,4 +62,32 @@ describe('MemoryXyoGateway', () => {
57
62
  }
58
63
  })
59
64
  })
65
+ describe('addPayloadsToChain', () => {
66
+ it('should add payloads to the chain', async () => {
67
+ const mockRunner = vi.spyOn(connection.runner!, 'broadcastTransaction').mockImplementation(async (tx: SignedHydratedTransaction) => {
68
+ return await PayloadBuilder.hash(tx[0])
69
+ })
70
+ const chainId = (await Account.random()).address
71
+ const mockSigner = vi.spyOn(signer, 'signTransaction')
72
+ const elevatedPayloads: AllowedBlockPayload[] = []
73
+ const additionalPayloads: Payload[] = []
74
+ const result = await sut.addPayloadsToChain(elevatedPayloads, additionalPayloads, {
75
+ nbf: 0,
76
+ exp: 1000,
77
+ chain: chainId,
78
+ })
79
+
80
+ // Verify mocks were called
81
+ expect(mockRunner).toHaveBeenCalled()
82
+ expect(mockSigner).toHaveBeenCalled()
83
+
84
+ // Verify result
85
+ expect(result).toBeDefined()
86
+ expect(result.length).toBe(2)
87
+ expect(isHash(result[0])).toBe(true)
88
+ expect(result[1][0].nbf).toBe(0)
89
+ expect(result[1][0].exp).toBe(1000)
90
+ expect(result[1][0].chain).toBe(chainId)
91
+ })
92
+ })
60
93
  })