/**
 * Autogenerated by Thrift
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */

package test.fixtures.interactions;

import com.facebook.thrift.client.*;
import java.util.*;

public class InteractWithSharedAsyncReactiveWrapper 
    implements InteractWithShared.Reactive {
    private final InteractWithShared.Async _delegate;

    public InteractWithSharedAsyncReactiveWrapper(InteractWithShared.Async _delegate) {
        
        this._delegate = _delegate;
    }

    @java.lang.Override
    public void dispose() {
        _delegate.close();
    }

    @java.lang.Override
    public reactor.core.publisher.Mono<test.fixtures.another_interactions.DoSomethingResult> doSomeSimilarThings() {
        return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegate.doSomeSimilarThings());
    }

    public class MyInteractionImpl implements MyInteraction {
        private InteractWithShared.Async.MyInteraction _delegateInteraction;

        MyInteractionImpl(InteractWithShared.Async.MyInteraction delegateInteraction) {
            this._delegateInteraction = delegateInteraction;
        }

        public reactor.core.publisher.Mono<Integer> frobnicate() {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.frobnicate());
        }

        public reactor.core.publisher.Mono<Integer> frobnicate(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.frobnicate( rpcOptions));
        }

        public reactor.core.publisher.Mono<ResponseWrapper<Integer>> frobnicateWrapper(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.frobnicateWrapper( rpcOptions));
        }

        public reactor.core.publisher.Mono<Void> ping() {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.ping());
        }

        public reactor.core.publisher.Mono<Void> ping(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.ping( rpcOptions));
        }

        public reactor.core.publisher.Mono<ResponseWrapper<Void>> pingWrapper(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.pingWrapper( rpcOptions));
        }

        @java.lang.Override
        public reactor.core.publisher.Flux<Boolean> truthify() {
            throw new UnsupportedOperationException();
        }

        @java.lang.Override
        public void dispose() {
            _delegateInteraction.close();
        }
    }

    public MyInteraction createMyInteraction() {
        return new MyInteractionImpl(_delegate.createMyInteraction());
    }

    public class SharedInteractionImpl implements SharedInteraction {
        private InteractWithShared.Async.SharedInteraction _delegateInteraction;

        SharedInteractionImpl(InteractWithShared.Async.SharedInteraction delegateInteraction) {
            this._delegateInteraction = delegateInteraction;
        }

        public reactor.core.publisher.Mono<Integer> init() {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.init());
        }

        public reactor.core.publisher.Mono<Integer> init(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.init( rpcOptions));
        }

        public reactor.core.publisher.Mono<ResponseWrapper<Integer>> initWrapper(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.initWrapper( rpcOptions));
        }

        public reactor.core.publisher.Mono<test.fixtures.another_interactions.DoSomethingResult> doSomething() {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.doSomething());
        }

        public reactor.core.publisher.Mono<test.fixtures.another_interactions.DoSomethingResult> doSomething(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.doSomething( rpcOptions));
        }

        public reactor.core.publisher.Mono<ResponseWrapper<test.fixtures.another_interactions.DoSomethingResult>> doSomethingWrapper(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.doSomethingWrapper( rpcOptions));
        }

        public reactor.core.publisher.Mono<Void> tearDown() {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.tearDown());
        }

        public reactor.core.publisher.Mono<Void> tearDown(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.tearDown( rpcOptions));
        }

        public reactor.core.publisher.Mono<ResponseWrapper<Void>> tearDownWrapper(RpcOptions rpcOptions) {
            return com.facebook.thrift.util.FutureUtil.toMono(() -> _delegateInteraction.tearDownWrapper( rpcOptions));
        }

        @java.lang.Override
        public void dispose() {
            _delegateInteraction.close();
        }
    }

    public SharedInteraction createSharedInteraction() {
        return new SharedInteractionImpl(_delegate.createSharedInteraction());
    }
}
