@perk.money/perk-swap-core
Version:
This npm package contains core logic of Perk Aggregator build on top of NEAR blockchain
60 lines (59 loc) • 2.42 kB
TypeScript
import { FinalExecutionOutcome, Transaction } from '@near-wallet-selector/core';
import JSBI from 'jsbi';
import { PlatformFeeAndAccounts, SwapMode, SwapRoute, TokenRouteSegments } from './amms/common/types';
import './config';
import { Near } from 'near-api-js';
import { Provider, TokenMap, UserTokensMap } from './types';
declare class Perk {
private wrapNear;
near: Near;
provider: Provider;
tokenMap: TokenMap;
availableTokens: string[];
tokenRouteSegments: TokenRouteSegments;
platformFeeAndAccounts: PlatformFeeAndAccounts;
routeCacheDuration: number;
intermediateTokens: string[];
user: string | null;
routeCache: Map<string, {
fetchTimestamp: number;
}>;
userTokensMapCache: Map<string, UserTokensMap>;
constructor(near: Near, provider: Provider, tokenMap: TokenMap, availableTokens: string[], tokenRouteSegments: TokenRouteSegments, platformFeeAndAccounts: PlatformFeeAndAccounts, routeCacheDuration: number, intermediateTokens: string[], wrapNear: boolean);
static load({ provider, user, privateKey, platformFeeAndAccounts, // figure out how to fetch all accounts for address
routeCacheDuration, wrapNear, }: {
provider?: Provider;
user?: string;
privateKey?: string;
platformFeeAndAccounts?: PlatformFeeAndAccounts;
routeCacheDuration?: number;
wrapNear?: boolean;
}): Promise<Perk>;
static fetchTokenRouteSegments(provider: Provider): Promise<[TokenRouteSegments, string[]]>;
static getIntermediateTokens(): string[];
setUserPublicKey(user: string): void;
private loadAndSavePlatformFeeTokenData;
private getPlatformFeeBpsForToken;
computeRoutes({ inputMint, outputMint, amount, slippage, forceFetch, swapMode, simpleRoutesOnly, }: {
inputMint: string;
outputMint: string;
amount: JSBI;
slippage?: number;
forceFetch?: boolean;
swapMode?: SwapMode;
simpleRoutesOnly?: boolean;
}): Promise<{
routesInfos: SwapRoute[];
cached: boolean;
}>;
buildTransactions({ route }: {
route: SwapRoute;
}): Promise<{
transactions: Transaction[];
transactionsBySteps: Transaction[][];
}>;
exchange({ route, }: {
route: SwapRoute;
}): Promise<FinalExecutionOutcome[]>;
}
export { Perk };