-
Notifications
You must be signed in to change notification settings - Fork 135
/
set-fee-authority-ix.ts
49 lines (45 loc) · 1.54 KB
/
set-fee-authority-ix.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { Program } from "@coral-xyz/anchor";
import { Instruction } from "@orca-so/common-sdk";
import { PublicKey } from "@solana/web3.js";
import { Whirlpool } from "../artifacts/whirlpool";
/**
* Parameters to set the fee authority in a WhirlpoolsConfig
*
* @category Instruction Types
* @param whirlpoolsConfig - The public key for the WhirlpoolsConfig this pool is initialized in
* @param feeAuthority - The current feeAuthority in the WhirlpoolsConfig
* @param newFeeAuthority - The new feeAuthority in the WhirlpoolsConfig
*/
export type SetFeeAuthorityParams = {
whirlpoolsConfig: PublicKey;
feeAuthority: PublicKey;
newFeeAuthority: PublicKey;
};
/**
* Sets the fee authority for a WhirlpoolsConfig.
* The fee authority can set the fee & protocol fee rate for individual pools or set the default fee rate for newly minted pools.
* Only the current fee authority has permission to invoke this instruction.
*
* @category Instructions
* @param context - Context object containing services required to generate the instruction
* @param params - SetFeeAuthorityParams object
* @returns - Instruction to perform the action.
*/
export function setFeeAuthorityIx(
program: Program<Whirlpool>,
params: SetFeeAuthorityParams
): Instruction {
const { whirlpoolsConfig, feeAuthority, newFeeAuthority } = params;
const ix = program.instruction.setFeeAuthority({
accounts: {
whirlpoolsConfig,
feeAuthority,
newFeeAuthority,
},
});
return {
instructions: [ix],
cleanupInstructions: [],
signers: [],
};
}