1/**
2 * Interface representing base build properties configuration.
3 */
4export interface PluginConfigType {
5    /**
6     * Interface representing available configuration for Android native build properties.
7     * @platform android
8     */
9    android?: PluginConfigTypeAndroid;
10    /**
11     * Interface representing available configuration for iOS native build properties.
12     * @platform ios
13     */
14    ios?: PluginConfigTypeIos;
15}
16/**
17 * Interface representing available configuration for Android native build properties.
18 * @platform android
19 */
20export interface PluginConfigTypeAndroid {
21    /**
22     * Enable React Native new architecture for Android platform.
23     */
24    newArchEnabled?: boolean;
25    /**
26     * Override the default `minSdkVersion` version number in **build.gradle**.
27     * */
28    minSdkVersion?: number;
29    /**
30     * Override the default `compileSdkVersion` version number in **build.gradle**.
31     */
32    compileSdkVersion?: number;
33    /**
34     * Override the default `targetSdkVersion` version number in **build.gradle**.
35     */
36    targetSdkVersion?: number;
37    /**
38     *  Override the default `buildToolsVersion` version number in **build.gradle**.
39     */
40    buildToolsVersion?: string;
41    /**
42     * Override the Kotlin version used when building the app.
43     */
44    kotlinVersion?: string;
45    /**
46     * Enable [Proguard or R8](https://developer.android.com/studio/build/shrink-code) in release builds to obfuscate Java code and reduce app size.
47     */
48    enableProguardInReleaseBuilds?: boolean;
49    /**
50     * Enable [`shrinkResources`](https://developer.android.com/studio/build/shrink-code#shrink-resources) in release builds to remove unused resources from the app.
51     * This property should be used in combination with `enableProguardInReleaseBuilds`.
52     */
53    enableShrinkResourcesInReleaseBuilds?: boolean;
54    /**
55     * Append custom [Proguard rules](https://www.guardsquare.com/manual/configuration/usage) to **android/app/proguard-rules.pro**.
56     */
57    extraProguardRules?: string;
58    /**
59     * Interface representing available configuration for Android Gradle plugin [PackagingOptions](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
60     */
61    packagingOptions?: PluginConfigTypeAndroidPackagingOptions;
62    /**
63     * By default, Flipper is enabled with the version that comes bundled with `react-native`.
64     *
65     * Use this to change the [Flipper](https://fbflipper.com/) version when
66     * running your app on Android. You can set the `flipper` property to a
67     * semver string and specify an alternate Flipper version.
68     */
69    flipper?: string;
70    /**
71     * Enable the Network Inspector.
72     *
73     * @default true
74     */
75    networkInspector?: boolean;
76    /**
77     * Add extra maven repositories to all gradle projects.
78     *
79     * This acts like to add the following code to **android/build.gradle**:
80     * ```groovy
81     * allprojects {
82     *   repositories {
83     *     maven {
84     *       url [THE_EXTRA_MAVEN_REPOSITORY]
85     *     }
86     *   }
87     * }
88     * ```
89     *
90     * @hide For the implementation details,
91     * this property is actually handled by `expo-modules-autolinking` but not the config-plugins inside expo-build-properties.
92     */
93    extraMavenRepos?: string[];
94    /**
95     * Indicates whether the app intends to use cleartext network traffic.
96     *
97     * @default false
98     *
99     * @see [Android documentation](https://developer.android.com/guide/topics/manifest/application-element#usesCleartextTraffic)
100     */
101    usesCleartextTraffic?: boolean;
102}
103/**
104 * Interface representing available configuration for iOS native build properties.
105 * @platform ios
106 */
107export interface PluginConfigTypeIos {
108    /**
109     * Enable React Native new architecture for iOS platform.
110     */
111    newArchEnabled?: boolean;
112    /**
113     * Override the default iOS "Deployment Target" version in the following projects:
114     *  - in CocoaPods projects,
115     *  - `PBXNativeTarget` with "com.apple.product-type.application" `productType` in the app project.
116     */
117    deploymentTarget?: string;
118    /**
119     * Enable [`use_frameworks!`](https://guides.cocoapods.org/syntax/podfile.html#use_frameworks_bang)
120     * in `Podfile` to use frameworks instead of static libraries for Pods.
121     *
122     * > You cannot use `useFrameworks` and `flipper` at the same time, and
123     * doing so will generate an error.
124     */
125    useFrameworks?: 'static' | 'dynamic';
126    /**
127     * Enable [Flipper](https://fbflipper.com/) when running your app on iOS in
128     * Debug mode. Setting `true` enables the default version of Flipper, while
129     * setting a semver string will enable a specific version of Flipper you've
130     * declared in your **package.json**. The default for this configuration is `false`.
131     *
132     * > You cannot use `flipper` at the same time as `useFrameworks`, and
133     * doing so will generate an error.
134     */
135    flipper?: boolean | string;
136    /**
137     * Enable the Network Inspector.
138     *
139     * @default true
140     */
141    networkInspector?: boolean;
142    /**
143     * Add extra CocoaPods dependencies for all targets.
144     *
145     * This acts like to add the following code to **ios/Podfile**:
146     * ```
147     * pod '[EXTRA_POD_NAME]', '~> [EXTRA_POD_VERSION]'
148     * # e.g.
149     * pod 'Protobuf', '~> 3.14.0'
150     * ```
151     *
152     * @hide For the implementation details,
153     * this property is actually handled by `expo-modules-autolinking` but not the config-plugins inside expo-build-properties.
154     */
155    extraPods?: ExtraIosPodDependency[];
156}
157/**
158 * Interface representing extra CocoaPods dependency.
159 * @see [Podfile syntax reference](https://guides.cocoapods.org/syntax/podfile.html#pod)
160 * @platform ios
161 */
162export interface ExtraIosPodDependency {
163    /**
164     * Name of the pod.
165     */
166    name: string;
167    /**
168     * Version of the pod.
169     * CocoaPods supports various [versioning options](https://guides.cocoapods.org/using/the-podfile.html#pod).
170     * @example `~> 0.1.2`
171     */
172    version?: string;
173    /**
174     * Build configurations for which the pod should be installed.
175     * @example `['Debug', 'Release']`
176     */
177    configurations?: string[];
178    /**
179     * Whether this pod should use modular headers.
180     */
181    modular_headers?: boolean;
182    /**
183     * Custom source to search for this dependency.
184     * @example `https://github.com/CocoaPods/Specs.git`
185     */
186    source?: string;
187    /**
188     * Custom local filesystem path to add the dependency.
189     * @example `~/Documents/AFNetworking`
190     */
191    path?: string;
192    /**
193     * Custom podspec path.
194     * @example `https://example.com/JSONKit.podspec`
195     */
196    podspec?: string;
197    /**
198     * Test specs can be optionally included via the :testspecs option. By default, none of a Pod's test specs are included.
199     * @example `['UnitTests', 'SomeOtherTests']`
200     */
201    testspecs?: string[];
202    /**
203     * Use the bleeding edge version of a Pod.
204     *
205     * @example
206     * ```
207     * { "name": "AFNetworking", "git": "https://github.com/gowalla/AFNetworking.git", "tag": "0.7.0" }
208     * ```
209     *
210     * This acts like to add this pod dependency statement:
211     * ```
212     * pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
213     * ```
214     */
215    git?: string;
216    /**
217     * The git branch to fetch. See the {@link git} property for more information.
218     */
219    branch?: string;
220    /**
221     * The git tag to fetch. See the {@link git} property for more information.
222     */
223    tag?: string;
224    /**
225     * The git commit to fetch. See the {@link git} property for more information.
226     */
227    commit?: string;
228}
229/**
230 * Interface representing available configuration for Android Gradle plugin [PackagingOptions](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
231 * @platform android
232 */
233export interface PluginConfigTypeAndroidPackagingOptions {
234    /**
235     * Array of patterns for native libraries where only the first occurrence is packaged in the APK.
236     */
237    pickFirst?: string[];
238    /**
239     * Array of patterns for native libraries that should be excluded from being packaged in the APK.
240     */
241    exclude?: string[];
242    /**
243     * Array of patterns for native libraries where all occurrences are concatenated and packaged in the APK.
244     */
245    merge?: string[];
246    /**
247     * Array of patterns for native libraries that should not be stripped of debug symbols.
248     */
249    doNotStrip?: string[];
250}
251/**
252 * @ignore
253 */
254export declare function validateConfig(config: any): PluginConfigType;
255