@flipflop-sdk/tools
Version:
[](https://deepwiki.com/flipflop-fun/sdk) [](https://badge.fury.io/js/%40flipflop-sdk%2Ftools) [ • 3.23 kB
text/typescript
import * as anchor from "@coral-xyz/anchor";
import { Buffer } from 'buffer';
import { PublicKey } from "@solana/web3.js";
export const AMM_CONFIG_SEED = Buffer.from(
anchor.utils.bytes.utf8.encode("amm_config")
);
export const POOL_SEED = Buffer.from(anchor.utils.bytes.utf8.encode("pool"));
export const POOL_VAULT_SEED = Buffer.from(
anchor.utils.bytes.utf8.encode("pool_vault")
);
export const POOL_AUTH_SEED = Buffer.from(
anchor.utils.bytes.utf8.encode("vault_and_lp_mint_auth_seed")
);
export const POOL_LPMINT_SEED = Buffer.from(
anchor.utils.bytes.utf8.encode("pool_lp_mint")
);
export const TICK_ARRAY_SEED = Buffer.from(
anchor.utils.bytes.utf8.encode("tick_array")
);
export const OPERATION_SEED = Buffer.from(
anchor.utils.bytes.utf8.encode("operation")
);
export const ORACLE_SEED = Buffer.from(
anchor.utils.bytes.utf8.encode("observation")
);
export function u16ToBytes(num: number) {
const arr = new ArrayBuffer(2);
const view = new DataView(arr);
view.setUint16(0, num, false);
return new Uint8Array(arr);
}
export function i16ToBytes(num: number) {
const arr = new ArrayBuffer(2);
const view = new DataView(arr);
view.setInt16(0, num, false);
return new Uint8Array(arr);
}
export function u32ToBytes(num: number) {
const arr = new ArrayBuffer(4);
const view = new DataView(arr);
view.setUint32(0, num, false);
return new Uint8Array(arr);
}
export function i32ToBytes(num: number) {
const arr = new ArrayBuffer(4);
const view = new DataView(arr);
view.setInt32(0, num, false);
return new Uint8Array(arr);
}
export function getAmmConfigAddress(
index: number,
programId: PublicKey
): [PublicKey, number] {
const [address, bump] = PublicKey.findProgramAddressSync(
[AMM_CONFIG_SEED, u16ToBytes(index)],
programId
);
return [address, bump];
}
export function getAuthAddress(
programId: PublicKey
): [PublicKey, number] {
const [address, bump] = PublicKey.findProgramAddressSync(
[POOL_AUTH_SEED],
programId
);
return [address, bump];
}
export function getPoolAddress(
ammConfig: PublicKey,
tokenMint0: PublicKey,
tokenMint1: PublicKey,
programId: PublicKey
): [PublicKey, number] {
const [address, bump] = PublicKey.findProgramAddressSync(
[
POOL_SEED,
ammConfig.toBuffer(),
tokenMint0.toBuffer(),
tokenMint1.toBuffer(),
],
programId
);
return [address, bump];
}
export function getPoolVaultAddress(
pool: PublicKey,
vaultTokenMint: PublicKey,
programId: PublicKey
): [PublicKey, number] {
const [address, bump] = PublicKey.findProgramAddressSync(
[POOL_VAULT_SEED, pool.toBuffer(), vaultTokenMint.toBuffer()],
programId
);
return [address, bump];
}
export function getPoolLpMintAddress(
pool: PublicKey,
programId: PublicKey
): [PublicKey, number] {
const [address, bump] = PublicKey.findProgramAddressSync(
[POOL_LPMINT_SEED, pool.toBuffer()],
programId
);
return [address, bump];
}
export function getOrcleAccountAddress(
pool: PublicKey,
programId: PublicKey
): [PublicKey, number] {
const [address, bump] = PublicKey.findProgramAddressSync(
[ORACLE_SEED, pool.toBuffer()],
programId
);
return [address, bump];
}