@xyo-network/chain-bridge 1.20.15 → 1.20.17

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 (147) hide show
  1. package/README.md +9 -75
  2. package/dist/node/index.mjs +44 -0
  3. package/dist/node/index.mjs.map +1 -1
  4. package/dist/node/queue/flows/createXl1ToEthBridgeJob/getJobIdForXl1ToEthBridgeJob.d.ts +1 -1
  5. package/dist/node/queue/flows/createXl1ToEthBridgeJob/getJobIdForXl1ToEthBridgeJob.d.ts.map +1 -1
  6. package/dist/node/server/routes/addProbeRoutes.d.ts +3 -0
  7. package/dist/node/server/routes/addProbeRoutes.d.ts.map +1 -0
  8. package/dist/node/server/routes/addRoutes.d.ts.map +1 -1
  9. package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeConfig.d.ts +7 -7
  10. package/dist/node/server/routes/{healthz → livez}/get.d.ts +1 -1
  11. package/dist/node/server/routes/livez/get.d.ts.map +1 -0
  12. package/dist/node/server/routes/livez/index.d.ts.map +1 -0
  13. package/dist/node/server/routes/readyz/get.d.ts +4 -0
  14. package/dist/node/server/routes/readyz/get.d.ts.map +1 -0
  15. package/dist/node/server/routes/readyz/index.d.ts +2 -0
  16. package/dist/node/server/routes/readyz/index.d.ts.map +1 -0
  17. package/dist/node/server/routes/startupz/get.d.ts +4 -0
  18. package/dist/node/server/routes/startupz/get.d.ts.map +1 -0
  19. package/dist/node/server/routes/startupz/index.d.ts +2 -0
  20. package/dist/node/server/routes/startupz/index.d.ts.map +1 -0
  21. package/package.json +143 -54
  22. package/dist/node/server/routes/healthz/get.d.ts.map +0 -1
  23. package/dist/node/server/routes/healthz/index.d.ts.map +0 -1
  24. package/src/BridgeActor.ts +0 -51
  25. package/src/config/asChainId.ts +0 -7
  26. package/src/config/asToken.ts +0 -7
  27. package/src/config/getBridgeEscrowAddress.ts +0 -13
  28. package/src/config/getBridgeFeesAddress.ts +0 -13
  29. package/src/config/getBridgeSettings.ts +0 -24
  30. package/src/config/getBridgeWalletAccount.ts +0 -37
  31. package/src/config/getFeeStructure.ts +0 -8
  32. package/src/config/getMaxBridgeAmount.ts +0 -7
  33. package/src/config/getMinBridgeAmount.ts +0 -7
  34. package/src/config/getRemoteChainId.ts +0 -10
  35. package/src/config/getRemoteTokenAddress.ts +0 -10
  36. package/src/config/getTestGateway.ts +0 -24
  37. package/src/config/getTransferAddresses.ts +0 -17
  38. package/src/config/getXl1ChainId.ts +0 -13
  39. package/src/config/getXl1TokenAddress.ts +0 -12
  40. package/src/config/index.ts +0 -15
  41. package/src/index.ts +0 -1
  42. package/src/interface/index.ts +0 -4
  43. package/src/interface/interface/ChainBridgeRelayInterface.ts +0 -9
  44. package/src/interface/interface/IntentIndexerInterface.ts +0 -8
  45. package/src/interface/interface/LockingProcessorInterface.ts +0 -10
  46. package/src/interface/interface/ObservationIndexerInterface.ts +0 -12
  47. package/src/interface/interface/Params.ts +0 -26
  48. package/src/interface/interface/RelayInterface.ts +0 -8
  49. package/src/interface/interface/index.ts +0 -6
  50. package/src/interface/repository/RepositoryInterface.ts +0 -28
  51. package/src/interface/repository/index.ts +0 -1
  52. package/src/interface/service/Observer/ERC20TransferObserver/ERC20TransferObserver.ts +0 -180
  53. package/src/interface/service/Observer/ERC20TransferObserver/index.ts +0 -1
  54. package/src/interface/service/Observer/LiquidityPoolBridgeObserver/LiquidityPoolBridgeObserver.ts +0 -210
  55. package/src/interface/service/Observer/LiquidityPoolBridgeObserver/index.ts +0 -1
  56. package/src/interface/service/Observer/Observer.ts +0 -48
  57. package/src/interface/service/Observer/index.ts +0 -1
  58. package/src/interface/service/Relay/ChainBridgeRelay/ChainBridgeRelayInterface.ts +0 -11
  59. package/src/interface/service/Relay/ChainBridgeRelay/ChainBridgeRelayService.ts +0 -116
  60. package/src/interface/service/Relay/ChainBridgeRelay/index.ts +0 -1
  61. package/src/interface/service/Relay/LiquidityPoolBridgeRelay/LiquidityPoolBridgeRelay.ts +0 -227
  62. package/src/interface/service/Relay/LiquidityPoolBridgeRelay/index.ts +0 -1
  63. package/src/interface/service/Relay/index.ts +0 -1
  64. package/src/interface/service/index.ts +0 -2
  65. package/src/interface/util/getBridgeIntentIdentifier.ts +0 -18
  66. package/src/interface/util/index.ts +0 -1
  67. package/src/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.ts +0 -235
  68. package/src/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/index.ts +0 -1
  69. package/src/modules/index.ts +0 -1
  70. package/src/queue/connection.ts +0 -16
  71. package/src/queue/flowProducer.ts +0 -16
  72. package/src/queue/flows/createEthToXl1BridgeJob.ts +0 -71
  73. package/src/queue/flows/createXl1ToEthBridgeJob/createXl1ToEthBridgeJob.ts +0 -127
  74. package/src/queue/flows/createXl1ToEthBridgeJob/getJobIdForXl1ToEthBridgeJob.ts +0 -18
  75. package/src/queue/flows/createXl1ToEthBridgeJob/getXl1ToEthBridgeJob.ts +0 -11
  76. package/src/queue/flows/createXl1ToEthBridgeJob/index.ts +0 -3
  77. package/src/queue/flows/index.ts +0 -2
  78. package/src/queue/getXl1ToEthQueueJobs.ts +0 -57
  79. package/src/queue/getXl1ToEthQueues.ts +0 -39
  80. package/src/queue/index.ts +0 -8
  81. package/src/queue/prefix.ts +0 -1
  82. package/src/queue/telemetry.ts +0 -12
  83. package/src/queue/workers/EthToXl1BridgeParent.ts +0 -40
  84. package/src/queue/workers/EthTransactionMonitor.ts +0 -59
  85. package/src/queue/workers/EthTransactionPreparation.ts +0 -83
  86. package/src/queue/workers/EthTransactionSubmission.ts +0 -63
  87. package/src/queue/workers/EthTransactionSubmissionStorage.ts +0 -76
  88. package/src/queue/workers/WorkerDescription.ts +0 -10
  89. package/src/queue/workers/Xl1ToEthBridgeParent.ts +0 -41
  90. package/src/queue/workers/Xl1TransactionJobData.ts +0 -12
  91. package/src/queue/workers/Xl1TransactionMonitor.ts +0 -82
  92. package/src/queue/workers/Xl1TransactionPreparation.ts +0 -52
  93. package/src/queue/workers/Xl1TransactionSubmission.ts +0 -70
  94. package/src/queue/workers/Xl1TransactionSubmissionStorage.ts +0 -77
  95. package/src/queue/workers/createWorkers.ts +0 -29
  96. package/src/queue/workers/index.ts +0 -11
  97. package/src/queue/workers/util/index.ts +0 -2
  98. package/src/queue/workers/util/submitEthTransaction.ts +0 -32
  99. package/src/queue/workers/util/submitXl1Transaction.ts +0 -26
  100. package/src/server/addFlowProducer.ts +0 -14
  101. package/src/server/addWorkers.ts +0 -13
  102. package/src/server/app.ts +0 -20
  103. package/src/server/index.ts +0 -19
  104. package/src/server/instrumentation.ts +0 -15
  105. package/src/server/routes/addRoutes.ts +0 -9
  106. package/src/server/routes/bridge/addBridgeRoutes.ts +0 -12
  107. package/src/server/routes/bridge/index.ts +0 -1
  108. package/src/server/routes/bridge/routeDefinitions/getRouteDefinitions.ts +0 -18
  109. package/src/server/routes/bridge/routeDefinitions/index.ts +0 -1
  110. package/src/server/routes/bridge/routeDefinitions/pathParams/ChainIdPathParam.ts +0 -21
  111. package/src/server/routes/bridge/routeDefinitions/pathParams/index.ts +0 -1
  112. package/src/server/routes/bridge/routeDefinitions/routes/bridgeConfig.ts +0 -46
  113. package/src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts +0 -58
  114. package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts +0 -93
  115. package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts +0 -69
  116. package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteMaxEstimate.ts +0 -64
  117. package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts +0 -98
  118. package/src/server/routes/bridge/routeDefinitions/routes/index.ts +0 -6
  119. package/src/server/routes/healthz/get.ts +0 -20
  120. package/src/server/routes/healthz/index.ts +0 -1
  121. package/src/server/routes/index.ts +0 -1
  122. package/src/server/server.ts +0 -21
  123. package/src/services/EthTxState.ts +0 -5
  124. package/src/services/IBridgeServiceCollection.ts +0 -19
  125. package/src/services/TxState.ts +0 -14
  126. package/src/services/Xl1TxState.ts +0 -9
  127. package/src/services/getIterableMap.ts +0 -34
  128. package/src/services/getServices.ts +0 -41
  129. package/src/services/index.ts +0 -5
  130. package/src/util/BridgeFees.ts +0 -16
  131. package/src/util/bridgeFeesAsBigInt.ts +0 -15
  132. package/src/util/calculateBridgeFees.ts +0 -33
  133. package/src/util/calculateMaxBridgeAmount.ts +0 -22
  134. package/src/util/createBridgeTransfer.ts +0 -31
  135. package/src/util/generateBridgeEstimate.ts +0 -55
  136. package/src/util/getConfigFromEnv.ts +0 -15
  137. package/src/util/index.ts +0 -7
  138. package/src/validation/AsyncLogger.ts +0 -5
  139. package/src/validation/index.ts +0 -6
  140. package/src/validation/validateBridgeEstimate.ts +0 -60
  141. package/src/validation/validateBridgeEstimateExact.ts +0 -39
  142. package/src/validation/validateBridgeTransaction.ts +0 -53
  143. package/src/validation/validateSufficientLiquiditySourceAllowance.ts +0 -39
  144. package/src/validation/validateSufficientLiquiditySourceBalance.ts +0 -38
  145. package/src/validation/validateSufficientRunnerEthBalanceForGas.ts +0 -57
  146. package/src/validation/validateSufficientXL1SourceAddressBalance.ts +0 -39
  147. /package/dist/node/server/routes/{healthz → livez}/index.d.ts +0 -0
@@ -10,5 +10,5 @@ import type { SignedHydratedTransaction } from '@xyo-network/xl1-sdk';
10
10
  * @param tx The transaction to bridge from XL1 to ETH
11
11
  * @returns A deterministic job ID for the bridge job
12
12
  */
13
- export declare const getJobIdForXl1ToEthBridgeJob: (tx: SignedHydratedTransaction) => Promise<import("@xylabs/hex").BrandedHash>;
13
+ export declare const getJobIdForXl1ToEthBridgeJob: (tx: SignedHydratedTransaction) => Promise<import("@xylabs/sdk-js").BrandedHash>;
14
14
  //# sourceMappingURL=getJobIdForXl1ToEthBridgeJob.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getJobIdForXl1ToEthBridgeJob.d.ts","sourceRoot":"","sources":["../../../../../src/queue/flows/createXl1ToEthBridgeJob/getJobIdForXl1ToEthBridgeJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAErE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,GAAU,IAAI,yBAAyB,+CAG/E,CAAA"}
1
+ {"version":3,"file":"getJobIdForXl1ToEthBridgeJob.d.ts","sourceRoot":"","sources":["../../../../../src/queue/flows/createXl1ToEthBridgeJob/getJobIdForXl1ToEthBridgeJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAErE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,GAAU,IAAI,yBAAyB,kDAG/E,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Express } from 'express';
2
+ export declare const addProbeRoutes: (app: Express) => void;
3
+ //# sourceMappingURL=addProbeRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addProbeRoutes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/addProbeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMtC,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,SAI1C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"addRoutes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/addRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAItC,eAAO,MAAM,SAAS,GAAI,KAAK,OAAO,EAAE,QAAQ,YAAY,EAAE,SAAS,gBAAgB,SAEtF,CAAA"}
1
+ {"version":3,"file":"addRoutes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/addRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC,eAAO,MAAM,SAAS,GAAI,KAAK,OAAO,EAAE,QAAQ,YAAY,EAAE,SAAS,gBAAgB,SAGtF,CAAA"}
@@ -12,14 +12,14 @@ export declare const BridgeConfigResponseZod: z.ZodObject<{
12
12
  } & {
13
13
  readonly __address: true;
14
14
  }, string>>>>;
15
- feeFixed: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHex, string>>>>;
15
+ feeFixed: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHex, string>>>>;
16
16
  feeRateBasisPoints: z.ZodNonOptional<z.ZodDefault<z.ZodCoercedNumber<unknown>>>;
17
- maxBridgeAmount: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHex, string>>>>;
18
- minBridgeAmount: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHex, string>>>>;
19
- remoteChainId: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHex, string>>>>;
20
- remoteTokenAddress: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHex, string>>>>;
21
- xl1ChainId: z.ZodNonOptional<z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHex, string>>>>;
22
- xl1TokenAddress: z.ZodNonOptional<z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHex, string>>>>;
17
+ maxBridgeAmount: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHex, string>>>>;
18
+ minBridgeAmount: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHex, string>>>>;
19
+ remoteChainId: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHex, string>>>>;
20
+ remoteTokenAddress: z.ZodNonOptional<z.ZodDefault<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHex, string>>>>;
21
+ xl1ChainId: z.ZodNonOptional<z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHex, string>>>>;
22
+ xl1TokenAddress: z.ZodNonOptional<z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHex, string>>>>;
23
23
  }, z.core.$strip>;
24
24
  export type BridgeConfigResponse = z.infer<typeof BridgeConfigResponseZod>;
25
25
  export declare const makeBridgeConfigRoute: (config: BridgeConfig) => RouteDefinition;
@@ -1,4 +1,4 @@
1
1
  import type { NoReqParams } from '@xylabs/express';
2
2
  import type { RequestHandler } from 'express';
3
- export declare const getHealthz: RequestHandler<NoReqParams>;
3
+ export declare const getLivez: RequestHandler<NoReqParams>;
4
4
  //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/livez/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,eAAO,MAAM,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAW,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/livez/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { NoReqParams } from '@xylabs/express';
2
+ import type { RequestHandler } from 'express';
3
+ export declare const getReadyz: RequestHandler<NoReqParams>;
4
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/readyz/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,eAAO,MAAM,SAAS,EAAE,cAAc,CAAC,WAAW,CAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './get.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/readyz/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { NoReqParams } from '@xylabs/express';
2
+ import type { RequestHandler } from 'express';
3
+ export declare const getStartupz: RequestHandler<NoReqParams>;
4
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/startupz/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,WAAW,CAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './get.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/startupz/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/chain-bridge",
3
- "version": "1.20.15",
3
+ "version": "1.20.17",
4
4
  "description": "XYO Layer One Bridge",
5
5
  "homepage": "https://xylabs.com",
6
6
  "bugs": {
@@ -22,95 +22,184 @@
22
22
  "exports": {
23
23
  ".": {
24
24
  "types": "./dist/node/index.d.ts",
25
- "source": "./src/index.ts",
26
25
  "default": "./dist/node/index.mjs"
27
26
  },
28
27
  "./package.json": "./package.json",
29
28
  "./README.md": "./README.md"
30
29
  },
31
30
  "module": "./dist/node/index.mjs",
32
- "source": "./src/index.ts",
33
31
  "types": "./dist/node/index.d.ts",
34
32
  "files": [
35
33
  "dist",
36
- "src",
37
34
  "!**/*.bench.*",
38
35
  "!**/*.spec.*",
39
- "!**/*.test.*"
36
+ "!**/*.test.*",
37
+ "README.md"
40
38
  ],
41
- "scripts": {
42
- "build-tests": "tsc --noEmit --lib dom,esnext",
43
- "deploy": "echo Deploy not allowed!",
44
- "deploy3": "echo Deploy3 not allowed!",
45
- "start": "nodemon",
46
- "start-esm": "node ./dist/node/index.mjs",
47
- "test": "vitest run",
48
- "test:ci": "vitest run",
49
- "types": "tsc --noEmit -p tsconfig.test.json"
50
- },
51
39
  "dependencies": {
52
40
  "@opentelemetry/api": "^1.9.1",
53
41
  "@opentelemetry/instrumentation": "~0.214.0",
54
42
  "@opentelemetry/instrumentation-express": "~0.62.0",
55
43
  "@opentelemetry/instrumentation-http": "~0.214.0",
56
- "@xylabs/express": "~5.0.90",
57
- "@xylabs/mongo": "~5.0.90",
58
- "@xylabs/sdk-js": "~5.0.90",
59
- "@xyo-network/boundwitness-validator": "~5.3.20",
60
- "@xyo-network/chain-orchestration": "~1.20.15",
61
- "@xyo-network/chain-protocol": "~1.20.15",
62
- "@xyo-network/chain-services": "~1.20.15",
63
- "@xyo-network/sdk-js": "~5.3.20",
64
- "@xyo-network/typechain": "~4.1.2",
65
- "@xyo-network/wallet-model": "~5.3.20",
66
- "@xyo-network/xl1-sdk": "~1.26.11",
44
+ "@xylabs/mongo": "~5.0.95",
45
+ "@xylabs/sdk-js": "~5.0.95",
46
+ "@xyo-network/boundwitness-validator": "~5.3.30",
47
+ "@xyo-network/sdk-js": "~5.3.30",
48
+ "@xyo-network/typechain": "~4.1.3",
49
+ "@xyo-network/wallet-model": "~5.3.30",
50
+ "@xyo-network/xl1-sdk": "~1.26.20",
67
51
  "async-mutex": "~0.5.0",
68
- "bullmq": "~5.71.1",
52
+ "bullmq": "~5.73.0",
69
53
  "bullmq-otel": "~1.3.0",
70
54
  "ethers": "^6.16.0",
71
55
  "express": "~5.2.1",
56
+ "http-status-codes": "~2.3.0",
72
57
  "ioredis": "5.10.1",
73
58
  "mongodb": "~7.1.1",
74
59
  "uuid": "~13.0.0",
75
- "yargs-parser": "~22.0.0"
60
+ "yargs-parser": "~22.0.0",
61
+ "@xyo-network/chain-services": "~1.20.17",
62
+ "@xyo-network/chain-protocol": "~1.20.17",
63
+ "@xyo-network/chain-orchestration": "~1.20.17"
76
64
  },
77
65
  "devDependencies": {
78
- "@opentelemetry/api": "^1.9.1",
79
- "@types/node": "~25.5.0",
66
+ "@types/express": "^5.0.6",
67
+ "@types/node": "~25.5.2",
80
68
  "@types/yargs-parser": "~21.0.3",
81
- "@xylabs/mongo": "~5.0.90",
82
- "@xylabs/sdk-js": "~5.0.90",
83
- "@xylabs/ts-scripts-common": "~7.5.11",
84
- "@xylabs/ts-scripts-yarn3": "~7.5.11",
85
- "@xylabs/tsconfig": "~7.5.11",
86
- "@xylabs/vitest-extended": "~5.0.90",
87
- "@xyo-network/chain-protocol": "~1.20.15",
88
- "@xyo-network/chain-services": "~1.20.15",
89
- "@xyo-network/chain-test-helpers": "workspace:packages/test-helpers",
90
- "@xyo-network/sdk-js": "~5.3.20",
91
- "@xyo-network/xl1-sdk": "~1.26.11",
92
- "async-mutex": "~0.5.0",
93
- "axios": "~1.14.0",
94
- "dotenv": "~17.3.1",
95
- "ethers": "^6.16.0",
96
- "http-status-codes": "~2.3.0",
97
- "mongodb": "~7.1.1",
69
+ "@xylabs/express": "~5.0.95",
70
+ "@xylabs/ts-scripts-common": "~7.9.6",
71
+ "@xylabs/ts-scripts-pnpm": "~7.9.6",
72
+ "@xylabs/tsconfig": "~7.9.6",
73
+ "@xylabs/vitest-extended": "~5.0.95",
74
+ "@xylabs/vitest-matchers": "~5.0.95",
75
+ "@xyo-network/account": "~5.3.30",
76
+ "@xyo-network/account-model": "~5.3.30",
77
+ "@xyo-network/api-models": "~5.3.30",
78
+ "@xyo-network/archivist-abstract": "~5.3",
79
+ "@xyo-network/archivist-generic": "~5.3.30",
80
+ "@xyo-network/archivist-memory": "~5.3.30",
81
+ "@xyo-network/archivist-model": "~5.3",
82
+ "@xyo-network/archivist-view": "~5.3.30",
83
+ "@xyo-network/archivist-wrapper": "~5.3",
84
+ "@xyo-network/boundwitness-builder": "~5.3.30",
85
+ "@xyo-network/bridge-abstract": "~5.3.30",
86
+ "@xyo-network/bridge-model": "~5.3.30",
87
+ "@xyo-network/config-payload-plugin": "~5.3.30",
88
+ "@xyo-network/data": "~5.3.30",
89
+ "@xyo-network/diviner-abstract": "~5.3",
90
+ "@xyo-network/diviner-boundwitness-memory": "~5.3.30",
91
+ "@xyo-network/diviner-identity": "~5.3.30",
92
+ "@xyo-network/diviner-model": "~5.3.30",
93
+ "@xyo-network/diviner-payload-generic": "~5.3.30",
94
+ "@xyo-network/diviner-payload-model": "~5.3.30",
95
+ "@xyo-network/diviner-wrapper": "~5.3",
96
+ "@xyo-network/dns": "~5.3.30",
97
+ "@xyo-network/domain-payload-plugin": "~5.3.30",
98
+ "@xyo-network/elliptic": "~5.3.30",
99
+ "@xyo-network/hash": "~5.3.30",
100
+ "@xyo-network/huri": "~5.3.30",
101
+ "@xyo-network/manifest-model": "~5.3",
102
+ "@xyo-network/module-abstract": "~5.3",
103
+ "@xyo-network/module-model": "~5.3",
104
+ "@xyo-network/module-model-mongodb": "~5.3",
105
+ "@xyo-network/module-resolver": "~5.3.30",
106
+ "@xyo-network/module-wrapper": "~5.3",
107
+ "@xyo-network/network": "~5.3.30",
108
+ "@xyo-network/node-abstract": "~5.3.30",
109
+ "@xyo-network/node-memory": "~5.3.30",
110
+ "@xyo-network/node-model": "~5.3.30",
111
+ "@xyo-network/node-view": "~5.3.30",
112
+ "@xyo-network/node-wrapper": "~5.3",
113
+ "@xyo-network/payload-builder": "~5.3.30",
114
+ "@xyo-network/payload-model": "~5.3.30",
115
+ "@xyo-network/payload-validator": "~5.3.30",
116
+ "@xyo-network/previous-hash-store-model": "~5.3.30",
117
+ "@xyo-network/sentinel-abstract": "~5.3.30",
118
+ "@xyo-network/sentinel-memory": "~5.3.30",
119
+ "@xyo-network/sentinel-model": "~5.3.30",
120
+ "@xyo-network/wasm": "~5.3.30",
121
+ "@xyo-network/witness-adhoc": "~5.3.30",
122
+ "@xyo-network/witness-model": "~5.3.30",
123
+ "ajv": "^8",
124
+ "axios": "~1.15.0",
125
+ "dotenv": "~17.4.1",
126
+ "esbuild": ">=0.18",
127
+ "lmdb": "^3",
98
128
  "nodemon": "~3.1.14",
129
+ "pako": "~2.1.0",
99
130
  "tslib": "~2.8.1",
100
131
  "typescript": "~5.9.3",
101
- "vitest": "^4.1.2",
102
- "vitest-mock-extended": "~3.1.0",
103
- "zod": "~4.3.6"
132
+ "vite": "^8.0.8",
133
+ "vitest": "^4.1.4",
134
+ "vitest-mock-extended": "~4.0.0",
135
+ "zod": "~4.3.6",
136
+ "@xyo-network/chain-test-helpers": "~1.20.17",
137
+ "@xyo-network/chain-telemetry": "~1.20.17"
104
138
  },
105
139
  "peerDependencies": {
106
- "@xyo-network/sdk-js": "~5.3.2",
107
- "zod": "^4"
140
+ "@xylabs/express": "~5.0.95",
141
+ "@xyo-network/account": "~5.3.30",
142
+ "@xyo-network/account-model": "~5.3.30",
143
+ "@xyo-network/api-models": "~5.3.30",
144
+ "@xyo-network/archivist-abstract": "~5.3",
145
+ "@xyo-network/archivist-generic": "~5.3.30",
146
+ "@xyo-network/archivist-memory": "~5.3.30",
147
+ "@xyo-network/archivist-model": "~5.3",
148
+ "@xyo-network/archivist-view": "~5.3.30",
149
+ "@xyo-network/boundwitness-builder": "~5.3.30",
150
+ "@xyo-network/bridge-abstract": "~5.3.30",
151
+ "@xyo-network/bridge-model": "~5.3.30",
152
+ "@xyo-network/config-payload-plugin": "~5.3.30",
153
+ "@xyo-network/data": "~5.3.30",
154
+ "@xyo-network/diviner-boundwitness-memory": "~5.3.30",
155
+ "@xyo-network/diviner-identity": "~5.3.30",
156
+ "@xyo-network/diviner-model": "~5.3.30",
157
+ "@xyo-network/diviner-payload-generic": "~5.3.30",
158
+ "@xyo-network/diviner-payload-model": "~5.3.30",
159
+ "@xyo-network/dns": "~5.3.30",
160
+ "@xyo-network/domain-payload-plugin": "~5.3.30",
161
+ "@xyo-network/elliptic": "~5.3.30",
162
+ "@xyo-network/hash": "~5.3.30",
163
+ "@xyo-network/huri": "~5.3.30",
164
+ "@xyo-network/manifest-model": "~5.3",
165
+ "@xyo-network/module-abstract": "~5.3",
166
+ "@xyo-network/module-model": "~5.3",
167
+ "@xyo-network/module-model-mongodb": "~5.3",
168
+ "@xyo-network/module-resolver": "~5.3.30",
169
+ "@xyo-network/network": "~5.3.30",
170
+ "@xyo-network/node-abstract": "~5.3.30",
171
+ "@xyo-network/node-memory": "~5.3.30",
172
+ "@xyo-network/node-model": "~5.3.30",
173
+ "@xyo-network/node-view": "~5.3.30",
174
+ "@xyo-network/payload-builder": "~5.3.30",
175
+ "@xyo-network/payload-model": "~5.3.30",
176
+ "@xyo-network/payload-validator": "~5.3.30",
177
+ "@xyo-network/previous-hash-store-model": "~5.3.30",
178
+ "@xyo-network/sentinel-abstract": "~5.3.30",
179
+ "@xyo-network/sentinel-memory": "~5.3.30",
180
+ "@xyo-network/sentinel-model": "~5.3.30",
181
+ "@xyo-network/wasm": "~5.3.30",
182
+ "@xyo-network/witness-adhoc": "~5.3.30",
183
+ "@xyo-network/witness-model": "~5.3.30",
184
+ "pako": "~2.1.0",
185
+ "zod": "~4.3.6",
186
+ "@xyo-network/chain-telemetry": "~1.20.17"
108
187
  },
109
188
  "engines": {
110
- "node": ">=22.3 <23"
189
+ "node": ">=24"
111
190
  },
112
191
  "engineStrict": true,
113
192
  "publishConfig": {
114
193
  "access": "restricted"
194
+ },
195
+ "scripts": {
196
+ "build-tests": "tsc --noEmit --lib dom,esnext",
197
+ "deploy": "echo Deploy not allowed!",
198
+ "deploy3": "echo Deploy3 not allowed!",
199
+ "start": "nodemon",
200
+ "start-esm": "node ./dist/node/index.mjs",
201
+ "test": "vitest run",
202
+ "test:ci": "vitest run",
203
+ "types": "tsc --noEmit -p tsconfig.test.json"
115
204
  }
116
- }
205
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/healthz/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiB7C,eAAO,MAAM,UAAU,EAAE,cAAc,CAAC,WAAW,CAAW,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/healthz/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
@@ -1,51 +0,0 @@
1
- import { Server } from 'node:http'
2
-
3
- import { creatable } from '@xylabs/sdk-js'
4
- import { asBridgeConfigContext, BridgeConfig } from '@xyo-network/chain-orchestration'
5
- import {
6
- ActorParamsV3,
7
- ActorV3,
8
- XyoGatewayRunner,
9
- XyoGatewayRunnerMoniker,
10
- } from '@xyo-network/xl1-sdk'
11
-
12
- import { getServer } from './server/index.ts'
13
-
14
- export type BridgeActorParams = ActorParamsV3<{
15
- config: BridgeConfig
16
- }>
17
-
18
- @creatable()
19
- export class BridgeActor extends ActorV3<BridgeActorParams> {
20
- protected _gatewayRunner!: XyoGatewayRunner
21
- private server?: Server
22
-
23
- protected get gatewayRunner() {
24
- return this._gatewayRunner
25
- }
26
-
27
- override async createHandler() {
28
- await super.createHandler()
29
- this._gatewayRunner = await this.locator.getInstance(XyoGatewayRunnerMoniker)
30
- }
31
-
32
- override async startHandler() {
33
- await super.startHandler()
34
- this.stopServer()
35
- await this.startServer()
36
- }
37
-
38
- override async stopHandler() {
39
- await super.stopHandler()
40
- this.stopServer()
41
- }
42
-
43
- private async startServer() {
44
- this.server = await getServer(asBridgeConfigContext(this.context, true), this._gatewayRunner)
45
- }
46
-
47
- private stopServer() {
48
- this.server?.close()
49
- this.server = undefined
50
- }
51
- }
@@ -1,7 +0,0 @@
1
- import { asHex } from '@xylabs/sdk-js'
2
- import type { ChainId } from '@xyo-network/xl1-sdk'
3
-
4
- export const asChainId = (value: unknown): ChainId | undefined => {
5
- const chainId = asHex(value)
6
- return chainId
7
- }
@@ -1,7 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import { asAddress } from '@xylabs/sdk-js'
3
-
4
- export const asToken = (value: unknown): Address | undefined => {
5
- const token = asAddress(value)
6
- return token
7
- }
@@ -1,13 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import { asAddress, assertEx } from '@xylabs/sdk-js'
3
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
4
-
5
- export const tryGetBridgeEscrowAddress = (config: BridgeConfig): Address | undefined => {
6
- const address = asAddress(config.escrowAddress)
7
- return address
8
- }
9
-
10
- export const getBridgeEscrowAddress = (config: BridgeConfig): Address => {
11
- const address = assertEx(tryGetBridgeEscrowAddress(config), () => `Invalid bridge escrow address: ${config.escrowAddress}`)
12
- return address
13
- }
@@ -1,13 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import { asAddress, assertEx } from '@xylabs/sdk-js'
3
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
4
-
5
- export const tryGetBridgeFeesAddress = (config: BridgeConfig): Address | undefined => {
6
- const address = asAddress(config.feesAddress)
7
- return address
8
- }
9
-
10
- export const getBridgeFeesAddress = (config: BridgeConfig): Address => {
11
- const address = assertEx(tryGetBridgeFeesAddress(config), () => `Invalid bridge fees address: ${config.feesAddress}`)
12
- return address
13
- }
@@ -1,24 +0,0 @@
1
- import type { BridgeConfig, BridgeSettings } from '@xyo-network/chain-orchestration'
2
-
3
- import { getFeeStructure } from './getFeeStructure.ts'
4
- import { getMaxBridgeAmount } from './getMaxBridgeAmount.ts'
5
- import { getMinBridgeAmount } from './getMinBridgeAmount.ts'
6
- import { getRemoteChainId } from './getRemoteChainId.ts'
7
- import { getRemoteTokenAddress } from './getRemoteTokenAddress.ts'
8
- import { getTransferAddresses } from './getTransferAddresses.ts'
9
- import { getXl1ChainId } from './getXl1ChainId.ts'
10
- import { getXl1TokenAddress } from './getXl1TokenAddress.ts'
11
-
12
- export const getBridgeSettings = async (config: BridgeConfig): Promise<BridgeSettings> => {
13
- const { feeFixed, feeRateBasisPoints } = getFeeStructure(config)
14
- const { feesAddress, escrowAddress } = await getTransferAddresses(config)
15
- const maxBridgeAmount = getMaxBridgeAmount(config)
16
- const minBridgeAmount = getMinBridgeAmount(config)
17
- const remoteChainId = getRemoteChainId(config)
18
- const remoteTokenAddress = getRemoteTokenAddress(config)
19
- const xl1TokenAddress = getXl1TokenAddress(config)
20
- const xl1ChainId = getXl1ChainId(config)
21
- return {
22
- feeFixed, feeRateBasisPoints, feesAddress, escrowAddress, maxBridgeAmount, minBridgeAmount, remoteChainId, remoteTokenAddress, xl1TokenAddress, xl1ChainId,
23
- }
24
- }
@@ -1,37 +0,0 @@
1
- import type { Address, Promisable } from '@xylabs/sdk-js'
2
- import { isDefined, isUndefined } from '@xylabs/sdk-js'
3
- import { HDWallet } from '@xyo-network/sdk-js'
4
- import type { WalletInstance } from '@xyo-network/wallet-model'
5
- import type { ActorConfig } from '@xyo-network/xl1-sdk'
6
- import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-sdk'
7
-
8
- let accountServiceSingleton: Promisable<WalletInstance> | undefined
9
-
10
- export const getBridgeWalletAccount = async (config: ActorConfig): Promise<WalletInstance> => {
11
- if (accountServiceSingleton) return accountServiceSingleton
12
- let walletPhrase = config.mnemonic
13
- if (isUndefined(walletPhrase)) {
14
- console.log('[Bridge] No wallet mnemonic specified!')
15
- const randomMnemonic = HDWallet.generateMnemonic()
16
- console.log(`[Bridge] Using randomly generated mnemonic:
17
-
18
- ${randomMnemonic}
19
-
20
- `)
21
- walletPhrase = randomMnemonic
22
- }
23
- const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase)
24
- const account = await wallet.derivePath(ADDRESS_INDEX.XYO)
25
- accountServiceSingleton = account
26
- return accountServiceSingleton
27
- }
28
-
29
- export const getAddressOrBridgeWalletAccountAddress = async (
30
- getConfigAccount: (config: ActorConfig) => Address | undefined,
31
- config: ActorConfig,
32
- ): Promise<Address> => {
33
- const address = getConfigAccount(config)
34
- if (isDefined(address)) return address
35
- const walletAccount = await getBridgeWalletAccount(config)
36
- return walletAccount.address
37
- }
@@ -1,8 +0,0 @@
1
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
2
-
3
- import type { FeeStructure } from '../util/index.ts'
4
-
5
- export const getFeeStructure = (config: BridgeConfig): FeeStructure => {
6
- const { feeFixed, feeRateBasisPoints } = config
7
- return { feeFixed, feeRateBasisPoints }
8
- }
@@ -1,7 +0,0 @@
1
- import type { Hex } from '@xylabs/sdk-js'
2
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
3
-
4
- export const getMaxBridgeAmount = (config: BridgeConfig): Hex => {
5
- const { maxBridgeAmount } = config
6
- return maxBridgeAmount
7
- }
@@ -1,7 +0,0 @@
1
- import type { Hex } from '@xylabs/sdk-js'
2
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
3
-
4
- export const getMinBridgeAmount = (config: BridgeConfig): Hex => {
5
- const { minBridgeAmount } = config
6
- return minBridgeAmount
7
- }
@@ -1,10 +0,0 @@
1
- import { assertEx } from '@xylabs/sdk-js'
2
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
3
- import type { ChainId } from '@xyo-network/xl1-sdk'
4
-
5
- import { asChainId } from './asChainId.ts'
6
-
7
- export const getRemoteChainId = (config: BridgeConfig): ChainId => {
8
- const remoteChainId = assertEx(asChainId(config.remoteChainId), () => 'Invalid remote chain ID in config')
9
- return remoteChainId
10
- }
@@ -1,10 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import { assertEx } from '@xylabs/sdk-js'
3
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
4
-
5
- import { asToken } from './asToken.ts'
6
-
7
- export const getRemoteTokenAddress = (config: BridgeConfig): Address => {
8
- const token = asToken(config.remoteTokenAddress)
9
- return assertEx(token, () => 'Remote token address is not defined in bridge configuration')
10
- }
@@ -1,24 +0,0 @@
1
- import { assertEx, isDefined } from '@xylabs/sdk-js'
2
- import { basicRemoteRunnerLocator, type BridgeConfig } from '@xyo-network/chain-orchestration'
3
- import { HDWallet } from '@xyo-network/sdk-js'
4
- import type { XyoGatewayRunner } from '@xyo-network/xl1-sdk'
5
- import {
6
- ADDRESS_INDEX, generateXyoBaseWalletFromPhrase, HttpRpcRemoteConfigZod, XyoGatewayRunnerMoniker,
7
- } from '@xyo-network/xl1-sdk'
8
-
9
- let gatewayInstance: XyoGatewayRunner | undefined
10
-
11
- export const getTestGateway = async (config: BridgeConfig): Promise<XyoGatewayRunner> => {
12
- if (isDefined(gatewayInstance)) return gatewayInstance
13
- const { mnemonic } = config
14
- const httpRpcConfig = HttpRpcRemoteConfigZod.safeParse(config.remote?.rpc)
15
- const endpoint = assertEx(
16
- httpRpcConfig.success ? assertEx(httpRpcConfig.data.url, () => 'RPC URL is required for gateway [no httpConfig]') : undefined,
17
- () => 'RPC URL is required for gateway',
18
- )
19
- const walletPhrase = isDefined(mnemonic) ? mnemonic : HDWallet.generateMnemonic()
20
- const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase)
21
- const signerAccount = await wallet.derivePath(ADDRESS_INDEX.XYO)
22
- const locator = await basicRemoteRunnerLocator('test', { rpc: { protocol: 'http', url: endpoint } }, signerAccount)
23
- return await locator.getInstance<XyoGatewayRunner>(XyoGatewayRunnerMoniker)
24
- }
@@ -1,17 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
3
-
4
- import { tryGetBridgeEscrowAddress } from './getBridgeEscrowAddress.ts'
5
- import { tryGetBridgeFeesAddress } from './getBridgeFeesAddress.ts'
6
- import { getBridgeWalletAccount } from './getBridgeWalletAccount.ts'
7
-
8
- export interface TransferAddresses {
9
- escrowAddress: Address
10
- feesAddress: Address
11
- }
12
-
13
- export const getTransferAddresses = async (config: BridgeConfig): Promise<TransferAddresses> => {
14
- const escrowAddress = tryGetBridgeEscrowAddress(config) ?? (await getBridgeWalletAccount(config)).address
15
- const feesAddress = tryGetBridgeFeesAddress(config) ?? (await getBridgeWalletAccount(config)).address
16
- return { escrowAddress, feesAddress }
17
- }
@@ -1,13 +0,0 @@
1
- import { assertEx, isDefined } from '@xylabs/sdk-js'
2
- import type { BridgeConfig } from '@xyo-network/chain-orchestration'
3
- import type { ChainId } from '@xyo-network/xl1-sdk'
4
-
5
- import { asChainId } from './asChainId.ts'
6
-
7
- export const getXl1ChainId = (config: BridgeConfig): ChainId => {
8
- const xl1ChainId = config.xl1ChainId
9
- if (isDefined(xl1ChainId)) {
10
- return assertEx(asChainId(xl1ChainId), () => 'Invalid xl1ChainId in bridge config')
11
- }
12
- return assertEx(asChainId(config.chain.id), () => 'Invalid chain.id in config')
13
- }