@picon-finance/dlmm-sdk 1.1.0 → 1.3.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.
- package/README.md +107 -16
- package/dist/entities/admin_config.d.ts +23 -0
- package/dist/entities/admin_config.d.ts.map +1 -0
- package/dist/entities/admin_config.js +54 -0
- package/dist/entities/bin_array.d.ts +36 -0
- package/dist/entities/bin_array.d.ts.map +1 -0
- package/dist/entities/bin_array.js +62 -0
- package/dist/entities/dlmm_program.d.ts +50 -0
- package/dist/entities/dlmm_program.d.ts.map +1 -0
- package/dist/entities/dlmm_program.js +73 -0
- package/dist/entities/index.d.ts +7 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +6 -0
- package/dist/entities/pool.d.ts +71 -0
- package/dist/entities/pool.d.ts.map +1 -0
- package/dist/entities/pool.js +189 -0
- package/dist/entities/position.d.ts +51 -0
- package/dist/entities/position.d.ts.map +1 -0
- package/dist/entities/position.js +248 -0
- package/dist/entities/position_pool.d.ts +7 -0
- package/dist/entities/position_pool.d.ts.map +1 -0
- package/dist/entities/position_pool.js +30 -0
- package/dist/entities/types.d.ts +5 -0
- package/dist/entities/types.d.ts.map +1 -0
- package/dist/entities/types.js +0 -0
- package/dist/events.d.ts +9 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +48 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/picon_dlmm.json +8 -0
- package/dist/program_addresses.d.ts.map +1 -1
- package/dist/program_addresses.js +1 -7
- package/dist/utils/assert.d.ts +9 -0
- package/dist/utils/assert.d.ts.map +1 -0
- package/dist/utils/assert.js +10 -0
- package/dist/utils/ata.d.ts +1 -1
- package/dist/utils/ata.d.ts.map +1 -1
- package/dist/utils/ata.js +1 -2
- package/dist/utils/bin_location.d.ts +4 -0
- package/dist/utils/bin_location.d.ts.map +1 -1
- package/dist/utils/bin_location.js +0 -12
- package/dist/utils/chunk.d.ts +1 -0
- package/dist/utils/chunk.d.ts.map +1 -1
- package/dist/utils/chunk.js +4 -0
- package/dist/utils/constants.d.ts +3 -2
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +28 -10
- package/dist/utils/transfer_fee.d.ts +1 -1
- package/dist/utils/transfer_fee.d.ts.map +1 -1
- package/dist/utils/type_guards.d.ts +2 -0
- package/dist/utils/type_guards.d.ts.map +1 -1
- package/dist/utils/type_guards.js +7 -0
- package/package.json +1 -2
- package/src/entities/admin_config.ts +122 -0
- package/src/entities/bin_array.ts +156 -0
- package/src/entities/dlmm_program.ts +210 -0
- package/src/entities/index.ts +6 -0
- package/src/entities/pool.ts +392 -0
- package/src/entities/position.ts +444 -0
- package/src/entities/position_pool.ts +68 -0
- package/src/entities/types.ts +3 -0
- package/src/events.ts +77 -0
- package/src/index.ts +2 -1
- package/src/picon_dlmm.json +8 -0
- package/src/program_addresses.ts +2 -8
- package/src/utils/assert.ts +25 -0
- package/src/utils/ata.ts +1 -2
- package/src/utils/bin_location.ts +5 -12
- package/src/utils/chunk.ts +9 -0
- package/src/utils/constants.ts +31 -10
- package/src/utils/transfer_fee.ts +1 -1
- package/src/utils/type_guards.ts +12 -0
- package/dist/actions/accept_admin_authority.d.ts +0 -13
- package/dist/actions/accept_admin_authority.d.ts.map +0 -1
- package/dist/actions/accept_admin_authority.js +0 -7
- package/dist/actions/claim_fee.d.ts +0 -21
- package/dist/actions/claim_fee.d.ts.map +0 -1
- package/dist/actions/claim_fee.js +0 -40
- package/dist/actions/claim_multiple_fees.d.ts +0 -19
- package/dist/actions/claim_multiple_fees.d.ts.map +0 -1
- package/dist/actions/claim_multiple_fees.js +0 -81
- package/dist/actions/claim_protocol_fee.d.ts +0 -18
- package/dist/actions/claim_protocol_fee.d.ts.map +0 -1
- package/dist/actions/claim_protocol_fee.js +0 -33
- package/dist/actions/close_position.d.ts +0 -14
- package/dist/actions/close_position.d.ts.map +0 -1
- package/dist/actions/close_position.js +0 -14
- package/dist/actions/create_admin_config.d.ts +0 -15
- package/dist/actions/create_admin_config.d.ts.map +0 -1
- package/dist/actions/create_admin_config.js +0 -30
- package/dist/actions/create_bin_array.d.ts +0 -16
- package/dist/actions/create_bin_array.d.ts.map +0 -1
- package/dist/actions/create_bin_array.js +0 -10
- package/dist/actions/create_pool.d.ts +0 -21
- package/dist/actions/create_pool.d.ts.map +0 -1
- package/dist/actions/create_pool.js +0 -22
- package/dist/actions/delete_bin_array.d.ts +0 -16
- package/dist/actions/delete_bin_array.d.ts.map +0 -1
- package/dist/actions/delete_bin_array.js +0 -13
- package/dist/actions/deposit_by_weight.d.ts +0 -27
- package/dist/actions/deposit_by_weight.d.ts.map +0 -1
- package/dist/actions/deposit_by_weight.js +0 -52
- package/dist/actions/get_admin_config.d.ts +0 -4
- package/dist/actions/get_admin_config.d.ts.map +0 -1
- package/dist/actions/get_admin_config.js +0 -7
- package/dist/actions/get_bin_arrays_by_indices.d.ts +0 -5
- package/dist/actions/get_bin_arrays_by_indices.d.ts.map +0 -1
- package/dist/actions/get_bin_arrays_by_indices.js +0 -6
- package/dist/actions/get_pool.d.ts +0 -4
- package/dist/actions/get_pool.d.ts.map +0 -1
- package/dist/actions/get_pool.js +0 -5
- package/dist/actions/get_position.d.ts +0 -4
- package/dist/actions/get_position.d.ts.map +0 -1
- package/dist/actions/get_position.js +0 -5
- package/dist/actions/get_position_by_position_mint.d.ts +0 -4
- package/dist/actions/get_position_by_position_mint.d.ts.map +0 -1
- package/dist/actions/get_position_by_position_mint.js +0 -6
- package/dist/actions/get_positions_by_owner.d.ts +0 -5
- package/dist/actions/get_positions_by_owner.d.ts.map +0 -1
- package/dist/actions/get_positions_by_owner.js +0 -33
- package/dist/actions/get_positions_by_position_mints.d.ts +0 -5
- package/dist/actions/get_positions_by_position_mints.d.ts.map +0 -1
- package/dist/actions/get_positions_by_position_mints.js +0 -9
- package/dist/actions/helpers/build_swap_transaction_message.d.ts +0 -22
- package/dist/actions/helpers/build_swap_transaction_message.d.ts.map +0 -1
- package/dist/actions/helpers/build_swap_transaction_message.js +0 -50
- package/dist/actions/helpers/build_transaction_message.d.ts +0 -20
- package/dist/actions/helpers/build_transaction_message.d.ts.map +0 -1
- package/dist/actions/helpers/build_transaction_message.js +0 -5
- package/dist/actions/helpers/index.d.ts +0 -8
- package/dist/actions/helpers/index.d.ts.map +0 -1
- package/dist/actions/helpers/index.js +0 -7
- package/dist/actions/helpers/resolve_active_bin_and_mints.d.ts +0 -12
- package/dist/actions/helpers/resolve_active_bin_and_mints.d.ts.map +0 -1
- package/dist/actions/helpers/resolve_active_bin_and_mints.js +0 -13
- package/dist/actions/helpers/resolve_admin_config_address.d.ts +0 -3
- package/dist/actions/helpers/resolve_admin_config_address.d.ts.map +0 -1
- package/dist/actions/helpers/resolve_admin_config_address.js +0 -9
- package/dist/actions/helpers/resolve_mint_info.d.ts +0 -10
- package/dist/actions/helpers/resolve_mint_info.d.ts.map +0 -1
- package/dist/actions/helpers/resolve_mint_info.js +0 -20
- package/dist/actions/helpers/resolve_position_range.d.ts +0 -12
- package/dist/actions/helpers/resolve_position_range.d.ts.map +0 -1
- package/dist/actions/helpers/resolve_position_range.js +0 -12
- package/dist/actions/helpers/resolve_token_mints_and_programs.d.ts +0 -15
- package/dist/actions/helpers/resolve_token_mints_and_programs.d.ts.map +0 -1
- package/dist/actions/helpers/resolve_token_mints_and_programs.js +0 -29
- package/dist/actions/index.d.ts +0 -31
- package/dist/actions/index.d.ts.map +0 -1
- package/dist/actions/index.js +0 -28
- package/dist/actions/is_admin_config_active.d.ts +0 -4
- package/dist/actions/is_admin_config_active.d.ts.map +0 -1
- package/dist/actions/is_admin_config_active.js +0 -7
- package/dist/actions/on_event.d.ts +0 -11
- package/dist/actions/on_event.d.ts.map +0 -1
- package/dist/actions/on_event.js +0 -50
- package/dist/actions/open_position.d.ts +0 -17
- package/dist/actions/open_position.d.ts.map +0 -1
- package/dist/actions/open_position.js +0 -31
- package/dist/actions/quote.d.ts +0 -13
- package/dist/actions/quote.d.ts.map +0 -1
- package/dist/actions/quote.js +0 -43
- package/dist/actions/set_metadata_update_authority.d.ts +0 -14
- package/dist/actions/set_metadata_update_authority.d.ts.map +0 -1
- package/dist/actions/set_metadata_update_authority.js +0 -7
- package/dist/actions/set_pool_dynamic_fee_config.d.ts +0 -16
- package/dist/actions/set_pool_dynamic_fee_config.d.ts.map +0 -1
- package/dist/actions/set_pool_dynamic_fee_config.js +0 -7
- package/dist/actions/set_pool_protocol_share.d.ts +0 -15
- package/dist/actions/set_pool_protocol_share.d.ts.map +0 -1
- package/dist/actions/set_pool_protocol_share.js +0 -7
- package/dist/actions/swap.d.ts +0 -22
- package/dist/actions/swap.d.ts.map +0 -1
- package/dist/actions/swap.js +0 -19
- package/dist/actions/sync_pool.d.ts +0 -15
- package/dist/actions/sync_pool.d.ts.map +0 -1
- package/dist/actions/sync_pool.js +0 -26
- package/dist/actions/transfer_admin_authority.d.ts +0 -14
- package/dist/actions/transfer_admin_authority.d.ts.map +0 -1
- package/dist/actions/transfer_admin_authority.js +0 -7
- package/dist/actions/withdraw.d.ts +0 -22
- package/dist/actions/withdraw.d.ts.map +0 -1
- package/dist/actions/withdraw.js +0 -41
- package/dist/utils/admin_config.d.ts +0 -3
- package/dist/utils/admin_config.d.ts.map +0 -1
- package/dist/utils/admin_config.js +0 -4
- package/dist/utils/bin_array.d.ts +0 -8
- package/dist/utils/bin_array.d.ts.map +0 -1
- package/dist/utils/bin_array.js +0 -29
- package/dist/utils/compute_budget.d.ts +0 -11
- package/dist/utils/compute_budget.d.ts.map +0 -1
- package/dist/utils/compute_budget.js +0 -22
- package/src/actions/accept_admin_authority.ts +0 -17
- package/src/actions/claim_fee.ts +0 -84
- package/src/actions/claim_multiple_fees.ts +0 -123
- package/src/actions/claim_protocol_fee.ts +0 -68
- package/src/actions/close_position.ts +0 -21
- package/src/actions/create_admin_config.ts +0 -51
- package/src/actions/create_bin_array.ts +0 -30
- package/src/actions/create_pool.ts +0 -49
- package/src/actions/delete_bin_array.ts +0 -33
- package/src/actions/deposit_by_weight.ts +0 -107
- package/src/actions/get_admin_config.ts +0 -13
- package/src/actions/get_bin_arrays_by_indices.ts +0 -15
- package/src/actions/get_pool.ts +0 -8
- package/src/actions/get_position.ts +0 -8
- package/src/actions/get_position_by_position_mint.ts +0 -14
- package/src/actions/get_positions_by_owner.ts +0 -48
- package/src/actions/get_positions_by_position_mints.ts +0 -21
- package/src/actions/helpers/build_swap_transaction_message.ts +0 -86
- package/src/actions/helpers/build_transaction_message.ts +0 -45
- package/src/actions/helpers/index.ts +0 -7
- package/src/actions/helpers/resolve_active_bin_and_mints.ts +0 -21
- package/src/actions/helpers/resolve_admin_config_address.ts +0 -11
- package/src/actions/helpers/resolve_mint_info.ts +0 -36
- package/src/actions/helpers/resolve_position_range.ts +0 -21
- package/src/actions/helpers/resolve_token_mints_and_programs.ts +0 -56
- package/src/actions/index.ts +0 -34
- package/src/actions/is_admin_config_active.ts +0 -14
- package/src/actions/on_event.ts +0 -78
- package/src/actions/open_position.ts +0 -66
- package/src/actions/quote.ts +0 -70
- package/src/actions/set_metadata_update_authority.ts +0 -17
- package/src/actions/set_pool_dynamic_fee_config.ts +0 -17
- package/src/actions/set_pool_protocol_share.ts +0 -17
- package/src/actions/swap.ts +0 -56
- package/src/actions/sync_pool.ts +0 -35
- package/src/actions/transfer_admin_authority.ts +0 -17
- package/src/actions/withdraw.ts +0 -87
- package/src/utils/admin_config.ts +0 -6
- package/src/utils/bin_array.ts +0 -45
- package/src/utils/compute_budget.ts +0 -58
package/README.md
CHANGED
|
@@ -10,35 +10,126 @@ npm install @picon-finance/dlmm-sdk
|
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
The SDK is built around stateful classes (`DlmmProgram`, `Pool`, `Position`, `BinArray`) that cache on-chain state to avoid redundant RPC round trips. Every method returns unsigned `Instruction`s (never signs or sends) — build, sign, and send the transaction yourself with `@solana/kit`.
|
|
14
|
+
|
|
15
|
+
For low-level access — raw instruction builders, account decoders, PDA derivation — the Codama-generated client is exposed as `generated`, and used internally by the SDK itself.
|
|
14
16
|
|
|
15
17
|
```ts
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
+
import {
|
|
19
|
+
createSolanaRpc,
|
|
20
|
+
pipe,
|
|
21
|
+
createTransactionMessage,
|
|
22
|
+
setTransactionMessageFeePayerSigner,
|
|
23
|
+
appendTransactionMessageInstructions,
|
|
24
|
+
setTransactionMessageLifetimeUsingBlockhash,
|
|
25
|
+
signTransactionMessageWithSigners,
|
|
26
|
+
sendAndConfirmTransactionFactory,
|
|
27
|
+
createSolanaRpcSubscriptions,
|
|
28
|
+
} from "@solana/kit";
|
|
29
|
+
import { DlmmProgram, events, DistributionMode, DEVNET_PROGRAM_ADDRESS } from "@picon-finance/dlmm-sdk";
|
|
18
30
|
|
|
19
31
|
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
|
|
20
32
|
|
|
21
|
-
//
|
|
22
|
-
const
|
|
33
|
+
// Omit programAddress to target mainnet; pass DEVNET_PROGRAM_ADDRESS (or your own) otherwise.
|
|
34
|
+
const dlmmProgram = new DlmmProgram(rpc, DEVNET_PROGRAM_ADDRESS);
|
|
35
|
+
|
|
36
|
+
// Fetch and cache a pool's account data, mints, and token programs in one call.
|
|
37
|
+
const pool = await dlmmProgram.getPool(poolAddress);
|
|
23
38
|
|
|
24
|
-
// Quote, then build the matching swap
|
|
25
|
-
const { quoteOutput,
|
|
26
|
-
pool: poolAddress,
|
|
39
|
+
// Quote, then build the matching swap instructions against that same quote.
|
|
40
|
+
const { quoteOutput, instructions } = await pool.quoteAndSwap(userSigner, {
|
|
27
41
|
xToY: true,
|
|
28
42
|
amountIn: 1_000_000n,
|
|
29
43
|
slippageToleranceBps: 50,
|
|
30
44
|
});
|
|
31
|
-
const swapMessage = await buildSwap(userSigner);
|
|
32
45
|
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
46
|
+
// Every entity method returns Instruction[] (or a single Instruction) — build, sign and
|
|
47
|
+
// send the transaction however you normally do with @solana/kit.
|
|
48
|
+
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
|
|
49
|
+
const transactionMessage = pipe(
|
|
50
|
+
createTransactionMessage({ version: 0 }),
|
|
51
|
+
msg => setTransactionMessageFeePayerSigner(userSigner, msg),
|
|
52
|
+
msg => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, msg),
|
|
53
|
+
msg => appendTransactionMessageInstructions(instructions, msg),
|
|
38
54
|
);
|
|
55
|
+
const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);
|
|
56
|
+
// await sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions })(signedTransaction, { commitment: "confirmed" });
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Positions
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
// Open a position and deposit in one flow.
|
|
63
|
+
const openPositionIxs = await pool.openPosition(ownerSigner, positionMintSigner, {
|
|
64
|
+
lowerBinId: -10,
|
|
65
|
+
upperBinId: 10,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const position = await pool.getPositionByPositionMint(positionMintSigner.address);
|
|
69
|
+
|
|
70
|
+
// depositByWeight checks the deposit against the pool's cached activeBinId — if the pool was
|
|
71
|
+
// fetched a while ago (or opened before other activity could've moved the price), refresh it
|
|
72
|
+
// first so the deposit isn't built/checked against a stale active bin.
|
|
73
|
+
await pool.refresh();
|
|
74
|
+
|
|
75
|
+
const depositIxs = await position.depositByWeight(ownerSigner, {
|
|
76
|
+
amountX: 1_000_000n,
|
|
77
|
+
amountY: 1_000_000n,
|
|
78
|
+
lowerBinId: -10,
|
|
79
|
+
binWeights: Array(21).fill(1),
|
|
80
|
+
maxActiveBinSlippage: 5,
|
|
81
|
+
distributionMode: DistributionMode.Balanced,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// Later: claim fees, withdraw (partially or fully, by bps), close.
|
|
85
|
+
const claimFeeIxs = await position.claimFee(ownerSigner);
|
|
86
|
+
const withdrawIxs = await position.withdraw(ownerSigner, 5_000); // bps, out of 10_000 = 100%
|
|
87
|
+
const closeIx = await position.close(ownerSigner);
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`position.data` exposes the decoded on-chain `Position` account (`pool`, `positionMint`, `lowerBinId`, `upperBinId`, `feeStates`, ...) directly from the cached account — no extra fetch needed:
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
console.log(position.data.lowerBinId, position.data.upperBinId);
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Refresh a position's cached state after it changes on-chain (e.g. after a deposit lands):
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
await position.refresh();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Look up several positions at once, e.g. every position minted to a given owner across all their pools:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
// Map<poolAddress, positionMintAddress[]>
|
|
106
|
+
const mintsByPool = await dlmmProgram.getAllPositionMintsByOwner(ownerSigner.address);
|
|
107
|
+
|
|
108
|
+
for (const [poolAddress, positionMints] of mintsByPool) {
|
|
109
|
+
const ownerPool = await dlmmProgram.getPool(poolAddress);
|
|
110
|
+
const positions = await ownerPool.getAllPositionsByPositionMints(positionMints);
|
|
111
|
+
console.log(poolAddress, positions.map(p => p.address));
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Or fetch a single position directly if you already know its address:
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
const positionByAddress = await pool.getPosition(positionAddress);
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Events
|
|
122
|
+
|
|
123
|
+
Event decoding and subscriptions are a separate, opt-in feature under the `events` namespace — independent of `DlmmProgram`/`Pool`/`Position`/`BinArray`:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
const rpcSubscriptions = createSolanaRpcSubscriptions("wss://api.mainnet-beta.solana.com");
|
|
127
|
+
|
|
128
|
+
const unsubscribe = await events.onEvent(rpcSubscriptions, (event) => {
|
|
129
|
+
console.log(event.name, event.data);
|
|
130
|
+
}, { programAddress: DEVNET_PROGRAM_ADDRESS });
|
|
39
131
|
|
|
40
|
-
//
|
|
41
|
-
const signed = await signTransactionMessageWithSigners(swapMessage);
|
|
132
|
+
// unsubscribe() when done.
|
|
42
133
|
```
|
|
43
134
|
|
|
44
135
|
`MAINNET_PROGRAM_ADDRESS` and `DEVNET_PROGRAM_ADDRESS` are both exported for convenience; omitting `programAddress` defaults to mainnet.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createSolanaRpc, type Address, type Account, type Instruction, type TransactionSigner, type FetchAccountConfig } from "@solana/kit";
|
|
2
|
+
import { generated } from "..";
|
|
3
|
+
import { type ProgramConfig } from "./types";
|
|
4
|
+
export declare function resolveAdminConfigAddress(programAddress: Address): Promise<Address>;
|
|
5
|
+
export declare function createAdminConfig({ deployer, authority, metadataUpdateAuthority, }: {
|
|
6
|
+
deployer: TransactionSigner;
|
|
7
|
+
authority: Address;
|
|
8
|
+
metadataUpdateAuthority?: Address;
|
|
9
|
+
}, config: ProgramConfig): Promise<Instruction>;
|
|
10
|
+
export declare function transferAdminAuthority({ authority, newAuthority, }: {
|
|
11
|
+
authority: TransactionSigner;
|
|
12
|
+
newAuthority: Address;
|
|
13
|
+
}, config: ProgramConfig): Promise<Instruction>;
|
|
14
|
+
export declare function acceptAdminAuthority({ pendingAuthority }: {
|
|
15
|
+
pendingAuthority: TransactionSigner;
|
|
16
|
+
}, config: ProgramConfig): Promise<Instruction>;
|
|
17
|
+
export declare function setMetadataUpdateAuthority({ authority, metadataUpdateAuthority, }: {
|
|
18
|
+
authority: TransactionSigner;
|
|
19
|
+
metadataUpdateAuthority: Address;
|
|
20
|
+
}, config: ProgramConfig): Promise<Instruction>;
|
|
21
|
+
export declare function getAdminConfig(rpc: ReturnType<typeof createSolanaRpc>, config: ProgramConfig & FetchAccountConfig): Promise<Account<generated.AdminConfig>>;
|
|
22
|
+
export declare function isAdminConfigActive(rpc: ReturnType<typeof createSolanaRpc>, config: ProgramConfig & FetchAccountConfig): Promise<boolean>;
|
|
23
|
+
//# sourceMappingURL=admin_config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin_config.d.ts","sourceRoot":"","sources":["../../src/entities/admin_config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAGf,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C,wBAAsB,yBAAyB,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzF;AAED,wBAAsB,iBAAiB,CACrC,EACE,QAAQ,EACR,SAAS,EACT,uBAAuB,GACxB,EAAE;IACD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,EACD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,WAAW,CAAC,CAatB;AAED,wBAAsB,sBAAsB,CAC1C,EACE,SAAS,EACT,YAAY,GACb,EAAE;IACD,SAAS,EAAE,iBAAiB,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;CACvB,EACD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,oBAAoB,CACxC,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,EAAE,iBAAiB,CAAA;CAAE,EAC7D,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,0BAA0B,CAC9C,EACE,SAAS,EACT,uBAAuB,GACxB,EAAE;IACD,SAAS,EAAE,iBAAiB,CAAC;IAC7B,uBAAuB,EAAE,OAAO,CAAC;CAClC,EACD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EACvC,MAAM,EAAE,aAAa,GAAG,kBAAkB,GACzC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAGzC;AAMD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EACvC,MAAM,EAAE,aAAa,GAAG,kBAAkB,GACzC,OAAO,CAAC,OAAO,CAAC,CAIlB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { getAddressEncoder, getProgramDerivedAddress, } from "@solana/kit";
|
|
2
|
+
import { SYSTEM_PROGRAM_ADDRESS } from "@solana-program/system";
|
|
3
|
+
import { generated } from "..";
|
|
4
|
+
import { findAdminConfigPda } from "../generated";
|
|
5
|
+
const LOADER_V3_PROGRAM_ADDRESS = "BPFLoaderUpgradeab1e11111111111111111111111";
|
|
6
|
+
async function findProgramDataAddress(programAddress) {
|
|
7
|
+
const [programData] = await getProgramDerivedAddress({
|
|
8
|
+
programAddress: LOADER_V3_PROGRAM_ADDRESS,
|
|
9
|
+
seeds: [getAddressEncoder().encode(programAddress)],
|
|
10
|
+
});
|
|
11
|
+
return programData;
|
|
12
|
+
}
|
|
13
|
+
export async function resolveAdminConfigAddress(programAddress) {
|
|
14
|
+
const [adminConfig] = await findAdminConfigPda({ programAddress });
|
|
15
|
+
return adminConfig;
|
|
16
|
+
}
|
|
17
|
+
export async function createAdminConfig({ deployer, authority, metadataUpdateAuthority, }, config) {
|
|
18
|
+
const [adminConfig, programData] = await Promise.all([
|
|
19
|
+
resolveAdminConfigAddress(config.programAddress),
|
|
20
|
+
findProgramDataAddress(config.programAddress),
|
|
21
|
+
]);
|
|
22
|
+
return await generated.getCreateAdminConfigInstructionAsync({
|
|
23
|
+
deployer,
|
|
24
|
+
authority,
|
|
25
|
+
metadataUpdateAuthority: metadataUpdateAuthority ?? null,
|
|
26
|
+
adminConfig,
|
|
27
|
+
program: config.programAddress,
|
|
28
|
+
programData,
|
|
29
|
+
}, config);
|
|
30
|
+
}
|
|
31
|
+
export async function transferAdminAuthority({ authority, newAuthority, }, config) {
|
|
32
|
+
const adminConfig = await resolveAdminConfigAddress(config.programAddress);
|
|
33
|
+
return await generated.getTransferAdminAuthorityInstructionAsync({ authority, newAuthority, adminConfig }, config);
|
|
34
|
+
}
|
|
35
|
+
export async function acceptAdminAuthority({ pendingAuthority }, config) {
|
|
36
|
+
const adminConfig = await resolveAdminConfigAddress(config.programAddress);
|
|
37
|
+
return await generated.getAcceptAdminAuthorityInstructionAsync({ pendingAuthority, adminConfig }, config);
|
|
38
|
+
}
|
|
39
|
+
export async function setMetadataUpdateAuthority({ authority, metadataUpdateAuthority, }, config) {
|
|
40
|
+
const adminConfig = await resolveAdminConfigAddress(config.programAddress);
|
|
41
|
+
return await generated.getSetMetadataUpdateAuthorityInstructionAsync({ authority, metadataUpdateAuthority, adminConfig }, config);
|
|
42
|
+
}
|
|
43
|
+
export async function getAdminConfig(rpc, config) {
|
|
44
|
+
const adminConfig = await resolveAdminConfigAddress(config.programAddress);
|
|
45
|
+
return await generated.fetchAdminConfig(rpc, adminConfig, config);
|
|
46
|
+
}
|
|
47
|
+
function isActive(adminConfig) {
|
|
48
|
+
return adminConfig.authority !== SYSTEM_PROGRAM_ADDRESS;
|
|
49
|
+
}
|
|
50
|
+
export async function isAdminConfigActive(rpc, config) {
|
|
51
|
+
const adminConfig = await resolveAdminConfigAddress(config.programAddress);
|
|
52
|
+
const maybeAdminConfig = await generated.fetchMaybeAdminConfig(rpc, adminConfig, config);
|
|
53
|
+
return maybeAdminConfig.exists && isActive(maybeAdminConfig.data);
|
|
54
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createSolanaRpc, type Address, type Account, type Instruction, type TransactionSigner, type FetchAccountConfig, type FetchAccountsConfig, type MaybeEncodedAccount } from "@solana/kit";
|
|
2
|
+
import { generated } from "..";
|
|
3
|
+
import { type ProgramConfig } from "./types";
|
|
4
|
+
export declare class BinArray {
|
|
5
|
+
#private;
|
|
6
|
+
private constructor();
|
|
7
|
+
get address(): Address<string>;
|
|
8
|
+
get data(): generated.BinArray;
|
|
9
|
+
refresh(data: Account<generated.BinArray>): Promise<void>;
|
|
10
|
+
refresh(config?: FetchAccountConfig): Promise<void>;
|
|
11
|
+
static loadAll(rpc: ReturnType<typeof createSolanaRpc>, pool: Address, indices: number[], programAddress: Address, config?: FetchAccountsConfig): Promise<BinArray[]>;
|
|
12
|
+
delete(authority: TransactionSigner): Promise<Instruction>;
|
|
13
|
+
}
|
|
14
|
+
export declare function createBinArray({ payer, pool, index, idempotent, }: {
|
|
15
|
+
payer: TransactionSigner;
|
|
16
|
+
pool: Address;
|
|
17
|
+
index: number;
|
|
18
|
+
idempotent?: boolean;
|
|
19
|
+
}, config: ProgramConfig): Promise<Instruction>;
|
|
20
|
+
export declare function createAllBinArrays({ payer, pool, indices, idempotent, }: {
|
|
21
|
+
payer: TransactionSigner;
|
|
22
|
+
pool: Address;
|
|
23
|
+
indices: number[];
|
|
24
|
+
idempotent?: boolean;
|
|
25
|
+
}, config: ProgramConfig): Promise<Instruction[]>;
|
|
26
|
+
export declare function findBinArrayAddress(seeds: {
|
|
27
|
+
pool: Address;
|
|
28
|
+
index: number;
|
|
29
|
+
}, config: ProgramConfig): Promise<Address>;
|
|
30
|
+
export declare function findAllBinArrayAddresses({ pool, indices }: {
|
|
31
|
+
pool: Address;
|
|
32
|
+
indices: number[];
|
|
33
|
+
}, config: ProgramConfig): Promise<Address[]>;
|
|
34
|
+
export declare function fetchAllBinArraysChunked(rpc: ReturnType<typeof createSolanaRpc>, addresses: Address[], config?: FetchAccountsConfig): Promise<Account<generated.BinArray>[]>;
|
|
35
|
+
export declare function decodeAllBinArrays(maybeAccounts: MaybeEncodedAccount<string>[]): Account<generated.BinArray>[];
|
|
36
|
+
//# sourceMappingURL=bin_array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin_array.d.ts","sourceRoot":"","sources":["../../src/entities/bin_array.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEf,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAK/B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,qBAAa,QAAQ;;IAKnB,OAAO,eAQN;IAED,IAAW,OAAO,oBAAoC;IACtD,IAAW,IAAI,uBAAiC;IAEnC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAQjE,OAAoB,OAAO,CACzB,GAAG,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EACvC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,OAAO,EACvB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAOrB;IAEY,MAAM,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAUtE;CACF;AAED,wBAAsB,cAAc,CAClC,EACE,KAAK,EACL,IAAI,EACJ,KAAK,EACL,UAAiB,GAClB,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,EACD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,WAAW,CAAC,CAStB;AAED,wBAAsB,kBAAkB,CACtC,EACE,KAAK,EACL,IAAI,EACJ,OAAO,EACP,UAAiB,GAClB,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,EACD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC,CAKxB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACvC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,EACvD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,EAAE,CAAC,CAIpB;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EACvC,SAAS,EAAE,OAAO,EAAE,EACpB,MAAM,CAAC,EAAE,mBAAmB,0CAO7B;AAID,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAC3C,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAG/B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { decodeAccount, assertAccountsExist, } from "@solana/kit";
|
|
2
|
+
import { generated } from "..";
|
|
3
|
+
import { isAccount } from "../utils/type_guards";
|
|
4
|
+
import { fetchInChunks } from "../utils/chunk";
|
|
5
|
+
import { MAX_ACCOUNTS_PER_RPC_BATCH } from "../utils/constants";
|
|
6
|
+
import { resolveAdminConfigAddress } from "./admin_config";
|
|
7
|
+
export class BinArray {
|
|
8
|
+
#rpc;
|
|
9
|
+
#account;
|
|
10
|
+
#programAddress;
|
|
11
|
+
constructor(rpc, account, programAddress) {
|
|
12
|
+
this.#rpc = rpc;
|
|
13
|
+
this.#account = account;
|
|
14
|
+
this.#programAddress = programAddress;
|
|
15
|
+
}
|
|
16
|
+
get address() { return this.#account.address; }
|
|
17
|
+
get data() { return this.#account.data; }
|
|
18
|
+
async refresh(arg) {
|
|
19
|
+
if (!isAccount(arg)) {
|
|
20
|
+
arg = await generated.fetchBinArray(this.#rpc, this.address, arg);
|
|
21
|
+
}
|
|
22
|
+
this.#account = arg;
|
|
23
|
+
}
|
|
24
|
+
static async loadAll(rpc, pool, indices, programAddress, config) {
|
|
25
|
+
const addresses = await findAllBinArrayAddresses({ indices, pool }, { programAddress });
|
|
26
|
+
const accounts = await fetchAllBinArraysChunked(rpc, addresses, config);
|
|
27
|
+
return accounts.map(account => new BinArray(rpc, account, programAddress));
|
|
28
|
+
}
|
|
29
|
+
async delete(authority) {
|
|
30
|
+
const adminConfig = await resolveAdminConfigAddress(this.#programAddress);
|
|
31
|
+
return await generated.getDeleteBinArrayInstructionAsync({
|
|
32
|
+
authority,
|
|
33
|
+
pool: this.data.pool,
|
|
34
|
+
index: this.data.index,
|
|
35
|
+
receiver: this.data.payer,
|
|
36
|
+
binArray: this.address,
|
|
37
|
+
adminConfig,
|
|
38
|
+
}, { programAddress: this.#programAddress });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function createBinArray({ payer, pool, index, idempotent = true, }, config) {
|
|
42
|
+
const binArray = await findBinArrayAddress({ pool, index }, config);
|
|
43
|
+
return await generated.getCreateBinArrayInstructionAsync({ payer, pool, index, idempotent, binArray }, config);
|
|
44
|
+
}
|
|
45
|
+
export async function createAllBinArrays({ payer, pool, indices, idempotent = true, }, config) {
|
|
46
|
+
return await Promise.all(indices.map(index => createBinArray({ payer, pool, index, idempotent }, config)));
|
|
47
|
+
}
|
|
48
|
+
export async function findBinArrayAddress(seeds, config) {
|
|
49
|
+
const [address] = await generated.findBinArrayPda(seeds, config);
|
|
50
|
+
return address;
|
|
51
|
+
}
|
|
52
|
+
export async function findAllBinArrayAddresses({ pool, indices }, config) {
|
|
53
|
+
return await Promise.all(indices.map(index => findBinArrayAddress({ index, pool }, config)));
|
|
54
|
+
}
|
|
55
|
+
export async function fetchAllBinArraysChunked(rpc, addresses, config) {
|
|
56
|
+
return await fetchInChunks(addresses, MAX_ACCOUNTS_PER_RPC_BATCH, chunkAddresses => generated.fetchAllBinArray(rpc, chunkAddresses, config));
|
|
57
|
+
}
|
|
58
|
+
const binArrayDecoder = generated.getBinArrayDecoder();
|
|
59
|
+
export function decodeAllBinArrays(maybeAccounts) {
|
|
60
|
+
assertAccountsExist(maybeAccounts);
|
|
61
|
+
return maybeAccounts.map(a => decodeAccount(a, binArrayDecoder));
|
|
62
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createSolanaRpc, type Address, type Account, type Instruction, type TransactionSigner, type FetchAccountConfig, type FetchAccountsConfig } from "@solana/kit";
|
|
2
|
+
import type { QuoteOutput } from "../quote";
|
|
3
|
+
import { Pool } from "./pool";
|
|
4
|
+
import { generated } from "..";
|
|
5
|
+
export declare class DlmmProgram {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(rpc: ReturnType<typeof createSolanaRpc>, programAddress?: Address);
|
|
8
|
+
get rpc(): import("@solana/rpc-spec").Rpc<(import("@solana/rpc-api").GetAccountInfoApi & import("@solana/rpc-api").GetBalanceApi & import("@solana/rpc-api").GetBlockApi & import("@solana/rpc-api").GetBlockCommitmentApi & import("@solana/rpc-api").GetBlockHeightApi & import("@solana/rpc-api").GetBlockProductionApi & import("@solana/rpc-api").GetBlocksApi & import("@solana/rpc-api").GetBlocksWithLimitApi & import("@solana/rpc-api").GetBlockTimeApi & import("@solana/rpc-api").GetClusterNodesApi & import("@solana/rpc-api").GetEpochInfoApi & import("@solana/rpc-api").GetEpochScheduleApi & import("@solana/rpc-api").GetFeeForMessageApi & import("@solana/rpc-api").GetFirstAvailableBlockApi & import("@solana/rpc-api").GetGenesisHashApi & import("@solana/rpc-api").GetHealthApi & import("@solana/rpc-api").GetHighestSnapshotSlotApi & import("@solana/rpc-api").GetIdentityApi & import("@solana/rpc-api").GetInflationGovernorApi & import("@solana/rpc-api").GetInflationRateApi & import("@solana/rpc-api").GetInflationRewardApi & import("@solana/rpc-api").GetLargestAccountsApi & import("@solana/rpc-api").GetLatestBlockhashApi & import("@solana/rpc-api").GetLeaderScheduleApi & import("@solana/rpc-api").GetMaxRetransmitSlotApi & import("@solana/rpc-api").GetMaxShredInsertSlotApi & import("@solana/rpc-api").GetMinimumBalanceForRentExemptionApi & import("@solana/rpc-api").GetMultipleAccountsApi & import("@solana/rpc-api").GetProgramAccountsApi & import("@solana/rpc-api").GetRecentPerformanceSamplesApi & import("@solana/rpc-api").GetRecentPrioritizationFeesApi & import("@solana/rpc-api").GetSignaturesForAddressApi & import("@solana/rpc-api").GetSignatureStatusesApi & import("@solana/rpc-api").GetSlotApi & import("@solana/rpc-api").GetSlotLeaderApi & import("@solana/rpc-api").GetSlotLeadersApi & import("@solana/rpc-api").GetStakeMinimumDelegationApi & import("@solana/rpc-api").GetSupplyApi & import("@solana/rpc-api").GetTokenAccountBalanceApi & import("@solana/rpc-api").GetTokenAccountsByDelegateApi & import("@solana/rpc-api").GetTokenAccountsByOwnerApi & import("@solana/rpc-api").GetTokenLargestAccountsApi & import("@solana/rpc-api").GetTokenSupplyApi & import("@solana/rpc-api").GetTransactionApi & import("@solana/rpc-api").GetTransactionCountApi & import("@solana/rpc-api").GetVersionApi & import("@solana/rpc-api").GetVoteAccountsApi & import("@solana/rpc-api").IsBlockhashValidApi & import("@solana/rpc-api").MinimumLedgerSlotApi & import("@solana/rpc-api").SendTransactionApi & import("@solana/rpc-api").SimulateTransactionApi) | (import("@solana/rpc-api").RequestAirdropApi & import("@solana/rpc-api").GetAccountInfoApi & import("@solana/rpc-api").GetBalanceApi & import("@solana/rpc-api").GetBlockApi & import("@solana/rpc-api").GetBlockCommitmentApi & import("@solana/rpc-api").GetBlockHeightApi & import("@solana/rpc-api").GetBlockProductionApi & import("@solana/rpc-api").GetBlocksApi & import("@solana/rpc-api").GetBlocksWithLimitApi & import("@solana/rpc-api").GetBlockTimeApi & import("@solana/rpc-api").GetClusterNodesApi & import("@solana/rpc-api").GetEpochInfoApi & import("@solana/rpc-api").GetEpochScheduleApi & import("@solana/rpc-api").GetFeeForMessageApi & import("@solana/rpc-api").GetFirstAvailableBlockApi & import("@solana/rpc-api").GetGenesisHashApi & import("@solana/rpc-api").GetHealthApi & import("@solana/rpc-api").GetHighestSnapshotSlotApi & import("@solana/rpc-api").GetIdentityApi & import("@solana/rpc-api").GetInflationGovernorApi & import("@solana/rpc-api").GetInflationRateApi & import("@solana/rpc-api").GetInflationRewardApi & import("@solana/rpc-api").GetLargestAccountsApi & import("@solana/rpc-api").GetLatestBlockhashApi & import("@solana/rpc-api").GetLeaderScheduleApi & import("@solana/rpc-api").GetMaxRetransmitSlotApi & import("@solana/rpc-api").GetMaxShredInsertSlotApi & import("@solana/rpc-api").GetMinimumBalanceForRentExemptionApi & import("@solana/rpc-api").GetMultipleAccountsApi & import("@solana/rpc-api").GetProgramAccountsApi & import("@solana/rpc-api").GetRecentPerformanceSamplesApi & import("@solana/rpc-api").GetRecentPrioritizationFeesApi & import("@solana/rpc-api").GetSignaturesForAddressApi & import("@solana/rpc-api").GetSignatureStatusesApi & import("@solana/rpc-api").GetSlotApi & import("@solana/rpc-api").GetSlotLeaderApi & import("@solana/rpc-api").GetSlotLeadersApi & import("@solana/rpc-api").GetStakeMinimumDelegationApi & import("@solana/rpc-api").GetSupplyApi & import("@solana/rpc-api").GetTokenAccountBalanceApi & import("@solana/rpc-api").GetTokenAccountsByDelegateApi & import("@solana/rpc-api").GetTokenAccountsByOwnerApi & import("@solana/rpc-api").GetTokenLargestAccountsApi & import("@solana/rpc-api").GetTokenSupplyApi & import("@solana/rpc-api").GetTransactionApi & import("@solana/rpc-api").GetTransactionCountApi & import("@solana/rpc-api").GetVersionApi & import("@solana/rpc-api").GetVoteAccountsApi & import("@solana/rpc-api").IsBlockhashValidApi & import("@solana/rpc-api").MinimumLedgerSlotApi & import("@solana/rpc-api").SendTransactionApi & import("@solana/rpc-api").SimulateTransactionApi)> | import("@solana/rpc").RpcDevnet<(import("@solana/rpc-api").GetAccountInfoApi & import("@solana/rpc-api").GetBalanceApi & import("@solana/rpc-api").GetBlockApi & import("@solana/rpc-api").GetBlockCommitmentApi & import("@solana/rpc-api").GetBlockHeightApi & import("@solana/rpc-api").GetBlockProductionApi & import("@solana/rpc-api").GetBlocksApi & import("@solana/rpc-api").GetBlocksWithLimitApi & import("@solana/rpc-api").GetBlockTimeApi & import("@solana/rpc-api").GetClusterNodesApi & import("@solana/rpc-api").GetEpochInfoApi & import("@solana/rpc-api").GetEpochScheduleApi & import("@solana/rpc-api").GetFeeForMessageApi & import("@solana/rpc-api").GetFirstAvailableBlockApi & import("@solana/rpc-api").GetGenesisHashApi & import("@solana/rpc-api").GetHealthApi & import("@solana/rpc-api").GetHighestSnapshotSlotApi & import("@solana/rpc-api").GetIdentityApi & import("@solana/rpc-api").GetInflationGovernorApi & import("@solana/rpc-api").GetInflationRateApi & import("@solana/rpc-api").GetInflationRewardApi & import("@solana/rpc-api").GetLargestAccountsApi & import("@solana/rpc-api").GetLatestBlockhashApi & import("@solana/rpc-api").GetLeaderScheduleApi & import("@solana/rpc-api").GetMaxRetransmitSlotApi & import("@solana/rpc-api").GetMaxShredInsertSlotApi & import("@solana/rpc-api").GetMinimumBalanceForRentExemptionApi & import("@solana/rpc-api").GetMultipleAccountsApi & import("@solana/rpc-api").GetProgramAccountsApi & import("@solana/rpc-api").GetRecentPerformanceSamplesApi & import("@solana/rpc-api").GetRecentPrioritizationFeesApi & import("@solana/rpc-api").GetSignaturesForAddressApi & import("@solana/rpc-api").GetSignatureStatusesApi & import("@solana/rpc-api").GetSlotApi & import("@solana/rpc-api").GetSlotLeaderApi & import("@solana/rpc-api").GetSlotLeadersApi & import("@solana/rpc-api").GetStakeMinimumDelegationApi & import("@solana/rpc-api").GetSupplyApi & import("@solana/rpc-api").GetTokenAccountBalanceApi & import("@solana/rpc-api").GetTokenAccountsByDelegateApi & import("@solana/rpc-api").GetTokenAccountsByOwnerApi & import("@solana/rpc-api").GetTokenLargestAccountsApi & import("@solana/rpc-api").GetTokenSupplyApi & import("@solana/rpc-api").GetTransactionApi & import("@solana/rpc-api").GetTransactionCountApi & import("@solana/rpc-api").GetVersionApi & import("@solana/rpc-api").GetVoteAccountsApi & import("@solana/rpc-api").IsBlockhashValidApi & import("@solana/rpc-api").MinimumLedgerSlotApi & import("@solana/rpc-api").SendTransactionApi & import("@solana/rpc-api").SimulateTransactionApi) | (import("@solana/rpc-api").RequestAirdropApi & import("@solana/rpc-api").GetAccountInfoApi & import("@solana/rpc-api").GetBalanceApi & import("@solana/rpc-api").GetBlockApi & import("@solana/rpc-api").GetBlockCommitmentApi & import("@solana/rpc-api").GetBlockHeightApi & import("@solana/rpc-api").GetBlockProductionApi & import("@solana/rpc-api").GetBlocksApi & import("@solana/rpc-api").GetBlocksWithLimitApi & import("@solana/rpc-api").GetBlockTimeApi & import("@solana/rpc-api").GetClusterNodesApi & import("@solana/rpc-api").GetEpochInfoApi & import("@solana/rpc-api").GetEpochScheduleApi & import("@solana/rpc-api").GetFeeForMessageApi & import("@solana/rpc-api").GetFirstAvailableBlockApi & import("@solana/rpc-api").GetGenesisHashApi & import("@solana/rpc-api").GetHealthApi & import("@solana/rpc-api").GetHighestSnapshotSlotApi & import("@solana/rpc-api").GetIdentityApi & import("@solana/rpc-api").GetInflationGovernorApi & import("@solana/rpc-api").GetInflationRateApi & import("@solana/rpc-api").GetInflationRewardApi & import("@solana/rpc-api").GetLargestAccountsApi & import("@solana/rpc-api").GetLatestBlockhashApi & import("@solana/rpc-api").GetLeaderScheduleApi & import("@solana/rpc-api").GetMaxRetransmitSlotApi & import("@solana/rpc-api").GetMaxShredInsertSlotApi & import("@solana/rpc-api").GetMinimumBalanceForRentExemptionApi & import("@solana/rpc-api").GetMultipleAccountsApi & import("@solana/rpc-api").GetProgramAccountsApi & import("@solana/rpc-api").GetRecentPerformanceSamplesApi & import("@solana/rpc-api").GetRecentPrioritizationFeesApi & import("@solana/rpc-api").GetSignaturesForAddressApi & import("@solana/rpc-api").GetSignatureStatusesApi & import("@solana/rpc-api").GetSlotApi & import("@solana/rpc-api").GetSlotLeaderApi & import("@solana/rpc-api").GetSlotLeadersApi & import("@solana/rpc-api").GetStakeMinimumDelegationApi & import("@solana/rpc-api").GetSupplyApi & import("@solana/rpc-api").GetTokenAccountBalanceApi & import("@solana/rpc-api").GetTokenAccountsByDelegateApi & import("@solana/rpc-api").GetTokenAccountsByOwnerApi & import("@solana/rpc-api").GetTokenLargestAccountsApi & import("@solana/rpc-api").GetTokenSupplyApi & import("@solana/rpc-api").GetTransactionApi & import("@solana/rpc-api").GetTransactionCountApi & import("@solana/rpc-api").GetVersionApi & import("@solana/rpc-api").GetVoteAccountsApi & import("@solana/rpc-api").IsBlockhashValidApi & import("@solana/rpc-api").MinimumLedgerSlotApi & import("@solana/rpc-api").SendTransactionApi & import("@solana/rpc-api").SimulateTransactionApi)> | import("@solana/rpc").RpcMainnet<(import("@solana/rpc-api").GetAccountInfoApi & import("@solana/rpc-api").GetBalanceApi & import("@solana/rpc-api").GetBlockApi & import("@solana/rpc-api").GetBlockCommitmentApi & import("@solana/rpc-api").GetBlockHeightApi & import("@solana/rpc-api").GetBlockProductionApi & import("@solana/rpc-api").GetBlocksApi & import("@solana/rpc-api").GetBlocksWithLimitApi & import("@solana/rpc-api").GetBlockTimeApi & import("@solana/rpc-api").GetClusterNodesApi & import("@solana/rpc-api").GetEpochInfoApi & import("@solana/rpc-api").GetEpochScheduleApi & import("@solana/rpc-api").GetFeeForMessageApi & import("@solana/rpc-api").GetFirstAvailableBlockApi & import("@solana/rpc-api").GetGenesisHashApi & import("@solana/rpc-api").GetHealthApi & import("@solana/rpc-api").GetHighestSnapshotSlotApi & import("@solana/rpc-api").GetIdentityApi & import("@solana/rpc-api").GetInflationGovernorApi & import("@solana/rpc-api").GetInflationRateApi & import("@solana/rpc-api").GetInflationRewardApi & import("@solana/rpc-api").GetLargestAccountsApi & import("@solana/rpc-api").GetLatestBlockhashApi & import("@solana/rpc-api").GetLeaderScheduleApi & import("@solana/rpc-api").GetMaxRetransmitSlotApi & import("@solana/rpc-api").GetMaxShredInsertSlotApi & import("@solana/rpc-api").GetMinimumBalanceForRentExemptionApi & import("@solana/rpc-api").GetMultipleAccountsApi & import("@solana/rpc-api").GetProgramAccountsApi & import("@solana/rpc-api").GetRecentPerformanceSamplesApi & import("@solana/rpc-api").GetRecentPrioritizationFeesApi & import("@solana/rpc-api").GetSignaturesForAddressApi & import("@solana/rpc-api").GetSignatureStatusesApi & import("@solana/rpc-api").GetSlotApi & import("@solana/rpc-api").GetSlotLeaderApi & import("@solana/rpc-api").GetSlotLeadersApi & import("@solana/rpc-api").GetStakeMinimumDelegationApi & import("@solana/rpc-api").GetSupplyApi & import("@solana/rpc-api").GetTokenAccountBalanceApi & import("@solana/rpc-api").GetTokenAccountsByDelegateApi & import("@solana/rpc-api").GetTokenAccountsByOwnerApi & import("@solana/rpc-api").GetTokenLargestAccountsApi & import("@solana/rpc-api").GetTokenSupplyApi & import("@solana/rpc-api").GetTransactionApi & import("@solana/rpc-api").GetTransactionCountApi & import("@solana/rpc-api").GetVersionApi & import("@solana/rpc-api").GetVoteAccountsApi & import("@solana/rpc-api").IsBlockhashValidApi & import("@solana/rpc-api").MinimumLedgerSlotApi & import("@solana/rpc-api").SendTransactionApi & import("@solana/rpc-api").SimulateTransactionApi) | (import("@solana/rpc-api").RequestAirdropApi & import("@solana/rpc-api").GetAccountInfoApi & import("@solana/rpc-api").GetBalanceApi & import("@solana/rpc-api").GetBlockApi & import("@solana/rpc-api").GetBlockCommitmentApi & import("@solana/rpc-api").GetBlockHeightApi & import("@solana/rpc-api").GetBlockProductionApi & import("@solana/rpc-api").GetBlocksApi & import("@solana/rpc-api").GetBlocksWithLimitApi & import("@solana/rpc-api").GetBlockTimeApi & import("@solana/rpc-api").GetClusterNodesApi & import("@solana/rpc-api").GetEpochInfoApi & import("@solana/rpc-api").GetEpochScheduleApi & import("@solana/rpc-api").GetFeeForMessageApi & import("@solana/rpc-api").GetFirstAvailableBlockApi & import("@solana/rpc-api").GetGenesisHashApi & import("@solana/rpc-api").GetHealthApi & import("@solana/rpc-api").GetHighestSnapshotSlotApi & import("@solana/rpc-api").GetIdentityApi & import("@solana/rpc-api").GetInflationGovernorApi & import("@solana/rpc-api").GetInflationRateApi & import("@solana/rpc-api").GetInflationRewardApi & import("@solana/rpc-api").GetLargestAccountsApi & import("@solana/rpc-api").GetLatestBlockhashApi & import("@solana/rpc-api").GetLeaderScheduleApi & import("@solana/rpc-api").GetMaxRetransmitSlotApi & import("@solana/rpc-api").GetMaxShredInsertSlotApi & import("@solana/rpc-api").GetMinimumBalanceForRentExemptionApi & import("@solana/rpc-api").GetMultipleAccountsApi & import("@solana/rpc-api").GetProgramAccountsApi & import("@solana/rpc-api").GetRecentPerformanceSamplesApi & import("@solana/rpc-api").GetRecentPrioritizationFeesApi & import("@solana/rpc-api").GetSignaturesForAddressApi & import("@solana/rpc-api").GetSignatureStatusesApi & import("@solana/rpc-api").GetSlotApi & import("@solana/rpc-api").GetSlotLeaderApi & import("@solana/rpc-api").GetSlotLeadersApi & import("@solana/rpc-api").GetStakeMinimumDelegationApi & import("@solana/rpc-api").GetSupplyApi & import("@solana/rpc-api").GetTokenAccountBalanceApi & import("@solana/rpc-api").GetTokenAccountsByDelegateApi & import("@solana/rpc-api").GetTokenAccountsByOwnerApi & import("@solana/rpc-api").GetTokenLargestAccountsApi & import("@solana/rpc-api").GetTokenSupplyApi & import("@solana/rpc-api").GetTransactionApi & import("@solana/rpc-api").GetTransactionCountApi & import("@solana/rpc-api").GetVersionApi & import("@solana/rpc-api").GetVoteAccountsApi & import("@solana/rpc-api").IsBlockhashValidApi & import("@solana/rpc-api").MinimumLedgerSlotApi & import("@solana/rpc-api").SendTransactionApi & import("@solana/rpc-api").SimulateTransactionApi)> | import("@solana/rpc").RpcTestnet<(import("@solana/rpc-api").GetAccountInfoApi & import("@solana/rpc-api").GetBalanceApi & import("@solana/rpc-api").GetBlockApi & import("@solana/rpc-api").GetBlockCommitmentApi & import("@solana/rpc-api").GetBlockHeightApi & import("@solana/rpc-api").GetBlockProductionApi & import("@solana/rpc-api").GetBlocksApi & import("@solana/rpc-api").GetBlocksWithLimitApi & import("@solana/rpc-api").GetBlockTimeApi & import("@solana/rpc-api").GetClusterNodesApi & import("@solana/rpc-api").GetEpochInfoApi & import("@solana/rpc-api").GetEpochScheduleApi & import("@solana/rpc-api").GetFeeForMessageApi & import("@solana/rpc-api").GetFirstAvailableBlockApi & import("@solana/rpc-api").GetGenesisHashApi & import("@solana/rpc-api").GetHealthApi & import("@solana/rpc-api").GetHighestSnapshotSlotApi & import("@solana/rpc-api").GetIdentityApi & import("@solana/rpc-api").GetInflationGovernorApi & import("@solana/rpc-api").GetInflationRateApi & import("@solana/rpc-api").GetInflationRewardApi & import("@solana/rpc-api").GetLargestAccountsApi & import("@solana/rpc-api").GetLatestBlockhashApi & import("@solana/rpc-api").GetLeaderScheduleApi & import("@solana/rpc-api").GetMaxRetransmitSlotApi & import("@solana/rpc-api").GetMaxShredInsertSlotApi & import("@solana/rpc-api").GetMinimumBalanceForRentExemptionApi & import("@solana/rpc-api").GetMultipleAccountsApi & import("@solana/rpc-api").GetProgramAccountsApi & import("@solana/rpc-api").GetRecentPerformanceSamplesApi & import("@solana/rpc-api").GetRecentPrioritizationFeesApi & import("@solana/rpc-api").GetSignaturesForAddressApi & import("@solana/rpc-api").GetSignatureStatusesApi & import("@solana/rpc-api").GetSlotApi & import("@solana/rpc-api").GetSlotLeaderApi & import("@solana/rpc-api").GetSlotLeadersApi & import("@solana/rpc-api").GetStakeMinimumDelegationApi & import("@solana/rpc-api").GetSupplyApi & import("@solana/rpc-api").GetTokenAccountBalanceApi & import("@solana/rpc-api").GetTokenAccountsByDelegateApi & import("@solana/rpc-api").GetTokenAccountsByOwnerApi & import("@solana/rpc-api").GetTokenLargestAccountsApi & import("@solana/rpc-api").GetTokenSupplyApi & import("@solana/rpc-api").GetTransactionApi & import("@solana/rpc-api").GetTransactionCountApi & import("@solana/rpc-api").GetVersionApi & import("@solana/rpc-api").GetVoteAccountsApi & import("@solana/rpc-api").IsBlockhashValidApi & import("@solana/rpc-api").MinimumLedgerSlotApi & import("@solana/rpc-api").SendTransactionApi & import("@solana/rpc-api").SimulateTransactionApi) | (import("@solana/rpc-api").RequestAirdropApi & import("@solana/rpc-api").GetAccountInfoApi & import("@solana/rpc-api").GetBalanceApi & import("@solana/rpc-api").GetBlockApi & import("@solana/rpc-api").GetBlockCommitmentApi & import("@solana/rpc-api").GetBlockHeightApi & import("@solana/rpc-api").GetBlockProductionApi & import("@solana/rpc-api").GetBlocksApi & import("@solana/rpc-api").GetBlocksWithLimitApi & import("@solana/rpc-api").GetBlockTimeApi & import("@solana/rpc-api").GetClusterNodesApi & import("@solana/rpc-api").GetEpochInfoApi & import("@solana/rpc-api").GetEpochScheduleApi & import("@solana/rpc-api").GetFeeForMessageApi & import("@solana/rpc-api").GetFirstAvailableBlockApi & import("@solana/rpc-api").GetGenesisHashApi & import("@solana/rpc-api").GetHealthApi & import("@solana/rpc-api").GetHighestSnapshotSlotApi & import("@solana/rpc-api").GetIdentityApi & import("@solana/rpc-api").GetInflationGovernorApi & import("@solana/rpc-api").GetInflationRateApi & import("@solana/rpc-api").GetInflationRewardApi & import("@solana/rpc-api").GetLargestAccountsApi & import("@solana/rpc-api").GetLatestBlockhashApi & import("@solana/rpc-api").GetLeaderScheduleApi & import("@solana/rpc-api").GetMaxRetransmitSlotApi & import("@solana/rpc-api").GetMaxShredInsertSlotApi & import("@solana/rpc-api").GetMinimumBalanceForRentExemptionApi & import("@solana/rpc-api").GetMultipleAccountsApi & import("@solana/rpc-api").GetProgramAccountsApi & import("@solana/rpc-api").GetRecentPerformanceSamplesApi & import("@solana/rpc-api").GetRecentPrioritizationFeesApi & import("@solana/rpc-api").GetSignaturesForAddressApi & import("@solana/rpc-api").GetSignatureStatusesApi & import("@solana/rpc-api").GetSlotApi & import("@solana/rpc-api").GetSlotLeaderApi & import("@solana/rpc-api").GetSlotLeadersApi & import("@solana/rpc-api").GetStakeMinimumDelegationApi & import("@solana/rpc-api").GetSupplyApi & import("@solana/rpc-api").GetTokenAccountBalanceApi & import("@solana/rpc-api").GetTokenAccountsByDelegateApi & import("@solana/rpc-api").GetTokenAccountsByOwnerApi & import("@solana/rpc-api").GetTokenLargestAccountsApi & import("@solana/rpc-api").GetTokenSupplyApi & import("@solana/rpc-api").GetTransactionApi & import("@solana/rpc-api").GetTransactionCountApi & import("@solana/rpc-api").GetVersionApi & import("@solana/rpc-api").GetVoteAccountsApi & import("@solana/rpc-api").IsBlockhashValidApi & import("@solana/rpc-api").MinimumLedgerSlotApi & import("@solana/rpc-api").SendTransactionApi & import("@solana/rpc-api").SimulateTransactionApi)>;
|
|
9
|
+
get programAddress(): Address;
|
|
10
|
+
getPool(address: Address, config?: FetchAccountConfig): Promise<Pool>;
|
|
11
|
+
createPool(authority: TransactionSigner, params: {
|
|
12
|
+
binStep: number;
|
|
13
|
+
feeRate: number;
|
|
14
|
+
protocolShare: number;
|
|
15
|
+
activeBinId: number;
|
|
16
|
+
tokenMintX: Address;
|
|
17
|
+
tokenMintY: Address;
|
|
18
|
+
tokenProgramX: Address;
|
|
19
|
+
tokenProgramY: Address;
|
|
20
|
+
}): Promise<Instruction>;
|
|
21
|
+
swap(user: TransactionSigner, poolAddress: Address, params: {
|
|
22
|
+
xToY: boolean;
|
|
23
|
+
amountIn: bigint;
|
|
24
|
+
minAmountOut: bigint;
|
|
25
|
+
}, config?: FetchAccountConfig): Promise<Instruction[]>;
|
|
26
|
+
quote(poolAddress: Address, params: {
|
|
27
|
+
xToY: boolean;
|
|
28
|
+
amountIn: bigint;
|
|
29
|
+
slippageToleranceBps: number;
|
|
30
|
+
}, config?: FetchAccountConfig): Promise<QuoteOutput>;
|
|
31
|
+
quoteAndSwap(user: TransactionSigner, poolAddress: Address, params: {
|
|
32
|
+
xToY: boolean;
|
|
33
|
+
amountIn: bigint;
|
|
34
|
+
slippageToleranceBps: number;
|
|
35
|
+
}, config?: FetchAccountConfig): Promise<{
|
|
36
|
+
quoteOutput: QuoteOutput;
|
|
37
|
+
instructions: Instruction[];
|
|
38
|
+
}>;
|
|
39
|
+
getAllPositionMintsByOwner(owner: Address, config?: FetchAccountsConfig): Promise<Map<Address, Address[]>>;
|
|
40
|
+
createAdminConfig(deployer: TransactionSigner, params: {
|
|
41
|
+
authority: Address;
|
|
42
|
+
metadataUpdateAuthority?: Address;
|
|
43
|
+
}): Promise<Instruction>;
|
|
44
|
+
transferAdminAuthority(authority: TransactionSigner, newAuthority: Address): Promise<Instruction>;
|
|
45
|
+
acceptAdminAuthority(pendingAuthority: TransactionSigner): Promise<Instruction>;
|
|
46
|
+
setMetadataUpdateAuthority(authority: TransactionSigner, metadataUpdateAuthority: Address): Promise<Instruction>;
|
|
47
|
+
getAdminConfig(config?: FetchAccountConfig): Promise<Account<generated.AdminConfig>>;
|
|
48
|
+
isAdminConfigActive(config?: FetchAccountConfig): Promise<boolean>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=dlmm_program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlmm_program.d.ts","sourceRoot":"","sources":["../../src/entities/dlmm_program.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGzB,MAAM,aAAa,CAAC;AAOrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,IAAI,EAEL,MAAM,QAAQ,CAAC;AAWhB,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,qBAAa,WAAW;;IAItB,YACE,GAAG,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EACvC,cAAc,GAAE,OAAiC,EAIlD;IAED,IAAW,GAAG,+5nBAAwB;IACtC,IAAW,cAAc,YAAmC;IAE/C,OAAO,CAClB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAEf;IAEY,UAAU,CACrB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,aAAa,EAAE,OAAO,CAAC;QACvB,aAAa,EAAE,OAAO,CAAC;KACxB,GACA,OAAO,CAAC,WAAW,CAAC,CAKtB;IAEY,IAAI,CACf,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EACjE,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,EAAE,CAAC,CAGxB;IAEY,KAAK,CAChB,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE,EACzE,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAGtB;IAEY,YAAY,CACvB,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE,EACzE,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC;QAAE,WAAW,EAAE,WAAW,CAAC;QAAC,YAAY,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC,CAGpE;IAEY,0BAA0B,CACrC,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CA+BlC;IAEY,iBAAiB,CAC5B,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAE,GAChE,OAAO,CAAC,WAAW,CAAC,CAKtB;IAEY,sBAAsB,CACjC,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,WAAW,CAAC,CAKtB;IAEY,oBAAoB,CAC/B,gBAAgB,EAAE,iBAAiB,GAClC,OAAO,CAAC,WAAW,CAAC,CAKtB;IAEY,0BAA0B,CACrC,SAAS,EAAE,iBAAiB,EAC5B,uBAAuB,EAAE,OAAO,GAC/B,OAAO,CAAC,WAAW,CAAC,CAKtB;IAEY,cAAc,CACzB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAKzC;IAEY,mBAAmB,CAC9B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAKlB;CACF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { parseBase64RpcAccount, } from "@solana/kit";
|
|
2
|
+
import { getTokenDecoder, TOKEN_2022_PROGRAM_ADDRESS, } from "@solana-program/token-2022";
|
|
3
|
+
import { MAINNET_PROGRAM_ADDRESS } from "../program_addresses";
|
|
4
|
+
import { Pool, createPool, } from "./pool";
|
|
5
|
+
import { findAllPositionAddresses } from "./position";
|
|
6
|
+
import { fetchAllMaybePositionPoolsChunked } from "./position_pool";
|
|
7
|
+
import { getAdminConfig, createAdminConfig, isAdminConfigActive, acceptAdminAuthority, transferAdminAuthority, setMetadataUpdateAuthority, } from "./admin_config";
|
|
8
|
+
export class DlmmProgram {
|
|
9
|
+
#rpc;
|
|
10
|
+
#programAddress;
|
|
11
|
+
constructor(rpc, programAddress = MAINNET_PROGRAM_ADDRESS) {
|
|
12
|
+
this.#rpc = rpc;
|
|
13
|
+
this.#programAddress = programAddress;
|
|
14
|
+
}
|
|
15
|
+
get rpc() { return this.#rpc; }
|
|
16
|
+
get programAddress() { return this.#programAddress; }
|
|
17
|
+
async getPool(address, config) {
|
|
18
|
+
return await Pool.load(this.#rpc, address, this.#programAddress, config);
|
|
19
|
+
}
|
|
20
|
+
async createPool(authority, params) {
|
|
21
|
+
return await createPool({ authority, ...params }, { programAddress: this.#programAddress });
|
|
22
|
+
}
|
|
23
|
+
async swap(user, poolAddress, params, config) {
|
|
24
|
+
const pool = await this.getPool(poolAddress, config);
|
|
25
|
+
return await pool.swap(user, params);
|
|
26
|
+
}
|
|
27
|
+
async quote(poolAddress, params, config) {
|
|
28
|
+
const pool = await this.getPool(poolAddress, config);
|
|
29
|
+
return await pool.quote(params);
|
|
30
|
+
}
|
|
31
|
+
async quoteAndSwap(user, poolAddress, params, config) {
|
|
32
|
+
const pool = await this.getPool(poolAddress, config);
|
|
33
|
+
return await pool.quoteAndSwap(user, params);
|
|
34
|
+
}
|
|
35
|
+
async getAllPositionMintsByOwner(owner, config) {
|
|
36
|
+
const { commitment, minContextSlot, abortSignal } = config ?? {};
|
|
37
|
+
const { value: tokenAccounts } = await this.#rpc
|
|
38
|
+
.getTokenAccountsByOwner(owner, { programId: TOKEN_2022_PROGRAM_ADDRESS }, { commitment, minContextSlot, encoding: "base64" })
|
|
39
|
+
.send({ abortSignal });
|
|
40
|
+
const candidateMints = decodeCandidatePositionMints(tokenAccounts);
|
|
41
|
+
if (candidateMints.length === 0) {
|
|
42
|
+
return new Map();
|
|
43
|
+
}
|
|
44
|
+
const positionAddresses = await findAllPositionAddresses({ positionMints: candidateMints }, { programAddress: this.#programAddress });
|
|
45
|
+
const maybePools = await fetchAllMaybePositionPoolsChunked(this.#rpc, positionAddresses, config);
|
|
46
|
+
return new Map(Map.groupBy(maybePools.flatMap((maybePool, i) => maybePool ? [{ pool: maybePool.pool, mint: candidateMints[i] }] : []), ({ pool }) => pool).entries().map(([pool, pairs]) => [pool, pairs.map(({ mint }) => mint)]));
|
|
47
|
+
}
|
|
48
|
+
async createAdminConfig(deployer, params) {
|
|
49
|
+
return await createAdminConfig({ deployer, ...params }, { programAddress: this.#programAddress });
|
|
50
|
+
}
|
|
51
|
+
async transferAdminAuthority(authority, newAuthority) {
|
|
52
|
+
return await transferAdminAuthority({ authority, newAuthority }, { programAddress: this.#programAddress });
|
|
53
|
+
}
|
|
54
|
+
async acceptAdminAuthority(pendingAuthority) {
|
|
55
|
+
return await acceptAdminAuthority({ pendingAuthority }, { programAddress: this.#programAddress });
|
|
56
|
+
}
|
|
57
|
+
async setMetadataUpdateAuthority(authority, metadataUpdateAuthority) {
|
|
58
|
+
return await setMetadataUpdateAuthority({ authority, metadataUpdateAuthority }, { programAddress: this.#programAddress });
|
|
59
|
+
}
|
|
60
|
+
async getAdminConfig(config) {
|
|
61
|
+
return await getAdminConfig(this.#rpc, { programAddress: this.#programAddress, ...config });
|
|
62
|
+
}
|
|
63
|
+
async isAdminConfigActive(config) {
|
|
64
|
+
return await isAdminConfigActive(this.#rpc, { programAddress: this.#programAddress, ...config });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const tokenDecoder = getTokenDecoder();
|
|
68
|
+
function decodeCandidatePositionMints(tokenAccounts) {
|
|
69
|
+
return tokenAccounts
|
|
70
|
+
.map(({ pubkey, account }) => tokenDecoder.decode(parseBase64RpcAccount(pubkey, account).data))
|
|
71
|
+
.filter(token => token.amount === 1n)
|
|
72
|
+
.map(token => token.mint);
|
|
73
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|