Instant settlement (#22)

* instantSettlement impl

* Fixed poolOnly
This commit is contained in:
Aleksandr Kraiz
2022-08-19 11:52:49 +04:00
committed by GitHub
parent 7497f683df
commit 533e18901e
6 changed files with 29 additions and 11 deletions

View File

@@ -139,13 +139,16 @@ orionUnit.exchange
// Each trading pair has its own quantity precision
// You need to prepare (round) the quantity according to quantity precision
const pairConfig = await simpleFetch(orionAggregator.getPairConfig)('ORN-USDT');
const pairConfig = await simpleFetch(orionAggregator.getPairConfig)("ORN-USDT");
if (!pairConfig) throw new Error(`Pair config ORN-USDT not found`);
const { qtyPrecision } = pairConfig;
const amount = 23.5346563;
const roundedAmount = new BigNumber(amount).dp(qtyPrecision, BigNumber.ROUND_FLOOR); // You can use you own Math lib
const roundedAmount = new BigNumber(amount).dp(
qtyPrecision,
BigNumber.ROUND_FLOOR
); // You can use you own Math lib
orionUnit.exchange
.swapMarket({
@@ -159,6 +162,7 @@ orionUnit.exchange
options: {
// All options are optional 🙂
poolOnly: true, // You can specify whether you want to perform the exchange only through the pool
instantSettlement: true, // Set true to ensure that funds can be instantly transferred to wallet (otherwise, there is a possibility of receiving funds to the balance of the exchange contract)
logger: console.log,
// Set it to true if you want the issues associated with
// the lack of allowance to be automatically corrected
@@ -195,9 +199,11 @@ orionUnit.farmingManager.removeAllLiquidity({
```ts
import { simpleFetch } from "@orionprotocol/sdk";
const orderbook = await simpleFetch(orionUnit.orionAggregator.getAggregatedOrderbook)(
const orderbook = await simpleFetch(
orionUnit.orionAggregator.getAggregatedOrderbook
)(
"ORN-USDT",
20, // Depth
20 // Depth
);
```

View File

@@ -1,6 +1,6 @@
{
"name": "@orionprotocol/sdk",
"version": "0.13.2",
"version": "0.14.0-rc.1",
"description": "Orion Protocol SDK",
"main": "./lib/esm/index.js",
"module": "./lib/esm/index.js",

View File

@@ -61,7 +61,8 @@ export default async function getSwapMarketFeeInfo({
assetIn,
assetOut,
amount.toString(),
options?.poolOnly ? ['ORION_POOL'] : undefined,
false,
options?.poolOnly ? 'pools' : undefined,
);
if (swapInfo.orderInfo !== null && options?.poolOnly === true && options.poolOnly !== swapInfo.isThroughPoolOptimal) {

View File

@@ -22,6 +22,7 @@ export type SwapMarketParams = {
orionUnit: OrionUnit,
options?: {
poolOnly?: boolean,
instantSettlement?: boolean,
logger?: (message: string) => void,
autoApprove?: boolean,
developer?: {
@@ -124,6 +125,7 @@ export default async function swapMarket({
assetIn,
assetOut,
amount.toString(),
options?.instantSettlement,
options?.poolOnly ? ['ORION_POOL'] : undefined,
);

View File

@@ -151,7 +151,8 @@ class OrionAggregator {
assetIn: string,
assetOut: string,
amount: string,
exchanges?: Exchange[],
instantSettlement?: boolean,
exchanges?: Exchange[] | 'cex' | 'pools',
) => {
const url = new URL(`${this.apiUrl}/api/v1/swap`);
url.searchParams.append('assetIn', assetIn);
@@ -162,9 +163,16 @@ class OrionAggregator {
url.searchParams.append('amountOut', amount);
}
if (exchanges) {
exchanges.forEach((exchange) => {
url.searchParams.append('exchanges', exchange);
});
if (Array.isArray(exchanges)) {
exchanges.forEach((exchange) => {
url.searchParams.append('exchanges', exchange);
});
} else {
url.searchParams.append('exchanges', exchanges);
}
}
if (instantSettlement) {
url.searchParams.append('instantSettlement', 'true');
}
return fetchWithValidation(

View File

@@ -70,8 +70,9 @@ type SwapSubscriptionRequest = {
i: string, // asset in
o: string, // asset out
a: number // amount IN/OUT
es?: Exchange[], // exchange list
es?: Exchange[] | 'cex' | 'pools', // exchange list of all cex or all pools (ORION_POOL, UNISWAP, PANCAKESWAP etc)
e?: boolean; // is amount IN? Value `false` means a = amount OUT, `true` if omitted
is?: boolean; // instant settlement
}
type BrokerTradableAtomicSwapBalanceSubscription = {