import { DataProvider, DataFilter } from '@oracle/oraclejet/ojdataprovider'; import { OjWebElement } from '../elements'; type FilterFlags = { [Key in keyof Base]: Base[Key] extends Condition ? Key : never; }; type AllowedNames = FilterFlags[keyof Base]; type SubType = Pick>; /** * Get the key for the record filtered by filterDef. If exactly one record is * found after filtering is applied, the key of that record is returned. * An error is thrown if, after filtering: * - no records are found * - more than one record is found * If the property identified by dataProviderProp doesn't exist or is not a DataProvider, * an error will be also thrown. * @typeParam E - Custom element type * @typeParam K - Type of key value * @typeParam DataProviderProps - Type representing DataProvider-valued properties of the custom element type * @param el The OjWebElement whose properties reference the DataProvider * @param dataProviderProp The property name within the element identifying the DataProvider * @param filterDef A [FilterDef](https://www.oracle.com/webfolder/technetwork/jet/jsdocs/DataFilter.html#FilterDef) * used to locate the record within the DataProvider * @return {K} The key of the matching record * * #### Example Usage * Fetch a key from a SelectSingle DataProvider by filtering for a DepartmentName * ```javascript * import { fetchKeyByFilter } from '@oracle/oraclejet-webdriver'; * import { ojSelectSingle as JetSelectSingle } from '@oracle/oraclejet/ojselectsingle'; * const ss1 = await ojSelectSingle(driver, By.id('department-select')); * const key = fetchKeyByFilter,string>(ss1, 'data', { * op: '$eq', * value: { DepartmentName: 'Finance' } * }); * await ss1.changeValue(key); * ``` */ export declare function fetchKeyByFilter>>(el: OjWebElement, dataProviderProp: DataProviderProps, filterDef: DataFilter.FilterDef): Promise; export {};