///
import { BN, DriftClient, SpotMarketAccount } from '@drift-labs/sdk';
import { Program } from '@coral-xyz/anchor';
import { DriftCompetitions } from './types/drift_competitions';
import { PublicKey, SetComputeUnitLimitParams, TransactionInstruction, TransactionSignature } from '@solana/web3.js';
export declare class CompetitionsClient {
driftClient: DriftClient;
program: Program;
constructor({ driftClient, program, }: {
driftClient: DriftClient;
program?: Program;
});
initializeCompetition({ name, nextRoundExpiryTs, competitionExpiryTs, roundDuration, maxEntriesPerCompetitor, minSponsorAmount, maxSponsorFraction, numberOfWinners, }: {
name: string;
nextRoundExpiryTs: BN;
competitionExpiryTs: BN;
roundDuration: BN;
maxEntriesPerCompetitor: BN;
minSponsorAmount: BN;
maxSponsorFraction: BN;
numberOfWinners: number;
}): Promise;
updateCompetition(competition: PublicKey, { nextRoundExpiryTs, competitionExpiryTs, roundDuration, maxEntriesPerCompetitor, minSponsorAmount, maxSponsorFraction, numberOfWinners, resetRoundState, }: {
nextRoundExpiryTs?: BN | null;
competitionExpiryTs?: BN | null;
roundDuration?: BN | null;
maxEntriesPerCompetitor?: BN | null;
minSponsorAmount?: BN | null;
maxSponsorFraction?: BN | null;
numberOfWinners?: number | null;
resetRoundState?: boolean | null;
}): Promise;
initializeCompetitor({ competition, initDriftUser, }: {
competition: PublicKey;
initDriftUser?: boolean;
}): Promise;
claimEntry(competition: PublicKey, competitor?: PublicKey, userStatsKey?: PublicKey): Promise;
claimMultipleEntries(entries: BN, tokenAccount: PublicKey, competition: PublicKey, competitor?: PublicKey, userStatsKey?: PublicKey): Promise;
claimWinnings({ competition, shares, initIFStake, }: {
competition: PublicKey;
shares?: BN;
initIFStake?: boolean;
}): Promise;
settleCompetitor(competition: PublicKey, competitor: PublicKey, userStats: PublicKey): Promise;
settleAllCompetitors(competition: PublicKey, roundNumber: BN, chunkSize?: number, claimEntryMax?: number): Promise;
settleNextWinner(competition: PublicKey): Promise;
settleWinner(competition: PublicKey, competitor: PublicKey, userStats: PublicKey): Promise;
getCompetitionPublicKey(name: string): PublicKey;
getCompetitionDetails(competition: PublicKey, insuranceFundVaultBalance?: BN): Promise<{
roundNumber: BN;
roundEndTs: BN;
prizePools: BN[];
}>;
/**
* Used for UI wallet adapters compatibility
*/
createAndSendTxn(ixs: TransactionInstruction[], txOpts?: {
computeUnitParams?: SetComputeUnitLimitParams;
noComputeBudgetIx?: boolean;
}): Promise;
/**
* Fetch all time competition events.
* NOTE: THIS IS A TEMPORARY SOLUTION AND WILL BE VERY HEAVY ONCE THERE HAVE BEEN A LOT OF HISTORICAL EVENTS EMITTED.
*/
getAllCompetitionEvents(): Promise[]>;
getEntriesForDonation(tokenAmount: BN, spotMarket: SpotMarketAccount): BN;
}