///
import { AccountInfo, AddressLookupTableAccount, Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
export declare const MANGO_ROUTER_API_URL = "https://api.mngo.cloud/router/v1";
export interface QuoteParams {
sourceMint: string;
destinationMint: string;
amount: number;
swapMode: SwapMode;
}
export declare type TokenMintAddress = string;
export interface Quote {
notEnoughLiquidity: boolean;
minInAmount?: number;
minOutAmount?: number;
inAmount: number;
outAmount: number;
feeAmount: number;
feeMint: TokenMintAddress;
feePct: number;
priceImpactPct: number;
}
export declare type QuoteMintToReferrer = Map;
export interface SwapParams {
sourceMint: string;
destinationMint: string;
userSourceTokenAccount: string;
userDestinationTokenAccount: string;
userTransferAuthority: string;
/**
* amount is used for instruction and can be null when it is an intermediate swap, only the first swap has an amount
*/
amount: number;
swapMode: SwapMode;
openOrdersAddress?: string;
quoteMintToReferrer?: QuoteMintToReferrer;
}
export declare type PlatformFee = {
feeBps: number;
feeAccount: string;
};
export interface ExactOutSwapParams extends SwapParams {
inAmount: number;
slippageBps: number;
platformFee?: PlatformFee;
overflowFeeAccount?: string;
}
export declare type AccountInfoMap = Map | null>;
export declare type AmmLabel = 'Aldrin' | 'Crema' | 'Cropper' | 'Cykura' | 'DeltaFi' | 'GooseFX' | 'Invariant' | 'Lifinity' | 'Lifinity V2' | 'Marinade' | 'Mercurial' | 'Meteora' | 'Raydium' | 'Raydium CLMM' | 'Saber' | 'Serum' | 'Orca' | 'Step' | 'Penguin' | 'Saros' | 'Stepn' | 'Orca (Whirlpools)' | 'Sencha' | 'Saber (Decimals)' | 'Dradex' | 'Balansol' | 'Openbook' | 'Unknown';
export interface TransactionFeeInfo {
signatureFee: number;
openOrdersDeposits: number[];
ataDeposits: number[];
totalFeeAndDeposits: number;
minimumSOLForTransaction: number;
}
export declare enum SwapMode {
ExactIn = "ExactIn",
ExactOut = "ExactOut"
}
export interface Fee {
amount: number;
mint: string;
pct: number;
}
export interface MarketInfo {
id: string;
inAmount: number;
inputMint: string;
label: string;
lpFee: Fee;
notEnoughLiquidity: boolean;
outAmount: number;
outputMint: string;
platformFee: Fee;
priceImpactPct: number;
}
export interface RouteInfo {
amount: number;
inAmount: number;
marketInfos: MarketInfo[];
otherAmountThreshold: number;
outAmount: number;
priceImpactPct: number;
slippageBps: number;
swapMode: SwapMode;
instructions?: TransactionInstruction[];
mints?: PublicKey[];
routerName?: 'Mango';
}
export type Routes = {
routes: RouteInfo[];
bestRoute: RouteInfo | null;
};
export type Token = {
address: string;
chainId: number;
decimals: number;
name: string;
symbol: string;
logoURI: string;
extensions: {
coingeckoId?: string;
};
tags: string[];
};
export declare const fetchRoutes: (inputMint: any, outputMint: any, amount?: string, slippage?: number, swapMode?: string, feeBps?: string, wallet?: PublicKey) => Promise;
export declare const prepareMangoRouterInstructions: (selectedRoute: RouteInfo, inputMint: PublicKey, outputMint: PublicKey, userPublicKey: PublicKey) => Promise<[TransactionInstruction[], AddressLookupTableAccount[]]>;
export declare const fetchJupiterTransaction: (connection: Connection, selectedRoute: RouteInfo, userPublicKey: PublicKey, slippage: number, inputMint: PublicKey, outputMint: PublicKey) => Promise<[TransactionInstruction[], AddressLookupTableAccount[]]>;
//# sourceMappingURL=router.d.ts.map