export default Mcdev;
export type BuObject = import("../types/mcdev.d.js").BuObject;
export type CodeExtract = import("../types/mcdev.d.js").CodeExtract;
export type CodeExtractItem = import("../types/mcdev.d.js").CodeExtractItem;
export type DeltaPkgItem = import("../types/mcdev.d.js").DeltaPkgItem;
export type Mcdevrc = import("../types/mcdev.d.js").Mcdevrc;
export type MetadataTypeItem = import("../types/mcdev.d.js").MetadataTypeItem;
export type MetadataTypeItemDiff = import("../types/mcdev.d.js").MetadataTypeItemDiff;
export type MetadataTypeItemObj = import("../types/mcdev.d.js").MetadataTypeItemObj;
export type MetadataTypeMap = import("../types/mcdev.d.js").MetadataTypeMap;
export type MetadataTypeMapObj = import("../types/mcdev.d.js").MetadataTypeMapObj;
export type MultiMetadataTypeList = import("../types/mcdev.d.js").MultiMetadataTypeList;
export type MultiMetadataTypeMap = import("../types/mcdev.d.js").MultiMetadataTypeMap;
export type SkipInteraction = import("../types/mcdev.d.js").SkipInteraction;
export type SoapRequestParams = import("../types/mcdev.d.js").SoapRequestParams;
export type TemplateMap = import("../types/mcdev.d.js").TemplateMap;
export type TypeKeyCombo = import("../types/mcdev.d.js").TypeKeyCombo;
export type ExplainType = import("../types/mcdev.d.js").ExplainType;
export type ContentBlockConversionTypes = import("../types/mcdev.d.js").ContentBlockConversionTypes;
export type BuildFilter = import("../types/mcdev.d.js").BuildFilter;
/**
 * @typedef {import('../types/mcdev.d.js').BuObject} BuObject
 * @typedef {import('../types/mcdev.d.js').CodeExtract} CodeExtract
 * @typedef {import('../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
 * @typedef {import('../types/mcdev.d.js').DeltaPkgItem} DeltaPkgItem
 * @typedef {import('../types/mcdev.d.js').Mcdevrc} Mcdevrc
 * @typedef {import('../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
 * @typedef {import('../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
 * @typedef {import('../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
 * @typedef {import('../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
 * @typedef {import('../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
 * @typedef {import('../types/mcdev.d.js').MultiMetadataTypeList} MultiMetadataTypeList
 * @typedef {import('../types/mcdev.d.js').MultiMetadataTypeMap} MultiMetadataTypeMap
 * @typedef {import('../types/mcdev.d.js').SkipInteraction} SkipInteraction
 * @typedef {import('../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
 * @typedef {import('../types/mcdev.d.js').TemplateMap} TemplateMap
 * @typedef {import('../types/mcdev.d.js').TypeKeyCombo} TypeKeyCombo
 * @typedef {import('../types/mcdev.d.js').ExplainType} ExplainType
 * @typedef {import('../types/mcdev.d.js').ContentBlockConversionTypes} ContentBlockConversionTypes
 * @typedef {import('../types/mcdev.d.js').BuildFilter} BuildFilter
 */
/**
 * main class
 */
declare class Mcdev {
    /**
     * @returns {string} current version of mcdev
     */
    static version(): string;
    /**
     * helper method to use unattended mode when including mcdev as a package
     *
     * @param {SkipInteraction} [skipInteraction] signals what to insert automatically for things usually asked via wizard
     * @returns {void}
     */
    static setSkipInteraction(skipInteraction?: SkipInteraction): void;
    /**
     * configures what is displayed in the console
     *
     * @param {object} argv list of command line parameters given by user
     * @param {boolean} [argv.silent] only errors printed to CLI
     * @param {boolean} [argv.verbose] chatty user CLI output
     * @param {boolean} [argv.debug] enables developer output & features
     * @returns {void}
     */
    static setLoggingLevel(argv: {
        silent?: boolean;
        verbose?: boolean;
        debug?: boolean;
    }): void;
    static knownOptions: string[];
    /**
     * allows setting system wide / command related options
     *
     * @param {object} argv list of command line parameters given by user
     * @returns {void}
     */
    static setOptions(argv: object): void;
    /**
     * handler for 'mcdev createDeltaPkg
     *
     * @param {object} argv yargs parameters
     * @param {string} [argv.commitrange] git commit range via positional
     * @param {string} [argv.range] git commit range via option
     * @param {string} [argv.filter] filter file paths that start with any
     * @param {number} [argv.commitHistory] filter file paths that start with any
     * @param {DeltaPkgItem[]} [argv.diffArr] list of files to include in delta package (skips git diff when provided)
     * @returns {Promise.<DeltaPkgItem[]>} list of changed items
     */
    static createDeltaPkg(argv: {
        commitrange?: string;
        range?: string;
        filter?: string;
        commitHistory?: number;
        diffArr?: DeltaPkgItem[];
    }): Promise<DeltaPkgItem[]>;
    /**
     * @returns {Promise} .
     */
    static selectTypes(): Promise<any>;
    /**
     * @returns {ExplainType[]} list of supported types with their apiNames
     */
    static explainTypes(): ExplainType[];
    /**
     * @returns {Promise.<boolean>} success flag
     */
    static upgrade(): Promise<boolean>;
    /**
     * helper to show an off-the-logs message to users
     */
    static "__#private@#welcomeMessage"(): void;
    /**
     * Retrieve all metadata from the specified business unit into the local file system.
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string[] | TypeKeyCombo} [selectedTypesArr] limit retrieval to given metadata type
     * @param {string[]} [keys] limit retrieval to given metadata key
     * @param {boolean} [changelogOnly] skip saving, only create json in memory
     * @returns {Promise.<object>} -
     */
    static retrieve(businessUnit: string, selectedTypesArr?: string[] | TypeKeyCombo, keys?: string[], changelogOnly?: boolean): Promise<object>;
    /**
     * helper for {@link Mcdev.retrieve}
     *
     * @param {string} cred name of Credential
     * @param {string} bu name of BU
     * @param {string[] | TypeKeyCombo} [selectedTypesArr] limit retrieval to given metadata type/subtype
     * @param {string[]} [keys] limit retrieval to given metadata key
     * @param {boolean} [changelogOnly] skip saving, only create json in memory
     * @returns {Promise.<object>} ensure that BUs are worked on sequentially
     */
    static "__#private@#retrieveBU"(cred: string, bu: string, selectedTypesArr?: string[] | TypeKeyCombo, keys?: string[], changelogOnly?: boolean): Promise<object>;
    /**
     * Deploys all metadata located in the 'deploy' directory to the specified business unit
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string[] | TypeKeyCombo} [selectedTypesArr] limit deployment to given metadata type
     * @param {string[]} [keyArr] limit deployment to given metadata keys
     * @returns {Promise.<Object.<string, MultiMetadataTypeMap>>} deployed metadata per BU (first key: bu name, second key: metadata type)
     */
    static deploy(businessUnit: string, selectedTypesArr?: string[] | TypeKeyCombo, keyArr?: string[]): Promise<{
        [x: string]: MultiMetadataTypeMap;
    }>;
    /**
     * Creates template file for properties.json
     *
     * @param {string} [credentialsName] identifying name of the installed package / project
     * @returns {Promise.<void>} -
     */
    static initProject(credentialsName?: string): Promise<void>;
    /**
     * Clones an existing project from git repository and installs it
     *
     * @returns {Promise.<void>} -
     */
    static joinProject(): Promise<void>;
    /**
     * Refreshes BU names and ID's from MC instance
     *
     * @param {string} credentialsName identifying name of the installed package / project
     * @returns {Promise.<void>} -
     */
    static findBUs(credentialsName: string): Promise<void>;
    /**
     * Creates docs for supported metadata types in Markdown and/or HTML format
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string} type metadata type
     * @returns {Promise.<void>} -
     */
    static document(businessUnit: string, type: string): Promise<void>;
    /**
     * deletes metadata from MC instance by key
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string | TypeKeyCombo} selectedTypes supported metadata type (single) or complex object
     * @param {string[] | string} [keys] Identifier of metadata
     * @returns {Promise.<boolean>} true if successful, false otherwise
     */
    static deleteByKey(businessUnit: string, selectedTypes: string | TypeKeyCombo, keys?: string[] | string): Promise<boolean>;
    /**
     * get name & key for provided id
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string} type supported metadata type
     * @param {string} id Identifier of metadata
     * @returns {Promise.<{key:string, name:string, path:string}>} key, name and path of metadata; null if not found
     */
    static resolveId(businessUnit: string, type: string, id: string): Promise<{
        key: string;
        name: string;
        path: string;
    }>;
    /**
     * ensures triggered sends are restarted to ensure they pick up on changes of the underlying emails
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string[] | TypeKeyCombo} selectedTypes limit to given metadata types
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static refresh(businessUnit: string, selectedTypes: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * method for contributors to get details on SOAP objects
     *
     * @param {string} type references credentials from properties.json
     * @param {string} [businessUnit] defaults to first credential's ParentBU
     * @returns {Promise.<void>} -
     */
    static describeSoap(type: string, businessUnit?: string): Promise<void>;
    /**
     * Converts metadata to legacy format. Output is saved in 'converted' directory
     *
     * @param {string} businessUnit references credentials from properties.json
     * @returns {Promise.<void>} -
     */
    static badKeys(businessUnit: string): Promise<void>;
    /**
     * Retrieve a specific metadata file and templatise.
     *
     * @deprecated Use `retrieve` followed by `build` instead. `retrieveAsTemplate` will be removed in a future version.
     * @param {string} businessUnit references credentials from properties.json
     * @param {string} selectedType supported metadata type
     * @param {string[]} name name of the metadata
     * @param {string} market market which should be used to revert template
     * @returns {Promise.<MultiMetadataTypeList>} -
     */
    static retrieveAsTemplate(businessUnit: string, selectedType: string, name: string[], market: string): Promise<MultiMetadataTypeList>;
    /**
     * @param {string} businessUnit references credentials from properties.json
     * @param {TypeKeyCombo} typeKeyList limit retrieval to given metadata type
     * @returns {Promise.<TypeKeyCombo>} selected types including dependencies
     */
    static addDependentCbReferences(businessUnit: string, typeKeyList: TypeKeyCombo): Promise<TypeKeyCombo>;
    /**
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {TypeKeyCombo} typeKeyList limit retrieval to given metadata type
     * @returns {Promise.<TypeKeyCombo>} dependencies
     */
    static addDependencies(businessUnit: string, typeKeyList: TypeKeyCombo): Promise<TypeKeyCombo>;
    /**
     * Build a template based on a list of metadata files in the retrieve folder.
     *
     * @param {string} businessUnitTemplate references credentials from properties.json
     * @param {string} businessUnitDefinition references credentials from properties.json
     * @param {TypeKeyCombo} typeKeyCombo limit retrieval to given metadata type
     * @returns {Promise.<MultiMetadataTypeList | object>} response from buildDefinition
     */
    static clone(businessUnitTemplate: string, businessUnitDefinition: string, typeKeyCombo: TypeKeyCombo): Promise<MultiMetadataTypeList | object>;
    /**
     * Build a template based on a list of metadata files in the retrieve folder.
     *
     * @param {string} businessUnitTemplate references credentials from properties.json
     * @param {string} businessUnitDefinition references credentials from properties.json
     * @param {TypeKeyCombo} typeKeyCombo limit retrieval to given metadata type
     * @param {string[]} marketTemplate market localizations
     * @param {string[]} marketDefinition market localizations
     * @param {boolean} [bulk] runs buildDefinitionBulk instead of buildDefinition; requires marketList to be defined and given via marketDefinition
     * @param {BuildFilter} [filter] market list specific filter for buildTemplate
     * @returns {Promise.<MultiMetadataTypeList | object>} response from buildDefinition
     */
    static build(businessUnitTemplate: string, businessUnitDefinition: string, typeKeyCombo: TypeKeyCombo, marketTemplate: string[], marketDefinition: string[], bulk?: boolean, filter?: BuildFilter): Promise<MultiMetadataTypeList | object>;
    /**
     * Build a template based on a list of metadata files in the retrieve folder.
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string | TypeKeyCombo} selectedTypes limit retrieval to given metadata type
     * @param {string[] | undefined} keyArr customerkey of the metadata
     * @param {string[]} marketArr market localizations
     * @param {BuildFilter} [filter] market list specific filter
     * @returns {Promise.<MultiMetadataTypeList>} -
     */
    static buildTemplate(businessUnit: string, selectedTypes: string | TypeKeyCombo, keyArr: string[] | undefined, marketArr: string[], filter?: BuildFilter): Promise<MultiMetadataTypeList>;
    /**
     * helper for {@link buildTemplate} to apply include/exclude key filters
     *
     * @param {TypeKeyCombo | undefined} typeKeyList supported metadata type
     * @param {BuildFilter} filter market list specific filter for buildTemplate
     */
    static applyKeyFilters(typeKeyList: TypeKeyCombo | undefined, filter: BuildFilter): void;
    /**
     * Build a specific metadata file based on a template.
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {boolean} [alwaysAsk] by default this code only runs if --retrieve is set; this flag allows to always ask
     * @param {TypeKeyCombo} [selectedTypes] limit retrieval to given metadata type
     * @param {TypeKeyCombo} [defaultPlusTheseTypes] if we run build for a non-standard type we need to tell it what to download on top
     * @returns {Promise.<void>} -
     */
    static _reRetrieve(businessUnit: string, alwaysAsk?: boolean, selectedTypes?: TypeKeyCombo, defaultPlusTheseTypes?: TypeKeyCombo): Promise<void>;
    /**
     * Build a specific metadata file based on a template.
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string | TypeKeyCombo} selectedTypes limit retrieval to given metadata type
     * @param {string[] | undefined} nameArr name of the metadata
     * @param {string[]} marketArr market localizations
     * @returns {Promise.<MultiMetadataTypeList>} -
     */
    static buildDefinition(businessUnit: string, selectedTypes: string | TypeKeyCombo, nameArr: string[] | undefined, marketArr: string[]): Promise<MultiMetadataTypeList>;
    /**
     * Build a specific metadata file based on a template using a list of bu-market combos
     *
     * @param {string} listName name of list of BU-market combos
     * @param {string | TypeKeyCombo} selectedTypes supported metadata type
     * @param {string[]} [nameArr] name of the metadata
     * @returns {Promise.<object>} -
     */
    static buildDefinitionBulk(listName: string, selectedTypes: string | TypeKeyCombo, nameArr?: string[]): Promise<object>;
    /**
     *
     * @param {string} businessUnit references credentials from properties.json
     * @param {string} selectedType supported metadata type
     * @param {string[]} keyArr customerkey of the metadata
     * @returns {Promise.<string[]>} list of all files that need to be committed in a flat array ['path/file1.ext', 'path/file2.ext']
     */
    static getFilesToCommit(businessUnit: string, selectedType: string, keyArr: string[]): Promise<string[]>;
    /**
     * Publish an item
     *
     * @param {string} businessUnit name of BU
     * @param {string[] | TypeKeyCombo} selectedTypes limit to given metadata types
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static publish(businessUnit: string, selectedTypes: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * Publish an item
     *
     * @param {string} businessUnit name of BU
     * @param {string[] | TypeKeyCombo} selectedTypes limit to given metadata types
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static validate(businessUnit: string, selectedTypes: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * Start/execute an item
     *
     * @param {string} businessUnit name of BU
     * @param {string[] | TypeKeyCombo} selectedTypes limit to given metadata types
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static execute(businessUnit: string, selectedTypes: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * Schedule an item (shortcut for execute --schedule)
     *
     * @param {string} businessUnit name of BU
     * @param {string[] | TypeKeyCombo} selectedTypes limit to given metadata types
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static schedule(businessUnit: string, selectedTypes: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * pause an item
     *
     * @param {string} businessUnit name of BU
     * @param {string[] | TypeKeyCombo} selectedTypes limit to given metadata types
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static pause(businessUnit: string, selectedTypes: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * stop an item
     *
     * @param {string} businessUnit name of BU
     * @param {string[] | TypeKeyCombo} selectedTypes limit to given metadata types
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static stop(businessUnit: string, selectedTypes: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * stop an item
     *
     * @param {string} businessUnit name of BU
     * @param {TypeKeyCombo} selectedTypes limit to given metadata types
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static audit(businessUnit: string, selectedTypes: TypeKeyCombo): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * Updates the key to match the name field
     *
     * @param {string} businessUnit name of BU
     * @param {TypeKeyCombo | undefined} selectedTypesObj limit retrieval to given metadata type
     * @param {string} to what to replace with
     * @param {string[]} [fromList] what to replace
     * @returns {Promise.<Object.<string, object>>} key1: business unit name, key2:type value: list of fixed item keys
     */
    static replaceCbReference(businessUnit: string, selectedTypesObj: TypeKeyCombo | undefined, to: string, fromList?: string[]): Promise<{
        [x: string]: object;
    }>;
    /**
     * Updates the key to match the name field
     *
     * @param {string} businessUnit name of BU
     * @param {string[] | TypeKeyCombo} selectedTypes limit retrieval to given metadata type
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, object>>} key1: business unit name, key2:type value: list of fixed item keys
     */
    static fixKeys(businessUnit: string, selectedTypes: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: object;
    }>;
    /**
     * run a method across BUs
     *
     * @param {'schedule'|'execute'|'pause'|'stop'|'publish'|'validate'|'fixKeys'|'replaceCbReference'|'refresh'|'audit'} methodName what to run
     * @param {string} businessUnit name of BU
     * @param {string[] | TypeKeyCombo} [selectedTypes] limit to given metadata types
     * @param {string[]} [keys] customerkey of the metadata
     * @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
     */
    static "__#private@#runMethod"(methodName: "schedule" | "execute" | "pause" | "stop" | "publish" | "validate" | "fixKeys" | "replaceCbReference" | "refresh" | "audit", businessUnit: string, selectedTypes?: string[] | TypeKeyCombo, keys?: string[]): Promise<{
        [x: string]: {
            [x: string]: string[];
        };
    }>;
    /**
     * helper for Mcdev.#runMethod
     *
     * @param {'schedule'|'execute'|'pause'|'stop'|'publish'|'validate'|'fixKeys'|'replaceCbReference'|'refresh'|'audit'} methodName what to run
     * @param {string} cred name of Credential
     * @param {string} bu name of BU
     * @param {string} [type] limit execution to given metadata type
     * @param {string[]} [keyArr] customerkey of the metadata
     * @returns {Promise.<string[]>} list of keys that were affected
     */
    static "__#private@#runOnBU"(methodName: "schedule" | "execute" | "pause" | "stop" | "publish" | "validate" | "fixKeys" | "replaceCbReference" | "refresh" | "audit", cred: string, bu: string, type?: string, keyArr?: string[]): Promise<string[]>;
    /**
     * helper for Mcdev.#runOnBU
     *
     * @param {string} selectedType limit execution to given metadata type
     * @param {BuObject} buObject properties for auth
     * @returns {Promise.<string[]>} keyArr
     */
    static "__#private@#retrieveKeysWithLike"(selectedType: string, buObject: BuObject): Promise<string[]>;
    /**
     * Updates the key to match the name field
     *
     * @param {string} cred name of Credential
     * @param {string} bu name of BU
     * @param {string} type limit execution to given metadata type
     * @param {string[]} [keyArr] customerkey of the metadata
     * @returns {Promise.<string[]>} list of keys that were affected
     */
    static "__#private@#fixKeys"(cred: string, bu: string, type: string, keyArr?: string[]): Promise<string[]>;
    /**
     * Updates the key to match the name field
     *
     * @param {string} cred name of Credential
     * @param {string} bu name of BU
     * @param {string} type limit execution to given metadata type
     * @param {string[]} [keyArr] customerkey of the metadata
     * @returns {Promise.<string[]>} list of keys that were affected
     */
    static "__#private@#replaceCbReference"(cred: string, bu: string, type: string, keyArr?: string[]): Promise<string[]>;
    /**
     * helper to convert CSVs into an array. if only one value was given, it's also returned as an array
     *
     * @param {string|string[]|undefined} metadataOption potentially comma-separated value or null
     * @param {string[]} [allowedIdentifiers] 'key', 'id', 'name'
     * @param {boolean} [firstOnly] removes all but the first entry if enabled
     * @returns {TypeKeyCombo} values split into an array.
     */
    static metadataToTypeKey(metadataOption: string | string[] | undefined, allowedIdentifiers?: string[], firstOnly?: boolean): TypeKeyCombo;
}
//# sourceMappingURL=index.d.ts.map