@picon-finance/dlmm-sdk 1.1.0 → 1.2.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.
@@ -2327,6 +2327,14 @@
2327
2327
  "type": "i32",
2328
2328
  "value": "100"
2329
2329
  },
2330
+ {
2331
+ "name": "DYNAMIC_FEE_DIVISOR",
2332
+ "docs": [
2333
+ "Divisor for `dynamic_fee_control`."
2334
+ ],
2335
+ "type": "u128",
2336
+ "value": "100000000000"
2337
+ },
2330
2338
  {
2331
2339
  "name": "FEE_PRECISION",
2332
2340
  "type": "u128",
@@ -1 +1 @@
1
- {"version":3,"file":"program_addresses.d.ts","sourceRoot":"","sources":["../src/program_addresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAW,MAAM,aAAa,CAAC;AAKpD,OAAO,EAAE,0BAA0B,IAAI,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAIpF,eAAO,MAAM,sBAAsB,EAAE,OAAgE,CAAC"}
1
+ {"version":3,"file":"program_addresses.d.ts","sourceRoot":"","sources":["../src/program_addresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,EAAE,0BAA0B,IAAI,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAIpF,eAAO,MAAM,sBAAsB,EAAoD,OAAO,CAAC"}
@@ -1,8 +1,7 @@
1
- import { address } from "@solana/kit";
2
1
  // SDK codegen always targets the mainnet IDL (see package.json's `copy-idl`), so this is the
3
2
  // same value as `generated.PICON_DLMM_PROGRAM_ADDRESS` — exported under a clearer name here
4
3
  // since it's meant to be read standalone, not discovered via the generated namespace.
5
4
  export { PICON_DLMM_PROGRAM_ADDRESS as MAINNET_PROGRAM_ADDRESS } from "./generated";
6
5
  // Not baked into codegen (the IDL's structure is identical across clusters — only the address
7
6
  // differs) — pass this as the `programAddress` argument on any SDK action to target devnet.
8
- export const DEVNET_PROGRAM_ADDRESS = address("tDLMMKoxBt7UkZapYHsEgLGydmFvSQXh5mGzrRovoeM");
7
+ export const DEVNET_PROGRAM_ADDRESS = "tDLMMKoxBt7UkZapYHsEgLGydmFvSQXh5mGzrRovoeM";
@@ -1,5 +1,5 @@
1
1
  import { type Address, type Instruction, type TransactionSigner } from "@solana/kit";
2
- export declare const NATIVE_MINT_ADDRESS: Address<"So11111111111111111111111111111111111111112">;
2
+ export declare const NATIVE_MINT_ADDRESS: Address;
3
3
  export declare function findAssociatedTokenPdaByTokenProgram(params: {
4
4
  owner: Address;
5
5
  mint: Address;
@@ -1 +1 @@
1
- {"version":3,"file":"ata.d.ts","sourceRoot":"","sources":["../../src/utils/ata.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAerB,eAAO,MAAM,mBAAmB,wDAAyD,CAAC;AAE1F,wBAAsB,oCAAoC,CAAC,MAAM,EAAE;IACjE,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB,4BAIA;AAID,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,YAAY,GACb,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnB;AAID,wBAAsB,mBAAmB,CAAC,EACxC,IAAI,EACJ,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,GACd,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAM1D;AAED,UAAU,mCAAmC;IAC3C,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,mCAAmC;IAC3C,GAAG,EAAE,OAAO,CAAC;IACb,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,gBAAgB,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,mCAAmC,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAMvI;AAKD,wBAAsB,iCAAiC,CAAC,EACtD,KAAK,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,OAAO,EACP,OAAO,GACR,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IACV,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,gBAAgB,EAAE,WAAW,EAAE,CAAC;CACjC,CAAC,CAWD"}
1
+ {"version":3,"file":"ata.d.ts","sourceRoot":"","sources":["../../src/utils/ata.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAerB,eAAO,MAAM,mBAAmB,EAAoD,OAAO,CAAC;AAE5F,wBAAsB,oCAAoC,CAAC,MAAM,EAAE;IACjE,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB,4BAIA;AAID,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,YAAY,GACb,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnB;AAID,wBAAsB,mBAAmB,CAAC,EACxC,IAAI,EACJ,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,GACd,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAM1D;AAED,UAAU,mCAAmC;IAC3C,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,mCAAmC;IAC3C,GAAG,EAAE,OAAO,CAAC;IACb,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,gBAAgB,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,mCAAmC,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAMvI;AAKD,wBAAsB,iCAAiC,CAAC,EACtD,KAAK,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,OAAO,EACP,OAAO,GACR,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IACV,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,gBAAgB,EAAE,WAAW,EAAE,CAAC;CACjC,CAAC,CAWD"}
package/dist/utils/ata.js CHANGED
@@ -1,8 +1,7 @@
1
- import { address, } from "@solana/kit";
2
1
  import { findAssociatedTokenPda, getCloseAccountInstruction, getCreateAssociatedTokenIdempotentInstruction, getSyncNativeInstruction, TOKEN_PROGRAM_ADDRESS, } from "@solana-program/token";
3
2
  import { findAssociatedTokenPda as findAssociatedToken2022Pda, getCreateAssociatedTokenIdempotentInstruction as getCreateAssociatedToken2022IdempotentInstruction, TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
4
3
  import { getTransferSolInstruction } from "@solana-program/system";
5
- export const NATIVE_MINT_ADDRESS = address("So11111111111111111111111111111111111111112");
4
+ export const NATIVE_MINT_ADDRESS = "So11111111111111111111111111111111111111112";
6
5
  export async function findAssociatedTokenPdaByTokenProgram(params) {
7
6
  const findAssociatedTokenPda = chooseFindAssociatedTokenPda(params.tokenProgram);
8
7
  const [ata] = await findAssociatedTokenPda(params);
@@ -2,11 +2,12 @@ export declare const BINS_PER_BIN_ARRAY: number;
2
2
  export declare const MAX_BIN_ARRAYS_PER_POSITION: number;
3
3
  export declare const MAX_BIN_ARRAYS_PER_SWAP: number;
4
4
  export declare const MAX_BIN_ARRAYS_PER_SYNC: number;
5
- export declare const FEE_PRECISION: number;
5
+ export declare const FEE_PRECISION: bigint;
6
6
  export declare const ONE_BPS_FEE_RATE: number;
7
- export declare const MAX_FEE_RATE: number;
7
+ export declare const MAX_FEE_RATE: bigint;
8
8
  export declare const MAX_PROTOCOL_SHARE: number;
9
9
  export declare const MAX_BASIS_POINTS: number;
10
+ export declare const DYNAMIC_FEE_DIVISOR: bigint;
10
11
  export declare const MAX_POSITIONS_PER_CLAIM = 3;
11
12
  export declare const MAX_ACCOUNTS_PER_RPC_BATCH = 100;
12
13
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB,QAAuC,CAAC;AACvE,eAAO,MAAM,2BAA2B,QAAgD,CAAC;AACzF,eAAO,MAAM,uBAAuB,QAA4C,CAAC;AACjF,eAAO,MAAM,uBAAuB,QAA4C,CAAC;AAEjF,eAAO,MAAM,aAAa,QAAkC,CAAC;AAC7D,eAAO,MAAM,gBAAgB,QAAqC,CAAC;AACnE,eAAO,MAAM,YAAY,QAAiC,CAAC;AAC3D,eAAO,MAAM,kBAAkB,QAAuC,CAAC;AACvE,eAAO,MAAM,gBAAgB,QAAqC,CAAC;AAEnE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAGzC,eAAO,MAAM,0BAA0B,MAAM,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,kBAAkB,QAA6C,CAAC;AAC7E,eAAO,MAAM,2BAA2B,QAAsD,CAAC;AAC/F,eAAO,MAAM,uBAAuB,QAAkD,CAAC;AACvF,eAAO,MAAM,uBAAuB,QAAkD,CAAC;AAEvF,eAAO,MAAM,aAAa,QAAwC,CAAC;AACnE,eAAO,MAAM,gBAAgB,QAA2C,CAAC;AACzE,eAAO,MAAM,YAAY,QAAuC,CAAC;AACjE,eAAO,MAAM,kBAAkB,QAA6C,CAAC;AAC7E,eAAO,MAAM,gBAAgB,QAA2C,CAAC;AACzE,eAAO,MAAM,mBAAmB,QAA8C,CAAC;AAE/E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAGzC,eAAO,MAAM,0BAA0B,MAAM,CAAC"}
@@ -1,20 +1,38 @@
1
1
  import IDL from "./../picon_dlmm.json";
2
2
  import { isUndefined } from "./type_guards";
3
- function getIdlConstant(name) {
3
+ // u64/u128 constants are exported as bigint, matching codama's own `large_number_types_as_bigints`
4
+ // convention for every other u64/u128 field in the SDK — anything smaller stays a plain number.
5
+ const BIGINT_TYPES = new Set(["u64", "u128", "i64", "i128"]);
6
+ function findIdlConstant(name) {
4
7
  const constant = IDL.constants.find(c => c.name === name);
5
8
  if (isUndefined(constant))
6
9
  throw new Error(`${name} constant not found in IDL`);
10
+ return constant;
11
+ }
12
+ function getIdlNumberConstant(name) {
13
+ const constant = findIdlConstant(name);
14
+ if (BIGINT_TYPES.has(constant.type)) {
15
+ throw new Error(`${name} is a ${constant.type} constant — use getIdlBigIntConstant instead`);
16
+ }
7
17
  return Number.parseInt(constant.value);
8
18
  }
9
- export const BINS_PER_BIN_ARRAY = getIdlConstant("BINS_PER_BIN_ARRAY");
10
- export const MAX_BIN_ARRAYS_PER_POSITION = getIdlConstant("MAX_BIN_ARRAYS_PER_POSITION");
11
- export const MAX_BIN_ARRAYS_PER_SWAP = getIdlConstant("MAX_BIN_ARRAYS_PER_SWAP");
12
- export const MAX_BIN_ARRAYS_PER_SYNC = getIdlConstant("MAX_BIN_ARRAYS_PER_SYNC");
13
- export const FEE_PRECISION = getIdlConstant("FEE_PRECISION");
14
- export const ONE_BPS_FEE_RATE = getIdlConstant("ONE_BPS_FEE_RATE");
15
- export const MAX_FEE_RATE = getIdlConstant("MAX_FEE_RATE");
16
- export const MAX_PROTOCOL_SHARE = getIdlConstant("MAX_PROTOCOL_SHARE");
17
- export const MAX_BASIS_POINTS = getIdlConstant("MAX_BASIS_POINTS");
19
+ function getIdlBigIntConstant(name) {
20
+ const constant = findIdlConstant(name);
21
+ if (!BIGINT_TYPES.has(constant.type)) {
22
+ throw new Error(`${name} is a ${constant.type} constant — use getIdlNumberConstant instead`);
23
+ }
24
+ return BigInt(constant.value);
25
+ }
26
+ export const BINS_PER_BIN_ARRAY = getIdlNumberConstant("BINS_PER_BIN_ARRAY");
27
+ export const MAX_BIN_ARRAYS_PER_POSITION = getIdlNumberConstant("MAX_BIN_ARRAYS_PER_POSITION");
28
+ export const MAX_BIN_ARRAYS_PER_SWAP = getIdlNumberConstant("MAX_BIN_ARRAYS_PER_SWAP");
29
+ export const MAX_BIN_ARRAYS_PER_SYNC = getIdlNumberConstant("MAX_BIN_ARRAYS_PER_SYNC");
30
+ export const FEE_PRECISION = getIdlBigIntConstant("FEE_PRECISION");
31
+ export const ONE_BPS_FEE_RATE = getIdlNumberConstant("ONE_BPS_FEE_RATE");
32
+ export const MAX_FEE_RATE = getIdlBigIntConstant("MAX_FEE_RATE");
33
+ export const MAX_PROTOCOL_SHARE = getIdlNumberConstant("MAX_PROTOCOL_SHARE");
34
+ export const MAX_BASIS_POINTS = getIdlNumberConstant("MAX_BASIS_POINTS");
35
+ export const DYNAMIC_FEE_DIVISOR = getIdlBigIntConstant("DYNAMIC_FEE_DIVISOR");
18
36
  export const MAX_POSITIONS_PER_CLAIM = 3;
19
37
  // Solana RPC's own hard cap on addresses per getMultipleAccounts request.
20
38
  export const MAX_ACCOUNTS_PER_RPC_BATCH = 100;
@@ -1,4 +1,4 @@
1
- import { type Mint } from "@solana-program/token-2022";
1
+ import type { Mint } from "@solana-program/token-2022";
2
2
  import type { TransferFee } from "../quote";
3
3
  export declare function resolveTransferFee(mint: Mint, epoch: bigint): TransferFee | undefined;
4
4
  //# sourceMappingURL=transfer_fee.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer_fee.d.ts","sourceRoot":"","sources":["../../src/utils/transfer_fee.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAkB,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAW5C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAerF"}
1
+ {"version":3,"file":"transfer_fee.d.ts","sourceRoot":"","sources":["../../src/utils/transfer_fee.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAa,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAW5C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAerF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picon-finance/dlmm-sdk",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Typescript SDK for interacting with the Picon DLMM protocol",
5
5
  "author": "Picon Finance",
6
6
  "license": "MIT",
@@ -2327,6 +2327,14 @@
2327
2327
  "type": "i32",
2328
2328
  "value": "100"
2329
2329
  },
2330
+ {
2331
+ "name": "DYNAMIC_FEE_DIVISOR",
2332
+ "docs": [
2333
+ "Divisor for `dynamic_fee_control`."
2334
+ ],
2335
+ "type": "u128",
2336
+ "value": "100000000000"
2337
+ },
2330
2338
  {
2331
2339
  "name": "FEE_PRECISION",
2332
2340
  "type": "u128",
@@ -1,4 +1,4 @@
1
- import { type Address, address } from "@solana/kit";
1
+ import { type Address } from "@solana/kit";
2
2
 
3
3
  // SDK codegen always targets the mainnet IDL (see package.json's `copy-idl`), so this is the
4
4
  // same value as `generated.PICON_DLMM_PROGRAM_ADDRESS` — exported under a clearer name here
@@ -7,4 +7,4 @@ export { PICON_DLMM_PROGRAM_ADDRESS as MAINNET_PROGRAM_ADDRESS } from "./generat
7
7
 
8
8
  // Not baked into codegen (the IDL's structure is identical across clusters — only the address
9
9
  // differs) — pass this as the `programAddress` argument on any SDK action to target devnet.
10
- export const DEVNET_PROGRAM_ADDRESS: Address = address("tDLMMKoxBt7UkZapYHsEgLGydmFvSQXh5mGzrRovoeM");
10
+ export const DEVNET_PROGRAM_ADDRESS = "tDLMMKoxBt7UkZapYHsEgLGydmFvSQXh5mGzrRovoeM" as Address;
package/src/utils/ata.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import {
2
- address,
3
2
  type Address,
4
3
  type Instruction,
5
4
  type TransactionSigner,
@@ -18,7 +17,7 @@ import {
18
17
  } from "@solana-program/token-2022";
19
18
  import { getTransferSolInstruction } from "@solana-program/system";
20
19
 
21
- export const NATIVE_MINT_ADDRESS = address("So11111111111111111111111111111111111111112");
20
+ export const NATIVE_MINT_ADDRESS = "So11111111111111111111111111111111111111112" as Address;
22
21
 
23
22
  export async function findAssociatedTokenPdaByTokenProgram(params: {
24
23
  owner: Address,
@@ -1,22 +1,43 @@
1
1
  import IDL from "./../picon_dlmm.json";
2
2
  import { isUndefined } from "./type_guards";
3
3
 
4
- function getIdlConstant(name: string): number {
4
+ // u64/u128 constants are exported as bigint, matching codama's own `large_number_types_as_bigints`
5
+ // convention for every other u64/u128 field in the SDK — anything smaller stays a plain number.
6
+ const BIGINT_TYPES = new Set(["u64", "u128", "i64", "i128"]);
7
+
8
+ function findIdlConstant(name: string) {
5
9
  const constant = IDL.constants.find(c => c.name === name);
6
10
  if (isUndefined(constant)) throw new Error(`${name} constant not found in IDL`);
11
+ return constant;
12
+ }
13
+
14
+ function getIdlNumberConstant(name: string): number {
15
+ const constant = findIdlConstant(name);
16
+ if (BIGINT_TYPES.has(constant.type)) {
17
+ throw new Error(`${name} is a ${constant.type} constant — use getIdlBigIntConstant instead`);
18
+ }
7
19
  return Number.parseInt(constant.value);
8
20
  }
9
21
 
10
- export const BINS_PER_BIN_ARRAY = getIdlConstant("BINS_PER_BIN_ARRAY");
11
- export const MAX_BIN_ARRAYS_PER_POSITION = getIdlConstant("MAX_BIN_ARRAYS_PER_POSITION");
12
- export const MAX_BIN_ARRAYS_PER_SWAP = getIdlConstant("MAX_BIN_ARRAYS_PER_SWAP");
13
- export const MAX_BIN_ARRAYS_PER_SYNC = getIdlConstant("MAX_BIN_ARRAYS_PER_SYNC");
22
+ function getIdlBigIntConstant(name: string): bigint {
23
+ const constant = findIdlConstant(name);
24
+ if (!BIGINT_TYPES.has(constant.type)) {
25
+ throw new Error(`${name} is a ${constant.type} constant — use getIdlNumberConstant instead`);
26
+ }
27
+ return BigInt(constant.value);
28
+ }
29
+
30
+ export const BINS_PER_BIN_ARRAY = getIdlNumberConstant("BINS_PER_BIN_ARRAY");
31
+ export const MAX_BIN_ARRAYS_PER_POSITION = getIdlNumberConstant("MAX_BIN_ARRAYS_PER_POSITION");
32
+ export const MAX_BIN_ARRAYS_PER_SWAP = getIdlNumberConstant("MAX_BIN_ARRAYS_PER_SWAP");
33
+ export const MAX_BIN_ARRAYS_PER_SYNC = getIdlNumberConstant("MAX_BIN_ARRAYS_PER_SYNC");
14
34
 
15
- export const FEE_PRECISION = getIdlConstant("FEE_PRECISION");
16
- export const ONE_BPS_FEE_RATE = getIdlConstant("ONE_BPS_FEE_RATE");
17
- export const MAX_FEE_RATE = getIdlConstant("MAX_FEE_RATE");
18
- export const MAX_PROTOCOL_SHARE = getIdlConstant("MAX_PROTOCOL_SHARE");
19
- export const MAX_BASIS_POINTS = getIdlConstant("MAX_BASIS_POINTS");
35
+ export const FEE_PRECISION = getIdlBigIntConstant("FEE_PRECISION");
36
+ export const ONE_BPS_FEE_RATE = getIdlNumberConstant("ONE_BPS_FEE_RATE");
37
+ export const MAX_FEE_RATE = getIdlBigIntConstant("MAX_FEE_RATE");
38
+ export const MAX_PROTOCOL_SHARE = getIdlNumberConstant("MAX_PROTOCOL_SHARE");
39
+ export const MAX_BASIS_POINTS = getIdlNumberConstant("MAX_BASIS_POINTS");
40
+ export const DYNAMIC_FEE_DIVISOR = getIdlBigIntConstant("DYNAMIC_FEE_DIVISOR");
20
41
 
21
42
  export const MAX_POSITIONS_PER_CLAIM = 3;
22
43
 
@@ -1,5 +1,5 @@
1
1
  import { unwrapOption } from "@solana/kit";
2
- import { type Mint, type Extension } from "@solana-program/token-2022";
2
+ import type { Mint, Extension } from "@solana-program/token-2022";
3
3
  import type { TransferFee } from "../quote";
4
4
 
5
5
  function isTransferFeeConfig(