1082815dcSEvan Baconimport { XMLObject } from '../utils/XML';
2*9b26454eSBartosz Kaszubowskiexport type ResourceGroupXML = {
3082815dcSEvan Bacon    $: {
4082815dcSEvan Bacon        name: string;
5082815dcSEvan Bacon        parent: string;
6082815dcSEvan Bacon    };
7082815dcSEvan Bacon    item: ResourceItemXML[];
8082815dcSEvan Bacon};
9*9b26454eSBartosz Kaszubowskiexport type ResourceXML = {
10082815dcSEvan Bacon    resources: {
11082815dcSEvan Bacon        $?: {
12082815dcSEvan Bacon            'xmlns:tools'?: string;
13082815dcSEvan Bacon        };
14082815dcSEvan Bacon        color?: ResourceItemXML[];
15082815dcSEvan Bacon        string?: ResourceItemXML[];
16082815dcSEvan Bacon        style?: ResourceGroupXML[];
17082815dcSEvan Bacon    };
18082815dcSEvan Bacon};
19*9b26454eSBartosz Kaszubowskiexport type ResourceItemXML = {
20082815dcSEvan Bacon    _: string;
21082815dcSEvan Bacon    $: {
22082815dcSEvan Bacon        name: string;
23082815dcSEvan Bacon        'tools:targetApi'?: string;
24082815dcSEvan Bacon        translatable?: string;
25082815dcSEvan Bacon    };
26082815dcSEvan Bacon};
27082815dcSEvan Bacon/**
28082815dcSEvan Bacon * Name of the resource folder.
29082815dcSEvan Bacon */
30*9b26454eSBartosz Kaszubowskiexport type ResourceKind = 'values' | 'values-night' | 'values-v23' | 'values-night-v23' | 'drawable';
31082815dcSEvan Bacon/**
32082815dcSEvan Bacon * Read an XML file while providing a default fallback for resource files.
33082815dcSEvan Bacon *
34082815dcSEvan Bacon * @param options path to the XML file, returns a fallback XML if the path doesn't exist.
35082815dcSEvan Bacon */
36082815dcSEvan Baconexport declare function readResourcesXMLAsync({ path, fallback, }: {
37082815dcSEvan Bacon    path: string;
38082815dcSEvan Bacon    fallback?: string | null;
39082815dcSEvan Bacon}): Promise<ResourceXML>;
40082815dcSEvan Bacon/**
41082815dcSEvan Bacon * Ensure the provided xml has a `resources` object (the expected shape).
42082815dcSEvan Bacon *
43082815dcSEvan Bacon * @param xml
44082815dcSEvan Bacon */
45082815dcSEvan Baconexport declare function ensureDefaultResourceXML(xml: XMLObject): ResourceXML;
46082815dcSEvan Bacon/**
47082815dcSEvan Bacon * Build a `ResourceItemXML` given its `name` and `value`. This makes things a bit more readable.
48082815dcSEvan Bacon *
49082815dcSEvan Bacon * - JSON: `{ $: { name }, _: value }`
50082815dcSEvan Bacon * - XML: `<item name="NAME">VALUE</item>`
51082815dcSEvan Bacon *
52082815dcSEvan Bacon * @param props name and value strings.
53082815dcSEvan Bacon */
54082815dcSEvan Baconexport declare function buildResourceItem({ name, value, targetApi, translatable, }: {
55082815dcSEvan Bacon    name: string;
56082815dcSEvan Bacon    value: string;
57082815dcSEvan Bacon    targetApi?: string;
58082815dcSEvan Bacon    translatable?: boolean;
59082815dcSEvan Bacon}): ResourceItemXML;
60082815dcSEvan Baconexport declare function buildResourceGroup(parent: {
61082815dcSEvan Bacon    name: string;
62082815dcSEvan Bacon    parent: string;
63082815dcSEvan Bacon    items?: ResourceItemXML[];
64082815dcSEvan Bacon}): ResourceGroupXML;
65082815dcSEvan Baconexport declare function findResourceGroup(xml: ResourceGroupXML[] | undefined, group: {
66082815dcSEvan Bacon    name: string;
67082815dcSEvan Bacon    parent?: string;
68082815dcSEvan Bacon}): ResourceGroupXML | null;
69082815dcSEvan Bacon/**
70082815dcSEvan Bacon * Helper to convert a basic XML object into a simple k/v pair.
71082815dcSEvan Bacon *
72082815dcSEvan Bacon * @param xml
73082815dcSEvan Bacon * @returns
74082815dcSEvan Bacon */
75082815dcSEvan Baconexport declare function getResourceItemsAsObject(xml: ResourceItemXML[]): Record<string, string> | null;
76082815dcSEvan Bacon/**
77082815dcSEvan Bacon * Helper to convert a basic k/v object to a ResourceItemXML array.
78082815dcSEvan Bacon *
79082815dcSEvan Bacon * @param xml
80082815dcSEvan Bacon * @returns
81082815dcSEvan Bacon */
82082815dcSEvan Baconexport declare function getObjectAsResourceItems(obj: Record<string, string>): ResourceItemXML[];
83082815dcSEvan Baconexport declare function getObjectAsResourceGroup(group: {
84082815dcSEvan Bacon    name: string;
85082815dcSEvan Bacon    parent: string;
86082815dcSEvan Bacon    item: Record<string, string>;
87082815dcSEvan Bacon}): ResourceGroupXML;
88