interface UserResourceSettingsUI extends LocalSettingsBaseUI {
    targetAPI: number;
    compressImages: boolean | string | CompressFormat | CompressFormat[];
    enabledMultiline: boolean;
    enabledViewModel: boolean;
    enabledIncludes: boolean;
    enabledFragment: boolean;
    enabledSubstitute: boolean;
    enabledCompose: boolean;
    convertPixels: ResolutionUnit;
    fontMeasureAdjust: number;
    lockElementSettings: boolean;
    createDownloadableFonts: boolean;
    manifestActivityName: string;
    manifestLabelAppName: string;
    manifestThemeName: string;
    manifestParentThemeName: string;
    createManifest: boolean;
    createBuildDependencies: boolean | ArrayOf<"ktx" | "baseline-profile" | "navigation" | "navigation-v3">;
    createResourceIds: string | string[] | undefined;
    outputMainFileName: string;
    outputFragmentFileName: string;
    baseLayoutAsFragment?: boolean | string | string[] | ExtensionFragmentElement;
    resourceSystemColors?: ObjectMap<string | [string, number] | ColorRGB>;
    dataBindableElements?: ExtensionViewModelElement[];
    includableElements?: ExtensionIncludeElement[];
    substitutableElements?: ExtensionSubstituteElement[];
    fragmentableElements?: Array<string | ExtensionFragmentElement>;
    composableElements?: Array<string | ExtensionComposeViewElement>;
    resolutionDPI?: number;
    resourceQualifier?: string | ResourceQualifierMap;
    convertImages?: string;
    convertLineHeight?: ResolutionUnit;
    baseLayoutToolsIgnore?: string;
    manifestPackage?: string;
}

interface ControllerSettingsUI {
    filename: {
        string: string;
        integer: string;
        fraction: string;
        array: string;
        stringArray: string;
        integerArray: string;
        color: string;
        style: string;
        dimen: string;
        theme: string;
        id: string;
    };
    values: {
        manifestApplicationLabel: string;
        fontProviderResourceName: string;
    };
}

interface ControllerSettingsDirectoryUI {
    integer: string;
    fraction: string;
    array: string;
    color: string;
    dimension: string;
    style: string;
    theme: string;
    id: string;
    animation: string;
    menu: string;
}

interface ControllerSettingsStyleUI {
    progressOrientation: string;
}

interface ControllerSettingsDeviationsUI {
    legendBottomOffset: number;
}

interface RenderSpaceAttribute extends ViewAttribute, Partial<Dimension<string>> {
    column?: number;
    columnSpan?: number;
    row?: number;
    rowSpan?: number;
}

interface RenderNodeStaticAttribute extends Partial<Dimension<string>> {
    containerType?: number;
    controlName?: string;
    controlId?: string;
    content?: string;
}

interface GroupAttribute {
    name: string;
    parent: string;
}

interface StyleAttribute extends GroupAttribute {
    items: StringValue[];
}

interface ThemeAttribute extends GroupAttribute {
    items: StringMap;
    output?: PathInfo;
}

interface SupportedResult {
    namespace?: string;
    attr?: string;
    value?: string;
    modified?: boolean;
}

type CustomizationResult<T> = (this: T, result: SupportedResult, api: number, value: string) => boolean;
type DependencyNameMap = ObjectMap<DependencyVersion>;