@prism-hq/prism-ag
Version:
Prism Aggregator
72 lines (71 loc) • 3.18 kB
JavaScript
;
// import { Program } from "@project-serum/anchor";
// import { PublicKey, SystemProgram } from "@solana/web3.js";
// import { TRANSITIVE_STATE, Wallet } from "../types/types";
// import { Token, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from "@solana/spl-token"
// import BN from "bn.js";
// import { PrismAg } from "./idl";
// import { RouteData as SymmetryData } from "@symmetry-hq/liquidity-sdk/dist/types";
// export async function symmetrySwap(
// user: PublicKey,
// program: Program<PrismAg>,
// route: any,
// fromTokenAccount: PublicKey,
// toTokenAccount: PublicKey,
// fees: any,
// hostFees: number,
// useT: any = null,
// disableFees: any = false,
// ) {
// let {fromCoin, toCoin} = route.routeData;
// let symmetryInfo: SymmetryData = route.routeData.symmetryInfo;
// let swapAccounts = symmetryInfo.swapAccounts;
// let amountIn = new BN(Math.floor(route.amountIn * 10 ** fromCoin.decimals));
// let amountOut = new BN(Math.floor(route.minimumReceived * 10 ** toCoin.decimals));
// return program.instruction.symmetrySwap(
// new BN(symmetryInfo.fromTokenId),
// new BN(symmetryInfo.toTokenId),
// amountIn,
// amountOut,
// useT ? true : false,
// new BN(hostFees),
// {
// accounts:{
// symmetryProgram: swapAccounts.program,
// systemProgram: SystemProgram.programId,
// tokenProgram: new PublicKey(TOKEN_PROGRAM_ID),
// buyer: user,
// fundState: swapAccounts.fundState,
// pdaAccount: swapAccounts.authority,
// pdaFromTokenAccount: swapAccounts.source,
// buyerFromTokenAccount: fromTokenAccount,
// pdaToTokenAccount: swapAccounts.destination,
// buyerToTokenAccount: toTokenAccount,
// swapFeeAccount: await Token.getAssociatedTokenAddress(
// ASSOCIATED_TOKEN_PROGRAM_ID,
// TOKEN_PROGRAM_ID,
// swapAccounts.fees.feeTokenMint,
// swapAccounts.fees.smfWallet
// ),
// hostFeeAccount: await Token.getAssociatedTokenAddress(
// ASSOCIATED_TOKEN_PROGRAM_ID,
// TOKEN_PROGRAM_ID,
// swapAccounts.fees.feeTokenMint,
// swapAccounts.fees.hostWallet
// ),
// managerFeeAccount: await Token.getAssociatedTokenAddress(
// ASSOCIATED_TOKEN_PROGRAM_ID,
// TOKEN_PROGRAM_ID,
// swapAccounts.fees.feeTokenMint,
// swapAccounts.fees.managerWallet
// ),
// tokenInfo: swapAccounts.tokenInfo,
// prismData: swapAccounts.curveData,
// feeSweeper: fees.owner,
// transitiveState: new PublicKey(TRANSITIVE_STATE),
// host: fees.host,
// },
// remainingAccounts: swapAccounts.remainingAccounts,
// }
// )
// }