@xyo-network/chain-bridge 1.19.15 → 1.19.16
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/dist/node/index.mjs +115 -80
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/interface/service/Relay/LiquidityPoolBridgeRelay/LiquidityPoolBridgeRelay.d.ts +1 -1
- package/dist/node/interface/service/Relay/LiquidityPoolBridgeRelay/LiquidityPoolBridgeRelay.d.ts.map +1 -1
- package/dist/node/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.d.ts +1 -2
- package/dist/node/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.d.ts.map +1 -1
- package/dist/node/modules/XL1TransactionCompletionMonitorSentinel/XL1TransactionCompletionMonitorSentinel.d.ts +1 -2
- package/dist/node/modules/XL1TransactionCompletionMonitorSentinel/XL1TransactionCompletionMonitorSentinel.d.ts.map +1 -1
- package/dist/node/queue/workers/EthTransactionPreparation.d.ts.map +1 -1
- package/dist/node/queue/workers/util/index.d.ts +2 -0
- package/dist/node/queue/workers/util/index.d.ts.map +1 -1
- package/dist/node/queue/workers/util/validateSufficientAllowance.d.ts +19 -0
- package/dist/node/queue/workers/util/validateSufficientAllowance.d.ts.map +1 -0
- package/dist/node/queue/workers/util/validateSufficientBalance.d.ts +19 -0
- package/dist/node/queue/workers/util/validateSufficientBalance.d.ts.map +1 -0
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.d.ts +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.d.ts +1 -1
- package/package.json +40 -43
- package/src/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.ts +2 -3
- package/src/modules/XL1TransactionCompletionMonitorSentinel/XL1TransactionCompletionMonitorSentinel.ts +2 -3
- package/src/queue/workers/EthTransactionPreparation.ts +12 -0
- package/src/queue/workers/util/index.ts +2 -0
- package/src/queue/workers/util/validateSufficientAllowance.ts +38 -0
- package/src/queue/workers/util/validateSufficientBalance.ts +37 -0
- package/src/server/index.ts +1 -1
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts +1 -1
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts +3 -2
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts +1 -1
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts +1 -1
package/dist/node/interface/service/Relay/LiquidityPoolBridgeRelay/LiquidityPoolBridgeRelay.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export declare class LiquidityPoolBridgeRelay<TParams extends LiquidityPoolBridg
|
|
|
22
22
|
protected _bridgeRemoteChainId: Hex | undefined;
|
|
23
23
|
protected _bridgeTokenAddress: Address | undefined;
|
|
24
24
|
protected _wallet: Wallet | undefined;
|
|
25
|
-
protected get account(): import("@xyo-network/
|
|
25
|
+
protected get account(): import("@xyo-network/sdk-js").AccountInstance;
|
|
26
26
|
protected get bridge(): LiquidityPoolBridge;
|
|
27
27
|
protected get bridgeChainId(): Hex;
|
|
28
28
|
protected get bridgeRemoteChainId(): Hex;
|
package/dist/node/interface/service/Relay/LiquidityPoolBridgeRelay/LiquidityPoolBridgeRelay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiquidityPoolBridgeRelay.d.ts","sourceRoot":"","sources":["../../../../../../src/interface/service/Relay/LiquidityPoolBridgeRelay/LiquidityPoolBridgeRelay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAMlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EACL,KAAK,4BAA4B,EAAsC,KAAK,YAAY,EACzF,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAc,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE3C,OAAO,KAAK,EACV,4CAA4C,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,uCAAuC,EACxI,yBAAyB,EAAE,qCAAqC,EAAE,uCAAuC,EAC1G,MAAM,6BAA6B,CAAA;AAEpC,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,GAAG;IACjE;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,QAAQ,EAAE,iBAAiB,CAAA;CAC5B,CAAA;AAED,qBAAa,wBAAwB,CAAC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,CACnH,SAAQ,yBAAyB,CAAC,OAAO,CAAE,YAAW,yBAAyB;IAC/E,OAAO,SAA6B;IACpC,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAA;IAClD,SAAS,CAAC,cAAc,EAAE,GAAG,GAAG,SAAS,CAAA;IACzC,SAAS,CAAC,oBAAoB,EAAE,GAAG,GAAG,SAAS,CAAA;IAC/C,SAAS,CAAC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAA;IAClD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAErC,SAAS,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"LiquidityPoolBridgeRelay.d.ts","sourceRoot":"","sources":["../../../../../../src/interface/service/Relay/LiquidityPoolBridgeRelay/LiquidityPoolBridgeRelay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAMlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EACL,KAAK,4BAA4B,EAAsC,KAAK,YAAY,EACzF,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAc,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE3C,OAAO,KAAK,EACV,4CAA4C,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,uCAAuC,EACxI,yBAAyB,EAAE,qCAAqC,EAAE,uCAAuC,EAC1G,MAAM,6BAA6B,CAAA;AAEpC,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,GAAG;IACjE;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,QAAQ,EAAE,iBAAiB,CAAA;CAC5B,CAAA;AAED,qBAAa,wBAAwB,CAAC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,CACnH,SAAQ,yBAAyB,CAAC,OAAO,CAAE,YAAW,yBAAyB;IAC/E,OAAO,SAA6B;IACpC,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAA;IAClD,SAAS,CAAC,cAAc,EAAE,GAAG,GAAG,SAAS,CAAA;IACzC,SAAS,CAAC,oBAAoB,EAAE,GAAG,GAAG,SAAS,CAAA;IAC/C,SAAS,CAAC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAA;IAClD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAErC,SAAS,KAAK,OAAO,kDAEpB;IAED,SAAS,KAAK,MAAM,IAAI,mBAAmB,CAE1C;IAED,SAAS,KAAK,aAAa,IAAI,GAAG,CAEjC;IAED,SAAS,KAAK,mBAAmB,IAAI,GAAG,CAEvC;IAED,SAAS,KAAK,kBAAkB,IAAI,OAAO,CAE1C;IAED,SAAS,KAAK,uBAAuB,IAAI,4CAA4C,CAEpF;IAED,SAAS,KAAK,gBAAgB,IAAI,yBAAyB,CAE1D;IAED,SAAS,KAAK,eAAe,IAAI,qCAAqC,CAErE;IAED,SAAS,KAAK,gBAAgB,IAAI,uCAAuC,CAExE;IAED,SAAS,KAAK,oBAAoB,IAAI,4BAA4B,CAEjE;IAED,SAAS,KAAK,QAAQ,IAAI,iBAAiB,CAE1C;IAED,SAAS,KAAK,kBAAkB,IAAI,uCAAuC,CAE1E;IAED,SAAS,KAAK,MAAM,IAAI,MAAM,CAE7B;IAED;;;;OAIG;IACG,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB/C,aAAa;IAwC5B;;;;OAIG;IACG,wBAAwB,CAAC,4BAA4B,EAAE,4BAA4B,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB5G;;;;OAIG;IACG,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC;CAkC1F"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Attributes, Counter } from '@opentelemetry/api';
|
|
2
2
|
import type { Address, Hash, Hex } from '@xylabs/sdk-js';
|
|
3
|
-
import type { AnyConfigSchema } from '@xyo-network/
|
|
4
|
-
import { type Payload } from '@xyo-network/payload-model';
|
|
3
|
+
import type { AnyConfigSchema, Payload } from '@xyo-network/sdk-js';
|
|
5
4
|
import { AbstractSentinel } from '@xyo-network/sentinel-abstract';
|
|
6
5
|
import type { SentinelConfig, SentinelInstance, SentinelModuleEventData, SentinelParams } from '@xyo-network/sentinel-model';
|
|
7
6
|
import { type LiquidityPoolBridge } from '@xyo-network/typechain';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EVMLiquidityBridgeTransactionCompletionMonitorSentinel.d.ts","sourceRoot":"","sources":["../../../../src/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EAAE,GAAG,EACnB,MAAM,gBAAgB,CAAA;AAIvB,OAAO,KAAK,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"EVMLiquidityBridgeTransactionCompletionMonitorSentinel.d.ts","sourceRoot":"","sources":["../../../../src/modules/EVMLiquidityBridgeTransactionCompletionMonitorSentinel/EVMLiquidityBridgeTransactionCompletionMonitorSentinel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Hash } from '@xylabs/sdk-js';
|
|
2
|
-
import type { AnyConfigSchema } from '@xyo-network/
|
|
3
|
-
import { type Payload } from '@xyo-network/payload-model';
|
|
2
|
+
import type { AnyConfigSchema, Payload } from '@xyo-network/sdk-js';
|
|
4
3
|
import { AbstractSentinel } from '@xyo-network/sentinel-abstract';
|
|
5
4
|
import type { SentinelConfig, SentinelInstance, SentinelModuleEventData, SentinelParams } from '@xyo-network/sentinel-model';
|
|
6
5
|
import type { IterableMap, MapType, SignedHydratedTransaction, XyoViewer } from '@xyo-network/xl1-sdk';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XL1TransactionCompletionMonitorSentinel.d.ts","sourceRoot":"","sources":["../../../../src/modules/XL1TransactionCompletionMonitorSentinel/XL1TransactionCompletionMonitorSentinel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAI1C,OAAO,KAAK,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"XL1TransactionCompletionMonitorSentinel.d.ts","sourceRoot":"","sources":["../../../../src/modules/XL1TransactionCompletionMonitorSentinel/XL1TransactionCompletionMonitorSentinel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAI1C,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EACV,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,cAAc,EAC1E,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EACV,WAAW,EAAE,OAAO,EAAE,yBAAyB,EAC/C,SAAS,EACV,MAAM,sBAAsB,CAAA;AAM7B,eAAO,MAAM,mDAAmD;;CAAqF,CAAA;AACrJ,MAAM,MAAM,mDAAmD,GAAG,OAAO,mDAAmD,CAAA;AAE5H;;GAEG;AACH,MAAM,MAAM,6CAA6C,GAAG,cAAc,CAAC;IACzE;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,MAAM,EAAE,mDAAmD,CAAA;CAC5D,CAAC,CAAA;AAEF,UAAU,kDAAkD;IAC1D;;OAEG;IACH,qBAAqB,EAAE,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAA;IAE/D;;OAEG;IACH,mBAAmB,EAAE,WAAW,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAA;IAEjE;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,MAAM,6CAA6C,CACvD,OAAO,SAAS,eAAe,CAAC,6CAA6C,CAAC,GAAG,eAAe,CAAC,6CAA6C,CAAC,IAC7I,cAAc,CAAC,OAAO,CAAC,GAAG,kDAAkD,CAAA;AAIhF,qBAAa,uCAAuC,CAClD,OAAO,SAAS,6CAA6C,GAAG,6CAA6C,EAC7G,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAC1H,SAAQ,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7C,gBAAyB,aAAa;;SAAwD;IAC9F,gBAAyB,mBAAmB;;MAAsD;IAClG,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,eAAe,CAAiC;IAExD,SAAS,KAAK,qBAAqB,IAAI,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAE9E;IAED,SAAS,KAAK,gBAAgB,IAAI,MAAM,CAEvC;IAED,SAAS,KAAK,mBAAmB,IAAI,WAAW,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAEhF;IAED,SAAS,KAAK,MAAM,IAAI,SAAS,CAEhC;IAEc,aAAa;IASb,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YA0BxD,sBAAsB;YAUtB,kBAAkB;CA8BjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EthTransactionPreparation.d.ts","sourceRoot":"","sources":["../../../../src/queue/workers/EthTransactionPreparation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"EthTransactionPreparation.d.ts","sourceRoot":"","sources":["../../../../src/queue/workers/EthTransactionPreparation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAS/D,eAAO,MAAM,YAAY,GAAI,YAAY,KAAK,EAAE,WAAW,wBAAwB,SA6ClF,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,iBAEvC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/queue/workers/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/queue/workers/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,gCAAgC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js';
|
|
2
|
+
import type { BridgeableToken, LiquidityPoolBridge } from '@xyo-network/typechain';
|
|
3
|
+
import { type SignedHydratedTransaction } from '@xyo-network/xl1-sdk';
|
|
4
|
+
interface IAsyncLogger {
|
|
5
|
+
log: (message: string) => Promisable<unknown>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Checks if the liquidity source has sufficient allowance for the bridge to execute the transaction. This doesn't
|
|
9
|
+
* ensure that (due to race conditions) the transaction will succeed, but is a quick check to avoid
|
|
10
|
+
* submitting transactions that are likely to fail.
|
|
11
|
+
* @param tx The transaction containing a bridge intent
|
|
12
|
+
* @param bridgeableToken The contract for the token being bridged
|
|
13
|
+
* @param bridge The contract for the liquidity bridge
|
|
14
|
+
* @param logger Optional logger for asynchronous logging
|
|
15
|
+
* @returns True if the liquidity source allowance is sufficient to execute the bridge
|
|
16
|
+
*/
|
|
17
|
+
export declare const validateSufficientAllowance: (tx: SignedHydratedTransaction, bridgeableToken: BridgeableToken, bridge: LiquidityPoolBridge, logger?: IAsyncLogger) => Promise<boolean>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=validateSufficientAllowance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSufficientAllowance.d.ts","sourceRoot":"","sources":["../../../../../src/queue/workers/util/validateSufficientAllowance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAkB,KAAK,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAErF,UAAU,YAAY;IACpB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,CAAA;CAC9C;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,GACtC,IAAI,yBAAyB,EAC7B,iBAAiB,eAAe,EAChC,QAAQ,mBAAmB,EAC3B,SAAS,YAAY,qBActB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js';
|
|
2
|
+
import type { BridgeableToken, LiquidityPoolBridge } from '@xyo-network/typechain';
|
|
3
|
+
import { type SignedHydratedTransaction } from '@xyo-network/xl1-sdk';
|
|
4
|
+
interface IAsyncLogger {
|
|
5
|
+
log: (message: string) => Promisable<unknown>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Checks if the liquidity source has sufficient balance for the bridge to execute the transaction. This doesn't
|
|
9
|
+
* ensure that (due to race conditions) the transaction will succeed, but is a quick check to avoid
|
|
10
|
+
* submitting transactions that are likely to fail.
|
|
11
|
+
* @param tx The transaction containing a bridge intent
|
|
12
|
+
* @param bridgeableToken The contract for the token being bridged
|
|
13
|
+
* @param bridge The contract for the liquidity bridge
|
|
14
|
+
* @param logger Optional logger for asynchronous logging
|
|
15
|
+
* @returns True if the liquidity source balance is sufficient to execute the bridge
|
|
16
|
+
*/
|
|
17
|
+
export declare const validateSufficientBalance: (tx: SignedHydratedTransaction, bridgeableToken: BridgeableToken, bridge: LiquidityPoolBridge, logger?: IAsyncLogger) => Promise<boolean>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=validateSufficientBalance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSufficientBalance.d.ts","sourceRoot":"","sources":["../../../../../src/queue/workers/util/validateSufficientBalance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAkB,KAAK,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAErF,UAAU,YAAY;IACpB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,CAAA;CAC9C;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GACpC,IAAI,yBAAyB,EAC7B,iBAAiB,eAAe,EAChC,QAAQ,mBAAmB,EAC3B,SAAS,YAAY,qBAatB,CAAA"}
|
|
@@ -11,7 +11,7 @@ export declare const BridgeToRemoteBodyZod: z.ZodTuple<[z.ZodObject<{
|
|
|
11
11
|
readonly __address: true;
|
|
12
12
|
}, string>>>;
|
|
13
13
|
payload_hashes: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHash, string>>>;
|
|
14
|
-
payload_schemas: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xyo-network/
|
|
14
|
+
payload_schemas: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xyo-network/sdk-js").BrandedSchema<string>, string>>>;
|
|
15
15
|
previous_hashes: z.ZodArray<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/hex").BrandedHash, string>>>>;
|
|
16
16
|
$destination: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<Lowercase<string> & {
|
|
17
17
|
readonly __hex: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeToRemote.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"bridgeToRemote.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAUpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAIhC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEtE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;kBAAyG,CAAA;AAC/I,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE9E,eAAO,MAAM,uBAAuB,GAAI,QAAQ,YAAY,KAAG,eA4C9D,CAAA"}
|
|
@@ -18,7 +18,7 @@ export declare const BridgeToRemoteEstimateResponseZod: z.ZodTuple<[z.ZodObject<
|
|
|
18
18
|
readonly __address: true;
|
|
19
19
|
}, string>>>;
|
|
20
20
|
payload_hashes: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>>;
|
|
21
|
-
payload_schemas: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xyo-network/
|
|
21
|
+
payload_schemas: z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xyo-network/sdk-js").BrandedSchema<string>, string>>>;
|
|
22
22
|
previous_hashes: z.ZodArray<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>>>;
|
|
23
23
|
$destination: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<Lowercase<string> & {
|
|
24
24
|
readonly __hex: true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/chain-bridge",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.16",
|
|
4
4
|
"description": "XYO Layer One Bridge",
|
|
5
5
|
"homepage": "https://xylabs.com",
|
|
6
6
|
"bugs": {
|
|
@@ -50,23 +50,22 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@opentelemetry/instrumentation": "~0.212.0",
|
|
53
|
-
"@opentelemetry/instrumentation-express": "~0.
|
|
53
|
+
"@opentelemetry/instrumentation-express": "~0.60.0",
|
|
54
54
|
"@opentelemetry/instrumentation-http": "~0.212.0",
|
|
55
|
-
"@xylabs/express": "~5.0.
|
|
56
|
-
"@xylabs/mongo": "~5.0.
|
|
57
|
-
"@xylabs/sdk-js": "~5.0.
|
|
58
|
-
"@xyo-network/boundwitness-validator": "~5.3.
|
|
59
|
-
"@xyo-network/chain-orchestration": "~1.19.
|
|
60
|
-
"@xyo-network/chain-protocol": "~1.19.
|
|
61
|
-
"@xyo-network/chain-services": "~1.19.
|
|
62
|
-
"@xyo-network/
|
|
63
|
-
"@xyo-network/
|
|
64
|
-
"@xyo-network/sentinel-
|
|
65
|
-
"@xyo-network/sentinel-model": "~5.3.5",
|
|
55
|
+
"@xylabs/express": "~5.0.80",
|
|
56
|
+
"@xylabs/mongo": "~5.0.80",
|
|
57
|
+
"@xylabs/sdk-js": "~5.0.80",
|
|
58
|
+
"@xyo-network/boundwitness-validator": "~5.3.7",
|
|
59
|
+
"@xyo-network/chain-orchestration": "~1.19.16",
|
|
60
|
+
"@xyo-network/chain-protocol": "~1.19.16",
|
|
61
|
+
"@xyo-network/chain-services": "~1.19.16",
|
|
62
|
+
"@xyo-network/sdk-js": "~5.3.7",
|
|
63
|
+
"@xyo-network/sentinel-abstract": "~5.3.7",
|
|
64
|
+
"@xyo-network/sentinel-model": "~5.3.7",
|
|
66
65
|
"@xyo-network/typechain": "~4.1.1",
|
|
67
|
-
"@xyo-network/wallet": "~5.3.
|
|
68
|
-
"@xyo-network/wallet-model": "~5.3.
|
|
69
|
-
"@xyo-network/xl1-sdk": "~1.24.
|
|
66
|
+
"@xyo-network/wallet": "~5.3.7",
|
|
67
|
+
"@xyo-network/wallet-model": "~5.3.7",
|
|
68
|
+
"@xyo-network/xl1-sdk": "~1.24.24",
|
|
70
69
|
"async-mutex": "~0.5.0",
|
|
71
70
|
"bullmq": "~5.69.3",
|
|
72
71
|
"compression": "~1.8.1",
|
|
@@ -83,36 +82,34 @@
|
|
|
83
82
|
"@types/cors": "~2.8.19",
|
|
84
83
|
"@types/express": "5.0.6",
|
|
85
84
|
"@types/express-serve-static-core": "~5.1.1",
|
|
86
|
-
"@types/node": "~25.
|
|
87
|
-
"@xylabs/axios": "~5.0.
|
|
88
|
-
"@xylabs/mongo": "~5.0.
|
|
89
|
-
"@xylabs/sdk-js": "~5.0.
|
|
85
|
+
"@types/node": "~25.3.0",
|
|
86
|
+
"@xylabs/axios": "~5.0.80",
|
|
87
|
+
"@xylabs/mongo": "~5.0.80",
|
|
88
|
+
"@xylabs/sdk-js": "~5.0.80",
|
|
90
89
|
"@xylabs/ts-scripts-yarn3": "~7.3.2",
|
|
91
90
|
"@xylabs/tsconfig": "~7.3.2",
|
|
92
|
-
"@xylabs/vitest-extended": "~5.0.
|
|
93
|
-
"@xyo-network/account": "~5.3.
|
|
94
|
-
"@xyo-network/account-model": "~5.3.
|
|
95
|
-
"@xyo-network/archivist-abstract": "~5.3.
|
|
96
|
-
"@xyo-network/archivist-memory": "~5.3.
|
|
97
|
-
"@xyo-network/archivist-
|
|
98
|
-
"@xyo-network/archivist-
|
|
99
|
-
"@xyo-network/archivist-view": "~5.3.5",
|
|
91
|
+
"@xylabs/vitest-extended": "~5.0.80",
|
|
92
|
+
"@xyo-network/account": "~5.3.7",
|
|
93
|
+
"@xyo-network/account-model": "~5.3.7",
|
|
94
|
+
"@xyo-network/archivist-abstract": "~5.3.7",
|
|
95
|
+
"@xyo-network/archivist-memory": "~5.3.7",
|
|
96
|
+
"@xyo-network/archivist-mongodb": "~5.3.7",
|
|
97
|
+
"@xyo-network/archivist-view": "~5.3.7",
|
|
100
98
|
"@xyo-network/bios": "~7.2.1",
|
|
101
99
|
"@xyo-network/bios-model": "~7.2.1",
|
|
102
|
-
"@xyo-network/boundwitness-builder": "~5.3.
|
|
103
|
-
"@xyo-network/chain-protocol": "~1.19.
|
|
104
|
-
"@xyo-network/chain-services": "~1.19.
|
|
105
|
-
"@xyo-network/chain-telemetry": "~1.19.
|
|
106
|
-
"@xyo-network/manifest-wrapper": "~5.3.
|
|
107
|
-
"@xyo-network/module-abstract": "~5.3.
|
|
108
|
-
"@xyo-network/module-abstract-mongodb": "~5.3.
|
|
109
|
-
"@xyo-network/
|
|
110
|
-
"@xyo-network/
|
|
111
|
-
"@xyo-network/
|
|
112
|
-
"@xyo-network/
|
|
113
|
-
"@xyo-network/
|
|
114
|
-
"@xyo-network/
|
|
115
|
-
"@xyo-network/xl1-sdk": "~1.24.15",
|
|
100
|
+
"@xyo-network/boundwitness-builder": "~5.3.7",
|
|
101
|
+
"@xyo-network/chain-protocol": "~1.19.16",
|
|
102
|
+
"@xyo-network/chain-services": "~1.19.16",
|
|
103
|
+
"@xyo-network/chain-telemetry": "~1.19.16",
|
|
104
|
+
"@xyo-network/manifest-wrapper": "~5.3.7",
|
|
105
|
+
"@xyo-network/module-abstract": "~5.3.7",
|
|
106
|
+
"@xyo-network/module-abstract-mongodb": "~5.3.7",
|
|
107
|
+
"@xyo-network/node-memory": "~5.3.7",
|
|
108
|
+
"@xyo-network/payload-builder": "~5.3.7",
|
|
109
|
+
"@xyo-network/sdk-js": "~5.3.7",
|
|
110
|
+
"@xyo-network/sentinel-memory": "~5.3.7",
|
|
111
|
+
"@xyo-network/wallet": "~5.3.7",
|
|
112
|
+
"@xyo-network/xl1-sdk": "~1.24.24",
|
|
116
113
|
"async-mutex": "~0.5.0",
|
|
117
114
|
"axios": "~1.13.5",
|
|
118
115
|
"dotenv": "~17.3.1",
|
|
@@ -120,7 +117,7 @@
|
|
|
120
117
|
"ethers": "^6.16.0",
|
|
121
118
|
"http-status-codes": "~2.3.0",
|
|
122
119
|
"mongodb": "~7.1.0",
|
|
123
|
-
"nodemon": "~3.1.
|
|
120
|
+
"nodemon": "~3.1.13",
|
|
124
121
|
"tslib": "~2.8.1",
|
|
125
122
|
"typescript": "~5.9.3",
|
|
126
123
|
"vitest": "~4.0.18",
|
|
@@ -5,9 +5,8 @@ import type {
|
|
|
5
5
|
import {
|
|
6
6
|
asAddress, asHex, assertEx, delay, hexFromBigInt, hexToBigInt, isDefined, isUndefined,
|
|
7
7
|
} from '@xylabs/sdk-js'
|
|
8
|
-
import type { AnyConfigSchema } from '@xyo-network/
|
|
9
|
-
import { asSchema,
|
|
10
|
-
import { PayloadBuilder } from '@xyo-network/sdk-js'
|
|
8
|
+
import type { AnyConfigSchema, Payload } from '@xyo-network/sdk-js'
|
|
9
|
+
import { asSchema, PayloadBuilder } from '@xyo-network/sdk-js'
|
|
11
10
|
import { AbstractSentinel } from '@xyo-network/sentinel-abstract'
|
|
12
11
|
import type {
|
|
13
12
|
SentinelConfig, SentinelInstance, SentinelModuleEventData, SentinelParams,
|
|
@@ -3,9 +3,8 @@ import type { Hash } from '@xylabs/sdk-js'
|
|
|
3
3
|
import {
|
|
4
4
|
assertEx, delay, isDefined, isNull, isUndefined,
|
|
5
5
|
} from '@xylabs/sdk-js'
|
|
6
|
-
import type { AnyConfigSchema } from '@xyo-network/
|
|
7
|
-
import { asSchema,
|
|
8
|
-
import { PayloadBuilder } from '@xyo-network/sdk-js'
|
|
6
|
+
import type { AnyConfigSchema, Payload } from '@xyo-network/sdk-js'
|
|
7
|
+
import { asSchema, PayloadBuilder } from '@xyo-network/sdk-js'
|
|
9
8
|
import { AbstractSentinel } from '@xyo-network/sentinel-abstract'
|
|
10
9
|
import type {
|
|
11
10
|
SentinelConfig, SentinelInstance, SentinelModuleEventData, SentinelParams,
|
|
@@ -7,6 +7,7 @@ import { getAddress } from 'ethers'
|
|
|
7
7
|
import type { Redis } from 'ioredis'
|
|
8
8
|
|
|
9
9
|
import type { IBridgeServiceCollection } from '../../services/index.ts'
|
|
10
|
+
import { validateSufficientAllowance, validateSufficientBalance } from './util/index.ts'
|
|
10
11
|
import type { WorkerDescription } from './WorkerDescription.ts'
|
|
11
12
|
|
|
12
13
|
type JobData = { tx: SignedHydratedTransaction }
|
|
@@ -18,6 +19,7 @@ const queueName = 'eth-tx-prepare'
|
|
|
18
19
|
|
|
19
20
|
export const createWorker = (connection: Redis, services?: IBridgeServiceCollection) => {
|
|
20
21
|
const bridge = assertEx(services?.bridge, () => 'bridge service not provided')
|
|
22
|
+
const bridgeableToken = assertEx(services?.bridgeableToken, () => 'bridgeableToken service not provided')
|
|
21
23
|
const stateMap = assertEx(services?.ethTxStateMap, () => 'ethTxStateMap service not provided')
|
|
22
24
|
|
|
23
25
|
const worker = new Worker(
|
|
@@ -26,6 +28,16 @@ export const createWorker = (connection: Redis, services?: IBridgeServiceCollect
|
|
|
26
28
|
const { tx } = job.data
|
|
27
29
|
const hash = await PayloadBuilder.hash(tx[0])
|
|
28
30
|
await job.log(`[${hash}] preparing ETH transaction`)
|
|
31
|
+
await job.log(`[${hash}] validating liquiditySource has sufficient allowance`)
|
|
32
|
+
if (!await validateSufficientAllowance(tx, bridgeableToken, bridge, job)) {
|
|
33
|
+
throw new Error('Liquidity source does not have sufficient allowance for the bridge to execute the transaction')
|
|
34
|
+
}
|
|
35
|
+
await job.log(`[${hash}] validated liquiditySource has sufficient allowance`)
|
|
36
|
+
await job.log(`[${hash}] validating liquiditySource has sufficient balance`)
|
|
37
|
+
if (!await validateSufficientBalance(tx, bridgeableToken, bridge, job)) {
|
|
38
|
+
throw new Error('Liquidity source does not have sufficient balance for the bridge to execute the transaction')
|
|
39
|
+
}
|
|
40
|
+
await job.log(`[${hash}] validated liquiditySource has sufficient balance`)
|
|
29
41
|
await job.log(`[${hash}] building ETH transaction`)
|
|
30
42
|
const bridgeIntent = assertEx(tx[1].find(isBridgeIntent), () => 'No bridge intent found')
|
|
31
43
|
const amount = hexToBigInt(bridgeIntent.destAmount)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import { assertEx, hexToBigInt } from '@xylabs/sdk-js'
|
|
3
|
+
import type { BridgeableToken, LiquidityPoolBridge } from '@xyo-network/typechain'
|
|
4
|
+
import { isBridgeIntent, type SignedHydratedTransaction } from '@xyo-network/xl1-sdk'
|
|
5
|
+
|
|
6
|
+
interface IAsyncLogger {
|
|
7
|
+
log: (message: string) => Promisable<unknown>
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Checks if the liquidity source has sufficient allowance for the bridge to execute the transaction. This doesn't
|
|
12
|
+
* ensure that (due to race conditions) the transaction will succeed, but is a quick check to avoid
|
|
13
|
+
* submitting transactions that are likely to fail.
|
|
14
|
+
* @param tx The transaction containing a bridge intent
|
|
15
|
+
* @param bridgeableToken The contract for the token being bridged
|
|
16
|
+
* @param bridge The contract for the liquidity bridge
|
|
17
|
+
* @param logger Optional logger for asynchronous logging
|
|
18
|
+
* @returns True if the liquidity source allowance is sufficient to execute the bridge
|
|
19
|
+
*/
|
|
20
|
+
export const validateSufficientAllowance = async (
|
|
21
|
+
tx: SignedHydratedTransaction,
|
|
22
|
+
bridgeableToken: BridgeableToken,
|
|
23
|
+
bridge: LiquidityPoolBridge,
|
|
24
|
+
logger?: IAsyncLogger,
|
|
25
|
+
) => {
|
|
26
|
+
// Get the amount being bridged from the bridge intent
|
|
27
|
+
const bridgeIntent = assertEx(tx[1].find(isBridgeIntent), () => 'No bridge intent found')
|
|
28
|
+
const amount = hexToBigInt(bridgeIntent.destAmount)
|
|
29
|
+
|
|
30
|
+
// Get the addresses
|
|
31
|
+
const liquiditySourceAddress = await bridge.liquiditySource()
|
|
32
|
+
const bridgeAddress = await bridge.getAddress()
|
|
33
|
+
|
|
34
|
+
// Check the allowance of the liquidity source for the bridge
|
|
35
|
+
const remainingAllowance = await bridgeableToken.allowance(liquiditySourceAddress, bridgeAddress)
|
|
36
|
+
await logger?.log(`Remaining allowance: ${remainingAllowance.toString()}`)
|
|
37
|
+
return remainingAllowance >= amount
|
|
38
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import { assertEx, hexToBigInt } from '@xylabs/sdk-js'
|
|
3
|
+
import type { BridgeableToken, LiquidityPoolBridge } from '@xyo-network/typechain'
|
|
4
|
+
import { isBridgeIntent, type SignedHydratedTransaction } from '@xyo-network/xl1-sdk'
|
|
5
|
+
|
|
6
|
+
interface IAsyncLogger {
|
|
7
|
+
log: (message: string) => Promisable<unknown>
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Checks if the liquidity source has sufficient balance for the bridge to execute the transaction. This doesn't
|
|
12
|
+
* ensure that (due to race conditions) the transaction will succeed, but is a quick check to avoid
|
|
13
|
+
* submitting transactions that are likely to fail.
|
|
14
|
+
* @param tx The transaction containing a bridge intent
|
|
15
|
+
* @param bridgeableToken The contract for the token being bridged
|
|
16
|
+
* @param bridge The contract for the liquidity bridge
|
|
17
|
+
* @param logger Optional logger for asynchronous logging
|
|
18
|
+
* @returns True if the liquidity source balance is sufficient to execute the bridge
|
|
19
|
+
*/
|
|
20
|
+
export const validateSufficientBalance = async (
|
|
21
|
+
tx: SignedHydratedTransaction,
|
|
22
|
+
bridgeableToken: BridgeableToken,
|
|
23
|
+
bridge: LiquidityPoolBridge,
|
|
24
|
+
logger?: IAsyncLogger,
|
|
25
|
+
) => {
|
|
26
|
+
// Get the amount being bridged from the bridge intent
|
|
27
|
+
const bridgeIntent = assertEx(tx[1].find(isBridgeIntent), () => 'No bridge intent found')
|
|
28
|
+
const amount = hexToBigInt(bridgeIntent.destAmount)
|
|
29
|
+
|
|
30
|
+
// Get the addresses
|
|
31
|
+
const liquiditySourceAddress = await bridge.liquiditySource()
|
|
32
|
+
|
|
33
|
+
// Check the balance of the liquidity source for the bridge
|
|
34
|
+
const balance = await bridgeableToken.balanceOf(liquiditySourceAddress)
|
|
35
|
+
await logger?.log(`Remaining balance: ${balance.toString()}`)
|
|
36
|
+
return balance >= amount
|
|
37
|
+
}
|
package/src/server/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './app.ts'
|
|
2
2
|
export * from './server.ts'
|
|
3
3
|
|
|
4
|
-
// import type { NodeInstance } from '@xyo-network/
|
|
4
|
+
// import type { NodeInstance } from '@xyo-network/sdk-js'
|
|
5
5
|
import type { FlowProducer } from 'bullmq'
|
|
6
6
|
|
|
7
7
|
// import type { IBridgeServiceCollection } from '../services/index.ts'
|
|
@@ -2,7 +2,7 @@ import type { RouteDefinition } from '@xylabs/express'
|
|
|
2
2
|
import { requestHandlerValidator } from '@xylabs/express'
|
|
3
3
|
import { toAddress, toHex } from '@xylabs/sdk-js'
|
|
4
4
|
import type { BridgeConfig } from '@xyo-network/chain-orchestration'
|
|
5
|
-
import { PayloadZodStrictOfSchema } from '@xyo-network/
|
|
5
|
+
import { PayloadZodStrictOfSchema } from '@xyo-network/sdk-js'
|
|
6
6
|
import type { BridgeDestinationObservation } from '@xyo-network/xl1-sdk'
|
|
7
7
|
import {
|
|
8
8
|
BridgeDestinationObservationFieldsZod,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { RouteDefinition } from '@xylabs/express'
|
|
2
2
|
import { requestHandlerValidator } from '@xylabs/express'
|
|
3
3
|
import type { BridgeConfig } from '@xyo-network/chain-orchestration'
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import {
|
|
5
|
+
PayloadBuilder, PayloadZodLooseOfSchema, PayloadZodStrictOfSchema,
|
|
6
|
+
} from '@xyo-network/sdk-js'
|
|
6
7
|
import type {
|
|
7
8
|
BridgeSourceObservation, BridgeSourceObservationFields, SignedHydratedTransaction,
|
|
8
9
|
} from '@xyo-network/xl1-sdk'
|
|
@@ -2,7 +2,7 @@ import type { RouteDefinition } from '@xylabs/express'
|
|
|
2
2
|
import { requestHandlerValidator } from '@xylabs/express'
|
|
3
3
|
import { assertEx, toAddress } from '@xylabs/sdk-js'
|
|
4
4
|
import type { BridgeConfig } from '@xyo-network/chain-orchestration'
|
|
5
|
-
import { PayloadZodStrictOfSchema } from '@xyo-network/
|
|
5
|
+
import { PayloadZodStrictOfSchema } from '@xyo-network/sdk-js'
|
|
6
6
|
import type { XyoGatewayRunner } from '@xyo-network/xl1-sdk'
|
|
7
7
|
import {
|
|
8
8
|
BridgeIntentFieldsZod, BridgeIntentSchema, buildUnsignedTransaction, toXL1BlockNumber, TransactionBoundWitnessZod, TransferZod,
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
asAddress, asHex, toHex,
|
|
5
5
|
} from '@xylabs/sdk-js'
|
|
6
6
|
import type { BridgeConfig } from '@xyo-network/chain-orchestration'
|
|
7
|
-
import { PayloadZodStrictOfSchema } from '@xyo-network/
|
|
7
|
+
import { PayloadZodStrictOfSchema } from '@xyo-network/sdk-js'
|
|
8
8
|
import type { BridgeDestinationObservation, BridgeSourceObservation } from '@xyo-network/xl1-sdk'
|
|
9
9
|
import {
|
|
10
10
|
BridgeDestinationObservationFieldsZod, BridgeDestinationObservationSchema, BridgeIntentFieldsZod, BridgeIntentSchema, BridgeSourceObservationFieldsZod,
|