@array.inc/sdk
Version:
🛠An SDK for building applications on top of Array.
60 lines (59 loc) • 2.49 kB
TypeScript
import { BigNumber } from '@ethersproject/bignumber';
import { Pool, RToken, RouteLeg, MultiRoute } from '../types/MultiRouterTypes';
export declare class Edge {
readonly GasConsumption = 40000;
readonly MINIMUM_LIQUIDITY = 1000;
pool: Pool;
vert0: Vertice;
vert1: Vertice;
canBeUsed: boolean;
direction: boolean;
amountInPrevious: number;
amountOutPrevious: number;
bestEdgeIncome: number;
constructor(p: Pool, v0: Vertice, v1: Vertice);
reserve(v: Vertice): BigNumber;
calcOutput(v: Vertice, amountIn: number): number[];
checkMinimalLiquidityExceededAfterSwap(from: Vertice, amountOut: number): boolean;
testApply(from: Vertice, amountIn: number, amountOut: number): boolean;
applySwap(from: Vertice): void;
}
export declare class Vertice {
token: RToken;
edges: Edge[];
price: number;
gasPrice: number;
bestIncome: number;
gasSpent: number;
bestTotal: number;
bestSource?: Edge;
checkLine: number;
constructor(t: RToken);
getNeibour(e?: Edge): Vertice | undefined;
}
export declare class Graph {
vertices: Vertice[];
edges: Edge[];
tokens: Map<RToken, Vertice>;
constructor(pools: Pool[], baseToken: RToken, gasPrice: number);
setPrices(from: Vertice, price: number, gasPrice: number): void;
getOrCreateVertice(token: RToken): Vertice;
findBestPath(from: RToken, to: RToken, amountIn: number): {
path: Edge[];
output: number;
gasSpent: number;
totalOutput: number;
} | undefined;
addPath(from: Vertice | undefined, to: Vertice | undefined, path: Edge[]): void;
findBestRoute(from: RToken, to: RToken, amountIn: number, mode: number | number[]): MultiRoute;
getRouteLegs(from: Vertice, to: Vertice): [RouteLeg[], number, boolean];
edgeFrom(e: Edge): [Vertice, number] | undefined;
getOutputEdges(v: Vertice): Edge[];
getInputEdges(v: Vertice): Edge[];
calcLegsAmountOut(legs: RouteLeg[], amountIn: number, to: RToken): number;
cleanTopology(from: Vertice, to: Vertice): [Vertice[], boolean];
removeDeadEnds(verts: Vertice[]): void;
removeWeakestEdge(verts: Vertice[]): void;
topologySort(from: Vertice, to: Vertice): [number, Vertice[]];
}
export declare function findMultiRouting(from: RToken, to: RToken, amountIn: number, pools: Pool[], baseToken: RToken, gasPrice: number, steps?: number | number[]): MultiRoute;