import { Environment, WithDeployment } from '../environment/Environment';
import { ThirdPartyContracts } from './deployThirdParty';
import { Address } from '@melonproject/token-math';
export interface Factories {
    accountingFactory: Address;
    feeManagerFactory: Address;
    participationFactory: Address;
    policyManagerFactory: Address;
    sharesFactory: Address;
    tradingFactory: Address;
    vaultFactory: Address;
}
export interface MelonContracts {
    priceSource: Address;
    engine: Address;
    version: Address;
    ranking: Address;
    registry: Address;
    adapters: {
        kyberAdapter: Address;
        zeroExAdapter: Address;
        matchingMarketAdapter: Address;
        matchingMarketAccessor: Address;
        ethfinexAdapter: Address;
    };
    policies: {
        priceTolerance: Address;
        userWhitelist: Address;
    };
    fees: {
        managementFee: Address;
        performanceFee: Address;
    };
    factories: Factories;
}
export interface ContractControl {
    MGM: Address;
    registryOwner: Address;
    versionOwner: Address;
}
export declare type MelonContractsDraft = Partial<MelonContracts>;
export declare const deployAllContractsConfig: any;
export declare const defaultControlConfig: any;
/**
 * Deploys all contracts and checks their health
 */
export declare const deploySystem: (environmentWithoutDeployment: Environment, thirdPartyContracts: ThirdPartyContracts, adoptedContracts: Partial<MelonContracts>, control: ContractControl, description?: string) => Promise<WithDeployment>;
