/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

    package com.ywt.gapi.base.wechat;

import org.apache.dubbo.common.stream.StreamObserver;
import com.google.protobuf.Message;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.concurrent.CompletableFuture;

public interface WeChatService extends org.apache.dubbo.rpc.model.DubboStub {

    String JAVA_SERVICE_NAME = "com.ywt.gapi.base.wechat.WeChatService";
    String SERVICE_NAME = "com.ywt.gapi.base.wechat.WeChatService";

        /**
         * <pre>
         * 换取access_token的票据
         * </pre>
         */
    com.ywt.gapi.base.wechat.GetUserInfoByCodeResponse getUserInfoByCode(com.ywt.gapi.base.wechat.GetUserInfoByCodeRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetUserInfoByCodeResponse> getUserInfoByCodeAsync(com.ywt.gapi.base.wechat.GetUserInfoByCodeRequest request){
        return CompletableFuture.completedFuture(getUserInfoByCode(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getUserInfoByCode(com.ywt.gapi.base.wechat.GetUserInfoByCodeRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetUserInfoByCodeResponse> responseObserver){
        getUserInfoByCodeAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

        /**
         * <pre>
         * 终端类型
         * </pre>
         */
    com.ywt.gapi.base.wechat.GetAccessTokenResponse getAccessToken(com.ywt.gapi.base.wechat.GetAccessTokenRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetAccessTokenResponse> getAccessTokenAsync(com.ywt.gapi.base.wechat.GetAccessTokenRequest request){
        return CompletableFuture.completedFuture(getAccessToken(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getAccessToken(com.ywt.gapi.base.wechat.GetAccessTokenRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetAccessTokenResponse> responseObserver){
        getAccessTokenAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse sendOfficialTplMsg(com.ywt.gapi.base.wechat.SendOfficialTplMsgRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse> sendOfficialTplMsgAsync(com.ywt.gapi.base.wechat.SendOfficialTplMsgRequest request){
        return CompletableFuture.completedFuture(sendOfficialTplMsg(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void sendOfficialTplMsg(com.ywt.gapi.base.wechat.SendOfficialTplMsgRequest request, StreamObserver<com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse> responseObserver){
        sendOfficialTplMsgAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.GetWxImageConfigResponse getWxImageConfig(com.ywt.gapi.base.wechat.GetWxImageConfigRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetWxImageConfigResponse> getWxImageConfigAsync(com.ywt.gapi.base.wechat.GetWxImageConfigRequest request){
        return CompletableFuture.completedFuture(getWxImageConfig(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getWxImageConfig(com.ywt.gapi.base.wechat.GetWxImageConfigRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetWxImageConfigResponse> responseObserver){
        getWxImageConfigAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.SendSubscribeCustomMsgResponse sendSubscribeCustomMsg(com.ywt.gapi.base.wechat.SendSubscribeCustomMsgRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.SendSubscribeCustomMsgResponse> sendSubscribeCustomMsgAsync(com.ywt.gapi.base.wechat.SendSubscribeCustomMsgRequest request){
        return CompletableFuture.completedFuture(sendSubscribeCustomMsg(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void sendSubscribeCustomMsg(com.ywt.gapi.base.wechat.SendSubscribeCustomMsgRequest request, StreamObserver<com.ywt.gapi.base.wechat.SendSubscribeCustomMsgResponse> responseObserver){
        sendSubscribeCustomMsgAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.CreateQrCodeResponse createQrCode(com.ywt.gapi.base.wechat.CreateQrCodeRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.CreateQrCodeResponse> createQrCodeAsync(com.ywt.gapi.base.wechat.CreateQrCodeRequest request){
        return CompletableFuture.completedFuture(createQrCode(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void createQrCode(com.ywt.gapi.base.wechat.CreateQrCodeRequest request, StreamObserver<com.ywt.gapi.base.wechat.CreateQrCodeResponse> responseObserver){
        createQrCodeAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.CreateQrCodeStrSceneResponse createQrCodeStrScene(com.ywt.gapi.base.wechat.CreateQrCodeStrSceneRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.CreateQrCodeStrSceneResponse> createQrCodeStrSceneAsync(com.ywt.gapi.base.wechat.CreateQrCodeStrSceneRequest request){
        return CompletableFuture.completedFuture(createQrCodeStrScene(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void createQrCodeStrScene(com.ywt.gapi.base.wechat.CreateQrCodeStrSceneRequest request, StreamObserver<com.ywt.gapi.base.wechat.CreateQrCodeStrSceneResponse> responseObserver){
        createQrCodeStrSceneAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.CreateQrCodeLimitResponse createQrCodeLimit(com.ywt.gapi.base.wechat.CreateQrCodeLimitRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.CreateQrCodeLimitResponse> createQrCodeLimitAsync(com.ywt.gapi.base.wechat.CreateQrCodeLimitRequest request){
        return CompletableFuture.completedFuture(createQrCodeLimit(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void createQrCodeLimit(com.ywt.gapi.base.wechat.CreateQrCodeLimitRequest request, StreamObserver<com.ywt.gapi.base.wechat.CreateQrCodeLimitResponse> responseObserver){
        createQrCodeLimitAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.CreateQrCodeLimitStrSceneResponse createQrCodeLimitStrScene(com.ywt.gapi.base.wechat.CreateQrCodeLimitStrSceneRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.CreateQrCodeLimitStrSceneResponse> createQrCodeLimitStrSceneAsync(com.ywt.gapi.base.wechat.CreateQrCodeLimitStrSceneRequest request){
        return CompletableFuture.completedFuture(createQrCodeLimitStrScene(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void createQrCodeLimitStrScene(com.ywt.gapi.base.wechat.CreateQrCodeLimitStrSceneRequest request, StreamObserver<com.ywt.gapi.base.wechat.CreateQrCodeLimitStrSceneResponse> responseObserver){
        createQrCodeLimitStrSceneAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.GetOpenIdByCodeResponse getOpenIdByCode(com.ywt.gapi.base.wechat.GetOpenIdByCodeRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetOpenIdByCodeResponse> getOpenIdByCodeAsync(com.ywt.gapi.base.wechat.GetOpenIdByCodeRequest request){
        return CompletableFuture.completedFuture(getOpenIdByCode(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getOpenIdByCode(com.ywt.gapi.base.wechat.GetOpenIdByCodeRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetOpenIdByCodeResponse> responseObserver){
        getOpenIdByCodeAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.GetAccessTokenResponse getAccessTokenByAppId(com.ywt.gapi.base.wechat.GetAccessTokenByAppIdRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetAccessTokenResponse> getAccessTokenByAppIdAsync(com.ywt.gapi.base.wechat.GetAccessTokenByAppIdRequest request){
        return CompletableFuture.completedFuture(getAccessTokenByAppId(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getAccessTokenByAppId(com.ywt.gapi.base.wechat.GetAccessTokenByAppIdRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetAccessTokenResponse> responseObserver){
        getAccessTokenByAppIdAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse sendOfficialTemplateMsgByAppId(com.ywt.gapi.base.wechat.SendOfficialTplMsgByAppIdRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse> sendOfficialTemplateMsgByAppIdAsync(com.ywt.gapi.base.wechat.SendOfficialTplMsgByAppIdRequest request){
        return CompletableFuture.completedFuture(sendOfficialTemplateMsgByAppId(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void sendOfficialTemplateMsgByAppId(com.ywt.gapi.base.wechat.SendOfficialTplMsgByAppIdRequest request, StreamObserver<com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse> responseObserver){
        sendOfficialTemplateMsgByAppIdAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.SendCustomMessageResponse sendCustomMessage(com.ywt.gapi.base.wechat.SendCustomMessageRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.SendCustomMessageResponse> sendCustomMessageAsync(com.ywt.gapi.base.wechat.SendCustomMessageRequest request){
        return CompletableFuture.completedFuture(sendCustomMessage(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void sendCustomMessage(com.ywt.gapi.base.wechat.SendCustomMessageRequest request, StreamObserver<com.ywt.gapi.base.wechat.SendCustomMessageResponse> responseObserver){
        sendCustomMessageAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.GetAppIdByInternalTerminalResponse getAppIdByInternalTerminal(com.ywt.gapi.base.wechat.GetAppIdByInternalTerminalRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetAppIdByInternalTerminalResponse> getAppIdByInternalTerminalAsync(com.ywt.gapi.base.wechat.GetAppIdByInternalTerminalRequest request){
        return CompletableFuture.completedFuture(getAppIdByInternalTerminal(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getAppIdByInternalTerminal(com.ywt.gapi.base.wechat.GetAppIdByInternalTerminalRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetAppIdByInternalTerminalResponse> responseObserver){
        getAppIdByInternalTerminalAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.GetUserInfoByCodeForWxMpResponse getUserInfoByCodeForWxMp(com.ywt.gapi.base.wechat.GetUserInfoByCodeForWxMpRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetUserInfoByCodeForWxMpResponse> getUserInfoByCodeForWxMpAsync(com.ywt.gapi.base.wechat.GetUserInfoByCodeForWxMpRequest request){
        return CompletableFuture.completedFuture(getUserInfoByCodeForWxMp(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getUserInfoByCodeForWxMp(com.ywt.gapi.base.wechat.GetUserInfoByCodeForWxMpRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetUserInfoByCodeForWxMpResponse> responseObserver){
        getUserInfoByCodeForWxMpAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

        /**
         * <pre>
         *  小程序获取解密的敏感数据
         * </pre>
         */
    com.ywt.gapi.base.wechat.GetWxMpDecryptedDataResponse getWxMpDecryptedData(com.ywt.gapi.base.wechat.GetWxMpDecryptedDataRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetWxMpDecryptedDataResponse> getWxMpDecryptedDataAsync(com.ywt.gapi.base.wechat.GetWxMpDecryptedDataRequest request){
        return CompletableFuture.completedFuture(getWxMpDecryptedData(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getWxMpDecryptedData(com.ywt.gapi.base.wechat.GetWxMpDecryptedDataRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetWxMpDecryptedDataResponse> responseObserver){
        getWxMpDecryptedDataAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

        /**
         * <pre>
         * 根据code拉取用户信息
         * </pre>
         */
    com.ywt.gapi.base.wechat.GetUserInfoByOpenIdResponse getUserInfoByOpenId(com.ywt.gapi.base.wechat.GetUserInfoByOpenIdRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetUserInfoByOpenIdResponse> getUserInfoByOpenIdAsync(com.ywt.gapi.base.wechat.GetUserInfoByOpenIdRequest request){
        return CompletableFuture.completedFuture(getUserInfoByOpenId(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getUserInfoByOpenId(com.ywt.gapi.base.wechat.GetUserInfoByOpenIdRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetUserInfoByOpenIdResponse> responseObserver){
        getUserInfoByOpenIdAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

        /**
         * <pre>
         *  通过terminal发送公众号模板消息
         * </pre>
         */
    com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse sendOfficialTemplateMsgByTerminal(com.ywt.gapi.base.wechat.SendOfficialTemplateMsgByTerminalRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse> sendOfficialTemplateMsgByTerminalAsync(com.ywt.gapi.base.wechat.SendOfficialTemplateMsgByTerminalRequest request){
        return CompletableFuture.completedFuture(sendOfficialTemplateMsgByTerminal(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void sendOfficialTemplateMsgByTerminal(com.ywt.gapi.base.wechat.SendOfficialTemplateMsgByTerminalRequest request, StreamObserver<com.ywt.gapi.base.wechat.SendOfficialTplMsgResponse> responseObserver){
        sendOfficialTemplateMsgByTerminalAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

        /**
         * <pre>
         * 根据终端类型发送小程序模板消息（旧）
         * </pre>
         */
    com.ywt.gapi.base.wechat.SendMPTemplateMsgByTerminalResponse sendMPTemplateMsgByTerminal(com.ywt.gapi.base.wechat.SendMPTemplateMsgByTerminalRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.SendMPTemplateMsgByTerminalResponse> sendMPTemplateMsgByTerminalAsync(com.ywt.gapi.base.wechat.SendMPTemplateMsgByTerminalRequest request){
        return CompletableFuture.completedFuture(sendMPTemplateMsgByTerminal(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void sendMPTemplateMsgByTerminal(com.ywt.gapi.base.wechat.SendMPTemplateMsgByTerminalRequest request, StreamObserver<com.ywt.gapi.base.wechat.SendMPTemplateMsgByTerminalResponse> responseObserver){
        sendMPTemplateMsgByTerminalAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

    com.ywt.gapi.base.wechat.DecryptWxAppDataResponse decryptWxAppData(com.ywt.gapi.base.wechat.DecryptWxAppDataRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.DecryptWxAppDataResponse> decryptWxAppDataAsync(com.ywt.gapi.base.wechat.DecryptWxAppDataRequest request){
        return CompletableFuture.completedFuture(decryptWxAppData(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void decryptWxAppData(com.ywt.gapi.base.wechat.DecryptWxAppDataRequest request, StreamObserver<com.ywt.gapi.base.wechat.DecryptWxAppDataResponse> responseObserver){
        decryptWxAppDataAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

        /**
         * <pre>
         * 根据终端类型发送小程序订阅消息（新）
         * </pre>
         */
    com.ywt.gapi.base.wechat.SendMPSubscribeMsgByTerminalResponse sendMPSubscribeMsgByTerminal(com.ywt.gapi.base.wechat.SendMPSubscribeMsgByTerminalRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.SendMPSubscribeMsgByTerminalResponse> sendMPSubscribeMsgByTerminalAsync(com.ywt.gapi.base.wechat.SendMPSubscribeMsgByTerminalRequest request){
        return CompletableFuture.completedFuture(sendMPSubscribeMsgByTerminal(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void sendMPSubscribeMsgByTerminal(com.ywt.gapi.base.wechat.SendMPSubscribeMsgByTerminalRequest request, StreamObserver<com.ywt.gapi.base.wechat.SendMPSubscribeMsgByTerminalResponse> responseObserver){
        sendMPSubscribeMsgByTerminalAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }

        /**
         * <pre>
         *  获取网页授权access_token
         * </pre>
         */
    com.ywt.gapi.base.wechat.GetWxWebAccessTokenResponse getWxWebAccessToken(com.ywt.gapi.base.wechat.GetWxWebAccessTokenRequest request);

    default CompletableFuture<com.ywt.gapi.base.wechat.GetWxWebAccessTokenResponse> getWxWebAccessTokenAsync(com.ywt.gapi.base.wechat.GetWxWebAccessTokenRequest request){
        return CompletableFuture.completedFuture(getWxWebAccessToken(request));
    }

    /**
    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
    */
    default void getWxWebAccessToken(com.ywt.gapi.base.wechat.GetWxWebAccessTokenRequest request, StreamObserver<com.ywt.gapi.base.wechat.GetWxWebAccessTokenResponse> responseObserver){
        getWxWebAccessTokenAsync(request).whenComplete((r, t) -> {
            if (t != null) {
                responseObserver.onError(t);
            } else {
                responseObserver.onNext(r);
                responseObserver.onCompleted();
            }
        });
    }






}
