///
///
///
import { BeetStruct } from '@metaplex-foundation/beet';
import { PublicKey } from '@solana/web3.js';
import BigNumber from 'bignumber.js';
export declare enum LockupKind {
'None' = 0,
'Daily' = 1,
'Monthly' = 2,
'Cliff' = 3,
'Constant' = 4
}
export type Lockup = {
startTs: BigNumber;
endTs: BigNumber;
kind: LockupKind;
reserved: number[];
};
export declare const lockupStruct: BeetStruct>;
export type Vote = {
version: number;
realm: PublicKey;
mint: PublicKey;
owner: PublicKey;
amount: BigNumber;
padding: Buffer;
};
export declare const voteStruct: BeetStruct>;
export type DepositEntry = {
lockup: Lockup;
amountDepositedNative: BigNumber;
amountInitiallyLockedNative: BigNumber;
isUsed: boolean;
allowClawback: boolean;
votingMintConfigIdx: number;
reserved: number[];
};
export declare const depositEntryStruct: BeetStruct>;
export type Voter = {
buffer: Buffer;
voterAuthority: PublicKey;
registrar: PublicKey;
deposits: DepositEntry[];
voterBump: number;
voterWeightRecordBump: number;
reserved: number[];
};
export declare const voterStruct: BeetStruct>;
export type VotingMintConfig = {
mint: PublicKey;
grantAuthority: PublicKey;
baselineVoteWeightScaledFactor: BigNumber;
maxExtraLockupVoteWeightScaledFactor: BigNumber;
lockupSaturationSecs: BigNumber;
digitShift: number;
reserved1: number[];
reserved2: BigNumber[];
};
export declare const votingMintConfigStruct: BeetStruct>;
export type Registrar = {
buffer: Buffer;
governanceProgramId: PublicKey;
realm: PublicKey;
realmGoverningTokenMint: PublicKey;
realmAuthority: PublicKey;
reserved1: number[];
votingMints: VotingMintConfig[];
timeOffset: BigNumber;
bump: number;
reserved2: number[];
reserved3: BigNumber[];
};
export declare const registrarStruct: BeetStruct>;
export type Governance = {
buffer: Buffer;
field1: PublicKey;
padding: number[];
};
export declare const governanceStruct: BeetStruct>;