import { Account, NetworkType, PublicAccount } from 'symbol-sdk';
import { Logger } from '../logger';
import { Addresses, ConfigAccount, ConfigPreset, CustomPreset, NodeAccount, NodePreset, PrivateKeySecurityMode } from '../model';
import { Migration, Password } from './BootstrapUtils';
import { KeyName } from './ConfigService';
export declare class ConfigLoader {
    private readonly logger;
    static presetInfoLogged: boolean;
    constructor(logger: Logger);
    generateRandomConfiguration(oldAddresses: Addresses | undefined, oldPresetData: ConfigPreset | undefined, presetData: ConfigPreset): Promise<Addresses>;
    private sum;
    private processNemesisBalances;
    private getMaxHarvesterBalance;
    static shouldCreateNemesis(presetData: ConfigPreset): boolean;
    generateAddresses(networkType: NetworkType, privateKeySecurityMode: PrivateKeySecurityMode, accounts: number | string[]): ConfigAccount[];
    getAccount(networkType: NetworkType, publicKey: string | undefined, privateKey: string | undefined): PublicAccount | Account | undefined;
    toConfig(account: PublicAccount | Account): ConfigAccount;
    generateAccount(networkType: NetworkType, privateKeySecurityMode: PrivateKeySecurityMode, keyName: KeyName, oldStoredAccount: ConfigAccount | undefined, privateKey: string | undefined, publicKey: string | undefined): ConfigAccount;
    generateNodeAccount(oldNodeAccount: NodeAccount | undefined, presetData: ConfigPreset, index: number, nodePreset: NodePreset, networkType: NetworkType): NodeAccount;
    generateNodeAccounts(oldAddresses: Addresses | undefined, presetData: ConfigPreset, networkType: NetworkType): Promise<NodeAccount[]>;
    private static getArray;
    loadCustomPreset(customPreset: string | undefined, password: Password): CustomPreset;
    static loadAssembly(preset: string, assembly: string, workingDir: string): CustomPreset;
    static loadNetworkPreset(preset: string, workingDir: string): CustomPreset;
    private static loadBundledPreset;
    static loadSharedPreset(): CustomPreset;
    mergePresets<T extends CustomPreset>(object: T | undefined, ...otherArgs: (CustomPreset | undefined)[]): T;
    createPresetData(params: {
        workingDir: string;
        password: Password;
        preset?: string;
        assembly?: string;
        customPreset?: string;
        customPresetObject?: CustomPreset;
        oldPresetData?: ConfigPreset;
    }): ConfigPreset;
    dynamicDefaultNodeConfiguration(nodes?: Partial<NodePreset>[]): NodePreset[];
    private getDefaultConfiguration;
    static resolveRoles(nodePreset: NodePreset): string;
    static toConfig(account: Account | PublicAccount): ConfigAccount;
    expandRepeat(presetData: ConfigPreset): ConfigPreset;
    applyValueTemplate(context: any, value: any): any;
    expandServicesRepeat(context: any, services: any[]): any[];
    loadExistingPresetDataIfPreset(target: string, password: Password): ConfigPreset | undefined;
    loadExistingPresetData(target: string, password: Password): ConfigPreset;
    loadExistingAddressesIfPreset(target: string, password: Password): Addresses | undefined;
    migrateAddresses(addresses: any, networkType: NetworkType): Addresses;
    getAddressesMigration(networkType: NetworkType): Migration[];
    loadExistingAddresses(target: string, password: Password): Addresses;
    getGeneratedPresetLocation(target: string): string;
    getGeneratedAddressLocation(target: string): string;
}
