/**
* This file and any referenced files were automatically generated by @hyperweb/telescope@1.17.4
* DO NOT MODIFY BY HAND. Instead, download the latest proto files for your chain
* and run the transpile command or npm scripts command that is used to regenerate this bundle.
*/
import { ITxArgs, EndpointOrRpc } from './helper-func-types';
import { ISigningClient } from "@interchainjs/cosmos/types/signing-client";
import { StdFee, DeliverTxResponse } from './types';
import { UseQueryOptions, UseMutationOptions, QueryKey } from '@tanstack/vue-query';
import { HttpEndpoint } from "@interchainjs/types";
import { Rpc as ProtobufRpcClient } from "./helpers";
import { Ref } from 'vue';
export declare const DEFAULT_RPC_CLIENT_QUERY_KEY = "rpcClient";
export declare const DEFAULT_RPC_ENDPOINT_QUERY_KEY = "rpcEndPoint";
export declare const DEFAULT_SIGNING_CLIENT_QUERY_KEY = "signingClient";
export interface CacheResolver {
    rpcEndpoint?: string | HttpEndpoint;
    clientQueryKey?: string;
}
export declare function isCacheResolver(resolver: unknown): resolver is CacheResolver;
export interface VueQueryParams<TResponse, TData = TResponse> {
    options?: UseQueryOptions<TResponse, Error, TData>;
}
export interface UseRpcClientQuery<TData> extends VueQueryParams<ProtobufRpcClient, TData> {
    clientResolver?: CacheResolver;
}
export interface UseRpcEndpointQuery<TData> extends VueQueryParams<string | HttpEndpoint, TData> {
    getter: () => Promise<string | HttpEndpoint>;
    rpcEndPointKey?: string;
    extraKey?: string;
}
export declare function useRpcEndpoint<TData = string | HttpEndpoint>({ getter, options, rpcEndPointKey, extraKey, }: UseRpcEndpointQuery<TData>): import("@tanstack/vue-query").UseQueryReturnType<TData, Error>;
export declare function useRpcClient<TData = ProtobufRpcClient>({ options, clientResolver, }: UseRpcClientQuery<TData>): import("@tanstack/vue-query").UseQueryReturnType<TData, Error>;
export interface UseQueryBuilderOptions<TReq, TRes> {
    builderQueryFn: (client: EndpointOrRpc, request: TReq) => Promise<TRes>;
    queryKeyPrefix: string;
}
export declare function buildUseVueQuery<TReq, TRes>(opts: UseQueryBuilderOptions<TReq, TRes>): <TData = TRes>({ request, options, clientResolver, customizedQueryKey, }: UseQueryParams<TReq, TRes, TData>) => import("@tanstack/vue-query").UseQueryReturnType<TData, Error>;
export interface UseQueryParams<TReq, TRes, TData = TRes> extends VueQueryParams<TRes, TData> {
    request: Ref<TReq>;
    clientResolver?: CacheResolver | EndpointOrRpc;
    customizedQueryKey?: QueryKey;
}
export interface VueMutationParams<TData, TError, TVariables, TContext = unknown> {
    options?: UseMutationOptions<TData, TError, TVariables, TContext>;
    clientResolver?: CacheResolver | ISigningClient;
}
export interface UseMutationBuilderOptions<TMsg> {
    builderMutationFn: (client: ISigningClient, signerAddress: string, message: TMsg | TMsg[], fee: StdFee | 'auto', memo: string) => Promise<DeliverTxResponse>;
}
export declare function buildUseVueMutation<TMsg, TError>(opts: UseMutationBuilderOptions<TMsg>): ({ options, clientResolver, }: VueMutationParams<DeliverTxResponse, TError, ITxArgs<TMsg>>) => import("@tanstack/vue-query").UseMutationReturnType<DeliverTxResponse, TError, ITxArgs<TMsg>, unknown, Omit<import("@tanstack/vue-query").MutationObserverIdleResult<DeliverTxResponse, TError, ITxArgs<TMsg>, unknown>, "mutate" | "reset"> | Omit<import("@tanstack/vue-query").MutationObserverLoadingResult<DeliverTxResponse, TError, ITxArgs<TMsg>, unknown>, "mutate" | "reset"> | Omit<import("@tanstack/vue-query").MutationObserverErrorResult<DeliverTxResponse, TError, ITxArgs<TMsg>, unknown>, "mutate" | "reset"> | Omit<import("@tanstack/vue-query").MutationObserverSuccessResult<DeliverTxResponse, TError, ITxArgs<TMsg>, unknown>, "mutate" | "reset">>;
