UNPKG

@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
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 };