@hadron-fi/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/adampeters/Documents/sol/hadron-dashboard/hadron-sdk/dist/index.js","../src/constants/index.ts","../src/helpers/derive.ts","../src/helpers/math.ts","../src/accounts/index.ts","../src/types/index.ts","../src/instructions/initialize.ts","../src/instructions/deposit.ts","../src/instructions/withdraw.ts","../src/instructions/swap.ts","../src/instructions/setCurve.ts","../src/instructions/oracle.ts","../src/instructions/switchCurve.ts","../src/instructions/curveUpdates.ts","../src/instructions/authority.ts","../src/instructions/feeConfig.ts","../src/instructions/spreadConfig.ts","../src/instructions/poolState.ts","../src/hadron.ts","../src/helpers/token.ts"],"names":["PublicKey","PoolState","OracleMode","Interpolation","CurveType","CurveXMode","RiskMode","CurveUpdateOpKind","Side","getAssociatedTokenAddressSync","TransactionInstruction","SYSVAR_CLOCK_PUBKEY","SystemProgram","TOKEN_PROGRAM_ID"],"mappings":"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","file":"/Users/adampeters/Documents/sol/hadron-dashboard/hadron-sdk/dist/index.js","sourcesContent":[null,"import { PublicKey } from \"@solana/web3.js\";\n\n// ============================================================================\n// Program\n// ============================================================================\n\nexport const HADRON_PROGRAM_ID = new PublicKey(\n \"Q72w4coozA552keKDdeeh2EyQw32qfMFsHPu6cbatom\"\n);\n\n// ============================================================================\n// PDA Seeds\n// ============================================================================\n\nexport const CONFIG_SEED = Buffer.from(\"hadron-config\");\nexport const MIDPRICE_ORACLE_SEED = Buffer.from(\"hadron-midprice\");\nexport const CURVE_META_SEED = Buffer.from(\"hadron-curve-meta\");\nexport const CURVE_PREFABS_SEED = Buffer.from(\"hadron-curve-prefabs\");\nexport const CURVE_UPDATES_SEED = Buffer.from(\"hadron-curve-updates\");\nexport const FEE_CONFIG_SEED = Buffer.from(\"fee_config\");\nexport const SPREAD_CONFIG_SEED = Buffer.from(\"spread_config\");\n\n// ============================================================================\n// Account Sizes\n// ============================================================================\n\nexport const CONFIG_SIZE = 248;\nexport const MIDPRICE_ORACLE_SIZE = 64;\nexport const CURVE_META_SIZE = 48;\nexport const FEE_CONFIG_SIZE = 72;\nexport const CURVE_UPDATES_SIZE = 258;\nexport const CURVE_SIDE_HEADER = 8;\nexport const CURVE_POINT_LEN = 24;\n\n// ============================================================================\n// Pool Parameter Defaults & Limits\n// ============================================================================\n\nexport const DEFAULT_MAX_PREFAB_SLOTS = 10;\nexport const DEFAULT_MAX_CURVE_POINTS = 16;\nexport const ABSOLUTE_MAX_PREFAB_SLOTS = 16;\nexport const ABSOLUTE_MAX_CURVE_POINTS = 128;\nexport const MAX_SETCURVE_POINTS = 32;\nexport const MAX_CURVE_UPDATE_OPS = 8;\n\n// ============================================================================\n// Fixed-Point Math\n// ============================================================================\n\n/** Q32.32 representation of 1.0 */\nexport const Q32_ONE = BigInt(1) << BigInt(32); // 4294967296n\n\n// ============================================================================\n// Instruction Discriminators\n// ============================================================================\n\nexport const Discriminator = {\n Initialize: 0,\n Deposit: 1,\n Withdraw: 2,\n SwapExactIn: 3,\n SetCurve: 4,\n UpdateMidprice: 5,\n InitializeFeeConfig: 6,\n UpdateFeeConfig: 7,\n SetRiskCurve: 8,\n UpdateBaseSpread: 9,\n UpdateMidpriceAndBaseSpread: 10,\n SwitchPriceCurve: 11,\n SwitchRiskCurve: 12,\n InitializeSpreadConfig: 13,\n UpdateSpreadConfig: 14,\n UpdateDeltaStaleness: 15,\n NominateAuthority: 16,\n AcceptAuthority: 17,\n SubmitCurveUpdates: 18,\n ApplyCurveUpdates: 19,\n ClosePool: 20,\n SetPoolState: 21,\n AllocateCurvePrefabs: 22,\n SetQuotingAuthority: 23,\n RotateFeeAdmin: 24,\n} as const;\n\n// ============================================================================\n// Instruction Data Sizes\n// ============================================================================\n\n/** Per-point data in SetCurve/SetRiskCurve: u64 + u64 + u8 + 4 params = 21 bytes */\nexport const POINT_DATA_SIZE = 21;\n\n/** Per-op data in SubmitCurveUpdates: curve_type(1)+op_kind(1)+point_index(1)+interp(1)+x_in(8)+price(8)+params(4) = 24 bytes */\nexport const CURVE_UPDATE_OP_SIZE = 24;\n\n// ============================================================================\n// Size Helpers\n// ============================================================================\n\n/** Compute CurvePrefabs account size for given pool parameters. */\nexport function curvePrefabsSize(\n maxSlots: number,\n maxPoints: number\n): number {\n return 32 + 4 * maxSlots * (CURVE_SIDE_HEADER + maxPoints * CURVE_POINT_LEN);\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport { getAssociatedTokenAddressSync } from \"@solana/spl-token\";\nimport {\n CONFIG_SEED,\n MIDPRICE_ORACLE_SEED,\n CURVE_META_SEED,\n CURVE_PREFABS_SEED,\n CURVE_UPDATES_SEED,\n FEE_CONFIG_SEED,\n SPREAD_CONFIG_SEED,\n HADRON_PROGRAM_ID,\n} from \"../constants\";\nimport type { PoolAddresses } from \"../types\";\n\nfunction seedToBuffer(seed: bigint): Buffer {\n const buf = Buffer.alloc(8);\n buf.writeBigUInt64LE(seed);\n return buf;\n}\n\nexport function getConfigAddress(\n seed: bigint,\n mintX: PublicKey,\n mintY: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [CONFIG_SEED, seedToBuffer(seed), mintX.toBuffer(), mintY.toBuffer()],\n programId\n );\n}\n\nexport function getMidpriceOracleAddress(\n seed: bigint,\n mintX: PublicKey,\n mintY: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n MIDPRICE_ORACLE_SEED,\n seedToBuffer(seed),\n mintX.toBuffer(),\n mintY.toBuffer(),\n ],\n programId\n );\n}\n\nexport function getCurveMetaAddress(\n seed: bigint,\n mintX: PublicKey,\n mintY: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [CURVE_META_SEED, seedToBuffer(seed), mintX.toBuffer(), mintY.toBuffer()],\n programId\n );\n}\n\nexport function getCurvePrefabsAddress(\n seed: bigint,\n mintX: PublicKey,\n mintY: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n CURVE_PREFABS_SEED,\n seedToBuffer(seed),\n mintX.toBuffer(),\n mintY.toBuffer(),\n ],\n programId\n );\n}\n\nexport function getCurveUpdatesAddress(\n seed: bigint,\n mintX: PublicKey,\n mintY: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n CURVE_UPDATES_SEED,\n seedToBuffer(seed),\n mintX.toBuffer(),\n mintY.toBuffer(),\n ],\n programId\n );\n}\n\nexport function getFeeConfigAddress(\n programId: PublicKey = HADRON_PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync([FEE_CONFIG_SEED], programId);\n}\n\nexport function getSpreadConfigAddress(\n configPda: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SPREAD_CONFIG_SEED, configPda.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive all PDA addresses for a pool.\n */\nexport function derivePoolAddresses(\n seed: bigint,\n mintX: PublicKey,\n mintY: PublicKey,\n tokenProgramX: PublicKey,\n tokenProgramY: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): PoolAddresses {\n const [config, configBump] = getConfigAddress(seed, mintX, mintY, programId);\n const [midpriceOracle] = getMidpriceOracleAddress(\n seed,\n mintX,\n mintY,\n programId\n );\n const [curveMeta] = getCurveMetaAddress(seed, mintX, mintY, programId);\n const [curvePrefabs] = getCurvePrefabsAddress(seed, mintX, mintY, programId);\n const [curveUpdates] = getCurveUpdatesAddress(seed, mintX, mintY, programId);\n\n const vaultX = getAssociatedTokenAddressSync(\n mintX,\n config,\n true,\n tokenProgramX\n );\n const vaultY = getAssociatedTokenAddressSync(\n mintY,\n config,\n true,\n tokenProgramY\n );\n\n return {\n config,\n configBump,\n midpriceOracle,\n curveMeta,\n curvePrefabs,\n curveUpdates,\n vaultX,\n vaultY,\n };\n}\n","import { Q32_ONE } from \"../constants\";\n\n/** Convert a floating-point number to Q32.32 fixed point (bigint). */\nexport function toQ32(value: number): bigint {\n return BigInt(Math.floor(value * Number(Q32_ONE)));\n}\n\n/** Convert a Q32.32 fixed-point bigint to a floating-point number.\n * Splits into integer + fractional parts to avoid precision loss\n * when the integer part exceeds 2^21 (~2 million). */\nexport function fromQ32(q32: bigint): number {\n const intPart = q32 >> 32n;\n const fracPart = q32 & 0xFFFF_FFFFn;\n return Number(intPart) + Number(fracPart) / Number(Q32_ONE);\n}\n\n/** Convert a percentage (0.0 to 1.0) to Q32.32. */\nexport function pctToQ32(pct: number): bigint {\n return toQ32(pct);\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport {\n CURVE_SIDE_HEADER,\n CURVE_POINT_LEN,\n MIDPRICE_ORACLE_SIZE,\n CURVE_UPDATE_OP_SIZE,\n MAX_CURVE_UPDATE_OPS,\n} from \"../constants\";\nimport {\n PoolState,\n OracleMode,\n Interpolation,\n CurveXMode,\n RiskMode,\n CurveType,\n CurveUpdateOpKind,\n} from \"../types\";\nimport type {\n DecodedConfig,\n DecodedMidpriceOracle,\n DecodedCurveMeta,\n DecodedFeeConfig,\n DecodedCurveUpdates,\n CurvePoint,\n CurveSide,\n CurveUpdateOp,\n} from \"../types\";\n\n// ============================================================================\n// Config (248 bytes)\n// ============================================================================\n\nexport function decodeConfig(data: Uint8Array): DecodedConfig {\n const buf = Buffer.from(data);\n let offset = 0;\n\n const state: PoolState = buf.readUInt8(offset);\n offset += 1;\n\n const seed = buf.readBigUInt64LE(offset);\n offset += 8;\n\n const authority = new PublicKey(buf.subarray(offset, offset + 32));\n offset += 32;\n\n const mintX = new PublicKey(buf.subarray(offset, offset + 32));\n offset += 32;\n\n const mintY = new PublicKey(buf.subarray(offset, offset + 32));\n offset += 32;\n\n const configBump = buf.readUInt8(offset);\n offset += 1;\n\n const curveMeta = new PublicKey(buf.subarray(offset, offset + 32));\n offset += 32;\n\n const spreadConfigInitialized = buf.readUInt8(offset) !== 0;\n offset += 1;\n\n const deltaStaleness = buf.readUInt8(offset);\n offset += 1;\n\n const oracleMode: OracleMode = buf.readUInt8(offset);\n offset += 1;\n\n // _padding [u8; 3]\n offset += 3;\n\n const pendingAuthority = new PublicKey(buf.subarray(offset, offset + 32));\n offset += 32;\n\n const nominationExpiry = buf.readBigUInt64LE(offset);\n offset += 8;\n\n const tokenProgramX = new PublicKey(buf.subarray(offset, offset + 32));\n offset += 32;\n\n const tokenProgramY = new PublicKey(buf.subarray(offset, offset + 32));\n\n return {\n state,\n seed,\n authority,\n mintX,\n mintY,\n configBump,\n curveMeta,\n spreadConfigInitialized,\n deltaStaleness,\n oracleMode,\n pendingAuthority,\n nominationExpiry,\n tokenProgramX,\n tokenProgramY,\n };\n}\n\n// ============================================================================\n// MidpriceOracle (64 bytes)\n// ============================================================================\n\nexport function decodeMidpriceOracle(data: Uint8Array): DecodedMidpriceOracle {\n const buf = Buffer.from(data);\n\n const authority = new PublicKey(buf.subarray(0, 32));\n const sequence = buf.readBigUInt64LE(32);\n const midpriceQ32 = buf.readBigUInt64LE(40);\n const baseSpreadQ32 = buf.readBigUInt64LE(48);\n const lastUpdateSlot =\n buf.length >= MIDPRICE_ORACLE_SIZE ? buf.readBigUInt64LE(56) : 0n;\n\n return { authority, sequence, midpriceQ32, baseSpreadQ32, lastUpdateSlot };\n}\n\n// ============================================================================\n// CurveMeta (48 bytes)\n// ============================================================================\n\nexport function decodeCurveMeta(data: Uint8Array): DecodedCurveMeta {\n const buf = Buffer.from(data);\n\n return {\n authority: new PublicKey(buf.subarray(0, 32)),\n activePriceBidSlot: buf.readUInt8(32),\n activePriceAskSlot: buf.readUInt8(33),\n activeRiskBidSlot: buf.readUInt8(34),\n activeRiskAskSlot: buf.readUInt8(35),\n initializedSlots: new Uint8Array(buf.subarray(36, 44)),\n maxPrefabSlots: buf.readUInt8(44),\n maxCurvePoints: buf.readUInt8(45),\n };\n}\n\n/**\n * Check if a specific slot is initialized in the CurveMeta bitmap.\n */\nexport function isSlotInitialized(\n initializedSlots: Uint8Array,\n curveType: CurveType,\n slot: number,\n maxSlots: number\n): boolean {\n const bitIndex = curveType * maxSlots + slot;\n const byteIndex = Math.floor(bitIndex / 8);\n const bitOffset = bitIndex % 8;\n return (initializedSlots[byteIndex] & (1 << bitOffset)) !== 0;\n}\n\n// ============================================================================\n// FeeConfig (72 bytes)\n// ============================================================================\n\nexport function decodeFeeConfig(data: Uint8Array): DecodedFeeConfig {\n const buf = Buffer.from(data);\n\n return {\n initialized: buf.readUInt8(0) !== 0,\n feePpm: buf.readUInt32LE(1),\n bump: buf.readUInt8(5),\n // skip 2 bytes padding\n feeAdmin: new PublicKey(buf.subarray(8, 40)),\n feeRecipient: new PublicKey(buf.subarray(40, 72)),\n };\n}\n\n// ============================================================================\n// CurveUpdates (258 bytes)\n// ============================================================================\n\nexport function decodeCurveUpdates(data: Uint8Array): DecodedCurveUpdates {\n const buf = Buffer.from(data);\n let offset = 0;\n\n const authority = new PublicKey(buf.subarray(offset, offset + 32));\n offset += 32;\n\n const curveMeta = new PublicKey(buf.subarray(offset, offset + 32));\n offset += 32;\n\n const numOps = buf.readUInt8(offset);\n offset += 1;\n\n // skip padding\n offset += 1;\n\n const ops: CurveUpdateOp[] = [];\n for (let i = 0; i < numOps && i < MAX_CURVE_UPDATE_OPS; i++) {\n const opOffset = offset + i * CURVE_UPDATE_OP_SIZE;\n ops.push({\n curveType: buf.readUInt8(opOffset) as CurveType,\n opKind: buf.readUInt8(opOffset + 1) as CurveUpdateOpKind,\n pointIndex: buf.readUInt8(opOffset + 2),\n interpolation: buf.readUInt8(opOffset + 3) as Interpolation,\n xIn: buf.readBigUInt64LE(opOffset + 4),\n priceFactorQ32: buf.readBigUInt64LE(opOffset + 12),\n params: new Uint8Array(buf.subarray(opOffset + 20, opOffset + 24)),\n });\n }\n\n return { authority, curveMeta, numOps, ops };\n}\n\n// ============================================================================\n// CurvePrefabs (variable size) — decode individual curve sides\n// ============================================================================\n\n/**\n * Decode a single curve side from a CurvePrefabs account.\n */\nexport function decodeCurveSide(\n data: Uint8Array,\n curveType: CurveType,\n slot: number,\n maxSlots: number,\n maxPoints: number\n): CurveSide {\n const sideSize = CURVE_SIDE_HEADER + maxPoints * CURVE_POINT_LEN;\n const offset = 32 + (curveType * maxSlots + slot) * sideSize;\n const buf = Buffer.from(data);\n\n const numPoints = buf.readUInt8(offset);\n const defaultInterpolation = buf.readUInt8(offset + 1) as Interpolation;\n const xMode = buf.readUInt8(offset + 2) as CurveXMode;\n const riskMode = buf.readUInt8(offset + 3) as RiskMode;\n\n const points: CurvePoint[] = [];\n const pointsStart = offset + CURVE_SIDE_HEADER;\n const n = Math.min(numPoints, maxPoints);\n for (let i = 0; i < n; i++) {\n const pOff = pointsStart + i * CURVE_POINT_LEN;\n points.push({\n xIn: buf.readBigUInt64LE(pOff),\n priceFactorQ32: buf.readBigUInt64LE(pOff + 8),\n interpolation: buf.readUInt8(pOff + 16) as Interpolation,\n params: new Uint8Array(buf.subarray(pOff + 17, pOff + 21)),\n });\n }\n\n return { numPoints, defaultInterpolation, xMode, riskMode, points };\n}\n\n/**\n * Decode all active curve slots from a CurvePrefabs account using CurveMeta info.\n */\nexport function decodeActiveCurves(\n prefabsData: Uint8Array,\n meta: DecodedCurveMeta\n): {\n priceBid: CurveSide;\n priceAsk: CurveSide;\n riskBid: CurveSide;\n riskAsk: CurveSide;\n} {\n const { maxPrefabSlots, maxCurvePoints } = meta;\n return {\n priceBid: decodeCurveSide(\n prefabsData,\n CurveType.PriceBid,\n meta.activePriceBidSlot,\n maxPrefabSlots,\n maxCurvePoints\n ),\n priceAsk: decodeCurveSide(\n prefabsData,\n CurveType.PriceAsk,\n meta.activePriceAskSlot,\n maxPrefabSlots,\n maxCurvePoints\n ),\n riskBid: decodeCurveSide(\n prefabsData,\n CurveType.RiskBid,\n meta.activeRiskBidSlot,\n maxPrefabSlots,\n maxCurvePoints\n ),\n riskAsk: decodeCurveSide(\n prefabsData,\n CurveType.RiskAsk,\n meta.activeRiskAskSlot,\n maxPrefabSlots,\n maxCurvePoints\n ),\n };\n}\n","import { PublicKey } from \"@solana/web3.js\";\n\n// ============================================================================\n// Enums\n// ============================================================================\n\nexport enum PoolState {\n Uninitialized = 0,\n Initialized = 1,\n Paused = 2,\n WithdrawOnly = 3,\n}\n//\nexport enum OracleMode {\n /** Off-chain authority updates the oracle */\n Authority = 0,\n /** Midprice computed from vault ratio (vault_y / vault_x) */\n Relative = 1,\n}\n\nexport enum Interpolation {\n Step = 0,\n Linear = 1,\n MarginalStep = 2,\n Hyperbolic = 3,\n Quadratic = 4,\n Cubic = 5,\n}\n\nexport enum CurveType {\n PriceBid = 0,\n PriceAsk = 1,\n RiskBid = 2,\n RiskAsk = 3,\n}\n\nexport enum CurveXMode {\n /** Price: absolute tokens. Risk: percent Q32. */\n Native = 0,\n /** Price: percent of vault Q32. Risk: absolute tokens. */\n Alternate = 1,\n}\n\nexport enum RiskMode {\n Virtual = 0,\n Integrated = 1,\n}\n\nexport enum CurveUpdateOpKind {\n Edit = 0,\n Add = 1,\n Remove = 2,\n}\n\nexport enum Side {\n Bid = 0,\n Ask = 1,\n}\n\n// ============================================================================\n// Decoded Account Types\n// ============================================================================\n\nexport interface DecodedConfig {\n state: PoolState;\n seed: bigint;\n authority: PublicKey;\n mintX: PublicKey;\n mintY: PublicKey;\n configBump: number;\n curveMeta: PublicKey;\n spreadConfigInitialized: boolean;\n deltaStaleness: number;\n oracleMode: OracleMode;\n pendingAuthority: PublicKey;\n nominationExpiry: bigint;\n tokenProgramX: PublicKey;\n tokenProgramY: PublicKey;\n}\n\nexport interface DecodedMidpriceOracle {\n authority: PublicKey;\n sequence: bigint;\n midpriceQ32: bigint;\n baseSpreadQ32: bigint;\n lastUpdateSlot: bigint;\n}\n\nexport interface DecodedCurveMeta {\n authority: PublicKey;\n activePriceBidSlot: number;\n activePriceAskSlot: number;\n activeRiskBidSlot: number;\n activeRiskAskSlot: number;\n initializedSlots: Uint8Array;\n maxPrefabSlots: number;\n maxCurvePoints: number;\n}\n\nexport interface DecodedFeeConfig {\n initialized: boolean;\n feePpm: number;\n bump: number;\n feeAdmin: PublicKey;\n feeRecipient: PublicKey;\n}\n\nexport interface DecodedCurveUpdates {\n authority: PublicKey;\n curveMeta: PublicKey;\n numOps: number;\n ops: CurveUpdateOp[];\n}\n\n// ============================================================================\n// Curve Data Types\n// ============================================================================\n\nexport interface CurvePoint {\n xIn: bigint;\n priceFactorQ32: bigint;\n interpolation: Interpolation;\n params: Uint8Array;\n}\n\nexport interface CurveSide {\n numPoints: number;\n defaultInterpolation: Interpolation;\n xMode: CurveXMode;\n riskMode: RiskMode;\n points: CurvePoint[];\n}\n\nexport interface CurveUpdateOp {\n curveType: CurveType;\n opKind: CurveUpdateOpKind;\n pointIndex: number;\n interpolation: Interpolation;\n xIn: bigint;\n priceFactorQ32: bigint;\n params: Uint8Array;\n}\n\n// ============================================================================\n// Instruction Parameter Types\n// ============================================================================\n\nexport interface InitializeParams {\n /** Pool seed. If omitted, a random seed is generated automatically. */\n seed?: bigint;\n mintX: PublicKey;\n mintY: PublicKey;\n authority: PublicKey;\n initialMidpriceQ32: bigint;\n oracleMode?: OracleMode;\n maxPrefabSlots?: number;\n maxCurvePoints?: number;\n /** Token program for mint X (defaults to TOKEN_PROGRAM_ID) */\n tokenProgramX?: PublicKey;\n /** Token program for mint Y (defaults to TOKEN_PROGRAM_ID) */\n tokenProgramY?: PublicKey;\n}\n\nexport interface DepositParams {\n amountX: bigint;\n amountY: bigint;\n expiration?: number;\n}\n\nexport interface WithdrawParams {\n amountX: bigint;\n amountY: bigint;\n expiration?: number;\n}\n\nexport interface SwapParams {\n isX: boolean;\n amountIn: bigint;\n minOut: bigint;\n feeRecipient: PublicKey;\n expiration?: number;\n}\n\nexport interface SetCurvePointInput {\n xIn: bigint;\n /** Price factor as floating point (e.g. 0.99). Converted to Q32 internally. */\n priceFactor: number;\n interpolation?: Interpolation;\n params?: Uint8Array;\n}\n\nexport interface SetCurveParams {\n side: Side;\n defaultInterpolation: Interpolation;\n points: SetCurvePointInput[];\n slot?: number;\n xMode?: CurveXMode;\n}\n\n/** Params for setting price curve on both bid and ask in one call (returns two instructions). */\nexport interface SetCurveBothParams {\n bid: Omit<SetCurveParams, \"side\">;\n ask: Omit<SetCurveParams, \"side\">;\n}\n\nexport interface SetRiskCurvePointInput {\n /** Percent of base vault (0.0 to 1.0) — converted to Q32 internally */\n pctBase: number;\n /** Price factor as floating point */\n priceFactor: number;\n interpolation?: Interpolation;\n params?: Uint8Array;\n}\n\nexport interface SetRiskCurveAbsolutePointInput {\n /** Absolute vault balance in token atoms */\n vaultBalance: bigint;\n priceFactor: number;\n interpolation?: Interpolation;\n params?: Uint8Array;\n}\n\nexport interface SetRiskCurveParams {\n side: Side;\n defaultInterpolation: Interpolation;\n points: SetRiskCurvePointInput[];\n slot?: number;\n xMode?: CurveXMode;\n riskMode?: RiskMode;\n}\n\n/** Params for setting risk curve (percent x-axis) on both bid and ask in one call. */\nexport interface SetRiskCurveBothParams {\n bid: Omit<SetRiskCurveParams, \"side\">;\n ask: Omit<SetRiskCurveParams, \"side\">;\n}\n\nexport interface SetRiskCurveAbsoluteParams {\n side: Side;\n defaultInterpolation: Interpolation;\n points: SetRiskCurveAbsolutePointInput[];\n slot?: number;\n riskMode?: RiskMode;\n}\n\n/** Params for setting risk curve (absolute x-axis) on both bid and ask in one call. */\nexport interface SetRiskCurveAbsoluteBothParams {\n bid: Omit<SetRiskCurveAbsoluteParams, \"side\">;\n ask: Omit<SetRiskCurveAbsoluteParams, \"side\">;\n}\n\nexport interface UpdateMidpriceParams {\n midpriceQ32: bigint;\n sequence?: bigint;\n}\n\nexport interface UpdateBaseSpreadParams {\n baseSpreadQ32: bigint;\n sequence?: bigint;\n}\n\nexport interface UpdateMidpriceAndBaseSpreadParams {\n midpriceQ32: bigint;\n baseSpreadQ32: bigint;\n sequence?: bigint;\n}\n\nexport interface SwitchCurveParams {\n side: Side;\n slot: number;\n}\n\nexport interface NominateAuthorityParams {\n newAuthority: PublicKey;\n expirySlot: bigint;\n}\n\nexport interface SetQuotingAuthorityParams {\n newQuotingAuthority: PublicKey;\n /** If provided, also updates SpreadConfig.admin */\n spreadConfigPda?: PublicKey;\n}\n\nexport interface InitializeFeeConfigParams {\n feePpm: number;\n feeAdmin: PublicKey;\n feeRecipient: PublicKey;\n}\n\nexport interface UpdateFeeConfigParams {\n /** Pass null for no change (sends u32::MAX) */\n feePpm: number | null;\n /** Pass null for no change (sends zeros) */\n feeRecipient: PublicKey | null;\n}\n\nexport interface RotateFeeAdminParams {\n newFeeAdmin: PublicKey;\n}\n\nexport interface SetPoolStateParams {\n newState: PoolState;\n}\n\nexport interface UpdateDeltaStalenessParams {\n deltaStaleness: number;\n}\n\nexport interface InitializeSpreadConfigParams {\n admin: PublicKey;\n}\n\nexport interface SpreadTriggerInput {\n account: PublicKey;\n spreadBps: number;\n}\n\nexport interface UpdateSpreadConfigParams {\n triggers: SpreadTriggerInput[];\n}\n\nexport interface AllocateCurvePrefabsParams {\n seed: bigint;\n mintX: PublicKey;\n mintY: PublicKey;\n maxPrefabSlots?: number;\n maxCurvePoints?: number;\n}\n\n// ============================================================================\n// Pool Addresses (derived PDAs)\n// ============================================================================\n\nexport interface PoolAddresses {\n config: PublicKey;\n configBump: number;\n midpriceOracle: PublicKey;\n curveMeta: PublicKey;\n curvePrefabs: PublicKey;\n curveUpdates: PublicKey;\n vaultX: PublicKey;\n vaultY: PublicKey;\n}\n","import {\n PublicKey,\n SystemProgram,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport {\n Discriminator,\n DEFAULT_MAX_PREFAB_SLOTS,\n DEFAULT_MAX_CURVE_POINTS,\n HADRON_PROGRAM_ID,\n curvePrefabsSize,\n} from \"../constants\";\nimport { derivePoolAddresses } from \"../helpers/derive\";\nimport type { InitializeParams, AllocateCurvePrefabsParams } from \"../types\";\n\n/**\n * Build an Initialize instruction.\n * Creates the pool: Config, MidpriceOracle, CurveMeta, CurveUpdates.\n * CurvePrefabs must be pre-allocated (use buildAllocateCurvePrefabs).\n */\nexport function buildInitialize(\n payer: PublicKey,\n params: InitializeParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const seed = params.seed;\n if (seed === undefined) throw new Error(\"seed is required — use Hadron.initialize() to auto-generate one\");\n const tokenProgramX = params.tokenProgramX ?? TOKEN_PROGRAM_ID;\n const tokenProgramY = params.tokenProgramY ?? TOKEN_PROGRAM_ID;\n const maxPrefabSlots = params.maxPrefabSlots ?? DEFAULT_MAX_PREFAB_SLOTS;\n const maxCurvePoints = params.maxCurvePoints ?? DEFAULT_MAX_CURVE_POINTS;\n const oracleMode = params.oracleMode ?? 0;\n\n const addrs = derivePoolAddresses(\n seed,\n params.mintX,\n params.mintY,\n tokenProgramX,\n tokenProgramY,\n programId\n );\n\n // Build data: disc(1) + seed(8) + mintX(32) + mintY(32) + authority(32) + midprice(8) + trailing(0|1|3)\n const hasCustomSlots =\n params.maxPrefabSlots !== undefined || params.maxCurvePoints !== undefined;\n const hasOracleMode = oracleMode !== 0 || hasCustomSlots;\n const trailingLen = hasCustomSlots ? 3 : hasOracleMode ? 1 : 0;\n const data = Buffer.alloc(1 + 8 + 32 + 32 + 32 + 8 + trailingLen);\n let offset = 0;\n\n data.writeUInt8(Discriminator.Initialize, offset);\n offset += 1;\n data.writeBigUInt64LE(seed, offset);\n offset += 8;\n params.mintX.toBuffer().copy(data, offset);\n offset += 32;\n params.mintY.toBuffer().copy(data, offset);\n offset += 32;\n params.authority.toBuffer().copy(data, offset);\n offset += 32;\n data.writeBigUInt64LE(params.initialMidpriceQ32, offset);\n offset += 8;\n\n if (hasOracleMode) {\n data.writeUInt8(oracleMode, offset);\n offset += 1;\n }\n if (hasCustomSlots) {\n data.writeUInt8(maxPrefabSlots, offset);\n offset += 1;\n data.writeUInt8(maxCurvePoints, offset);\n }\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: addrs.config, isSigner: false, isWritable: true },\n { pubkey: params.mintX, isSigner: false, isWritable: false },\n { pubkey: params.mintY, isSigner: false, isWritable: false },\n { pubkey: addrs.vaultX, isSigner: false, isWritable: true },\n { pubkey: addrs.vaultY, isSigner: false, isWritable: true },\n { pubkey: tokenProgramX, isSigner: false, isWritable: false },\n { pubkey: tokenProgramY, isSigner: false, isWritable: false },\n {\n pubkey: ASSOCIATED_TOKEN_PROGRAM_ID,\n isSigner: false,\n isWritable: false,\n },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: addrs.midpriceOracle, isSigner: false, isWritable: true },\n { pubkey: addrs.curveMeta, isSigner: false, isWritable: true },\n { pubkey: addrs.curvePrefabs, isSigner: false, isWritable: true },\n { pubkey: addrs.curveUpdates, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build an AllocateCurvePrefabs instruction.\n * Must be called before Initialize (possibly twice if size > 10240).\n */\nexport function buildAllocateCurvePrefabs(\n payer: PublicKey,\n params: AllocateCurvePrefabsParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const maxPrefabSlots = params.maxPrefabSlots ?? DEFAULT_MAX_PREFAB_SLOTS;\n const maxCurvePoints = params.maxCurvePoints ?? DEFAULT_MAX_CURVE_POINTS;\n\n const data = Buffer.alloc(1 + 8 + 32 + 32 + 1 + 1);\n let offset = 0;\n\n data.writeUInt8(Discriminator.AllocateCurvePrefabs, offset);\n offset += 1;\n data.writeBigUInt64LE(params.seed, offset);\n offset += 8;\n params.mintX.toBuffer().copy(data, offset);\n offset += 32;\n params.mintY.toBuffer().copy(data, offset);\n offset += 32;\n data.writeUInt8(maxPrefabSlots, offset);\n offset += 1;\n data.writeUInt8(maxCurvePoints, offset);\n\n const [curvePrefabsPda] = PublicKey.findProgramAddressSync(\n [\n Buffer.from(\"hadron-curve-prefabs\"),\n (() => {\n const b = Buffer.alloc(8);\n b.writeBigUInt64LE(params.seed);\n return b;\n })(),\n params.mintX.toBuffer(),\n params.mintY.toBuffer(),\n ],\n programId\n );\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: curvePrefabsPda, isSigner: false, isWritable: true },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport { getAssociatedTokenAddressSync } from \"@solana/spl-token\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport type { DepositParams } from \"../types\";\n\n/**\n * Build a Deposit instruction.\n */\nexport function buildDeposit(\n user: PublicKey,\n configPda: PublicKey,\n mintX: PublicKey,\n mintY: PublicKey,\n tokenProgramX: PublicKey,\n tokenProgramY: PublicKey,\n params: DepositParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 8 + 8 + 8);\n let offset = 0;\n\n data.writeUInt8(Discriminator.Deposit, offset);\n offset += 1;\n data.writeBigUInt64LE(params.amountX, offset);\n offset += 8;\n data.writeBigUInt64LE(params.amountY, offset);\n offset += 8;\n const exp = params.expiration ?? Math.floor(Date.now() / 1000) + 3600;\n data.writeBigInt64LE(BigInt(exp), offset);\n\n const userX = getAssociatedTokenAddressSync(mintX, user, false, tokenProgramX);\n const userY = getAssociatedTokenAddressSync(mintY, user, false, tokenProgramY);\n const vaultX = getAssociatedTokenAddressSync(mintX, configPda, true, tokenProgramX);\n const vaultY = getAssociatedTokenAddressSync(mintY, configPda, true, tokenProgramY);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: user, isSigner: true, isWritable: false },\n { pubkey: vaultX, isSigner: false, isWritable: true },\n { pubkey: vaultY, isSigner: false, isWritable: true },\n { pubkey: userX, isSigner: false, isWritable: true },\n { pubkey: userY, isSigner: false, isWritable: true },\n { pubkey: configPda, isSigner: false, isWritable: false },\n { pubkey: tokenProgramX, isSigner: false, isWritable: false },\n { pubkey: tokenProgramY, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport { getAssociatedTokenAddressSync } from \"@solana/spl-token\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport type { WithdrawParams } from \"../types\";\n\n/**\n * Build a Withdraw instruction.\n */\nexport function buildWithdraw(\n user: PublicKey,\n configPda: PublicKey,\n mintX: PublicKey,\n mintY: PublicKey,\n tokenProgramX: PublicKey,\n tokenProgramY: PublicKey,\n params: WithdrawParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 8 + 8 + 8);\n let offset = 0;\n\n data.writeUInt8(Discriminator.Withdraw, offset);\n offset += 1;\n data.writeBigUInt64LE(params.amountX, offset);\n offset += 8;\n data.writeBigUInt64LE(params.amountY, offset);\n offset += 8;\n const exp = params.expiration ?? Math.floor(Date.now() / 1000) + 3600;\n data.writeBigInt64LE(BigInt(exp), offset);\n\n const userX = getAssociatedTokenAddressSync(mintX, user, false, tokenProgramX);\n const userY = getAssociatedTokenAddressSync(mintY, user, false, tokenProgramY);\n const vaultX = getAssociatedTokenAddressSync(mintX, configPda, true, tokenProgramX);\n const vaultY = getAssociatedTokenAddressSync(mintY, configPda, true, tokenProgramY);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: user, isSigner: true, isWritable: false },\n { pubkey: vaultX, isSigner: false, isWritable: true },\n { pubkey: vaultY, isSigner: false, isWritable: true },\n { pubkey: userX, isSigner: false, isWritable: true },\n { pubkey: userY, isSigner: false, isWritable: true },\n { pubkey: configPda, isSigner: false, isWritable: true },\n { pubkey: tokenProgramX, isSigner: false, isWritable: false },\n { pubkey: tokenProgramY, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n","import {\n PublicKey,\n SYSVAR_CLOCK_PUBKEY,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { getAssociatedTokenAddressSync } from \"@solana/spl-token\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport { getFeeConfigAddress } from \"../helpers/derive\";\nimport type { SwapParams } from \"../types\";\nimport type { PoolAddresses } from \"../types\";\n\n/**\n * Build a SwapExactIn instruction.\n *\n * Account order (16 base): token_program_x, token_program_y, config,\n * midprice_oracle, curve_meta, curve_prefabs, authority(=pool address PDA), user,\n * user_source, vault_source, vault_dest, user_dest, fee_config,\n * fee_recipient_ata, clock, curve_updates.\n *\n * Optional (for introspection): spread_config, instructions_sysvar.\n */\nexport function buildSwapExactIn(\n user: PublicKey,\n poolAddresses: PoolAddresses,\n mintX: PublicKey,\n mintY: PublicKey,\n tokenProgramX: PublicKey,\n tokenProgramY: PublicKey,\n params: SwapParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 1 + 8 + 8 + 8);\n let offset = 0;\n\n data.writeUInt8(Discriminator.SwapExactIn, offset);\n offset += 1;\n data.writeUInt8(params.isX ? 1 : 0, offset);\n offset += 1;\n data.writeBigUInt64LE(params.amountIn, offset);\n offset += 8;\n data.writeBigUInt64LE(params.minOut, offset);\n offset += 8;\n const exp = params.expiration ?? Math.floor(Date.now() / 1000) + 3600;\n data.writeBigInt64LE(BigInt(exp), offset);\n\n const userX = getAssociatedTokenAddressSync(mintX, user, false, tokenProgramX);\n const userY = getAssociatedTokenAddressSync(mintY, user, false, tokenProgramY);\n\n const [userSource, vaultSource, vaultDest, userDest] = params.isX\n ? [userX, poolAddresses.vaultX, poolAddresses.vaultY, userY]\n : [userY, poolAddresses.vaultY, poolAddresses.vaultX, userX];\n\n const [feeConfigPda] = getFeeConfigAddress(programId);\n const inputMint = params.isX ? mintX : mintY;\n const inputMintProgram = params.isX ? tokenProgramX : tokenProgramY;\n const feeRecipientAta = getAssociatedTokenAddressSync(\n inputMint,\n params.feeRecipient,\n false,\n inputMintProgram\n );\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: tokenProgramX, isSigner: false, isWritable: false },\n { pubkey: tokenProgramY, isSigner: false, isWritable: false },\n { pubkey: poolAddresses.config, isSigner: false, isWritable: false },\n {\n pubkey: poolAddresses.midpriceOracle,\n isSigner: false,\n isWritable: false,\n },\n { pubkey: poolAddresses.curveMeta, isSigner: false, isWritable: false },\n {\n pubkey: poolAddresses.curvePrefabs,\n isSigner: false,\n isWritable: true,\n },\n { pubkey: poolAddresses.config, isSigner: false, isWritable: false }, // authority = pool address PDA\n { pubkey: user, isSigner: true, isWritable: false },\n { pubkey: userSource, isSigner: false, isWritable: true },\n { pubkey: vaultSource, isSigner: false, isWritable: true },\n { pubkey: vaultDest, isSigner: false, isWritable: true },\n { pubkey: userDest, isSigner: false, isWritable: true },\n { pubkey: feeConfigPda, isSigner: false, isWritable: false },\n { pubkey: feeRecipientAta, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },\n {\n pubkey: poolAddresses.curveUpdates,\n isSigner: false,\n isWritable: true,\n },\n ],\n data,\n });\n}\n","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport { Discriminator, POINT_DATA_SIZE, HADRON_PROGRAM_ID } from \"../constants\";\nimport { Interpolation, Side, CurveXMode, RiskMode } from \"../types\";\nimport { toQ32 } from \"../helpers/math\";\nimport type {\n SetCurveParams,\n SetCurveBothParams,\n SetRiskCurveParams,\n SetRiskCurveBothParams,\n SetRiskCurveAbsoluteParams,\n SetRiskCurveAbsoluteBothParams,\n} from \"../types\";\n\nfunction interpolationToByte(interp: Interpolation): number {\n return interp as number;\n}\n\n/**\n * Build a SetCurve instruction (price curve).\n * Accounts: authority, curve_meta, curve_prefabs.\n */\nexport function buildSetCurve(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n curvePrefabsPda: PublicKey,\n params: SetCurveParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const slot = params.slot ?? 0;\n const xMode = params.xMode ?? CurveXMode.Native;\n const numPoints = params.points.length;\n const data = Buffer.alloc(1 + 1 + 1 + 1 + 1 + 1 + numPoints * POINT_DATA_SIZE);\n let offset = 0;\n\n data.writeUInt8(Discriminator.SetCurve, offset);\n offset += 1;\n data.writeUInt8(slot, offset);\n offset += 1;\n data.writeUInt8(params.side, offset);\n offset += 1;\n data.writeUInt8(interpolationToByte(params.defaultInterpolation), offset);\n offset += 1;\n data.writeUInt8(numPoints, offset);\n offset += 1;\n data.writeUInt8(xMode, offset);\n offset += 1;\n\n for (const p of params.points) {\n data.writeBigUInt64LE(p.xIn, offset);\n offset += 8;\n data.writeBigUInt64LE(toQ32(p.priceFactor), offset);\n offset += 8;\n data.writeUInt8(\n interpolationToByte(p.interpolation ?? params.defaultInterpolation),\n offset\n );\n offset += 1;\n const params_ = p.params ?? new Uint8Array(4);\n Buffer.from(params_).copy(data, offset, 0, 4);\n offset += 4;\n }\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: curveMetaPda, isSigner: false, isWritable: true },\n { pubkey: curvePrefabsPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build a SetRiskCurve instruction (risk curve, percent-based x-axis by default).\n * Accounts: authority, curve_meta, curve_prefabs.\n */\nexport function buildSetRiskCurve(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n curvePrefabsPda: PublicKey,\n params: SetRiskCurveParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const slot = params.slot ?? 0;\n const xMode = params.xMode ?? CurveXMode.Native;\n const riskMode = params.riskMode ?? RiskMode.Virtual;\n const numPoints = params.points.length;\n const data = Buffer.alloc(\n 1 + 1 + 1 + 1 + 1 + 1 + 1 + numPoints * POINT_DATA_SIZE\n );\n let offset = 0;\n\n data.writeUInt8(Discriminator.SetRiskCurve, offset);\n offset += 1;\n data.writeUInt8(slot, offset);\n offset += 1;\n data.writeUInt8(params.side, offset);\n offset += 1;\n data.writeUInt8(interpolationToByte(params.defaultInterpolation), offset);\n offset += 1;\n data.writeUInt8(numPoints, offset);\n offset += 1;\n data.writeUInt8(xMode, offset);\n offset += 1;\n data.writeUInt8(riskMode, offset);\n offset += 1;\n\n for (const p of params.points) {\n data.writeBigUInt64LE(toQ32(p.pctBase), offset);\n offset += 8;\n data.writeBigUInt64LE(toQ32(p.priceFactor), offset);\n offset += 8;\n data.writeUInt8(\n interpolationToByte(p.interpolation ?? params.defaultInterpolation),\n offset\n );\n offset += 1;\n const params_ = p.params ?? new Uint8Array(4);\n Buffer.from(params_).copy(data, offset, 0, 4);\n offset += 4;\n }\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: curveMetaPda, isSigner: false, isWritable: true },\n { pubkey: curvePrefabsPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build a SetRiskCurve instruction with absolute x-axis (CurveXMode::Alternate).\n */\nexport function buildSetRiskCurveAbsolute(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n curvePrefabsPda: PublicKey,\n params: SetRiskCurveAbsoluteParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const slot = params.slot ?? 0;\n const riskMode = params.riskMode ?? RiskMode.Virtual;\n const numPoints = params.points.length;\n const data = Buffer.alloc(\n 1 + 1 + 1 + 1 + 1 + 1 + 1 + numPoints * POINT_DATA_SIZE\n );\n let offset = 0;\n\n data.writeUInt8(Discriminator.SetRiskCurve, offset);\n offset += 1;\n data.writeUInt8(slot, offset);\n offset += 1;\n data.writeUInt8(params.side, offset);\n offset += 1;\n data.writeUInt8(interpolationToByte(params.defaultInterpolation), offset);\n offset += 1;\n data.writeUInt8(numPoints, offset);\n offset += 1;\n data.writeUInt8(CurveXMode.Alternate, offset); // absolute tokens\n offset += 1;\n data.writeUInt8(riskMode, offset);\n offset += 1;\n\n for (const p of params.points) {\n data.writeBigUInt64LE(p.vaultBalance, offset);\n offset += 8;\n data.writeBigUInt64LE(toQ32(p.priceFactor), offset);\n offset += 8;\n data.writeUInt8(\n interpolationToByte(p.interpolation ?? params.defaultInterpolation),\n offset\n );\n offset += 1;\n const params_ = p.params ?? new Uint8Array(4);\n Buffer.from(params_).copy(data, offset, 0, 4);\n offset += 4;\n }\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: curveMetaPda, isSigner: false, isWritable: true },\n { pubkey: curvePrefabsPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build SetCurve instructions for both bid and ask in one call.\n * Returns [bidIx, askIx] — add both to the same transaction.\n */\nexport function buildSetCurveBoth(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n curvePrefabsPda: PublicKey,\n params: SetCurveBothParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [TransactionInstruction, TransactionInstruction] {\n const bidIx = buildSetCurve(authority, curveMetaPda, curvePrefabsPda, { ...params.bid, side: Side.Bid }, programId);\n const askIx = buildSetCurve(authority, curveMetaPda, curvePrefabsPda, { ...params.ask, side: Side.Ask }, programId);\n return [bidIx, askIx];\n}\n\n/**\n * Build SetRiskCurve instructions for both bid and ask in one call.\n * Returns [bidIx, askIx].\n */\nexport function buildSetRiskCurveBoth(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n curvePrefabsPda: PublicKey,\n params: SetRiskCurveBothParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [TransactionInstruction, TransactionInstruction] {\n const bidIx = buildSetRiskCurve(authority, curveMetaPda, curvePrefabsPda, { ...params.bid, side: Side.Bid }, programId);\n const askIx = buildSetRiskCurve(authority, curveMetaPda, curvePrefabsPda, { ...params.ask, side: Side.Ask }, programId);\n return [bidIx, askIx];\n}\n\n/**\n * Build SetRiskCurve (absolute x-axis) instructions for both bid and ask in one call.\n * Returns [bidIx, askIx].\n */\nexport function buildSetRiskCurveAbsoluteBoth(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n curvePrefabsPda: PublicKey,\n params: SetRiskCurveAbsoluteBothParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): [TransactionInstruction, TransactionInstruction] {\n const bidIx = buildSetRiskCurveAbsolute(authority, curveMetaPda, curvePrefabsPda, { ...params.bid, side: Side.Bid }, programId);\n const askIx = buildSetRiskCurveAbsolute(authority, curveMetaPda, curvePrefabsPda, { ...params.ask, side: Side.Ask }, programId);\n return [bidIx, askIx];\n}\n","import {\n PublicKey,\n SYSVAR_CLOCK_PUBKEY,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport type {\n UpdateMidpriceParams,\n UpdateBaseSpreadParams,\n UpdateMidpriceAndBaseSpreadParams,\n} from \"../types\";\n\n/**\n * Build an UpdateMidprice instruction.\n * Accounts: authority, midprice_oracle, clock.\n */\nexport function buildUpdateMidprice(\n authority: PublicKey,\n midpriceOraclePda: PublicKey,\n params: UpdateMidpriceParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 8 + 8);\n data.writeUInt8(Discriminator.UpdateMidprice, 0);\n data.writeBigUInt64LE(params.sequence ?? 0n, 1);\n data.writeBigUInt64LE(params.midpriceQ32, 9);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: midpriceOraclePda, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n\n/**\n * Build an UpdateBaseSpread instruction.\n * Accounts: authority, midprice_oracle, clock.\n */\nexport function buildUpdateBaseSpread(\n authority: PublicKey,\n midpriceOraclePda: PublicKey,\n params: UpdateBaseSpreadParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 8 + 8);\n data.writeUInt8(Discriminator.UpdateBaseSpread, 0);\n data.writeBigUInt64LE(params.sequence ?? 0n, 1);\n data.writeBigUInt64LE(params.baseSpreadQ32, 9);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: midpriceOraclePda, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n\n/**\n * Build an UpdateMidpriceAndBaseSpread instruction (atomic update of both).\n * Accounts: authority, midprice_oracle, clock.\n */\nexport function buildUpdateMidpriceAndBaseSpread(\n authority: PublicKey,\n midpriceOraclePda: PublicKey,\n params: UpdateMidpriceAndBaseSpreadParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 8 + 8 + 8);\n data.writeUInt8(Discriminator.UpdateMidpriceAndBaseSpread, 0);\n data.writeBigUInt64LE(params.sequence ?? 0n, 1);\n data.writeBigUInt64LE(params.midpriceQ32, 9);\n data.writeBigUInt64LE(params.baseSpreadQ32, 17);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: midpriceOraclePda, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport type { SwitchCurveParams } from \"../types\";\n\n/**\n * Build a SwitchPriceCurve instruction (hot path).\n * Accounts: authority, curve_meta.\n */\nexport function buildSwitchPriceCurve(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n params: SwitchCurveParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 1 + 1);\n data.writeUInt8(Discriminator.SwitchPriceCurve, 0);\n data.writeUInt8(params.side, 1);\n data.writeUInt8(params.slot, 2);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: curveMetaPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build a SwitchRiskCurve instruction (hot path).\n * Accounts: authority, curve_meta.\n */\nexport function buildSwitchRiskCurve(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n params: SwitchCurveParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 1 + 1);\n data.writeUInt8(Discriminator.SwitchRiskCurve, 0);\n data.writeUInt8(params.side, 1);\n data.writeUInt8(params.slot, 2);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: curveMetaPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport {\n Discriminator,\n CURVE_UPDATE_OP_SIZE,\n HADRON_PROGRAM_ID,\n} from \"../constants\";\nimport type { CurveUpdateOp } from \"../types\";\n\n/**\n * Build a SubmitCurveUpdates instruction (hot path, 2 accounts).\n * Accounts: authority, curve_updates.\n */\nexport function buildSubmitCurveUpdates(\n authority: PublicKey,\n curveUpdatesPda: PublicKey,\n ops: CurveUpdateOp[],\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 1 + ops.length * CURVE_UPDATE_OP_SIZE);\n let offset = 0;\n\n data.writeUInt8(Discriminator.SubmitCurveUpdates, offset);\n offset += 1;\n data.writeUInt8(ops.length, offset);\n offset += 1;\n\n for (const op of ops) {\n data.writeUInt8(op.curveType, offset);\n offset += 1;\n data.writeUInt8(op.opKind, offset);\n offset += 1;\n data.writeUInt8(op.pointIndex, offset);\n offset += 1;\n data.writeUInt8(op.interpolation, offset);\n offset += 1;\n data.writeBigUInt64LE(op.xIn, offset);\n offset += 8;\n data.writeBigUInt64LE(op.priceFactorQ32, offset);\n offset += 8;\n const params = op.params ?? new Uint8Array(4);\n Buffer.from(params).copy(data, offset, 0, 4);\n offset += 4;\n }\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: curveUpdatesPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build an ApplyCurveUpdates instruction.\n * Accounts: authority, curve_meta, curve_prefabs, curve_updates.\n */\nexport function buildApplyCurveUpdates(\n authority: PublicKey,\n curveMetaPda: PublicKey,\n curvePrefabsPda: PublicKey,\n curveUpdatesPda: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1);\n data.writeUInt8(Discriminator.ApplyCurveUpdates, 0);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: curveMetaPda, isSigner: false, isWritable: false },\n { pubkey: curvePrefabsPda, isSigner: false, isWritable: true },\n { pubkey: curveUpdatesPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n","import {\n PublicKey,\n SYSVAR_CLOCK_PUBKEY,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport type { NominateAuthorityParams, SetQuotingAuthorityParams } from \"../types\";\n\n/**\n * Build a NominateAuthority instruction (step 1 of 2-step authority transfer).\n * Accounts: authority, config, clock.\n */\nexport function buildNominateAuthority(\n authority: PublicKey,\n configPda: PublicKey,\n params: NominateAuthorityParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 32 + 8);\n let offset = 0;\n\n data.writeUInt8(Discriminator.NominateAuthority, offset);\n offset += 1;\n params.newAuthority.toBuffer().copy(data, offset);\n offset += 32;\n data.writeBigUInt64LE(params.expirySlot, offset);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: configPda, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n\n/**\n * Build an AcceptAuthority instruction (step 2 of 2-step authority transfer).\n * Only updates Config.authority. Quoting authority is managed via SetQuotingAuthority.\n * Accounts: new_authority, config, clock.\n */\nexport function buildAcceptAuthority(\n newAuthority: PublicKey,\n configPda: PublicKey,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1);\n data.writeUInt8(Discriminator.AcceptAuthority, 0);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: newAuthority, isSigner: true, isWritable: false },\n { pubkey: configPda, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n\n/**\n * Build a SetQuotingAuthority instruction.\n * Pool authority sets a new quoting authority on MidpriceOracle, CurveMeta,\n * CurveUpdates, and optionally SpreadConfig.\n * Accounts: authority, config, midprice_oracle, curve_meta, curve_updates, [spread_config?].\n */\nexport function buildSetQuotingAuthority(\n authority: PublicKey,\n configPda: PublicKey,\n oraclePda: PublicKey,\n curveMetaPda: PublicKey,\n curveUpdatesPda: PublicKey,\n params: SetQuotingAuthorityParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 32);\n data.writeUInt8(Discriminator.SetQuotingAuthority, 0);\n params.newQuotingAuthority.toBuffer().copy(data, 1);\n\n const keys = [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: configPda, isSigner: false, isWritable: false },\n { pubkey: oraclePda, isSigner: false, isWritable: true },\n { pubkey: curveMetaPda, isSigner: false, isWritable: true },\n { pubkey: curveUpdatesPda, isSigner: false, isWritable: true },\n ];\n\n if (params.spreadConfigPda) {\n keys.push({\n pubkey: params.spreadConfigPda,\n isSigner: false,\n isWritable: true,\n });\n }\n\n return new TransactionInstruction({\n programId,\n keys,\n data,\n });\n}\n","import {\n PublicKey,\n SystemProgram,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport { getFeeConfigAddress } from \"../helpers/derive\";\nimport type {\n InitializeFeeConfigParams,\n RotateFeeAdminParams,\n UpdateFeeConfigParams,\n} from \"../types\";\n\n/**\n * Build an InitializeFeeConfig instruction (one-time global setup).\n * Accounts: payer, authority, fee_config, system_program.\n */\nexport function buildInitializeFeeConfig(\n payer: PublicKey,\n authority: PublicKey,\n params: InitializeFeeConfigParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const [feeConfigPda] = getFeeConfigAddress(programId);\n\n const data = Buffer.alloc(1 + 4 + 32 + 32);\n let offset = 0;\n\n data.writeUInt8(Discriminator.InitializeFeeConfig, offset);\n offset += 1;\n data.writeUInt32LE(params.feePpm, offset);\n offset += 4;\n params.feeAdmin.toBuffer().copy(data, offset);\n offset += 32;\n params.feeRecipient.toBuffer().copy(data, offset);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: feeConfigPda, isSigner: false, isWritable: true },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n\n/**\n * Build an UpdateFeeConfig instruction.\n * Accounts: fee_admin, fee_config.\n */\nexport function buildUpdateFeeConfig(\n feeAdmin: PublicKey,\n params: UpdateFeeConfigParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const [feeConfigPda] = getFeeConfigAddress(programId);\n\n const data = Buffer.alloc(1 + 4 + 32);\n let offset = 0;\n\n data.writeUInt8(Discriminator.UpdateFeeConfig, offset);\n offset += 1;\n // u32::MAX = no change\n data.writeUInt32LE(params.feePpm !== null ? params.feePpm : 0xffffffff, offset);\n offset += 4;\n // all zeros = no change\n if (params.feeRecipient) {\n params.feeRecipient.toBuffer().copy(data, offset);\n }\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: feeAdmin, isSigner: true, isWritable: false },\n { pubkey: feeConfigPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build a RotateFeeAdmin instruction.\n * Accounts: fee_admin (signer), fee_config (mut).\n */\nexport function buildRotateFeeAdmin(\n feeAdmin: PublicKey,\n params: RotateFeeAdminParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const [feeConfigPda] = getFeeConfigAddress(programId);\n\n const data = Buffer.alloc(1 + 32);\n data.writeUInt8(Discriminator.RotateFeeAdmin, 0);\n params.newFeeAdmin.toBuffer().copy(data, 1);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: feeAdmin, isSigner: true, isWritable: false },\n { pubkey: feeConfigPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n","import {\n PublicKey,\n SystemProgram,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport { getSpreadConfigAddress } from \"../helpers/derive\";\nimport type {\n InitializeSpreadConfigParams,\n UpdateSpreadConfigParams,\n} from \"../types\";\n\n/**\n * Build an InitializeSpreadConfig instruction.\n * Accounts: payer, authority, config, spread_config, system_program.\n */\nexport function buildInitializeSpreadConfig(\n payer: PublicKey,\n authority: PublicKey,\n configPda: PublicKey,\n params: InitializeSpreadConfigParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const [spreadConfigPda] = getSpreadConfigAddress(configPda, programId);\n\n const data = Buffer.alloc(1 + 32);\n data.writeUInt8(Discriminator.InitializeSpreadConfig, 0);\n params.admin.toBuffer().copy(data, 1);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: configPda, isSigner: false, isWritable: true },\n { pubkey: spreadConfigPda, isSigner: false, isWritable: true },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n ],\n data,\n });\n}\n\n/**\n * Build an UpdateSpreadConfig instruction.\n * Accounts: admin, config, spread_config.\n */\nexport function buildUpdateSpreadConfig(\n admin: PublicKey,\n configPda: PublicKey,\n params: UpdateSpreadConfigParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const [spreadConfigPda] = getSpreadConfigAddress(configPda, programId);\n\n // data: disc(1) + num_triggers(1) + triggers(34 each)\n const numTriggers = params.triggers.length;\n const data = Buffer.alloc(1 + 1 + numTriggers * 34);\n let offset = 0;\n\n data.writeUInt8(Discriminator.UpdateSpreadConfig, offset);\n offset += 1;\n data.writeUInt8(numTriggers, offset);\n offset += 1;\n\n for (const t of params.triggers) {\n t.account.toBuffer().copy(data, offset);\n offset += 32;\n data.writeUInt16LE(t.spreadBps, offset);\n offset += 2;\n }\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: admin, isSigner: true, isWritable: false },\n { pubkey: configPda, isSigner: false, isWritable: false },\n { pubkey: spreadConfigPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n","import {\n PublicKey,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { Discriminator, HADRON_PROGRAM_ID } from \"../constants\";\nimport { getSpreadConfigAddress } from \"../helpers/derive\";\nimport type {\n SetPoolStateParams,\n UpdateDeltaStalenessParams,\n} from \"../types\";\n\n/**\n * Build a SetPoolState instruction.\n * Accounts: authority, config.\n */\nexport function buildSetPoolState(\n authority: PublicKey,\n configPda: PublicKey,\n params: SetPoolStateParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 1);\n data.writeUInt8(Discriminator.SetPoolState, 0);\n data.writeUInt8(params.newState, 1);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: configPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build an UpdateDeltaStaleness instruction.\n * Accounts: authority, config.\n */\nexport function buildUpdateDeltaStaleness(\n authority: PublicKey,\n configPda: PublicKey,\n params: UpdateDeltaStalenessParams,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1 + 1);\n data.writeUInt8(Discriminator.UpdateDeltaStaleness, 0);\n data.writeUInt8(params.deltaStaleness, 1);\n\n return new TransactionInstruction({\n programId,\n keys: [\n { pubkey: authority, isSigner: true, isWritable: false },\n { pubkey: configPda, isSigner: false, isWritable: true },\n ],\n data,\n });\n}\n\n/**\n * Build a ClosePool instruction.\n * Accounts: authority, config, midprice_oracle, curve_meta, curve_prefabs,\n * curve_updates, vault_x, vault_y, token_program_x, token_program_y,\n * [optional: spread_config if initialized].\n */\nexport function buildClosePool(\n authority: PublicKey,\n configPda: PublicKey,\n midpriceOraclePda: PublicKey,\n curveMetaPda: PublicKey,\n curvePrefabsPda: PublicKey,\n curveUpdatesPda: PublicKey,\n vaultX: PublicKey,\n vaultY: PublicKey,\n tokenProgramX: PublicKey,\n tokenProgramY: PublicKey,\n spreadConfigInitialized: boolean = false,\n programId: PublicKey = HADRON_PROGRAM_ID\n): TransactionInstruction {\n const data = Buffer.alloc(1);\n data.writeUInt8(Discriminator.ClosePool, 0);\n\n const keys = [\n { pubkey: authority, isSigner: true, isWritable: true },\n { pubkey: configPda, isSigner: false, isWritable: true },\n { pubkey: midpriceOraclePda, isSigner: false, isWritable: true },\n { pubkey: curveMetaPda, isSigner: false, isWritable: true },\n { pubkey: curvePrefabsPda, isSigner: false, isWritable: true },\n { pubkey: curveUpdatesPda, isSigner: false, isWritable: true },\n { pubkey: vaultX, isSigner: false, isWritable: true },\n { pubkey: vaultY, isSigner: false, isWritable: true },\n { pubkey: tokenProgramX, isSigner: false, isWritable: false },\n { pubkey: tokenProgramY, isSigner: false, isWritable: false },\n ];\n\n if (spreadConfigInitialized) {\n const [spreadConfigPda] = getSpreadConfigAddress(configPda, programId);\n keys.push({\n pubkey: spreadConfigPda,\n isSigner: false,\n isWritable: true,\n });\n }\n\n return new TransactionInstruction({ programId, keys, data });\n}\n","import {\n Connection,\n PublicKey,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport {\n HADRON_PROGRAM_ID,\n curvePrefabsSize,\n DEFAULT_MAX_PREFAB_SLOTS,\n DEFAULT_MAX_CURVE_POINTS,\n} from \"./constants\";\nimport {\n derivePoolAddresses,\n getConfigAddress,\n getFeeConfigAddress,\n} from \"./helpers/derive\";\nimport { fromQ32 } from \"./helpers/math\";\nimport { getOrCreateAta } from \"./helpers/token\";\nimport {\n decodeConfig,\n decodeMidpriceOracle,\n decodeCurveMeta,\n decodeFeeConfig,\n decodeCurveUpdates,\n decodeCurveSide,\n decodeActiveCurves,\n isSlotInitialized,\n} from \"./accounts\";\nimport {\n buildInitialize,\n buildAllocateCurvePrefabs,\n buildDeposit,\n buildWithdraw,\n buildSwapExactIn,\n buildSetCurve,\n buildSetCurveBoth,\n buildSetRiskCurve,\n buildSetRiskCurveBoth,\n buildSetRiskCurveAbsolute,\n buildSetRiskCurveAbsoluteBoth,\n buildUpdateMidprice,\n buildUpdateBaseSpread,\n buildUpdateMidpriceAndBaseSpread,\n buildSwitchPriceCurve,\n buildSwitchRiskCurve,\n buildSubmitCurveUpdates,\n buildApplyCurveUpdates,\n buildNominateAuthority,\n buildAcceptAuthority,\n buildSetPoolState,\n buildUpdateDeltaStaleness,\n buildClosePool,\n buildInitializeFeeConfig,\n buildUpdateFeeConfig,\n buildInitializeSpreadConfig,\n buildUpdateSpreadConfig,\n} from \"./instructions\";\nimport type {\n DecodedConfig,\n DecodedMidpriceOracle,\n DecodedCurveMeta,\n DecodedFeeConfig,\n CurveSide,\n CurveUpdateOp,\n PoolAddresses,\n InitializeParams,\n DepositParams,\n WithdrawParams,\n SwapParams,\n SetCurveParams,\n SetCurveBothParams,\n SetRiskCurveParams,\n SetRiskCurveBothParams,\n SetRiskCurveAbsoluteParams,\n SetRiskCurveAbsoluteBothParams,\n UpdateMidpriceParams,\n UpdateBaseSpreadParams,\n UpdateMidpriceAndBaseSpreadParams,\n SwitchCurveParams,\n NominateAuthorityParams,\n SetPoolStateParams,\n UpdateDeltaStalenessParams,\n InitializeFeeConfigParams,\n UpdateFeeConfigParams,\n InitializeSpreadConfigParams,\n UpdateSpreadConfigParams,\n AllocateCurvePrefabsParams,\n} from \"./types\";\n\n/**\n * Main SDK class for interacting with a Hadron pool.\n *\n * Usage:\n * ```ts\n * const pool = await Hadron.load(connection, poolAddress);\n * const midprice = pool.getMidprice();\n * const ix = pool.swap(user, params);\n * ```\n */\nexport class Hadron {\n public readonly programId: PublicKey;\n public readonly poolAddress: PublicKey;\n public readonly addresses: PoolAddresses;\n\n public config: DecodedConfig;\n public oracle: DecodedMidpriceOracle;\n public curveMeta: DecodedCurveMeta;\n public curvePrefabsData: Uint8Array;\n\n private connection: Connection;\n\n constructor(\n connection: Connection,\n poolAddress: PublicKey,\n addresses: PoolAddresses,\n config: DecodedConfig,\n oracle: DecodedMidpriceOracle,\n curveMeta: DecodedCurveMeta,\n curvePrefabsData: Uint8Array,\n programId: PublicKey = HADRON_PROGRAM_ID\n ) {\n this.connection = connection;\n this.poolAddress = poolAddress;\n this.addresses = addresses;\n this.config = config;\n this.oracle = oracle;\n this.curveMeta = curveMeta;\n this.curvePrefabsData = curvePrefabsData;\n this.programId = programId;\n }\n\n // ==========================================================================\n // Static Factory Methods\n // ==========================================================================\n\n /**\n * Load a Hadron instance from an existing pool address.\n * Fetches all required accounts from the chain.\n */\n static async load(\n connection: Connection,\n poolAddress: PublicKey\n ): Promise<Hadron> {\n const programId = HADRON_PROGRAM_ID;\n\n // Fetch config first to get pool identity\n const configInfo = await connection.getAccountInfo(poolAddress);\n if (!configInfo) throw new Error(\"Config account not found\");\n const config = decodeConfig(configInfo.data);\n\n // Derive all addresses\n const tokenProgramX = config.tokenProgramX;\n const tokenProgramY = config.tokenProgramY;\n const addresses = derivePoolAddresses(\n config.seed,\n config.mintX,\n config.mintY,\n tokenProgramX,\n tokenProgramY,\n programId\n );\n\n // Fetch remaining accounts in parallel\n const [oracleInfo, curveMetaInfo, curvePrefabsInfo] = await Promise.all([\n connection.getAccountInfo(addresses.midpriceOracle),\n connection.getAccountInfo(addresses.curveMeta),\n connection.getAccountInfo(addresses.curvePrefabs),\n ]);\n\n if (!oracleInfo) throw new Error(\"MidpriceOracle account not found\");\n if (!curveMetaInfo) throw new Error(\"CurveMeta account not found\");\n if (!curvePrefabsInfo) throw new Error(\"CurvePrefabs account not found\");\n\n const oracle = decodeMidpriceOracle(oracleInfo.data);\n const curveMeta = decodeCurveMeta(curveMetaInfo.data);\n\n return new Hadron(\n connection,\n poolAddress,\n addresses,\n config,\n oracle,\n curveMeta,\n curvePrefabsInfo.data,\n programId\n );\n }\n\n /**\n * Load a Hadron instance from pool identity (seed + mints).\n */\n static async loadFromSeed(\n connection: Connection,\n seed: bigint,\n mintX: PublicKey,\n mintY: PublicKey\n ): Promise<Hadron> {\n const programId = HADRON_PROGRAM_ID;\n const [poolAddress] = getConfigAddress(seed, mintX, mintY, programId);\n return Hadron.load(connection, poolAddress);\n }\n\n /**\n * Build all instructions needed to initialize a new pool.\n *\n * Returns the allocate + initialize instructions and the derived pool address.\n * The caller is responsible for grouping them into transactions and sending.\n * The allocate instruction(s) must be confirmed before the initialize instruction.\n *\n * After the pool is live on-chain, load it with `Hadron.load(connection, poolAddress)`.\n *\n * ```ts\n * const { instructions, poolAddress, seed } = Hadron.initialize(payer, {\n * mintX,\n * mintY,\n * authority: payer,\n * initialMidpriceQ32: Q32_ONE,\n * });\n * ```\n */\n static initialize(\n payer: PublicKey,\n params: InitializeParams\n ): { instructions: TransactionInstruction[]; poolAddress: PublicKey; seed: bigint } {\n const programId = HADRON_PROGRAM_ID;\n const seed = params.seed ?? Hadron.randomSeed();\n const maxPrefabSlots = params.maxPrefabSlots ?? DEFAULT_MAX_PREFAB_SLOTS;\n const maxCurvePoints = params.maxCurvePoints ?? DEFAULT_MAX_CURVE_POINTS;\n\n const resolvedParams = { ...params, seed };\n\n const [poolAddress] = getConfigAddress(\n seed,\n params.mintX,\n params.mintY,\n programId\n );\n\n const allocateParams: AllocateCurvePrefabsParams = {\n seed,\n mintX: params.mintX,\n mintY: params.mintY,\n maxPrefabSlots,\n maxCurvePoints,\n };\n\n const instructions: TransactionInstruction[] = [];\n\n const size = curvePrefabsSize(maxPrefabSlots, maxCurvePoints);\n const allocateCalls = size > 10_240 ? 2 : 1;\n for (let i = 0; i < allocateCalls; i++) {\n instructions.push(buildAllocateCurvePrefabs(payer, allocateParams, programId));\n }\n\n instructions.push(buildInitialize(payer, resolvedParams, programId));\n\n return { instructions, poolAddress, seed };\n }\n\n /** Generate a random u64 seed. */\n private static randomSeed(): bigint {\n const buf = new Uint8Array(8);\n crypto.getRandomValues(buf);\n return new DataView(buf.buffer).getBigUint64(0, true);\n }\n\n // ==========================================================================\n // State Queries\n // ==========================================================================\n\n /** Re-fetch all account state from the chain. */\n async refetchStates(): Promise<void> {\n const [configInfo, oracleInfo, curveMetaInfo, curvePrefabsInfo] =\n await Promise.all([\n this.connection.getAccountInfo(this.poolAddress),\n this.connection.getAccountInfo(this.addresses.midpriceOracle),\n this.connection.getAccountInfo(this.addresses.curveMeta),\n this.connection.getAccountInfo(this.addresses.curvePrefabs),\n ]);\n\n if (configInfo) this.config = decodeConfig(configInfo.data);\n if (oracleInfo) this.oracle = decodeMidpriceOracle(oracleInfo.data);\n if (curveMetaInfo) this.curveMeta = decodeCurveMeta(curveMetaInfo.data);\n if (curvePrefabsInfo) this.curvePrefabsData = curvePrefabsInfo.data;\n }\n\n /** Get midprice as a floating-point number. */\n getMidprice(): number {\n return fromQ32(this.oracle.midpriceQ32);\n }\n\n /** Get base spread as a floating-point number. */\n getBaseSpread(): number {\n return fromQ32(this.oracle.baseSpreadQ32);\n }\n\n /** Get the currently active curve slot indices. */\n getActiveCurveSlots(): {\n priceBid: number;\n priceAsk: number;\n riskBid: number;\n riskAsk: number;\n } {\n return {\n priceBid: this.curveMeta.activePriceBidSlot,\n priceAsk: this.curveMeta.activePriceAskSlot,\n riskBid: this.curveMeta.activeRiskBidSlot,\n riskAsk: this.curveMeta.activeRiskAskSlot,\n };\n }\n\n /** Decode the currently active curves from prefabs data. */\n getActiveCurves(): {\n priceBid: CurveSide;\n priceAsk: CurveSide;\n riskBid: CurveSide;\n riskAsk: CurveSide;\n } {\n return decodeActiveCurves(this.curvePrefabsData, this.curveMeta);\n }\n\n /** Decode a specific curve slot. */\n getCurveSlot(\n curveType: import(\"./types\").CurveType,\n slot: number\n ): CurveSide {\n return decodeCurveSide(\n this.curvePrefabsData,\n curveType,\n slot,\n this.curveMeta.maxPrefabSlots,\n this.curveMeta.maxCurvePoints\n );\n }\n\n // ==========================================================================\n // Instruction Builders (convenience wrappers)\n // ==========================================================================\n\n /** Build deposit instruction. */\n deposit(user: PublicKey, params: DepositParams): TransactionInstruction {\n return buildDeposit(\n user,\n this.poolAddress,\n this.config.mintX,\n this.config.mintY,\n this.config.tokenProgramX,\n this.config.tokenProgramY,\n params,\n this.programId\n );\n }\n\n /** Build withdraw instruction. */\n withdraw(user: PublicKey, params: WithdrawParams): TransactionInstruction {\n return buildWithdraw(\n user,\n this.poolAddress,\n this.config.mintX,\n this.config.mintY,\n this.config.tokenProgramX,\n this.config.tokenProgramY,\n params,\n this.programId\n );\n }\n\n /** Build swap instruction. */\n swap(user: PublicKey, params: SwapParams): TransactionInstruction {\n return buildSwapExactIn(\n user,\n this.addresses,\n this.config.mintX,\n this.config.mintY,\n this.config.tokenProgramX,\n this.config.tokenProgramY,\n params,\n this.programId\n );\n }\n\n /** Build set curve instruction. */\n setCurve(\n authority: PublicKey,\n params: SetCurveParams\n ): TransactionInstruction {\n return buildSetCurve(\n authority,\n this.addresses.curveMeta,\n this.addresses.curvePrefabs,\n params,\n this.programId\n );\n }\n\n /** Build set risk curve instruction (percent-based x-axis). */\n setRiskCurve(\n authority: PublicKey,\n params: SetRiskCurveParams\n ): TransactionInstruction {\n return buildSetRiskCurve(\n authority,\n this.addresses.curveMeta,\n this.addresses.curvePrefabs,\n params,\n this.programId\n );\n }\n\n /** Build set risk curve instruction (absolute x-axis). */\n setRiskCurveAbsolute(\n authority: PublicKey,\n params: SetRiskCurveAbsoluteParams\n ): TransactionInstruction {\n return buildSetRiskCurveAbsolute(\n authority,\n this.addresses.curveMeta,\n this.addresses.curvePrefabs,\n params,\n this.programId\n );\n }\n\n /** Build set curve instructions for both bid and ask. Returns [bidIx, askIx]. */\n setCurveBoth(\n authority: PublicKey,\n params: SetCurveBothParams\n ): [TransactionInstruction, TransactionInstruction] {\n return buildSetCurveBoth(\n authority,\n this.addresses.curveMeta,\n this.addresses.curvePrefabs,\n params,\n this.programId\n );\n }\n\n /** Build set risk curve instructions for both bid and ask. Returns [bidIx, askIx]. */\n setRiskCurveBoth(\n authority: PublicKey,\n params: SetRiskCurveBothParams\n ): [TransactionInstruction, TransactionInstruction] {\n return buildSetRiskCurveBoth(\n authority,\n this.addresses.curveMeta,\n this.addresses.curvePrefabs,\n params,\n this.programId\n );\n }\n\n /** Build set risk curve (absolute x-axis) instructions for both bid and ask. Returns [bidIx, askIx]. */\n setRiskCurveAbsoluteBoth(\n authority: PublicKey,\n params: SetRiskCurveAbsoluteBothParams\n ): [TransactionInstruction, TransactionInstruction] {\n return buildSetRiskCurveAbsoluteBoth(\n authority,\n this.addresses.curveMeta,\n this.addresses.curvePrefabs,\n params,\n this.programId\n );\n }\n\n /** Build update midprice instruction. */\n updateMidprice(\n authority: PublicKey,\n params: UpdateMidpriceParams\n ): TransactionInstruction {\n return buildUpdateMidprice(\n authority,\n this.addresses.midpriceOracle,\n params,\n this.programId\n );\n }\n\n /** Build update base spread instruction. */\n updateBaseSpread(\n authority: PublicKey,\n params: UpdateBaseSpreadParams\n ): TransactionInstruction {\n return buildUpdateBaseSpread(\n authority,\n this.addresses.midpriceOracle,\n params,\n this.programId\n );\n }\n\n /** Build atomic update of midprice + base spread. */\n updateMidpriceAndBaseSpread(\n authority: PublicKey,\n params: UpdateMidpriceAndBaseSpreadParams\n ): TransactionInstruction {\n return buildUpdateMidpriceAndBaseSpread(\n authority,\n this.addresses.midpriceOracle,\n params,\n this.programId\n );\n }\n\n /** Build switch price curve instruction (hot path). */\n switchPriceCurve(\n authority: PublicKey,\n params: SwitchCurveParams\n ): TransactionInstruction {\n return buildSwitchPriceCurve(\n authority,\n this.addresses.curveMeta,\n params,\n this.programId\n );\n }\n\n /** Build switch risk curve instruction (hot path). */\n switchRiskCurve(\n authority: PublicKey,\n params: SwitchCurveParams\n ): TransactionInstruction {\n return buildSwitchRiskCurve(\n authority,\n this.addresses.curveMeta,\n params,\n this.programId\n );\n }\n\n /** Build submit curve updates instruction (hot path). */\n submitCurveUpdates(\n authority: PublicKey,\n ops: CurveUpdateOp[]\n ): TransactionInstruction {\n return buildSubmitCurveUpdates(\n authority,\n this.addresses.curveUpdates,\n ops,\n this.programId\n );\n }\n\n /** Build apply curve updates instruction. */\n applyCurveUpdates(authority: PublicKey): TransactionInstruction {\n return buildApplyCurveUpdates(\n authority,\n this.addresses.curveMeta,\n this.addresses.curvePrefabs,\n this.addresses.curveUpdates,\n this.programId\n );\n }\n\n /** Build nominate authority instruction. */\n nominateAuthority(\n authority: PublicKey,\n params: NominateAuthorityParams\n ): TransactionInstruction {\n return buildNominateAuthority(\n authority,\n this.poolAddress,\n params,\n this.programId\n );\n }\n\n /** Build accept authority instruction. */\n acceptAuthority(newAuthority: PublicKey): TransactionInstruction {\n return buildAcceptAuthority(\n newAuthority,\n this.poolAddress,\n this.programId\n );\n }\n\n /** Build set pool state instruction. */\n setPoolState(\n authority: PublicKey,\n params: SetPoolStateParams\n ): TransactionInstruction {\n return buildSetPoolState(\n authority,\n this.poolAddress,\n params,\n this.programId\n );\n }\n\n /** Build update delta staleness instruction. */\n updateDeltaStaleness(\n authority: PublicKey,\n params: UpdateDeltaStalenessParams\n ): TransactionInstruction {\n return buildUpdateDeltaStaleness(\n authority,\n this.poolAddress,\n params,\n this.programId\n );\n }\n\n /** Build close pool instruction. */\n closePool(authority: PublicKey): TransactionInstruction {\n return buildClosePool(\n authority,\n this.poolAddress,\n this.addresses.midpriceOracle,\n this.addresses.curveMeta,\n this.addresses.curvePrefabs,\n this.addresses.curveUpdates,\n this.addresses.vaultX,\n this.addresses.vaultY,\n this.config.tokenProgramX,\n this.config.tokenProgramY,\n this.config.spreadConfigInitialized,\n this.programId\n );\n }\n}\n","import {\n PublicKey,\n SystemProgram,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport {\n getAssociatedTokenAddressSync,\n createAssociatedTokenAccountInstruction,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n} from \"@solana/spl-token\";\nimport type { Connection } from \"@solana/web3.js\";\n\n/**\n * Get the ATA address, and optionally return a create instruction if it doesn't exist.\n */\nexport async function getOrCreateAta(\n connection: Connection,\n mint: PublicKey,\n owner: PublicKey,\n payer: PublicKey,\n tokenProgram: PublicKey = TOKEN_PROGRAM_ID,\n allowOwnerOffCurve: boolean = false\n): Promise<{ address: PublicKey; instruction: TransactionInstruction | null }> {\n const address = getAssociatedTokenAddressSync(\n mint,\n owner,\n allowOwnerOffCurve,\n tokenProgram\n );\n const account = await connection.getAccountInfo(address);\n if (account) {\n return { address, instruction: null };\n }\n const instruction = createAssociatedTokenAccountInstruction(\n payer,\n address,\n owner,\n mint,\n tokenProgram\n );\n return { address, instruction };\n}\n"]}