@whetstone-research/doppler-sdk 1.0.10 → 1.0.12
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.
- package/dist/{chunk-YWZCHTXQ.js → chunk-2NFQKIOB.js} +6 -4
- package/dist/chunk-2NFQKIOB.js.map +1 -0
- package/dist/{chunk-O6FR7TXY.cjs → chunk-AT33RY6T.cjs} +7 -4
- package/dist/chunk-AT33RY6T.cjs.map +1 -0
- package/dist/{chunk-I5JME35L.cjs → chunk-LL7TW3GU.cjs} +36 -77
- package/dist/chunk-LL7TW3GU.cjs.map +1 -0
- package/dist/{chunk-RF4NM4ES.js → chunk-ZQEEGBXT.js} +5 -44
- package/dist/chunk-ZQEEGBXT.js.map +1 -0
- package/dist/{pda-NKKMVQ4N.js → pda-FLNTBIC5.js} +3 -3
- package/dist/pda-FLNTBIC5.js.map +1 -0
- package/dist/{pda-UKFLYQGA.cjs → pda-G25AJSXG.cjs} +16 -16
- package/dist/pda-G25AJSXG.cjs.map +1 -0
- package/dist/solana/index.cjs +3373 -815
- package/dist/solana/index.cjs.map +1 -1
- package/dist/solana/index.d.cts +1866 -1073
- package/dist/solana/index.d.ts +1866 -1073
- package/dist/solana/index.js +3237 -679
- package/dist/solana/index.js.map +1 -1
- package/dist/solana/react/index.cjs +84 -45
- package/dist/solana/react/index.cjs.map +1 -1
- package/dist/solana/react/index.js +43 -4
- package/dist/solana/react/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-I5JME35L.cjs.map +0 -1
- package/dist/chunk-O6FR7TXY.cjs.map +0 -1
- package/dist/chunk-RF4NM4ES.js.map +0 -1
- package/dist/chunk-YWZCHTXQ.js.map +0 -1
- package/dist/pda-NKKMVQ4N.js.map +0 -1
- package/dist/pda-UKFLYQGA.cjs.map +0 -1
|
@@ -4,7 +4,7 @@ export { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';
|
|
|
4
4
|
import '@solana/sysvars';
|
|
5
5
|
|
|
6
6
|
// src/solana/core/pda.ts
|
|
7
|
-
|
|
7
|
+
address(
|
|
8
8
|
"Sysvar1nstructions1111111111111111111111111"
|
|
9
9
|
);
|
|
10
10
|
var CPMM_PROGRAM_ID = address(
|
|
@@ -32,6 +32,8 @@ var SF_BEFORE_ADD_LIQ = 1 << 2;
|
|
|
32
32
|
var SF_AFTER_ADD_LIQ = 1 << 3;
|
|
33
33
|
var SF_BEFORE_REMOVE_LIQ = 1 << 4;
|
|
34
34
|
var SF_AFTER_REMOVE_LIQ = 1 << 5;
|
|
35
|
+
var SF_REQUIRE_ORACLE = 1 << 6;
|
|
36
|
+
var SF_FORWARD_READONLY_SIGNERS = 1 << 7;
|
|
35
37
|
var SENTINEL_NO_CHANGE = 65535;
|
|
36
38
|
var INSTRUCTION_DISCRIMINATORS = {
|
|
37
39
|
// SHA256("global:initialize_config")[0:8]
|
|
@@ -325,6 +327,6 @@ async function getLiquidityAddresses(pool, owner, positionId, programId = CPMM_P
|
|
|
325
327
|
return { config, authority, position, protocolPosition, oracle };
|
|
326
328
|
}
|
|
327
329
|
|
|
328
|
-
export { ACCOUNT_DISCRIMINATORS, ACCOUNT_VERSION, BPS_DENOM, CPMM_PROGRAM_ID, INSTRUCTION_DISCRIMINATORS, MAX_ORACLE_OBSERVATIONS, MAX_SENTINEL_ALLOWLIST, Q64_ONE, SEED_AUTHORITY, SEED_CONFIG, SEED_ORACLE, SEED_POOL, SEED_POSITION, SEED_PROTOCOL_POSITION, SENTINEL_NO_CHANGE, SF_AFTER_ADD_LIQ, SF_AFTER_REMOVE_LIQ, SF_AFTER_SWAP, SF_BEFORE_ADD_LIQ, SF_BEFORE_REMOVE_LIQ, SF_BEFORE_SWAP,
|
|
329
|
-
//# sourceMappingURL=chunk-
|
|
330
|
-
//# sourceMappingURL=chunk-
|
|
330
|
+
export { ACCOUNT_DISCRIMINATORS, ACCOUNT_VERSION, BPS_DENOM, CPMM_PROGRAM_ID, INSTRUCTION_DISCRIMINATORS, MAX_ORACLE_OBSERVATIONS, MAX_SENTINEL_ALLOWLIST, Q64_ONE, SEED_AUTHORITY, SEED_CONFIG, SEED_ORACLE, SEED_POOL, SEED_POSITION, SEED_PROTOCOL_POSITION, SENTINEL_NO_CHANGE, SF_AFTER_ADD_LIQ, SF_AFTER_REMOVE_LIQ, SF_AFTER_SWAP, SF_BEFORE_ADD_LIQ, SF_BEFORE_REMOVE_LIQ, SF_BEFORE_SWAP, SF_FORWARD_READONLY_SIGNERS, SF_REQUIRE_ORACLE, TOKEN_METADATA_PROGRAM_ID, areMintsOrdered, getConfigAddress, getLiquidityAddresses, getOracleAddress, getPoolAddress, getPoolAuthorityAddress, getPoolInitAddresses, getPoolVault0Address, getPoolVault1Address, getPositionAddress, getProtocolPositionAddress, getSwapAddresses, sortMints };
|
|
331
|
+
//# sourceMappingURL=chunk-2NFQKIOB.js.map
|
|
332
|
+
//# sourceMappingURL=chunk-2NFQKIOB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/solana/core/constants.ts","../src/solana/core/pda.ts"],"names":[],"mappings":"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","file":"chunk-2NFQKIOB.js","sourcesContent":["import { address, type Address } from '@solana/kit';\nexport {\n TOKEN_PROGRAM_ADDRESS,\n ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n} from '@solana-program/token';\nexport { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';\nexport { SYSVAR_RENT_ADDRESS } from '@solana/sysvars';\nexport const SYSVAR_INSTRUCTIONS_ADDRESS: Address = address(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\n/**\n * CPMM AMM program ID (devnet)\n */\nexport const CPMM_PROGRAM_ID: Address = address(\n '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ',\n);\n\n/**\n * Metaplex Token Metadata Program ID\n */\nexport const TOKEN_METADATA_PROGRAM_ID: Address = address(\n 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s',\n);\n\n// ============================================================================\n// Math Constants\n// ============================================================================\n\n/** Basis points denominator (10,000 = 100%) */\nexport const BPS_DENOM = 10_000n;\n\n/** Q64.64 fixed-point representation of 1.0 (2^64) */\nexport const Q64_ONE = 1n << 64n;\n\n/** Current account version */\nexport const ACCOUNT_VERSION = 1;\n\n// ============================================================================\n// Array Size Constants\n// ============================================================================\n\n/** Maximum number of programs in sentinel allowlist */\nexport const MAX_SENTINEL_ALLOWLIST = 32;\n\n/** Maximum number of oracle observations (TWAP buffer size) */\nexport const MAX_ORACLE_OBSERVATIONS = 64;\n\n// ============================================================================\n// PDA Seeds\n// ============================================================================\n\n/** Seed for AmmConfig PDA: ['config'] */\nexport const SEED_CONFIG = 'config';\n\n/** Seed prefix for Pool PDA: ['pool', token0_mint, token1_mint] */\nexport const SEED_POOL = 'pool';\n\n/** Seed prefix for pool authority PDA: ['authority', pool] */\nexport const SEED_AUTHORITY = 'authority';\n\n/** Seed prefix for token0 vault PDA: ['vault0', pool] */\nexport const SEED_VAULT0 = 'vault0';\n\n/** Seed prefix for token1 vault PDA: ['vault1', pool] */\nexport const SEED_VAULT1 = 'vault1';\n\n/** Seed prefix for Position PDA: ['position', pool, owner, position_id] */\nexport const SEED_POSITION = 'position';\n\n/** Seed prefix for OracleState PDA: ['oracle', pool] */\nexport const SEED_ORACLE = 'oracle';\n\n/** Seed prefix for protocol position PDA: ['protocol_position', pool] */\nexport const SEED_PROTOCOL_POSITION = 'protocol_position';\n\n// ============================================================================\n// Sentinel Flags\n// ============================================================================\n\n/** Sentinel hook: called before swap */\nexport const SF_BEFORE_SWAP = 1 << 0;\n\n/** Sentinel hook: called after swap */\nexport const SF_AFTER_SWAP = 1 << 1;\n\n/** Sentinel hook: called before add liquidity */\nexport const SF_BEFORE_ADD_LIQ = 1 << 2;\n\n/** Sentinel hook: called after add liquidity */\nexport const SF_AFTER_ADD_LIQ = 1 << 3;\n\n/** Sentinel hook: called before remove liquidity */\nexport const SF_BEFORE_REMOVE_LIQ = 1 << 4;\n\n/** Sentinel hook: called after remove liquidity */\nexport const SF_AFTER_REMOVE_LIQ = 1 << 5;\n\n/** Require an oracle account when invoking sentinel hooks */\nexport const SF_REQUIRE_ORACLE = 1 << 6;\n\n/** Preserve readonly signer metas when forwarding remaining accounts to sentinels */\nexport const SF_FORWARD_READONLY_SIGNERS = 1 << 7;\n\n/** Sentinel return value indicating \"no change\" to fee parameter */\nexport const SENTINEL_NO_CHANGE = 0xffff;\n\n// ============================================================================\n// Instruction Discriminators (Anchor 8-byte hashes)\n// ============================================================================\n\n/**\n * Anchor instruction discriminator (first 8 bytes of SHA256(\"global:<instruction_name>\"))\n * These are computed at build time from the instruction names.\n */\nexport const INSTRUCTION_DISCRIMINATORS = {\n // SHA256(\"global:initialize_config\")[0:8]\n initializeConfig: new Uint8Array([\n 0xd0, 0x7f, 0x15, 0x01, 0xc2, 0xbe, 0xc4, 0x46,\n ]),\n // SHA256(\"global:initialize_pool\")[0:8]\n initializePool: new Uint8Array([\n 0x5f, 0xb4, 0x0a, 0xac, 0x54, 0xae, 0xe8, 0x28,\n ]),\n // SHA256(\"global:initialize_oracle\")[0:8]\n initializeOracle: new Uint8Array([\n 0x90, 0xdf, 0x83, 0x78, 0xc4, 0xfd, 0xb5, 0x63,\n ]),\n // SHA256(\"global:create_position\")[0:8]\n createPosition: new Uint8Array([\n 0x30, 0xd7, 0xc5, 0x99, 0x60, 0xcb, 0xb4, 0x85,\n ]),\n // SHA256(\"global:add_liquidity\")[0:8]\n addLiquidity: new Uint8Array([\n 0xb5, 0x9d, 0x59, 0x43, 0x8f, 0xb6, 0x34, 0x48,\n ]),\n // SHA256(\"global:remove_liquidity\")[0:8]\n removeLiquidity: new Uint8Array([\n 0x50, 0x55, 0xd1, 0x48, 0x18, 0xce, 0xb1, 0x6c,\n ]),\n // SHA256(\"global:swap_exact_in\")[0:8]\n swapExactIn: new Uint8Array([0x68, 0x68, 0x83, 0x56, 0xa1, 0xbd, 0xb4, 0xd8]),\n // SHA256(\"global:collect_fees\")[0:8]\n collectFees: new Uint8Array([0xa4, 0x98, 0xcf, 0x63, 0x1e, 0xba, 0x13, 0xb6]),\n // SHA256(\"global:collect_protocol_fees\")[0:8]\n collectProtocolFees: new Uint8Array([\n 0x16, 0x43, 0x17, 0x62, 0x96, 0xb2, 0x46, 0xdc,\n ]),\n // SHA256(\"global:close_position\")[0:8]\n closePosition: new Uint8Array([\n 0x7b, 0x86, 0x51, 0x00, 0x31, 0x44, 0x62, 0x62,\n ]),\n // SHA256(\"global:oracle_update\")[0:8]\n oracleUpdate: new Uint8Array([\n 0x55, 0xd1, 0xf8, 0x8e, 0xba, 0xf9, 0x78, 0xef,\n ]),\n // SHA256(\"global:oracle_consult\")[0:8]\n oracleConsult: new Uint8Array([\n 0xef, 0xed, 0xff, 0xb1, 0x8e, 0x48, 0x60, 0xaf,\n ]),\n // SHA256(\"global:quote_to_numeraire\")[0:8]\n quoteToNumeraire: new Uint8Array([\n 0x04, 0x8e, 0xf9, 0xf0, 0x81, 0x0f, 0x8f, 0x39,\n ]),\n // SHA256(\"global:set_sentinel\")[0:8]\n setSentinel: new Uint8Array([0x5e, 0xc8, 0x52, 0x81, 0x35, 0x95, 0xe8, 0x71]),\n // SHA256(\"global:set_fees\")[0:8]\n setFees: new Uint8Array([0x89, 0xb2, 0x31, 0x3a, 0x00, 0xf5, 0xf2, 0xbe]),\n // SHA256(\"global:set_route\")[0:8]\n setRoute: new Uint8Array([0xf4, 0xe7, 0x03, 0x54, 0xe9, 0x3d, 0x92, 0x95]),\n // SHA256(\"global:transfer_admin\")[0:8]\n transferAdmin: new Uint8Array([\n 0x2a, 0xf2, 0x42, 0x6a, 0xe4, 0x0a, 0x6f, 0x9c,\n ]),\n // SHA256(\"global:pause\")[0:8]\n pause: new Uint8Array([0xd3, 0x16, 0xdd, 0xfb, 0x4a, 0x79, 0xc1, 0x2f]),\n // SHA256(\"global:unpause\")[0:8]\n unpause: new Uint8Array([0xa9, 0x90, 0x04, 0x26, 0x0a, 0x8d, 0xbc, 0xff]),\n // SHA256(\"global:skim\")[0:8]\n skim: new Uint8Array([0xee, 0x78, 0xdd, 0x8a, 0x52, 0x3c, 0x64, 0xda]),\n} as const;\n\n// ============================================================================\n// Account Discriminators (Anchor 8-byte hashes)\n// ============================================================================\n\n/**\n * Anchor account discriminator (first 8 bytes of SHA256(\"account:<AccountName>\"))\n */\nexport const ACCOUNT_DISCRIMINATORS = {\n // SHA256(\"account:AmmConfig\")[0:8]\n AmmConfig: new Uint8Array([0xda, 0xf4, 0x21, 0x68, 0xcb, 0xcb, 0x2b, 0x6f]),\n // SHA256(\"account:Pool\")[0:8]\n Pool: new Uint8Array([0xf1, 0x9a, 0x6d, 0x04, 0x11, 0xb1, 0x6d, 0xbc]),\n // SHA256(\"account:Position\")[0:8]\n Position: new Uint8Array([0xaa, 0xbc, 0x8f, 0xe4, 0x7a, 0x40, 0xf7, 0xd0]),\n // SHA256(\"account:OracleState\")[0:8]\n OracleState: new Uint8Array([0x61, 0x9c, 0x9d, 0xbd, 0xc2, 0x49, 0x08, 0x0f]),\n} as const;\n","import {\n type Address,\n type ProgramDerivedAddress,\n getAddressCodec,\n getProgramDerivedAddress,\n} from '@solana/kit';\nimport {\n CPMM_PROGRAM_ID,\n SEED_CONFIG,\n SEED_POOL,\n SEED_AUTHORITY,\n SEED_VAULT0,\n SEED_VAULT1,\n SEED_POSITION,\n SEED_ORACLE,\n SEED_PROTOCOL_POSITION,\n} from './constants.js';\n\nconst addressCodec = getAddressCodec();\nconst textEncoder = new TextEncoder();\n\n// ============================================================================\n// Token Sorting\n// ============================================================================\n\n/**\n * Sort two mints into canonical order (token0 < token1 by bytes)\n * This is required for Pool PDA derivation and instruction ordering.\n *\n * @param mint0 - First mint address\n * @param mint1 - Second mint address\n * @returns Tuple of [token0, token1] in canonical order\n * @throws Error if mints are equal\n */\nexport function sortMints(mint0: Address, mint1: Address): [Address, Address] {\n const bytesA = addressCodec.encode(mint0);\n const bytesB = addressCodec.encode(mint1);\n\n for (let i = 0; i < 32; i++) {\n if (bytesA[i] < bytesB[i]) {\n return [mint0, mint1];\n }\n if (bytesA[i] > bytesB[i]) {\n return [mint1, mint0];\n }\n }\n\n throw new Error('Mints are equal - cannot create pool with identical tokens');\n}\n\n/**\n * Check if mints are in canonical order\n */\nexport function areMintsOrdered(mint0: Address, mint1: Address): boolean {\n const bytes0 = addressCodec.encode(mint0);\n const bytes1 = addressCodec.encode(mint1);\n\n for (let i = 0; i < 32; i++) {\n if (bytes0[i] < bytes1[i]) return true;\n if (bytes0[i] > bytes1[i]) return false;\n }\n return false; // equal\n}\n\n// ============================================================================\n// PDA Derivation Functions\n// ============================================================================\n\n/**\n * Derive the AmmConfig PDA address\n * Seeds: ['config']\n */\nexport async function getConfigAddress(\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_CONFIG)],\n });\n}\n\n/**\n * Derive the Pool PDA address for a token pair\n * Seeds: ['pool', token0_mint, token1_mint]\n *\n * Note: Mints will be automatically sorted if not in canonical order.\n */\nexport async function getPoolAddress(\n mint0: Address,\n mint1: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n const [token0, token1] = sortMints(mint0, mint1);\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n textEncoder.encode(SEED_POOL),\n addressCodec.encode(token0),\n addressCodec.encode(token1),\n ],\n });\n}\n\n/**\n * Derive the Pool authority PDA (vault owner)\n * Seeds: ['authority', pool]\n */\nexport async function getPoolAuthorityAddress(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_AUTHORITY), addressCodec.encode(pool)],\n });\n}\n\n/**\n * Derive the token0 vault PDA.\n * Seeds: ['vault0', pool]\n */\nexport async function getPoolVault0Address(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_VAULT0), addressCodec.encode(pool)],\n });\n}\n\n/**\n * Derive the token1 vault PDA.\n * Seeds: ['vault1', pool]\n */\nexport async function getPoolVault1Address(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_VAULT1), addressCodec.encode(pool)],\n });\n}\n\n/**\n * Derive the Position PDA address\n * Seeds: ['position', pool, owner, position_id_le_bytes]\n */\nexport async function getPositionAddress(\n pool: Address,\n owner: Address,\n positionId: bigint,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n const positionIdBytes = new Uint8Array(8);\n const view = new DataView(positionIdBytes.buffer);\n view.setBigUint64(0, positionId, true); // little-endian\n\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n textEncoder.encode(SEED_POSITION),\n addressCodec.encode(pool),\n addressCodec.encode(owner),\n positionIdBytes,\n ],\n });\n}\n\n/**\n * Derive the OracleState PDA address\n * Seeds: ['oracle', pool]\n */\nexport async function getOracleAddress(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_ORACLE), addressCodec.encode(pool)],\n });\n}\n\n/**\n * Derive the Protocol Position PDA address\n * Seeds: ['protocol_position', pool]\n */\nexport async function getProtocolPositionAddress(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n textEncoder.encode(SEED_PROTOCOL_POSITION),\n addressCodec.encode(pool),\n ],\n });\n}\n\n// ============================================================================\n// Batch PDA Derivation\n// ============================================================================\n\n/**\n * Derive all PDAs needed for pool initialization\n */\nexport async function getPoolInitAddresses(\n mint0: Address,\n mint1: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<{\n token0: Address;\n token1: Address;\n pool: ProgramDerivedAddress;\n authority: ProgramDerivedAddress;\n vault0: ProgramDerivedAddress;\n vault1: ProgramDerivedAddress;\n config: ProgramDerivedAddress;\n protocolPosition: ProgramDerivedAddress;\n}> {\n const [token0, token1] = sortMints(mint0, mint1);\n const [config, pool] = await Promise.all([\n getConfigAddress(programId),\n getPoolAddress(token0, token1, programId),\n ]);\n const [authority, vault0, vault1, protocolPosition] = await Promise.all([\n getPoolAuthorityAddress(pool[0], programId),\n getPoolVault0Address(pool[0], programId),\n getPoolVault1Address(pool[0], programId),\n getProtocolPositionAddress(pool[0], programId),\n ]);\n\n return {\n token0,\n token1,\n pool,\n authority,\n vault0,\n vault1,\n config,\n protocolPosition,\n };\n}\n\n/**\n * Derive all PDAs needed for swap operation\n */\nexport async function getSwapAddresses(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<{\n config: ProgramDerivedAddress;\n authority: ProgramDerivedAddress;\n oracle: ProgramDerivedAddress;\n}> {\n const [config, authority, oracle] = await Promise.all([\n getConfigAddress(programId),\n getPoolAuthorityAddress(pool, programId),\n getOracleAddress(pool, programId),\n ]);\n\n return { config, authority, oracle };\n}\n\n/**\n * Derive all PDAs needed for liquidity operations\n */\nexport async function getLiquidityAddresses(\n pool: Address,\n owner: Address,\n positionId: bigint,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<{\n config: ProgramDerivedAddress;\n authority: ProgramDerivedAddress;\n position: ProgramDerivedAddress;\n protocolPosition: ProgramDerivedAddress;\n oracle: ProgramDerivedAddress;\n}> {\n const [config, authority, position, protocolPosition, oracle] =\n await Promise.all([\n getConfigAddress(programId),\n getPoolAuthorityAddress(pool, programId),\n getPositionAddress(pool, owner, positionId, programId),\n getProtocolPositionAddress(pool, programId),\n getOracleAddress(pool, programId),\n ]);\n\n return { config, authority, position, protocolPosition, oracle };\n}\n"]}
|
|
@@ -6,7 +6,7 @@ var system = require('@solana-program/system');
|
|
|
6
6
|
require('@solana/sysvars');
|
|
7
7
|
|
|
8
8
|
// src/solana/core/pda.ts
|
|
9
|
-
|
|
9
|
+
kit.address(
|
|
10
10
|
"Sysvar1nstructions1111111111111111111111111"
|
|
11
11
|
);
|
|
12
12
|
var CPMM_PROGRAM_ID = kit.address(
|
|
@@ -34,6 +34,8 @@ var SF_BEFORE_ADD_LIQ = 1 << 2;
|
|
|
34
34
|
var SF_AFTER_ADD_LIQ = 1 << 3;
|
|
35
35
|
var SF_BEFORE_REMOVE_LIQ = 1 << 4;
|
|
36
36
|
var SF_AFTER_REMOVE_LIQ = 1 << 5;
|
|
37
|
+
var SF_REQUIRE_ORACLE = 1 << 6;
|
|
38
|
+
var SF_FORWARD_READONLY_SIGNERS = 1 << 7;
|
|
37
39
|
var SENTINEL_NO_CHANGE = 65535;
|
|
38
40
|
var INSTRUCTION_DISCRIMINATORS = {
|
|
39
41
|
// SHA256("global:initialize_config")[0:8]
|
|
@@ -356,7 +358,8 @@ exports.SF_AFTER_SWAP = SF_AFTER_SWAP;
|
|
|
356
358
|
exports.SF_BEFORE_ADD_LIQ = SF_BEFORE_ADD_LIQ;
|
|
357
359
|
exports.SF_BEFORE_REMOVE_LIQ = SF_BEFORE_REMOVE_LIQ;
|
|
358
360
|
exports.SF_BEFORE_SWAP = SF_BEFORE_SWAP;
|
|
359
|
-
exports.
|
|
361
|
+
exports.SF_FORWARD_READONLY_SIGNERS = SF_FORWARD_READONLY_SIGNERS;
|
|
362
|
+
exports.SF_REQUIRE_ORACLE = SF_REQUIRE_ORACLE;
|
|
360
363
|
exports.TOKEN_METADATA_PROGRAM_ID = TOKEN_METADATA_PROGRAM_ID;
|
|
361
364
|
exports.areMintsOrdered = areMintsOrdered;
|
|
362
365
|
exports.getConfigAddress = getConfigAddress;
|
|
@@ -371,5 +374,5 @@ exports.getPositionAddress = getPositionAddress;
|
|
|
371
374
|
exports.getProtocolPositionAddress = getProtocolPositionAddress;
|
|
372
375
|
exports.getSwapAddresses = getSwapAddresses;
|
|
373
376
|
exports.sortMints = sortMints;
|
|
374
|
-
//# sourceMappingURL=chunk-
|
|
375
|
-
//# sourceMappingURL=chunk-
|
|
377
|
+
//# sourceMappingURL=chunk-AT33RY6T.cjs.map
|
|
378
|
+
//# sourceMappingURL=chunk-AT33RY6T.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/solana/core/constants.ts","../src/solana/core/pda.ts"],"names":["address","getAddressCodec","getProgramDerivedAddress"],"mappings":"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","file":"chunk-AT33RY6T.cjs","sourcesContent":["import { address, type Address } from '@solana/kit';\nexport {\n TOKEN_PROGRAM_ADDRESS,\n ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n} from '@solana-program/token';\nexport { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';\nexport { SYSVAR_RENT_ADDRESS } from '@solana/sysvars';\nexport const SYSVAR_INSTRUCTIONS_ADDRESS: Address = address(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\n/**\n * CPMM AMM program ID (devnet)\n */\nexport const CPMM_PROGRAM_ID: Address = address(\n '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ',\n);\n\n/**\n * Metaplex Token Metadata Program ID\n */\nexport const TOKEN_METADATA_PROGRAM_ID: Address = address(\n 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s',\n);\n\n// ============================================================================\n// Math Constants\n// ============================================================================\n\n/** Basis points denominator (10,000 = 100%) */\nexport const BPS_DENOM = 10_000n;\n\n/** Q64.64 fixed-point representation of 1.0 (2^64) */\nexport const Q64_ONE = 1n << 64n;\n\n/** Current account version */\nexport const ACCOUNT_VERSION = 1;\n\n// ============================================================================\n// Array Size Constants\n// ============================================================================\n\n/** Maximum number of programs in sentinel allowlist */\nexport const MAX_SENTINEL_ALLOWLIST = 32;\n\n/** Maximum number of oracle observations (TWAP buffer size) */\nexport const MAX_ORACLE_OBSERVATIONS = 64;\n\n// ============================================================================\n// PDA Seeds\n// ============================================================================\n\n/** Seed for AmmConfig PDA: ['config'] */\nexport const SEED_CONFIG = 'config';\n\n/** Seed prefix for Pool PDA: ['pool', token0_mint, token1_mint] */\nexport const SEED_POOL = 'pool';\n\n/** Seed prefix for pool authority PDA: ['authority', pool] */\nexport const SEED_AUTHORITY = 'authority';\n\n/** Seed prefix for token0 vault PDA: ['vault0', pool] */\nexport const SEED_VAULT0 = 'vault0';\n\n/** Seed prefix for token1 vault PDA: ['vault1', pool] */\nexport const SEED_VAULT1 = 'vault1';\n\n/** Seed prefix for Position PDA: ['position', pool, owner, position_id] */\nexport const SEED_POSITION = 'position';\n\n/** Seed prefix for OracleState PDA: ['oracle', pool] */\nexport const SEED_ORACLE = 'oracle';\n\n/** Seed prefix for protocol position PDA: ['protocol_position', pool] */\nexport const SEED_PROTOCOL_POSITION = 'protocol_position';\n\n// ============================================================================\n// Sentinel Flags\n// ============================================================================\n\n/** Sentinel hook: called before swap */\nexport const SF_BEFORE_SWAP = 1 << 0;\n\n/** Sentinel hook: called after swap */\nexport const SF_AFTER_SWAP = 1 << 1;\n\n/** Sentinel hook: called before add liquidity */\nexport const SF_BEFORE_ADD_LIQ = 1 << 2;\n\n/** Sentinel hook: called after add liquidity */\nexport const SF_AFTER_ADD_LIQ = 1 << 3;\n\n/** Sentinel hook: called before remove liquidity */\nexport const SF_BEFORE_REMOVE_LIQ = 1 << 4;\n\n/** Sentinel hook: called after remove liquidity */\nexport const SF_AFTER_REMOVE_LIQ = 1 << 5;\n\n/** Require an oracle account when invoking sentinel hooks */\nexport const SF_REQUIRE_ORACLE = 1 << 6;\n\n/** Preserve readonly signer metas when forwarding remaining accounts to sentinels */\nexport const SF_FORWARD_READONLY_SIGNERS = 1 << 7;\n\n/** Sentinel return value indicating \"no change\" to fee parameter */\nexport const SENTINEL_NO_CHANGE = 0xffff;\n\n// ============================================================================\n// Instruction Discriminators (Anchor 8-byte hashes)\n// ============================================================================\n\n/**\n * Anchor instruction discriminator (first 8 bytes of SHA256(\"global:<instruction_name>\"))\n * These are computed at build time from the instruction names.\n */\nexport const INSTRUCTION_DISCRIMINATORS = {\n // SHA256(\"global:initialize_config\")[0:8]\n initializeConfig: new Uint8Array([\n 0xd0, 0x7f, 0x15, 0x01, 0xc2, 0xbe, 0xc4, 0x46,\n ]),\n // SHA256(\"global:initialize_pool\")[0:8]\n initializePool: new Uint8Array([\n 0x5f, 0xb4, 0x0a, 0xac, 0x54, 0xae, 0xe8, 0x28,\n ]),\n // SHA256(\"global:initialize_oracle\")[0:8]\n initializeOracle: new Uint8Array([\n 0x90, 0xdf, 0x83, 0x78, 0xc4, 0xfd, 0xb5, 0x63,\n ]),\n // SHA256(\"global:create_position\")[0:8]\n createPosition: new Uint8Array([\n 0x30, 0xd7, 0xc5, 0x99, 0x60, 0xcb, 0xb4, 0x85,\n ]),\n // SHA256(\"global:add_liquidity\")[0:8]\n addLiquidity: new Uint8Array([\n 0xb5, 0x9d, 0x59, 0x43, 0x8f, 0xb6, 0x34, 0x48,\n ]),\n // SHA256(\"global:remove_liquidity\")[0:8]\n removeLiquidity: new Uint8Array([\n 0x50, 0x55, 0xd1, 0x48, 0x18, 0xce, 0xb1, 0x6c,\n ]),\n // SHA256(\"global:swap_exact_in\")[0:8]\n swapExactIn: new Uint8Array([0x68, 0x68, 0x83, 0x56, 0xa1, 0xbd, 0xb4, 0xd8]),\n // SHA256(\"global:collect_fees\")[0:8]\n collectFees: new Uint8Array([0xa4, 0x98, 0xcf, 0x63, 0x1e, 0xba, 0x13, 0xb6]),\n // SHA256(\"global:collect_protocol_fees\")[0:8]\n collectProtocolFees: new Uint8Array([\n 0x16, 0x43, 0x17, 0x62, 0x96, 0xb2, 0x46, 0xdc,\n ]),\n // SHA256(\"global:close_position\")[0:8]\n closePosition: new Uint8Array([\n 0x7b, 0x86, 0x51, 0x00, 0x31, 0x44, 0x62, 0x62,\n ]),\n // SHA256(\"global:oracle_update\")[0:8]\n oracleUpdate: new Uint8Array([\n 0x55, 0xd1, 0xf8, 0x8e, 0xba, 0xf9, 0x78, 0xef,\n ]),\n // SHA256(\"global:oracle_consult\")[0:8]\n oracleConsult: new Uint8Array([\n 0xef, 0xed, 0xff, 0xb1, 0x8e, 0x48, 0x60, 0xaf,\n ]),\n // SHA256(\"global:quote_to_numeraire\")[0:8]\n quoteToNumeraire: new Uint8Array([\n 0x04, 0x8e, 0xf9, 0xf0, 0x81, 0x0f, 0x8f, 0x39,\n ]),\n // SHA256(\"global:set_sentinel\")[0:8]\n setSentinel: new Uint8Array([0x5e, 0xc8, 0x52, 0x81, 0x35, 0x95, 0xe8, 0x71]),\n // SHA256(\"global:set_fees\")[0:8]\n setFees: new Uint8Array([0x89, 0xb2, 0x31, 0x3a, 0x00, 0xf5, 0xf2, 0xbe]),\n // SHA256(\"global:set_route\")[0:8]\n setRoute: new Uint8Array([0xf4, 0xe7, 0x03, 0x54, 0xe9, 0x3d, 0x92, 0x95]),\n // SHA256(\"global:transfer_admin\")[0:8]\n transferAdmin: new Uint8Array([\n 0x2a, 0xf2, 0x42, 0x6a, 0xe4, 0x0a, 0x6f, 0x9c,\n ]),\n // SHA256(\"global:pause\")[0:8]\n pause: new Uint8Array([0xd3, 0x16, 0xdd, 0xfb, 0x4a, 0x79, 0xc1, 0x2f]),\n // SHA256(\"global:unpause\")[0:8]\n unpause: new Uint8Array([0xa9, 0x90, 0x04, 0x26, 0x0a, 0x8d, 0xbc, 0xff]),\n // SHA256(\"global:skim\")[0:8]\n skim: new Uint8Array([0xee, 0x78, 0xdd, 0x8a, 0x52, 0x3c, 0x64, 0xda]),\n} as const;\n\n// ============================================================================\n// Account Discriminators (Anchor 8-byte hashes)\n// ============================================================================\n\n/**\n * Anchor account discriminator (first 8 bytes of SHA256(\"account:<AccountName>\"))\n */\nexport const ACCOUNT_DISCRIMINATORS = {\n // SHA256(\"account:AmmConfig\")[0:8]\n AmmConfig: new Uint8Array([0xda, 0xf4, 0x21, 0x68, 0xcb, 0xcb, 0x2b, 0x6f]),\n // SHA256(\"account:Pool\")[0:8]\n Pool: new Uint8Array([0xf1, 0x9a, 0x6d, 0x04, 0x11, 0xb1, 0x6d, 0xbc]),\n // SHA256(\"account:Position\")[0:8]\n Position: new Uint8Array([0xaa, 0xbc, 0x8f, 0xe4, 0x7a, 0x40, 0xf7, 0xd0]),\n // SHA256(\"account:OracleState\")[0:8]\n OracleState: new Uint8Array([0x61, 0x9c, 0x9d, 0xbd, 0xc2, 0x49, 0x08, 0x0f]),\n} as const;\n","import {\n type Address,\n type ProgramDerivedAddress,\n getAddressCodec,\n getProgramDerivedAddress,\n} from '@solana/kit';\nimport {\n CPMM_PROGRAM_ID,\n SEED_CONFIG,\n SEED_POOL,\n SEED_AUTHORITY,\n SEED_VAULT0,\n SEED_VAULT1,\n SEED_POSITION,\n SEED_ORACLE,\n SEED_PROTOCOL_POSITION,\n} from './constants.js';\n\nconst addressCodec = getAddressCodec();\nconst textEncoder = new TextEncoder();\n\n// ============================================================================\n// Token Sorting\n// ============================================================================\n\n/**\n * Sort two mints into canonical order (token0 < token1 by bytes)\n * This is required for Pool PDA derivation and instruction ordering.\n *\n * @param mint0 - First mint address\n * @param mint1 - Second mint address\n * @returns Tuple of [token0, token1] in canonical order\n * @throws Error if mints are equal\n */\nexport function sortMints(mint0: Address, mint1: Address): [Address, Address] {\n const bytesA = addressCodec.encode(mint0);\n const bytesB = addressCodec.encode(mint1);\n\n for (let i = 0; i < 32; i++) {\n if (bytesA[i] < bytesB[i]) {\n return [mint0, mint1];\n }\n if (bytesA[i] > bytesB[i]) {\n return [mint1, mint0];\n }\n }\n\n throw new Error('Mints are equal - cannot create pool with identical tokens');\n}\n\n/**\n * Check if mints are in canonical order\n */\nexport function areMintsOrdered(mint0: Address, mint1: Address): boolean {\n const bytes0 = addressCodec.encode(mint0);\n const bytes1 = addressCodec.encode(mint1);\n\n for (let i = 0; i < 32; i++) {\n if (bytes0[i] < bytes1[i]) return true;\n if (bytes0[i] > bytes1[i]) return false;\n }\n return false; // equal\n}\n\n// ============================================================================\n// PDA Derivation Functions\n// ============================================================================\n\n/**\n * Derive the AmmConfig PDA address\n * Seeds: ['config']\n */\nexport async function getConfigAddress(\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_CONFIG)],\n });\n}\n\n/**\n * Derive the Pool PDA address for a token pair\n * Seeds: ['pool', token0_mint, token1_mint]\n *\n * Note: Mints will be automatically sorted if not in canonical order.\n */\nexport async function getPoolAddress(\n mint0: Address,\n mint1: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n const [token0, token1] = sortMints(mint0, mint1);\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n textEncoder.encode(SEED_POOL),\n addressCodec.encode(token0),\n addressCodec.encode(token1),\n ],\n });\n}\n\n/**\n * Derive the Pool authority PDA (vault owner)\n * Seeds: ['authority', pool]\n */\nexport async function getPoolAuthorityAddress(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_AUTHORITY), addressCodec.encode(pool)],\n });\n}\n\n/**\n * Derive the token0 vault PDA.\n * Seeds: ['vault0', pool]\n */\nexport async function getPoolVault0Address(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_VAULT0), addressCodec.encode(pool)],\n });\n}\n\n/**\n * Derive the token1 vault PDA.\n * Seeds: ['vault1', pool]\n */\nexport async function getPoolVault1Address(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_VAULT1), addressCodec.encode(pool)],\n });\n}\n\n/**\n * Derive the Position PDA address\n * Seeds: ['position', pool, owner, position_id_le_bytes]\n */\nexport async function getPositionAddress(\n pool: Address,\n owner: Address,\n positionId: bigint,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n const positionIdBytes = new Uint8Array(8);\n const view = new DataView(positionIdBytes.buffer);\n view.setBigUint64(0, positionId, true); // little-endian\n\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n textEncoder.encode(SEED_POSITION),\n addressCodec.encode(pool),\n addressCodec.encode(owner),\n positionIdBytes,\n ],\n });\n}\n\n/**\n * Derive the OracleState PDA address\n * Seeds: ['oracle', pool]\n */\nexport async function getOracleAddress(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [textEncoder.encode(SEED_ORACLE), addressCodec.encode(pool)],\n });\n}\n\n/**\n * Derive the Protocol Position PDA address\n * Seeds: ['protocol_position', pool]\n */\nexport async function getProtocolPositionAddress(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n textEncoder.encode(SEED_PROTOCOL_POSITION),\n addressCodec.encode(pool),\n ],\n });\n}\n\n// ============================================================================\n// Batch PDA Derivation\n// ============================================================================\n\n/**\n * Derive all PDAs needed for pool initialization\n */\nexport async function getPoolInitAddresses(\n mint0: Address,\n mint1: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<{\n token0: Address;\n token1: Address;\n pool: ProgramDerivedAddress;\n authority: ProgramDerivedAddress;\n vault0: ProgramDerivedAddress;\n vault1: ProgramDerivedAddress;\n config: ProgramDerivedAddress;\n protocolPosition: ProgramDerivedAddress;\n}> {\n const [token0, token1] = sortMints(mint0, mint1);\n const [config, pool] = await Promise.all([\n getConfigAddress(programId),\n getPoolAddress(token0, token1, programId),\n ]);\n const [authority, vault0, vault1, protocolPosition] = await Promise.all([\n getPoolAuthorityAddress(pool[0], programId),\n getPoolVault0Address(pool[0], programId),\n getPoolVault1Address(pool[0], programId),\n getProtocolPositionAddress(pool[0], programId),\n ]);\n\n return {\n token0,\n token1,\n pool,\n authority,\n vault0,\n vault1,\n config,\n protocolPosition,\n };\n}\n\n/**\n * Derive all PDAs needed for swap operation\n */\nexport async function getSwapAddresses(\n pool: Address,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<{\n config: ProgramDerivedAddress;\n authority: ProgramDerivedAddress;\n oracle: ProgramDerivedAddress;\n}> {\n const [config, authority, oracle] = await Promise.all([\n getConfigAddress(programId),\n getPoolAuthorityAddress(pool, programId),\n getOracleAddress(pool, programId),\n ]);\n\n return { config, authority, oracle };\n}\n\n/**\n * Derive all PDAs needed for liquidity operations\n */\nexport async function getLiquidityAddresses(\n pool: Address,\n owner: Address,\n positionId: bigint,\n programId: Address = CPMM_PROGRAM_ID,\n): Promise<{\n config: ProgramDerivedAddress;\n authority: ProgramDerivedAddress;\n position: ProgramDerivedAddress;\n protocolPosition: ProgramDerivedAddress;\n oracle: ProgramDerivedAddress;\n}> {\n const [config, authority, position, protocolPosition, oracle] =\n await Promise.all([\n getConfigAddress(programId),\n getPoolAuthorityAddress(pool, programId),\n getPositionAddress(pool, owner, positionId, programId),\n getProtocolPositionAddress(pool, programId),\n getOracleAddress(pool, programId),\n ]);\n\n return { config, authority, position, protocolPosition, oracle };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkAT33RY6T_cjs = require('./chunk-AT33RY6T.cjs');
|
|
4
4
|
var kit = require('@solana/kit');
|
|
5
5
|
|
|
6
6
|
var addressCodec = kit.getAddressCodec();
|
|
@@ -52,7 +52,7 @@ var ammConfigDataCodec = kit.getStructCodec([
|
|
|
52
52
|
["sentinelAllowlistLen", u8Codec],
|
|
53
53
|
[
|
|
54
54
|
"sentinelAllowlist",
|
|
55
|
-
kit.getArrayCodec(addressCodec, { size:
|
|
55
|
+
kit.getArrayCodec(addressCodec, { size: chunkAT33RY6T_cjs.MAX_SENTINEL_ALLOWLIST })
|
|
56
56
|
],
|
|
57
57
|
["maxSwapFeeBps", u16Codec],
|
|
58
58
|
["maxFeeSplitBps", u16Codec],
|
|
@@ -120,22 +120,22 @@ var oracleStateDataCodec = kit.getStructCodec([
|
|
|
120
120
|
["observationIndex", u16Codec],
|
|
121
121
|
[
|
|
122
122
|
"observations",
|
|
123
|
-
kit.getArrayCodec(observationCodec, { size:
|
|
123
|
+
kit.getArrayCodec(observationCodec, { size: chunkAT33RY6T_cjs.MAX_ORACLE_OBSERVATIONS })
|
|
124
124
|
],
|
|
125
125
|
["version", u8Codec],
|
|
126
126
|
["reserved", reservedBytesCodec]
|
|
127
127
|
]);
|
|
128
128
|
var ammConfigDecoder = kit.getHiddenPrefixDecoder(ammConfigDataCodec, [
|
|
129
|
-
kit.getConstantDecoder(
|
|
129
|
+
kit.getConstantDecoder(chunkAT33RY6T_cjs.ACCOUNT_DISCRIMINATORS.AmmConfig)
|
|
130
130
|
]);
|
|
131
131
|
var poolDecoder = kit.getHiddenPrefixDecoder(poolDataCodec, [
|
|
132
|
-
kit.getConstantDecoder(
|
|
132
|
+
kit.getConstantDecoder(chunkAT33RY6T_cjs.ACCOUNT_DISCRIMINATORS.Pool)
|
|
133
133
|
]);
|
|
134
134
|
var positionDecoder = kit.getHiddenPrefixDecoder(positionDataCodec, [
|
|
135
|
-
kit.getConstantDecoder(
|
|
135
|
+
kit.getConstantDecoder(chunkAT33RY6T_cjs.ACCOUNT_DISCRIMINATORS.Position)
|
|
136
136
|
]);
|
|
137
137
|
var oracleStateDecoder = kit.getHiddenPrefixDecoder(oracleStateDataCodec, [
|
|
138
|
-
kit.getConstantDecoder(
|
|
138
|
+
kit.getConstantDecoder(chunkAT33RY6T_cjs.ACCOUNT_DISCRIMINATORS.OracleState)
|
|
139
139
|
]);
|
|
140
140
|
function decodeAmmConfig(data) {
|
|
141
141
|
return ammConfigDecoder.decode(data);
|
|
@@ -299,12 +299,12 @@ function encodeQuoteToNumeraireArgs(args) {
|
|
|
299
299
|
function q64ToNumber(q64) {
|
|
300
300
|
const intPart = q64 >> 64n;
|
|
301
301
|
const fracPart = q64 & (1n << 64n) - 1n;
|
|
302
|
-
return Number(intPart) + Number(fracPart) / Number(
|
|
302
|
+
return Number(intPart) + Number(fracPart) / Number(chunkAT33RY6T_cjs.Q64_ONE);
|
|
303
303
|
}
|
|
304
304
|
function numberToQ64(n) {
|
|
305
305
|
const intPart = Math.floor(n);
|
|
306
306
|
const fracPart = n - intPart;
|
|
307
|
-
return (BigInt(intPart) << 64n) + BigInt(Math.round(fracPart * Number(
|
|
307
|
+
return (BigInt(intPart) << 64n) + BigInt(Math.round(fracPart * Number(chunkAT33RY6T_cjs.Q64_ONE)));
|
|
308
308
|
}
|
|
309
309
|
function q64Mul(a, b) {
|
|
310
310
|
return a * b >> 64n;
|
|
@@ -360,8 +360,8 @@ function getSwapQuote(pool, amountIn, direction) {
|
|
|
360
360
|
if (reserveIn === 0n || reserveOut === 0n) {
|
|
361
361
|
throw new Error("Pool has zero liquidity");
|
|
362
362
|
}
|
|
363
|
-
const feeTotal = amountIn * BigInt(pool.swapFeeBps) /
|
|
364
|
-
const feeDist = feeTotal * BigInt(pool.feeSplitBps) /
|
|
363
|
+
const feeTotal = amountIn * BigInt(pool.swapFeeBps) / chunkAT33RY6T_cjs.BPS_DENOM;
|
|
364
|
+
const feeDist = feeTotal * BigInt(pool.feeSplitBps) / chunkAT33RY6T_cjs.BPS_DENOM;
|
|
365
365
|
const feeComp = feeTotal - feeDist;
|
|
366
366
|
const amountInEff = amountIn - feeTotal;
|
|
367
367
|
const amountOut = amountInEff * reserveOut / (reserveIn + amountInEff);
|
|
@@ -387,8 +387,8 @@ function getSwapQuoteExactOut(pool, amountOut, direction) {
|
|
|
387
387
|
}
|
|
388
388
|
const amountInEff = ceilDiv(amountOut * reserveIn, reserveOut - amountOut);
|
|
389
389
|
const amountIn = ceilDiv(
|
|
390
|
-
amountInEff *
|
|
391
|
-
|
|
390
|
+
amountInEff * chunkAT33RY6T_cjs.BPS_DENOM,
|
|
391
|
+
chunkAT33RY6T_cjs.BPS_DENOM - BigInt(pool.swapFeeBps)
|
|
392
392
|
);
|
|
393
393
|
const feeTotal = amountIn - amountInEff;
|
|
394
394
|
return { amountIn, feeTotal };
|
|
@@ -488,45 +488,6 @@ function calculateTwapNumber(cumulativeStart, cumulativeEnd, timestampStart, tim
|
|
|
488
488
|
);
|
|
489
489
|
return q64ToNumber(twapQ64);
|
|
490
490
|
}
|
|
491
|
-
function createCollectFeesInstruction(accounts, args, programId = chunkO6FR7TXY_cjs.CPMM_PROGRAM_ID) {
|
|
492
|
-
const {
|
|
493
|
-
pool,
|
|
494
|
-
position,
|
|
495
|
-
owner,
|
|
496
|
-
authority,
|
|
497
|
-
vault0,
|
|
498
|
-
vault1,
|
|
499
|
-
token0Mint,
|
|
500
|
-
token1Mint,
|
|
501
|
-
user0,
|
|
502
|
-
user1,
|
|
503
|
-
tokenProgram = chunkO6FR7TXY_cjs.TOKEN_PROGRAM_ADDRESS
|
|
504
|
-
} = accounts;
|
|
505
|
-
const keys = [
|
|
506
|
-
{ address: pool, role: kit.AccountRole.WRITABLE },
|
|
507
|
-
{ address: position, role: kit.AccountRole.WRITABLE },
|
|
508
|
-
{ address: owner, role: kit.AccountRole.READONLY_SIGNER },
|
|
509
|
-
{ address: authority, role: kit.AccountRole.READONLY },
|
|
510
|
-
{ address: vault0, role: kit.AccountRole.WRITABLE },
|
|
511
|
-
{ address: vault1, role: kit.AccountRole.WRITABLE },
|
|
512
|
-
{ address: token0Mint, role: kit.AccountRole.READONLY },
|
|
513
|
-
{ address: token1Mint, role: kit.AccountRole.READONLY },
|
|
514
|
-
{ address: user0, role: kit.AccountRole.WRITABLE },
|
|
515
|
-
{ address: user1, role: kit.AccountRole.WRITABLE },
|
|
516
|
-
{ address: tokenProgram, role: kit.AccountRole.READONLY }
|
|
517
|
-
];
|
|
518
|
-
const data = encodeInstructionData(
|
|
519
|
-
chunkO6FR7TXY_cjs.INSTRUCTION_DISCRIMINATORS.collectFees,
|
|
520
|
-
collectFeesArgsCodec,
|
|
521
|
-
args
|
|
522
|
-
);
|
|
523
|
-
return {
|
|
524
|
-
programAddress: programId,
|
|
525
|
-
accounts: keys,
|
|
526
|
-
data
|
|
527
|
-
};
|
|
528
|
-
}
|
|
529
|
-
var MAX_FEE_AMOUNT = BigInt("18446744073709551615");
|
|
530
491
|
|
|
531
492
|
// src/solana/client/pool.ts
|
|
532
493
|
function bytesToBase64(bytes) {
|
|
@@ -555,11 +516,11 @@ async function fetchPool(rpc, address, config) {
|
|
|
555
516
|
return decodePool(base64ToBytes(response.value.data[0]));
|
|
556
517
|
}
|
|
557
518
|
async function fetchAllPools(rpc, config) {
|
|
558
|
-
const programId = config?.programId ??
|
|
519
|
+
const programId = config?.programId ?? chunkAT33RY6T_cjs.CPMM_PROGRAM_ID;
|
|
559
520
|
const discriminatorFilter = {
|
|
560
521
|
memcmp: {
|
|
561
522
|
offset: 0n,
|
|
562
|
-
bytes: bytesToBase64(
|
|
523
|
+
bytes: bytesToBase64(chunkAT33RY6T_cjs.ACCOUNT_DISCRIMINATORS.Pool),
|
|
563
524
|
encoding: "base64"
|
|
564
525
|
}
|
|
565
526
|
};
|
|
@@ -584,8 +545,8 @@ async function fetchAllPools(rpc, config) {
|
|
|
584
545
|
return pools;
|
|
585
546
|
}
|
|
586
547
|
async function getPoolByMints(rpc, mint0, mint1, config) {
|
|
587
|
-
const programId = config?.programId ??
|
|
588
|
-
const [poolAddress] = await
|
|
548
|
+
const programId = config?.programId ?? chunkAT33RY6T_cjs.CPMM_PROGRAM_ID;
|
|
549
|
+
const [poolAddress] = await chunkAT33RY6T_cjs.getPoolAddress(mint0, mint1, programId);
|
|
589
550
|
const pool = await fetchPool(rpc, poolAddress, config);
|
|
590
551
|
if (!pool) {
|
|
591
552
|
return null;
|
|
@@ -612,9 +573,9 @@ async function poolExists(rpc, mint0, mint1, config) {
|
|
|
612
573
|
const result = await getPoolByMints(rpc, mint0, mint1, config);
|
|
613
574
|
return result !== null;
|
|
614
575
|
}
|
|
615
|
-
async function getPoolAddressFromMints(mint0, mint1, programId =
|
|
616
|
-
const [token0, token1] =
|
|
617
|
-
const [poolAddress] = await
|
|
576
|
+
async function getPoolAddressFromMints(mint0, mint1, programId = chunkAT33RY6T_cjs.CPMM_PROGRAM_ID) {
|
|
577
|
+
const [token0, token1] = chunkAT33RY6T_cjs.sortMints(mint0, mint1);
|
|
578
|
+
const [poolAddress] = await chunkAT33RY6T_cjs.getPoolAddress(mint0, mint1, programId);
|
|
618
579
|
return {
|
|
619
580
|
poolAddress,
|
|
620
581
|
token0,
|
|
@@ -662,14 +623,14 @@ async function fetchPosition(rpc, address, config) {
|
|
|
662
623
|
return decodePosition(base64ToBytes2(response.value.data[0]));
|
|
663
624
|
}
|
|
664
625
|
async function fetchUserPositions(rpc, owner, pool, config) {
|
|
665
|
-
const programId = config?.programId ??
|
|
626
|
+
const programId = config?.programId ?? chunkAT33RY6T_cjs.CPMM_PROGRAM_ID;
|
|
666
627
|
const filters = [
|
|
667
628
|
// Discriminator filter (first 8 bytes)
|
|
668
629
|
{
|
|
669
630
|
memcmp: {
|
|
670
631
|
offset: 0n,
|
|
671
632
|
bytes: bytesToBase642(
|
|
672
|
-
|
|
633
|
+
chunkAT33RY6T_cjs.ACCOUNT_DISCRIMINATORS.Position
|
|
673
634
|
),
|
|
674
635
|
encoding: "base64"
|
|
675
636
|
}
|
|
@@ -713,14 +674,14 @@ async function fetchUserPositions(rpc, owner, pool, config) {
|
|
|
713
674
|
return positions;
|
|
714
675
|
}
|
|
715
676
|
async function fetchPoolPositions(rpc, pool, config) {
|
|
716
|
-
const programId = config?.programId ??
|
|
677
|
+
const programId = config?.programId ?? chunkAT33RY6T_cjs.CPMM_PROGRAM_ID;
|
|
717
678
|
const filters = [
|
|
718
679
|
// Discriminator filter
|
|
719
680
|
{
|
|
720
681
|
memcmp: {
|
|
721
682
|
offset: 0n,
|
|
722
683
|
bytes: bytesToBase642(
|
|
723
|
-
|
|
684
|
+
chunkAT33RY6T_cjs.ACCOUNT_DISCRIMINATORS.Position
|
|
724
685
|
),
|
|
725
686
|
encoding: "base64"
|
|
726
687
|
}
|
|
@@ -781,8 +742,8 @@ function getPositionValue(pool, position) {
|
|
|
781
742
|
};
|
|
782
743
|
}
|
|
783
744
|
async function fetchPositionByParams(rpc, pool, owner, positionId, config) {
|
|
784
|
-
const programId = config?.programId ??
|
|
785
|
-
const [address] = await
|
|
745
|
+
const programId = config?.programId ?? chunkAT33RY6T_cjs.CPMM_PROGRAM_ID;
|
|
746
|
+
const [address] = await chunkAT33RY6T_cjs.getPositionAddress(
|
|
786
747
|
pool,
|
|
787
748
|
owner,
|
|
788
749
|
positionId,
|
|
@@ -797,8 +758,8 @@ async function fetchPositionByParams(rpc, pool, owner, positionId, config) {
|
|
|
797
758
|
account: position
|
|
798
759
|
};
|
|
799
760
|
}
|
|
800
|
-
async function getPositionAddressFromParams(pool, owner, positionId, programId =
|
|
801
|
-
const [address] = await
|
|
761
|
+
async function getPositionAddressFromParams(pool, owner, positionId, programId = chunkAT33RY6T_cjs.CPMM_PROGRAM_ID) {
|
|
762
|
+
const [address] = await chunkAT33RY6T_cjs.getPositionAddress(
|
|
802
763
|
pool,
|
|
803
764
|
owner,
|
|
804
765
|
positionId,
|
|
@@ -849,8 +810,8 @@ async function fetchOracle(rpc, address, config) {
|
|
|
849
810
|
return decodeOracleState(base64ToBytes3(response.value.data[0]));
|
|
850
811
|
}
|
|
851
812
|
async function getOracleForPool(rpc, pool, config) {
|
|
852
|
-
const programId = config?.programId ??
|
|
853
|
-
const [oracleAddress] = await
|
|
813
|
+
const programId = config?.programId ?? chunkAT33RY6T_cjs.CPMM_PROGRAM_ID;
|
|
814
|
+
const [oracleAddress] = await chunkAT33RY6T_cjs.getOracleAddress(pool, programId);
|
|
854
815
|
const oracle = await fetchOracle(rpc, oracleAddress, config);
|
|
855
816
|
if (!oracle) {
|
|
856
817
|
return null;
|
|
@@ -860,8 +821,8 @@ async function getOracleForPool(rpc, pool, config) {
|
|
|
860
821
|
account: oracle
|
|
861
822
|
};
|
|
862
823
|
}
|
|
863
|
-
async function getOracleAddressFromPool(pool, programId =
|
|
864
|
-
const [address] = await
|
|
824
|
+
async function getOracleAddressFromPool(pool, programId = chunkAT33RY6T_cjs.CPMM_PROGRAM_ID) {
|
|
825
|
+
const [address] = await chunkAT33RY6T_cjs.getOracleAddress(pool, programId);
|
|
865
826
|
return address;
|
|
866
827
|
}
|
|
867
828
|
function consultTwap(oracle, windowSeconds, currentTimestamp) {
|
|
@@ -984,10 +945,10 @@ function getOracleBufferStats(oracle) {
|
|
|
984
945
|
};
|
|
985
946
|
}
|
|
986
947
|
async function fetchOraclesBatch(rpc, pools, config) {
|
|
987
|
-
const programId = config?.programId ??
|
|
948
|
+
const programId = config?.programId ?? chunkAT33RY6T_cjs.CPMM_PROGRAM_ID;
|
|
988
949
|
const oracles = /* @__PURE__ */ new Map();
|
|
989
950
|
const oracleAddresses = await Promise.all(
|
|
990
|
-
pools.map((pool) =>
|
|
951
|
+
pools.map((pool) => chunkAT33RY6T_cjs.getOracleAddress(pool, programId))
|
|
991
952
|
);
|
|
992
953
|
const results = await Promise.all(
|
|
993
954
|
oracleAddresses.map(([addr]) => fetchOracle(rpc, addr, config))
|
|
@@ -1014,7 +975,6 @@ function comparePoolAndOraclePrices(pool, oracle) {
|
|
|
1014
975
|
};
|
|
1015
976
|
}
|
|
1016
977
|
|
|
1017
|
-
exports.MAX_FEE_AMOUNT = MAX_FEE_AMOUNT;
|
|
1018
978
|
exports.addLiquidityArgsCodec = addLiquidityArgsCodec;
|
|
1019
979
|
exports.ammConfigDataCodec = ammConfigDataCodec;
|
|
1020
980
|
exports.calculateAccruedFees = calculateAccruedFees;
|
|
@@ -1027,7 +987,6 @@ exports.comparePoolAndOraclePrices = comparePoolAndOraclePrices;
|
|
|
1027
987
|
exports.computePrice0Q64 = computePrice0Q64;
|
|
1028
988
|
exports.computePrice1Q64 = computePrice1Q64;
|
|
1029
989
|
exports.consultTwap = consultTwap;
|
|
1030
|
-
exports.createCollectFeesInstruction = createCollectFeesInstruction;
|
|
1031
990
|
exports.createPositionArgsCodec = createPositionArgsCodec;
|
|
1032
991
|
exports.decodeAmmConfig = decodeAmmConfig;
|
|
1033
992
|
exports.decodeOracleState = decodeOracleState;
|
|
@@ -1107,5 +1066,5 @@ exports.sortPoolsByReserves = sortPoolsByReserves;
|
|
|
1107
1066
|
exports.sortPositionsByShares = sortPositionsByShares;
|
|
1108
1067
|
exports.swapExactInArgsCodec = swapExactInArgsCodec;
|
|
1109
1068
|
exports.transferAdminArgsCodec = transferAdminArgsCodec;
|
|
1110
|
-
//# sourceMappingURL=chunk-
|
|
1111
|
-
//# sourceMappingURL=chunk-
|
|
1069
|
+
//# sourceMappingURL=chunk-LL7TW3GU.cjs.map
|
|
1070
|
+
//# sourceMappingURL=chunk-LL7TW3GU.cjs.map
|