/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
// noinspection JSUnusedGlobalSymbols

/** Declaration file generated by dts-gen */

declare module 'xcode/lib/pbxFile' {
  class pbxFile {
    constructor(filepath, opt): any;
  }
  export default pbxFile as any;
}
declare module 'xcode' {
  export function project(filePath: string): XcodeProjectType;
  export class XcodeProjectType {
    constructor(filename: any);

    addBuildPhase(
      filePathsArray: any,
      buildPhaseType: any,
      comment: any,
      target: any,
      optionsOrFolderType?: any,
      subfolderPath?: any
    ): any;

    addBuildProperty(prop: any, value: any, build_name: any): void;

    addCopyfile(fpath: any, opt: any): any;

    addDataModelDocument(filePath: any, group: any, opt: any): any;

    addFile(path: any, group: any, opt: any): any;

    addFramework(fpath: any, opt?: any): any;

    addHeaderFile(path: any, opt: any, group: any): any;

    addKnownRegion(name: any): void;

    addLocalizationVariantGroup(name: any): any;

    addPbxGroup(
      filePathsArray: any,
      name: any,
      path: any,
      sourceTree?: any
    ): any;

    addPluginFile(path: any, opt: any): any;

    addProductFile(targetPath: any, opt: any): any;

    addResourceFile(path: any, opt: any, group: any): any;

    addSourceFile(path: any, opt: any, group: any): any;

    addExtensionSourceFile(path: any, opt: any, group: any): any;

    addExtensionResourceFile(path: any, opt: any, group: any): any;

    addExtensionLocalizationVariantGroup(name: string, target: string): any;

    addStaticLibrary(path: any, opt: any): any;

    addTarget(name: any, type: any, subfolder: any, bundleId: any): any;

    addExtensionTarget(
      name: any,
      type: any,
      subfolder: any,
      opts: any
    ): { uuid: string };

    addTargetAttribute(prop: any, value: any, target: any): void;

    addTargetDependency(target: any, dependencyTargets: any): any;

    addToBuildSettings(buildSetting: any, value: any): void;

    addToFrameworkSearchPaths(file: any): void;

    addToFrameworksPbxGroup(file: any): void;

    addToHeaderSearchPaths(file: any): void;

    addToLibrarySearchPaths(file: any): void;

    addToOtherLinkerFlags(flag: any): void;

    addToPbxBuildFileSection(file: any): void;

    addToPbxCopyfilesBuildPhase(file: any): void;

    addToPbxEmbedFrameworksBuildPhase(file: any): void;

    addToPbxFileReferenceSection(file: any): void;

    addToPbxFrameworksBuildPhase(file: any): void;

    addToPbxGroup(file: any, groupKey: any): void;

    addToPbxGroupType(file: any, groupKey: any, groupType: any): void;

    addToPbxNativeTargetSection(target: any): void;

    addToPbxProjectSection(target: any): void;

    addToPbxResourcesBuildPhase(file: any): void;

    addToPbxSourcesBuildPhase(file: any): void;

    addToPbxVariantGroup(file: any, groupKey: any): void;

    addToPluginsPbxGroup(file: any): void;

    addToProductsPbxGroup(file: any): void;

    addToResourcesPbxGroup(file: any): void;

    addToXcVersionGroupSection(file: any): any;

    addXCConfigurationList(
      configurationObjectsArray: any,
      defaultConfigurationName: any,
      comment: any
    ): any;

    allUuids(): any;

    buildPhase(group: any, target: any): any;

    buildPhaseObject(name: any, group: any, target: any): any;

    findPBXGroupKey(criteria: any): any;

    findPBXGroupKeyAndType(criteria: any, groupType: any): any;

    findPBXGroupKeyByAny(nameOrPath: string): any;

    findPBXVariantGroupKey(criteria: any): any;

    findTargetKey(name: any): any;

    generateUuid(): any;

    getBuildConfigByName(name: any): any;

    getBuildProperty(prop: any, build: any, targetName: any): string;

    getBuildPropertyByTarget(prop: any, build: any, target: any): any;

    getFirstProject(): any;

    getFirstTarget(): any;

    getPBXGroupByKey(key: any): GroupObject;

    getPBXGroupByKeyAndType(key: any, groupType: any): any;

    getPBXObject(name: any): any;

    getPBXVariantGroupByKey(key: any): any;

    getTarget(productType: any): any;

    hasFile(filePath: any): any;

    hasKnownRegion(name: any): any;

    parse(cb: any): any;

    parseSync(): any;

    pbxBuildFileSection(): any;

    pbxCopyfilesBuildPhaseObj(target: any): any;

    pbxCreateGroup(name: any, pathName: any): any;

    pbxCreateGroupWithType(name: any, pathName: any, groupType: any): any;

    pbxCreateVariantGroup(name: any): any;

    pbxEmbedFrameworksBuildPhaseObj(target: any): any;

    pbxFileReferenceSection(): any;

    pbxFrameworksBuildPhaseObj(target: any): any;

    pbxGroupByName(name: any): any;

    pbxItemByComment(name: any, pbxSectionName: any): any;

    pbxNativeTargetSection(): any;

    pbxProjectSection(): any;

    pbxResourcesBuildPhaseObj(target: any): any;

    pbxSourcesBuildPhaseObj(target: any): any;

    pbxTargetByName(name: any): any;

    pbxXCBuildConfigurationSection(): any;

    pbxXCConfigurationList(): any;

    removeBuildProperty(prop: any, build_name: any): void;

    removeCopyfile(fpath: any, opt: any): any;

    removeFile(path: any, group: any, opt: any): any;

    removeFramework(fpath: any, opt: any): any;

    removeFromBuildSettings(buildSetting: any): void;

    removeFromFrameworkSearchPaths(file: any): any;

    removeFromFrameworksPbxGroup(file: any): any;

    removeFromHeaderSearchPaths(file: any): any;

    removeFromLibrarySearchPaths(file: any): any;

    removeFromOtherLinkerFlags(flag: any): any;

    removeFromPbxBuildFileSection(file: any): void;

    removeFromPbxCopyfilesBuildPhase(file: any): void;

    removeFromPbxEmbedFrameworksBuildPhase(file: any): void;

    removeFromPbxFileReferenceSection(file: any): any;

    removeFromPbxFrameworksBuildPhase(file: any): void;

    removeFromPbxGroup(file: any, groupKey: any): void;

    removeFromPbxGroupAndType(file: any, groupKey: any, groupType: any): void;

    removeFromPbxResourcesBuildPhase(file: any): void;

    removeFromPbxSourcesBuildPhase(file: any): void;

    removeFromPbxVariantGroup(file: any, groupKey: any): void;

    removeFromPluginsPbxGroup(file: any): any;

    removeFromProductsPbxGroup(file: any): any;

    removeFromResourcesPbxGroup(file: any): any;

    removeHeaderFile(path: any, opt: any, group: any): any;

    removeKnownRegion(name: any): void;

    removePbxGroup(groupName: any): void;

    removePluginFile(path: any, opt: any): any;

    removeProductFile(path: any, opt: any): any;

    removeResourceFile(path: any, opt: any, group: any): any;

    removeSourceFile(path: any, opt: any, group: any): any;

    removeTargetAttribute(prop: any, target: any): void;

    updateBuildProperty(
      prop: any,
      value: any,
      build: any,
      targetName: any
    ): void;

    updateBuildPropertyByTarget(
      prop: any,
      value: any,
      build: any,
      target: any
    ): void;

    updateProductName(name: any): void;

    writeSync(options?: any): string;

    xcVersionGroupSection(): any;
  }

  export interface GroupObject {
    name: string;
    path: string;
    children: { comment: string; value: string }[];
  }
}
