/** * Copyright (c) Facebook, Inc. and its 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( 'SampleTurboModuleNullableAndOptional', ): Spec);