import type { GovernanceConfig, GovernorConfig, GovernorParameters, LockerParameters, QuarryConfig, TrackedAccountInfo } from "./types";
declare type QuarryConfigJSON = Omit<QuarryConfig, "rewarder" | "mintWrapper" | "redeemer" | "additionalRewarders"> & {
    rewarder?: string;
    mintWrapper?: string;
    redeemer?: string;
    additionalRewarders: readonly string[];
};
/**
 * An address tracked by the DAO.
 */
interface TrackedAccountInfoJSON extends Omit<TrackedAccountInfo, "address"> {
    address: string;
}
export interface GovernorConfigJSON extends Omit<GovernorConfig, "address" | "governance" | "quarry" | "saves" | "minter" | "gauge" | "mndeNftLocker" | "nftLockerGauges" | "addresses"> {
    address: string;
    governance: Omit<GovernanceConfig, "address" | "parameters"> & {
        address: string;
        parameters?: {
            governor?: Omit<GovernorParameters, "proposalActivationMinVotes"> & {
                proposalActivationMinVotes: string;
            };
            locker?: Omit<LockerParameters, "quorumVotes"> & {
                quorumVotes: string;
            };
        };
    };
    quarry?: QuarryConfigJSON;
    saves?: {
        mint: string;
        duration: number;
    }[];
    minter?: {
        mintWrapper?: string;
        redeemer?: string;
    };
    gauge?: Omit<GovernorConfig["gauge"], "gaugemeister"> & {
        gaugemeister: string;
    };
    mndeNftLocker?: {
        address: string;
        creators: string[];
        docs: string;
        app: string;
    };
    nftLockerGauges?: {
        label: string;
        address: string;
        stateAccount?: string;
        docs: string;
    }[];
    addresses?: Record<string, TrackedAccountInfoJSON>;
}
/**
 * Loads a Governor from its JSON representation.
 * @returns
 */
export declare const loadGovernorConfig: ({ address, governance, quarry, saves, minter, gauge, mndeNftLocker, nftLockerGauges, addresses, ...rest }: GovernorConfigJSON) => GovernorConfig;
export {};
//# sourceMappingURL=loadConfig.d.ts.map