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