UNPKG

@flipflop-sdk/tools

Version:

[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/flipflop-fun/sdk) [![npm version](https://badge.fury.io/js/%40flipflop-sdk%2Ftools.svg)](https://badge.fury.io/js/%40flipflop-sdk%2Ftools) [![License: MIT](https://img.shields.io/badge

129 lines (116 loc) 3.23 kB
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]; }