import { Algodv2, Transaction } from "algosdk";
import AlgofiUser from "../algofiUser";
import GovernanceClient from "./governanceClient";
import Proposal from "./proposal";
export default class Admin {
    governanceClient: GovernanceClient;
    algod: Algodv2;
    adminAppId: number;
    adminAddress: string;
    quorumValue: number;
    superMajority: number;
    proposalDuration: number;
    proposalExecutionDelay: number;
    proposalFactoryAppId: number;
    proposalFactoryAddress: string;
    govToken: number;
    proposalTemplateId: number;
    minimumVeBankToPropose: number;
    proposals: {
        [key: number]: Proposal;
    };
    constructor(governanceClient: GovernanceClient);
    loadState(): Promise<void>;
    getUpdateUserVeBankDataTxns(userCalling: AlgofiUser, userUpdating: AlgofiUser): Promise<Transaction[]>;
    getVoteTxns(user: AlgofiUser, proposal: Proposal, forOrAgainst: number): Promise<Transaction[]>;
    getDelegateTxns(user: AlgofiUser, delegatee: AlgofiUser): Promise<Transaction[]>;
    getValidateTxns(user: AlgofiUser, proposal: Proposal): Promise<Transaction[]>;
    getUndelegateTxns(user: AlgofiUser): Promise<Transaction[]>;
    getDelegatedVoteTxns(callingUser: AlgofiUser, votingUser: AlgofiUser, proposal: Proposal): Promise<Transaction[]>;
    getCloseOutFromProposalTxns(userCalling: AlgofiUser, userClosingOut: AlgofiUser, proposal: Proposal): Promise<Transaction[]>;
    getSetOpenToDelegationTxns(user: AlgofiUser): Promise<Transaction[]>;
    getSetNotOpenToDelegationTxns(user: AlgofiUser): Promise<Transaction[]>;
    getCreateProposalTxns(user: AlgofiUser, title: string, link: string): Promise<Transaction[]>;
}
