// Core dependencies
import { Program } from "@coral-xyz/anchor";
import { PublicKey, SystemProgram, SYSVAR_RENT_PUBKEY } from "@solana/web3.js";

// Local imports
import { BasketsProgram } from "../../idl/types";
import { PYTH_SPONSORED_FEEDS } from "../../utils/constants";


export async function updatePythSponsoredFeedsIx(params: {
    program: Program<BasketsProgram>;
    payer: PublicKey;
    tokenMint: PublicKey;
    feedAccount: PublicKey;
    isActive: boolean;
}) {
    // Destructure all params
    const { 
        program,
        payer,
        tokenMint,
        feedAccount,
        isActive,
    } = params;

    // Build and return instruction
    return await program.methods
        .updatePythSponsoredFeeds(
            payer,
            (isActive == true) ? 1 : 0
        )
        .accountsStrict({
            authority: payer,
            pythSponsoredFeeds: PYTH_SPONSORED_FEEDS,
            tokenMint: tokenMint,
            feedAccount: feedAccount,
            systemProgram: SystemProgram.programId,
            rent: SYSVAR_RENT_PUBKEY,
        })
        .instruction();
}
