@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
165 lines (147 loc) • 4.31 kB
text/typescript
import { PublicKey } from "@solana/web3.js";
import { findProgramAddress, METADATA_PROGRAM_ID } from "../../../common";
import { i32ToBytes, u16ToBytes } from "./util";
export const AMM_CONFIG_SEED = Buffer.from("amm_config", "utf8");
export const POOL_SEED = Buffer.from("pool", "utf8");
export const POOL_VAULT_SEED = Buffer.from("pool_vault", "utf8");
export const POOL_REWARD_VAULT_SEED = Buffer.from("pool_reward_vault", "utf8");
export const POSITION_SEED = Buffer.from("position", "utf8");
export const TICK_ARRAY_SEED = Buffer.from("tick_array", "utf8");
export const OPERATION_SEED = Buffer.from("operation", "utf8");
export const POOL_TICK_ARRAY_BITMAP_SEED = Buffer.from("pool_tick_array_bitmap_extension", "utf8");
export const OBSERVATION_SEED = Buffer.from("observation", "utf8");
export function getPdaAmmConfigId(
programId: PublicKey,
index: number,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([AMM_CONFIG_SEED, u16ToBytes(index)], programId);
}
export function getPdaPoolId(
programId: PublicKey,
ammConfigId: PublicKey,
mintA: PublicKey,
mintB: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([POOL_SEED, ammConfigId.toBuffer(), mintA.toBuffer(), mintB.toBuffer()], programId);
}
export function getPdaPoolVaultId(
programId: PublicKey,
poolId: PublicKey,
vaultMint: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([POOL_VAULT_SEED, poolId.toBuffer(), vaultMint.toBuffer()], programId);
}
export function getPdaPoolRewardVaulId(
programId: PublicKey,
poolId: PublicKey,
rewardMint: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([POOL_REWARD_VAULT_SEED, poolId.toBuffer(), rewardMint.toBuffer()], programId);
}
export function getPdaTickArrayAddress(
programId: PublicKey,
poolId: PublicKey,
startIndex: number,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([TICK_ARRAY_SEED, poolId.toBuffer(), i32ToBytes(startIndex)], programId);
}
export function getPdaProtocolPositionAddress(
programId: PublicKey,
poolId: PublicKey,
tickLower: number,
tickUpper: number,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress(
[POSITION_SEED, poolId.toBuffer(), i32ToBytes(tickLower), i32ToBytes(tickUpper)],
programId,
);
}
export function getPdaPersonalPositionAddress(
programId: PublicKey,
nftMint: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([POSITION_SEED, nftMint.toBuffer()], programId);
}
export function getPdaMetadataKey(mint: PublicKey): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress(
[Buffer.from("metadata", "utf8"), METADATA_PROGRAM_ID.toBuffer(), mint.toBuffer()],
METADATA_PROGRAM_ID,
);
}
export function getPdaOperationAccount(programId: PublicKey): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([OPERATION_SEED], programId);
}
export function getPdaExBitmapAccount(
programId: PublicKey,
poolId: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([POOL_TICK_ARRAY_BITMAP_SEED, poolId.toBuffer()], programId);
}
export function getPdaObservationAccount(
programId: PublicKey,
poolId: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([OBSERVATION_SEED, poolId.toBuffer()], programId);
}
export const POOL_LOCK_ID_SEED = Buffer.from("locked_position", "utf8");
export function getPdaLockPositionId(
programId: PublicKey,
positionId: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([POOL_LOCK_ID_SEED, positionId.toBuffer()], programId);
}
export function getPdaLockClPositionIdV2(
programId: PublicKey,
lockNftMint: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([POOL_LOCK_ID_SEED, lockNftMint.toBuffer()], programId);
}
export const SUPPORT_MINT_SEED = Buffer.from("support_mint", "utf8");
export function getPdaMintExAccount(
programId: PublicKey,
mintAddress: PublicKey,
): {
publicKey: PublicKey;
nonce: number;
} {
return findProgramAddress([SUPPORT_MINT_SEED, mintAddress.toBuffer()], programId);
}