///
import { BN } from '@coral-xyz/anchor';
import { Mint } from '@solana/spl-token';
import { PublicKey } from '@solana/web3.js';
import { VsrClient } from './voteStakeRegistryClient';
export type TokenProgramAccount = {
publicKey: PublicKey;
account: T;
};
export interface Voter {
deposits: Deposit[];
voterAuthority: PublicKey;
registrar: PublicKey;
}
export interface votingMint {
baselineVoteWeightScaledFactor: BN;
digitShift: number;
grantAuthority: PublicKey;
lockupSaturationSecs: BN;
maxExtraLockupVoteWeightScaledFactor: BN;
mint: PublicKey;
}
export type LockupType = 'none' | 'monthly' | 'cliff' | 'constant' | 'daily';
export interface Registrar {
governanceProgramId: PublicKey;
realm: PublicKey;
realmAuthority: PublicKey;
realmGoverningTokenMint: PublicKey;
votingMints: votingMint[];
}
interface LockupKind {
none: object;
daily: object;
monthly: object;
cliff: object;
constant: object;
}
interface Lockup {
endTs: BN;
kind: LockupKind;
startTs: BN;
}
export interface Deposit {
allowClawback: boolean;
amountDepositedNative: BN;
amountInitiallyLockedNative: BN;
isUsed: boolean;
lockup: Lockup;
votingMintConfigIdx: number;
}
export interface DepositWithMintAccount extends Deposit {
mint: TokenProgramAccount;
index: number;
available: BN;
vestingRate: BN | null;
currentlyLocked: BN;
nextVestingTimestamp: BN | null;
votingPower: BN;
votingPowerBaseline: BN;
}
export declare const emptyPk = "11111111111111111111111111111111";
export declare const getRegistrarPDA: (realmPk: PublicKey, mint: PublicKey, clientProgramId: PublicKey) => Promise<{
registrar: PublicKey;
registrarBump: number;
}>;
export declare const getVoterPDA: (registrar: PublicKey, walletPk: PublicKey, clientProgramId: PublicKey) => Promise<{
voter: PublicKey;
voterBump: number;
}>;
export declare const getVoterWeightPDA: (registrar: PublicKey, walletPk: PublicKey, clientProgramId: PublicKey) => Promise<{
voterWeightPk: PublicKey;
voterWeightBump: number;
}>;
export declare const tryGetVoter: (voterPk: PublicKey, client: VsrClient) => Promise;
export declare const tryGetRegistrar: (registrarPk: PublicKey, client: VsrClient) => Promise;
export {};