@galacticcouncil/sdk 0.0.1-beta.11 → 0.0.1-beta.13
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/README.md +3 -3
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +4 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/types/api/router.d.ts +17 -16
- package/dist/types/api/tradeRouter.d.ts +15 -15
- package/dist/types/client/{capi.d.ts → cApi.d.ts} +0 -0
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/{polkadot.d.ts → polkadotApi.d.ts} +5 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/pool/index.d.ts +1 -1
- package/dist/types/pool/lbp/lbpMath.d.ts +13 -0
- package/dist/types/pool/lbp/lbpPolkadotApiClient.d.ts +25 -0
- package/dist/types/pool/lbp/lbpPool.d.ts +40 -0
- package/dist/types/pool/polkadotApiPoolService.d.ts +14 -0
- package/dist/types/pool/xyk/xykMath.d.ts +2 -0
- package/dist/types/pool/xyk/xykPolkadotApiClient.d.ts +10 -0
- package/dist/types/pool/xyk/xykPool.d.ts +8 -5
- package/dist/types/types.d.ts +58 -31
- package/dist/types/utils/mapper.d.ts +4 -0
- package/dist/types/utils/math.d.ts +4 -7
- package/package.json +2 -1
- package/dist/types/client/types.d.ts +0 -7
- package/dist/types/pool/polkadotPoolService.d.ts +0 -7
- package/dist/types/pool/xyk/xykPolkadotClient.d.ts +0 -8
|
@@ -4,8 +4,8 @@ export declare type RouterOptions = {
|
|
|
4
4
|
};
|
|
5
5
|
export declare class Router {
|
|
6
6
|
private readonly routeSuggester;
|
|
7
|
-
private readonly poolService;
|
|
8
7
|
private readonly routerOptions;
|
|
8
|
+
protected readonly poolService: PoolService;
|
|
9
9
|
private readonly defaultRouterOptions;
|
|
10
10
|
/**
|
|
11
11
|
* @param poolService - Fetch pool data from substrate based pools
|
|
@@ -27,47 +27,48 @@ export declare class Router {
|
|
|
27
27
|
/**
|
|
28
28
|
* Calculate and return list of all assets, given token can be trade with
|
|
29
29
|
*
|
|
30
|
-
* @param {string}
|
|
30
|
+
* @param {string} asset - Storage key of asset
|
|
31
31
|
* @returns {PoolAsset[]} List of all available assets, given token can be trade with
|
|
32
32
|
*/
|
|
33
|
-
getAssetPairs(
|
|
33
|
+
getAssetPairs(asset: string): Promise<PoolAsset[]>;
|
|
34
34
|
/**
|
|
35
|
-
* Calculate and return all possible paths for best swap
|
|
35
|
+
* Calculate and return all possible paths for best swap assetIn>assetOut
|
|
36
36
|
*
|
|
37
|
-
* @param {string}
|
|
38
|
-
* @param {string}
|
|
37
|
+
* @param {string} assetIn - Storage key of assetIn
|
|
38
|
+
* @param {string} assetOut - Storage key of assetOut
|
|
39
39
|
* @returns {<Hop[][]>} All possible paths containing route hops
|
|
40
40
|
*/
|
|
41
|
-
getAllPaths(
|
|
41
|
+
getAllPaths(assetIn: string, assetOut: string): Promise<Hop[][]>;
|
|
42
42
|
/**
|
|
43
43
|
* Return map of all available assets from substrate based pools
|
|
44
44
|
*
|
|
45
|
+
* @param pools - pools
|
|
45
46
|
* @returns Map of all available assets
|
|
46
47
|
*/
|
|
47
|
-
protected getAssets(): Promise<Map<string, PoolAsset>>;
|
|
48
|
+
protected getAssets(pools: PoolBase[]): Promise<Map<string, PoolAsset>>;
|
|
48
49
|
/**
|
|
49
|
-
* Calculate and return all possible paths for best swap
|
|
50
|
+
* Calculate and return all possible paths for best swap assetIn>assetOut
|
|
50
51
|
*
|
|
51
|
-
* @param
|
|
52
|
-
* @param
|
|
52
|
+
* @param assetIn - Storage key of assetIn
|
|
53
|
+
* @param assetOut - Storage key of assetOut
|
|
53
54
|
* @param poolsMap - pools map
|
|
54
55
|
* @param pools - pools
|
|
55
56
|
* @returns All possible paths containing route hops
|
|
56
57
|
*/
|
|
57
|
-
protected getPaths(
|
|
58
|
+
protected getPaths(assetIn: string, assetOut: string | null, poolsMap: Map<string, Pool>, pools: PoolBase[]): Hop[][];
|
|
58
59
|
/**
|
|
59
60
|
* Ckeck if input asset pair is valid and throw expection if not
|
|
60
61
|
*
|
|
61
|
-
* @param
|
|
62
|
-
* @param
|
|
62
|
+
* @param assetIn - Storage key of assetIn
|
|
63
|
+
* @param assetOut - Storage key of assetOut
|
|
63
64
|
* @returns Pool assets & map
|
|
64
65
|
*/
|
|
65
|
-
protected validateTokenPair(
|
|
66
|
+
protected validateTokenPair(assetIn: string, assetOut: string, pools: PoolBase[]): Promise<{
|
|
66
67
|
assets: Map<string, PoolAsset>;
|
|
67
68
|
poolsMap: Map<string, Pool>;
|
|
68
69
|
}>;
|
|
69
70
|
/**
|
|
70
|
-
* Ckeck if input asset is valid and throw
|
|
71
|
+
* Ckeck if input asset is valid and throw exception if not
|
|
71
72
|
*
|
|
72
73
|
* @param token - Storage key of token
|
|
73
74
|
* @returns Pool assets & map
|
|
@@ -5,11 +5,11 @@ export declare class TradeRouter extends Router {
|
|
|
5
5
|
/**
|
|
6
6
|
* Calculate and return best possible spot price for tokenIn>tokenOut
|
|
7
7
|
*
|
|
8
|
-
* @param {string}
|
|
9
|
-
* @param {string}
|
|
8
|
+
* @param {string} assetIn - Storage key of tokenIn
|
|
9
|
+
* @param {string} assetOut - Storage key of tokenOut
|
|
10
10
|
* @return Best possible spot price of given token pair
|
|
11
11
|
*/
|
|
12
|
-
getBestSpotPrice(
|
|
12
|
+
getBestSpotPrice(assetIn: string, assetOut: string): Promise<Amount>;
|
|
13
13
|
/**
|
|
14
14
|
* Calculate and return spot price for given path
|
|
15
15
|
*
|
|
@@ -19,39 +19,39 @@ export declare class TradeRouter extends Router {
|
|
|
19
19
|
*/
|
|
20
20
|
private getSpotPrice;
|
|
21
21
|
/**
|
|
22
|
-
* Calculate and return best possible sell trade for
|
|
22
|
+
* Calculate and return best possible sell trade for assetIn>assetOut
|
|
23
23
|
*
|
|
24
|
-
* @param {string}
|
|
25
|
-
* @param {string}
|
|
26
|
-
* @param {BigNumber} amountIn - Amount of
|
|
24
|
+
* @param {string} assetIn - Storage key of assetIn
|
|
25
|
+
* @param {string} assetOut - Storage key of assetOut
|
|
26
|
+
* @param {BigNumber} amountIn - Amount of assetIn to sell for assetOut
|
|
27
27
|
* @returns Best possible sell trade of given token pair
|
|
28
28
|
*/
|
|
29
|
-
getBestSell(
|
|
29
|
+
getBestSell(assetIn: string, assetOut: string, amountIn: BigNumber | string | number): Promise<Trade>;
|
|
30
30
|
/**
|
|
31
31
|
* Calculate and return sell swaps for given path
|
|
32
32
|
* - final amount of previous swap is entry to next one
|
|
33
33
|
*
|
|
34
|
-
* @param amountIn - Amount of
|
|
34
|
+
* @param amountIn - Amount of assetIn to sell for assetOut
|
|
35
35
|
* @param path - current path
|
|
36
36
|
* @param poolsMap - pools map
|
|
37
37
|
* @returns Sell swaps for given path with corresponding pool pairs
|
|
38
38
|
*/
|
|
39
39
|
private toSellSwaps;
|
|
40
40
|
/**
|
|
41
|
-
* Calculate and return best possible buy trade for
|
|
41
|
+
* Calculate and return best possible buy trade for assetIn>assetOut
|
|
42
42
|
*
|
|
43
|
-
* @param {string}
|
|
44
|
-
* @param {string}
|
|
43
|
+
* @param {string} assetIn - Storage key of assetIn
|
|
44
|
+
* @param {string} assetOut - Storage key of assetOut
|
|
45
45
|
* @param {BigNumber} amountOut - Amount of tokenOut to buy for tokenIn
|
|
46
46
|
* @returns Best possible buy trade of given token pair
|
|
47
47
|
*/
|
|
48
|
-
getBestBuy(
|
|
48
|
+
getBestBuy(assetIn: string, assetOut: string, amountOut: BigNumber | string | number): Promise<Trade>;
|
|
49
49
|
/**
|
|
50
50
|
* Calculate and return buy swaps for given path
|
|
51
51
|
* - final amount of previous swap is entry to next one
|
|
52
|
-
* - calculation is done backwards
|
|
52
|
+
* - calculation is done backwards (swaps in reversed order)
|
|
53
53
|
*
|
|
54
|
-
* @param amountOut - Amount of
|
|
54
|
+
* @param amountOut - Amount of assetOut to buy for assetIn
|
|
55
55
|
* @param path - current path
|
|
56
56
|
* @param poolsMap - pools map
|
|
57
57
|
* @returns Buy swaps for given path
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { PolkadotApiClient } from './polkadotApi';
|
|
@@ -2,13 +2,17 @@ import { ApiPromise } from '@polkadot/api';
|
|
|
2
2
|
import type { StorageKey } from '@polkadot/types';
|
|
3
3
|
import type { AnyTuple, Codec } from '@polkadot/types/types';
|
|
4
4
|
import type { AssetMetadata } from '@polkadot/types/interfaces';
|
|
5
|
+
import type { PoolToken } from '../types';
|
|
5
6
|
import '@polkadot/api-augment';
|
|
6
|
-
export declare class
|
|
7
|
+
export declare class PolkadotApiClient {
|
|
7
8
|
protected readonly api: ApiPromise;
|
|
8
9
|
constructor(api: ApiPromise);
|
|
9
10
|
getStorageKey(asset: [StorageKey<AnyTuple>, Codec], index: number): string;
|
|
10
11
|
getStorageEntryArray(asset: [StorageKey<AnyTuple>, Codec]): string[];
|
|
12
|
+
getPoolTokens(poolAddress: string, assetKeys: string[]): Promise<PoolToken[]>;
|
|
13
|
+
syncPoolTokens(poolAddress: string, poolTokens: PoolToken[]): Promise<PoolToken[]>;
|
|
11
14
|
getAssetMetadata(tokenKey: string): Promise<AssetMetadata>;
|
|
15
|
+
getAccountBalance(accountId: string, tokenKey: string): Promise<string>;
|
|
12
16
|
getSystemAccountBalance(accountId: string): Promise<string>;
|
|
13
17
|
getTokenAccountBalance(accountId: string, tokenKey: string): Promise<string>;
|
|
14
18
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare function getSpotPrice(s: string, b: string, s_w: string, b_w: string, a: string): string;
|
|
2
|
+
declare function calculateInGivenOut(s: string, b: string, s_w: string, b_w: string, a: string): string;
|
|
3
|
+
declare function calculateOutGivenIn(s: string, b: string, s_w: string, b_w: string, a: string): string;
|
|
4
|
+
declare function calculateLinearWeights(start_x: string, end_x: string, start_y: string, end_y: string, at: string): string;
|
|
5
|
+
declare function calculatePoolTradeFee(a: string, fee_numerator: number, fee_denominator: number): string;
|
|
6
|
+
declare const _default: {
|
|
7
|
+
getSpotPrice: typeof getSpotPrice;
|
|
8
|
+
calculateInGivenOut: typeof calculateInGivenOut;
|
|
9
|
+
calculateOutGivenIn: typeof calculateOutGivenIn;
|
|
10
|
+
calculateLinearWeights: typeof calculateLinearWeights;
|
|
11
|
+
calculatePoolTradeFee: typeof calculatePoolTradeFee;
|
|
12
|
+
};
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PolkadotApiClient } from '../../client';
|
|
2
|
+
import { PoolBase, PoolFee } from '../../types';
|
|
3
|
+
interface LbpPoolData {
|
|
4
|
+
readonly assets: string[];
|
|
5
|
+
readonly feeCollector: string;
|
|
6
|
+
readonly fee: number[];
|
|
7
|
+
readonly repayTarget: string;
|
|
8
|
+
readonly initialWeight: number;
|
|
9
|
+
readonly finalWeight: number;
|
|
10
|
+
readonly start: number;
|
|
11
|
+
readonly end: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class LbpPolkadotApiClient extends PolkadotApiClient {
|
|
14
|
+
private readonly MAX_FINAL_WEIGHT;
|
|
15
|
+
private poolsData;
|
|
16
|
+
private pools;
|
|
17
|
+
private _poolsLoaded;
|
|
18
|
+
getPools(): Promise<PoolBase[]>;
|
|
19
|
+
loadPools(): Promise<PoolBase[]>;
|
|
20
|
+
syncPools(): Promise<PoolBase[]>;
|
|
21
|
+
getLinearWeight(poolEntry: LbpPoolData): Promise<string>;
|
|
22
|
+
getRepayFee(): PoolFee;
|
|
23
|
+
isRepayFeeApplied(assetKey: string, poolEntry: LbpPoolData): Promise<boolean>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BuyTransfer, Pool, PoolBase, PoolFee, PoolPair, PoolToken, PoolType, SellTransfer } from '../../types';
|
|
2
|
+
import { BigNumber } from '../../utils/bignumber';
|
|
3
|
+
export declare type WeightedPoolPair = PoolPair & {
|
|
4
|
+
weightIn: BigNumber;
|
|
5
|
+
weightOut: BigNumber;
|
|
6
|
+
};
|
|
7
|
+
export declare type WeightedPoolToken = PoolToken & {
|
|
8
|
+
weight: BigNumber;
|
|
9
|
+
};
|
|
10
|
+
export declare class LbpPool implements Pool {
|
|
11
|
+
type: PoolType;
|
|
12
|
+
address: string;
|
|
13
|
+
tradeFee: PoolFee;
|
|
14
|
+
tokens: WeightedPoolToken[];
|
|
15
|
+
repayFee: PoolFee;
|
|
16
|
+
repayFeeApply: boolean;
|
|
17
|
+
static fromPool(pool: PoolBase): LbpPool;
|
|
18
|
+
constructor(address: string, swapFee: PoolFee, tokens: WeightedPoolToken[], repayFee: PoolFee, repayFeeApply: boolean);
|
|
19
|
+
validPair(_tokenIn: string, _tokenOut: string): boolean;
|
|
20
|
+
parsePoolPair(tokenIn: string, tokenOut: string): WeightedPoolPair;
|
|
21
|
+
/**
|
|
22
|
+
* Validate buy transfer
|
|
23
|
+
*
|
|
24
|
+
* a) Accumulated asset is bought (out) from the pool for distributed asset (in) - User(Buyer) bears the fee
|
|
25
|
+
* b) Distributed asset is bought (out) from the pool for accumualted asset (in) - Pool bears the fee
|
|
26
|
+
*/
|
|
27
|
+
validateBuy(poolPair: WeightedPoolPair, amountOut: BigNumber): BuyTransfer;
|
|
28
|
+
/**
|
|
29
|
+
* Validate sell transfer
|
|
30
|
+
*
|
|
31
|
+
* a) Accumulated asset is sold (in) to the pool for distributed asset (out) - Pool bears the fee
|
|
32
|
+
* b) Distributed asset is sold (in) to the pool for accumualted asset (out) - User(Seller) bears the fee
|
|
33
|
+
*/
|
|
34
|
+
validateSell(poolPair: WeightedPoolPair, amountIn: BigNumber): SellTransfer;
|
|
35
|
+
calculateInGivenOut(poolPair: WeightedPoolPair, amountOut: BigNumber): BigNumber;
|
|
36
|
+
calculateOutGivenIn(poolPair: WeightedPoolPair, amountIn: BigNumber): BigNumber;
|
|
37
|
+
spotPriceInGivenOut(poolPair: WeightedPoolPair): BigNumber;
|
|
38
|
+
spotPriceOutGivenIn(poolPair: WeightedPoolPair): BigNumber;
|
|
39
|
+
calculateTradeFee(amount: BigNumber): BigNumber;
|
|
40
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Hop, PoolBase, PoolService, PoolType, Transaction } from '../types';
|
|
2
|
+
import { XykPolkadotApiClient } from './xyk/xykPolkadotApiClient';
|
|
3
|
+
import { LbpPolkadotApiClient } from './lbp/lbpPolkadotApiClient';
|
|
4
|
+
import { BigNumber } from '../utils/bignumber';
|
|
5
|
+
import { ApiPromise } from '@polkadot/api';
|
|
6
|
+
export declare class PolkadotApiPoolService implements PoolService {
|
|
7
|
+
protected readonly api: ApiPromise;
|
|
8
|
+
protected readonly xykClient: XykPolkadotApiClient;
|
|
9
|
+
protected readonly lbpClient: LbpPolkadotApiClient;
|
|
10
|
+
constructor(api: ApiPromise);
|
|
11
|
+
getPools(includeOnly: PoolType[]): Promise<PoolBase[]>;
|
|
12
|
+
buildBuyTx(assetIn: string, assetOut: string, amountOut: BigNumber, maxAmountIn: BigNumber, route: Hop[]): Transaction;
|
|
13
|
+
buildSellTx(assetIn: string, assetOut: string, amountIn: BigNumber, minAmountOut: BigNumber, route: Hop[]): Transaction;
|
|
14
|
+
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
declare function getSpotPrice(a: string, b: string, c: string): string;
|
|
2
2
|
declare function calculateInGivenOut(a: string, b: string, c: string): string;
|
|
3
3
|
declare function calculateOutGivenIn(a: string, b: string, c: string): string;
|
|
4
|
+
declare function calculatePoolTradeFee(a: string, fee_numerator: number, fee_denominator: number): string;
|
|
4
5
|
declare const _default: {
|
|
5
6
|
getSpotPrice: typeof getSpotPrice;
|
|
6
7
|
calculateInGivenOut: typeof calculateInGivenOut;
|
|
7
8
|
calculateOutGivenIn: typeof calculateOutGivenIn;
|
|
9
|
+
calculatePoolTradeFee: typeof calculatePoolTradeFee;
|
|
8
10
|
};
|
|
9
11
|
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PolkadotApiClient } from '../../client';
|
|
2
|
+
import { PoolBase, PoolFee } from '../../types';
|
|
3
|
+
export declare class XykPolkadotApiClient extends PolkadotApiClient {
|
|
4
|
+
private pools;
|
|
5
|
+
private _poolsLoaded;
|
|
6
|
+
getPools(): Promise<PoolBase[]>;
|
|
7
|
+
loadPools(): Promise<PoolBase[]>;
|
|
8
|
+
syncPools(): Promise<PoolBase[]>;
|
|
9
|
+
getTradeFee(): PoolFee;
|
|
10
|
+
}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { Pool, PoolBase, PoolPair, PoolToken, PoolType } from '../../types';
|
|
1
|
+
import { BuyTransfer, Pool, PoolBase, PoolFee, PoolPair, PoolToken, PoolType, SellTransfer } from '../../types';
|
|
2
2
|
import { BigNumber } from '../../utils/bignumber';
|
|
3
3
|
export declare class XykPool implements Pool {
|
|
4
4
|
type: PoolType;
|
|
5
5
|
address: string;
|
|
6
|
-
tradeFee:
|
|
6
|
+
tradeFee: PoolFee;
|
|
7
7
|
tokens: PoolToken[];
|
|
8
8
|
static fromPool(pool: PoolBase): XykPool;
|
|
9
|
-
constructor(address: string, swapFee:
|
|
9
|
+
constructor(address: string, swapFee: PoolFee, tokens: PoolToken[]);
|
|
10
10
|
validPair(_tokenIn: string, _tokenOut: string): boolean;
|
|
11
11
|
parsePoolPair(tokenIn: string, tokenOut: string): PoolPair;
|
|
12
|
+
validateBuy(poolPair: PoolPair, amountOut: BigNumber): BuyTransfer;
|
|
13
|
+
validateSell(poolPair: PoolPair, amountIn: BigNumber): SellTransfer;
|
|
12
14
|
calculateInGivenOut(poolPair: PoolPair, amountOut: BigNumber): BigNumber;
|
|
13
|
-
getSpotPriceIn(poolPair: PoolPair): BigNumber;
|
|
14
15
|
calculateOutGivenIn(poolPair: PoolPair, amountIn: BigNumber): BigNumber;
|
|
15
|
-
|
|
16
|
+
spotPriceInGivenOut(poolPair: PoolPair): BigNumber;
|
|
17
|
+
spotPriceOutGivenIn(poolPair: PoolPair): BigNumber;
|
|
18
|
+
calculateTradeFee(amount: BigNumber): BigNumber;
|
|
16
19
|
}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BigNumber } from './utils/bignumber';
|
|
2
2
|
export declare type PoolAsset = {
|
|
3
|
-
|
|
3
|
+
id: string;
|
|
4
4
|
symbol: string;
|
|
5
5
|
};
|
|
6
6
|
export declare enum PoolType {
|
|
@@ -9,10 +9,17 @@ export declare enum PoolType {
|
|
|
9
9
|
Stable = "Stable",
|
|
10
10
|
Omni = "Omni"
|
|
11
11
|
}
|
|
12
|
+
export declare enum PoolError {
|
|
13
|
+
TradingLimitReached = "TradingLimitReached",
|
|
14
|
+
InsufficientTradingAmount = "InsufficientTradingAmount",
|
|
15
|
+
InsufficientBalance = "InsufficientBalance",
|
|
16
|
+
MaxInRatioExceeded = "MaxInRatioExceeded",
|
|
17
|
+
AssetAmountNotReachedLimit = "AssetAmountNotReachedLimit",
|
|
18
|
+
AssetAmountExceededLimit = "AssetAmountExceededLimit"
|
|
19
|
+
}
|
|
12
20
|
export interface PoolPair {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
tokenOut: string;
|
|
21
|
+
assetIn: string;
|
|
22
|
+
assetOut: string;
|
|
16
23
|
decimalsIn: number;
|
|
17
24
|
decimalsOut: number;
|
|
18
25
|
balanceIn: BigNumber;
|
|
@@ -21,65 +28,85 @@ export interface PoolPair {
|
|
|
21
28
|
export declare type PoolBase = {
|
|
22
29
|
address: string;
|
|
23
30
|
type: PoolType;
|
|
24
|
-
tradeFee:
|
|
31
|
+
tradeFee: PoolFee;
|
|
25
32
|
tokens: PoolToken[];
|
|
33
|
+
repayFee?: PoolFee;
|
|
34
|
+
repayFeeApply?: boolean;
|
|
26
35
|
};
|
|
27
|
-
export declare type
|
|
28
|
-
|
|
36
|
+
export declare type PoolFee = [numerator: number, denominator: number];
|
|
37
|
+
export declare type PoolToken = PoolAsset & {
|
|
29
38
|
balance: string;
|
|
30
39
|
decimals: number;
|
|
31
|
-
symbol: string;
|
|
32
40
|
};
|
|
41
|
+
export declare type PoolSell = {
|
|
42
|
+
calculatedOut: BigNumber;
|
|
43
|
+
};
|
|
44
|
+
export declare type PoolBuy = {
|
|
45
|
+
calculatedIn: BigNumber;
|
|
46
|
+
};
|
|
47
|
+
export declare type Transfer = {
|
|
48
|
+
amountIn: BigNumber;
|
|
49
|
+
amountOut: BigNumber;
|
|
50
|
+
feePct: number;
|
|
51
|
+
errors: PoolError[];
|
|
52
|
+
};
|
|
53
|
+
export declare type SellTransfer = Transfer & PoolSell;
|
|
54
|
+
export declare type BuyTransfer = Transfer & PoolBuy;
|
|
33
55
|
export interface Pool extends PoolBase {
|
|
34
56
|
validPair(tokenIn: string, tokenOut: string): boolean;
|
|
35
57
|
parsePoolPair(tokenIn: string, tokenOut: string): PoolPair;
|
|
58
|
+
validateBuy(poolPair: PoolPair, amountOut: BigNumber): BuyTransfer;
|
|
59
|
+
validateSell(poolPair: PoolPair, amountOut: BigNumber): SellTransfer;
|
|
36
60
|
calculateInGivenOut(poolPair: PoolPair, amountOut: BigNumber): BigNumber;
|
|
37
61
|
calculateOutGivenIn(poolPair: PoolPair, amountIn: BigNumber): BigNumber;
|
|
38
|
-
|
|
39
|
-
|
|
62
|
+
spotPriceInGivenOut(poolPair: PoolPair): BigNumber;
|
|
63
|
+
spotPriceOutGivenIn(poolPair: PoolPair): BigNumber;
|
|
64
|
+
calculateTradeFee(amount: BigNumber): BigNumber;
|
|
40
65
|
}
|
|
41
66
|
export interface PoolService {
|
|
42
|
-
getPools(): Promise<PoolBase[]>;
|
|
67
|
+
getPools(includeOnly?: PoolType[]): Promise<PoolBase[]>;
|
|
68
|
+
buildBuyTx(assetIn: string, assetOut: string, amountOut: BigNumber, maxAmountIn: BigNumber, route: Hop[]): Transaction;
|
|
69
|
+
buildSellTx(assetIn: string, assetOut: string, amountIn: BigNumber, minAmountOut: BigNumber, route: Hop[]): Transaction;
|
|
70
|
+
}
|
|
71
|
+
export interface Transaction {
|
|
72
|
+
hex: string;
|
|
73
|
+
name?: string;
|
|
74
|
+
get<T>(): T;
|
|
43
75
|
}
|
|
44
76
|
export declare type Hop = {
|
|
45
77
|
poolType: PoolType;
|
|
46
78
|
poolId: string;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
tradeFeePct: string;
|
|
79
|
+
assetIn: string;
|
|
80
|
+
assetOut: string;
|
|
50
81
|
};
|
|
51
|
-
export declare type Swap =
|
|
52
|
-
|
|
53
|
-
|
|
82
|
+
export declare type Swap = Hop & Humanizer & {
|
|
83
|
+
assetInDecimals: number;
|
|
84
|
+
assetOutDecimals: number;
|
|
54
85
|
amountIn: BigNumber;
|
|
55
86
|
amountOut: BigNumber;
|
|
56
|
-
finalAmount: BigNumber;
|
|
57
|
-
tradeFee: BigNumber;
|
|
58
87
|
spotPrice: BigNumber;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
export declare type SellSwap = Swap & {
|
|
62
|
-
calculatedOut: BigNumber;
|
|
63
|
-
};
|
|
64
|
-
export declare type BuySwap = Swap & {
|
|
65
|
-
calculatedIn: BigNumber;
|
|
88
|
+
tradeFeePct: number;
|
|
89
|
+
priceImpactPct: number;
|
|
66
90
|
};
|
|
91
|
+
export declare type SellSwap = Swap & PoolSell;
|
|
92
|
+
export declare type BuySwap = Swap & PoolBuy;
|
|
67
93
|
export declare enum TradeType {
|
|
68
94
|
Buy = "Buy",
|
|
69
95
|
Sell = "Sell"
|
|
70
96
|
}
|
|
71
|
-
export
|
|
97
|
+
export interface Trade extends Humanizer {
|
|
72
98
|
type: TradeType;
|
|
73
99
|
amountIn: BigNumber;
|
|
74
100
|
amountOut: BigNumber;
|
|
75
101
|
spotPrice: BigNumber;
|
|
76
|
-
priceImpactPct:
|
|
102
|
+
priceImpactPct: number;
|
|
77
103
|
swaps: Swap[];
|
|
78
|
-
|
|
104
|
+
toTx(tradeLimit: BigNumber): Transaction;
|
|
105
|
+
}
|
|
79
106
|
export interface Humanizer {
|
|
80
107
|
toHuman(): any;
|
|
81
108
|
}
|
|
82
|
-
export
|
|
109
|
+
export declare type Amount = {
|
|
83
110
|
amount: BigNumber;
|
|
84
111
|
decimals: number;
|
|
85
|
-
}
|
|
112
|
+
};
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { BigNumber } from './bignumber';
|
|
2
|
-
export declare function pctToBn(pct: string): BigNumber;
|
|
3
|
-
export declare function calculateTradeFee(amount: BigNumber, tradeFee: BigNumber): BigNumber;
|
|
4
2
|
/**
|
|
5
3
|
* Percentage Difference Formula
|
|
6
4
|
*
|
|
7
5
|
* (|𝑉1−𝑉2| / [(𝑉1+𝑉2)/2]) × 100
|
|
8
6
|
*
|
|
9
|
-
* @param amount - Amount of
|
|
10
|
-
* @param decimals - Decimals of given
|
|
7
|
+
* @param amount - Amount of asset in/out
|
|
8
|
+
* @param decimals - Decimals of given asset
|
|
11
9
|
* @param spotPrice - Spot price
|
|
12
|
-
* @param
|
|
10
|
+
* @param calculatedAmount - Calculated amount of asset out/in
|
|
13
11
|
* @returns Price impact percentage
|
|
14
12
|
*/
|
|
15
|
-
export declare function calculatePriceImpact(amount: BigNumber, decimals: number, spotPrice: BigNumber,
|
|
16
|
-
export declare function formatAmount(amount: BigNumber, decimals: number): string;
|
|
13
|
+
export declare function calculatePriceImpact(amount: BigNumber, decimals: number, spotPrice: BigNumber, calculatedAmount: BigNumber): BigNumber;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galacticcouncil/sdk",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.13",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Galactic SDK",
|
|
6
6
|
"author": "Pavol Noha <palo@hydradx.io>",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"typescript": "^4.7.4"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
+
"@galacticcouncil/math-lbp": "^0.0.0-beta-1",
|
|
29
30
|
"@galacticcouncil/math-xyk": "^0.0.0-beta-1",
|
|
30
31
|
"@polkadot/api": "^9.0.1",
|
|
31
32
|
"bignumber.js": "^9.1.0",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { PolkadotClient } from '../../client';
|
|
2
|
-
import { PoolBase, PoolToken } from '../../types';
|
|
3
|
-
export declare class XykPolkadotClient extends PolkadotClient {
|
|
4
|
-
getPools(): Promise<PoolBase[]>;
|
|
5
|
-
getPoolTokens(poolAddress: string, assetKeys: string[]): Promise<PoolToken[]>;
|
|
6
|
-
getBalance(poolAddress: string, assetKey: string): Promise<string>;
|
|
7
|
-
getTradeFee(): string;
|
|
8
|
-
}
|