mirror of
https://github.com/d0zingcat/solana-agent-kit.git
synced 2026-05-21 15:10:42 +00:00
84 lines
2.0 KiB
TypeScript
84 lines
2.0 KiB
TypeScript
import {
|
|
CREATE_CPMM_POOL_FEE_ACC,
|
|
CREATE_CPMM_POOL_PROGRAM,
|
|
Raydium,
|
|
TxVersion,
|
|
} from "@raydium-io/raydium-sdk-v2";
|
|
import { MintLayout } from "@solana/spl-token";
|
|
import { PublicKey } from "@solana/web3.js";
|
|
import BN from "bn.js";
|
|
import { SolanaAgentKit } from "../index";
|
|
|
|
export async function raydiumCreateCpmm(
|
|
agent: SolanaAgentKit,
|
|
mintA: PublicKey,
|
|
mintB: PublicKey,
|
|
configId: PublicKey,
|
|
mintAAmount: BN,
|
|
mintBAmount: BN,
|
|
startTime: BN,
|
|
): Promise<string> {
|
|
const raydium = await Raydium.load({
|
|
owner: agent.wallet,
|
|
connection: agent.connection,
|
|
});
|
|
|
|
const [mintInfoA, mintInfoB] = await agent.connection.getMultipleAccountsInfo(
|
|
[mintA, mintB],
|
|
);
|
|
if (mintInfoA === null || mintInfoB === null) {
|
|
throw Error("fetch mint info error");
|
|
}
|
|
|
|
const mintDecodeInfoA = MintLayout.decode(mintInfoA.data);
|
|
const mintDecodeInfoB = MintLayout.decode(mintInfoB.data);
|
|
|
|
const mintFormatInfoA = {
|
|
chainId: 101,
|
|
address: mintA.toString(),
|
|
programId: mintInfoA.owner.toString(),
|
|
logoURI: "",
|
|
symbol: "",
|
|
name: "",
|
|
decimals: mintDecodeInfoA.decimals,
|
|
tags: [],
|
|
extensions: {},
|
|
};
|
|
const mintFormatInfoB = {
|
|
chainId: 101,
|
|
address: mintB.toString(),
|
|
programId: mintInfoB.owner.toString(),
|
|
logoURI: "",
|
|
symbol: "",
|
|
name: "",
|
|
decimals: mintDecodeInfoB.decimals,
|
|
tags: [],
|
|
extensions: {},
|
|
};
|
|
|
|
const { execute } = await raydium.cpmm.createPool({
|
|
programId: CREATE_CPMM_POOL_PROGRAM,
|
|
poolFeeAccount: CREATE_CPMM_POOL_FEE_ACC,
|
|
mintA: mintFormatInfoA,
|
|
mintB: mintFormatInfoB,
|
|
mintAAmount,
|
|
mintBAmount,
|
|
startTime,
|
|
//@ts-expect-error sdk bug
|
|
feeConfig: { id: configId.toString() },
|
|
associatedOnly: false,
|
|
ownerInfo: {
|
|
useSOLBalance: true,
|
|
},
|
|
txVersion: TxVersion.V0,
|
|
// computeBudgetConfig: {
|
|
// units: 600000,
|
|
// microLamports: 46591500,
|
|
// },
|
|
});
|
|
|
|
const { txId } = await execute({ sendAndConfirm: true });
|
|
|
|
return txId;
|
|
}
|