Skip to content

Commit

Permalink
Fix on-chain trade typing (5.3.0)
Browse files Browse the repository at this point in the history
  • Loading branch information
axtezy authored Feb 26, 2024
2 parents a93f613 + b692ced commit 894d314
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 18 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "rubic-sdk",
"version": "5.2.1",
"version": "5.3.0",
"description": "Simplify dApp creation",
"main": "lib/index.js",
"types": "lib/index.d.ts",
Expand Down
44 changes: 27 additions & 17 deletions src/features/on-chain/calculation-manager/on-chain-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ export class OnChainManager {
fromAmount: string | number,
toToken: Token | string | PriceToken,
options?: OnChainManagerCalculationOptions
): Promise<Array<OnChainTrade | OnChainTradeError>> {
): Promise<WrappedOnChainTradeOrNull[]> {
if (toToken instanceof Token && fromToken.blockchain !== toToken.blockchain) {
throw new RubicSdkError('Blockchains of from and to tokens must be same');
}
Expand Down Expand Up @@ -217,9 +217,14 @@ export class OnChainManager {
from: PriceTokenAmount,
to: PriceToken,
options: RequiredOnChainManagerCalculationOptions
): Promise<Array<OnChainTrade | OnChainTradeError>> {
): Promise<WrappedOnChainTradeOrNull[]> {
if ((from.isNative && to.isWrapped) || (from.isWrapped && to.isNative)) {
return [OnChainManager.getWrapTrade(from, to, options)];
return [
{
trade: OnChainManager.getWrapTrade(from, to, options),
tradeType: ON_CHAIN_TRADE_TYPE.WRAPPED
}
];
}

const dexesProviders = Object.entries(this.tradeProviders[from.blockchain]).filter(
Expand All @@ -240,7 +245,7 @@ export class OnChainManager {
return tradeA instanceof OnChainTrade ? 1 : -1;
}
return 0;
}) as (OnChainTrade | OnChainTradeError)[];
});
}

private isDeflationToken(token: Token): Promise<IsDeflationToken> {
Expand All @@ -252,19 +257,24 @@ export class OnChainManager {
to: PriceToken,
dexesProviders: [OnChainTradeType, OnChainProvider][],
options: RequiredOnChainManagerCalculationOptions
): Promise<Array<OnChainTrade | OnChainTradeError>> {
): Promise<WrappedOnChainTradeOrNull[]> {
return Promise.all(
dexesProviders.map(async ([type, provider]) => {
try {
return await pTimeout(provider.calculate(from, to, options), options.timeout);
} catch (e) {
console.debug(
`[RUBIC_SDK] Trade calculation error occurred for ${type} trade provider.`,
e
);
return { type, error: e };
}
})
dexesProviders.map(([type, provider]) =>
pTimeout(provider.calculate(from, to, options), options.timeout)
.then(trade => {
if (trade) {
return { tradeType: type, trade };
}
return null;
})
.catch(error => {
console.debug(
`[RUBIC_SDK] Trade calculation error occurred for ${type} trade provider.`,
error
);
return { tradeType: type, trade: null, error };
})
)
);
}

Expand Down Expand Up @@ -402,7 +412,7 @@ export class OnChainManager {
return promise
.then(wrappedTrade => {
if ('error' in wrappedTrade) {
throw wrappedTrade.error;
return { trade: null, tradeType: wrappedTrade.type, error: wrappedTrade.error };
}

if (!wrappedTrade) {
Expand Down

0 comments on commit 894d314

Please sign in to comment.