import { VaultType, VaultId, VaultIdSDKType } from "./vault";
import { PageRequest, PageRequestSDKType, PageResponse, PageResponseSDKType } from "../../cosmos/base/query/v1beta1/pagination";
import { NumShares, NumSharesSDKType, ShareUnlock, ShareUnlockSDKType, OwnerShare, OwnerShareSDKType } from "./share";
import { QuotingParams, QuotingParamsSDKType, OperatorParams, OperatorParamsSDKType, VaultParams, VaultParamsSDKType } from "./params";
import { SubaccountId, SubaccountIdSDKType } from "../subaccounts/subaccount";
import * as _m0 from "protobufjs/minimal";
import { DeepPartial } from "../../helpers";
/** QueryParamsRequest is a request type for the Params RPC method. */
export interface QueryParamsRequest {
}
/** QueryParamsRequest is a request type for the Params RPC method. */
export interface QueryParamsRequestSDKType {
}
/** QueryParamsResponse is a response type for the Params RPC method. */
export interface QueryParamsResponse {
    defaultQuotingParams?: QuotingParams;
    operatorParams?: OperatorParams;
}
/** QueryParamsResponse is a response type for the Params RPC method. */
export interface QueryParamsResponseSDKType {
    default_quoting_params?: QuotingParamsSDKType;
    operator_params?: OperatorParamsSDKType;
}
/** QueryVaultRequest is a request type for the Vault RPC method. */
export interface QueryVaultRequest {
    type: VaultType;
    number: number;
}
/** QueryVaultRequest is a request type for the Vault RPC method. */
export interface QueryVaultRequestSDKType {
    type: VaultType;
    number: number;
}
/** QueryVaultResponse is a response type for the Vault RPC method. */
export interface QueryVaultResponse {
    vaultId?: VaultId;
    subaccountId?: SubaccountId;
    equity: Uint8Array;
    inventory: Uint8Array;
    vaultParams?: VaultParams;
    mostRecentClientIds: number[];
}
/** QueryVaultResponse is a response type for the Vault RPC method. */
export interface QueryVaultResponseSDKType {
    vault_id?: VaultIdSDKType;
    subaccount_id?: SubaccountIdSDKType;
    equity: Uint8Array;
    inventory: Uint8Array;
    vault_params?: VaultParamsSDKType;
    most_recent_client_ids: number[];
}
/** QueryAllVaultsRequest is a request type for the AllVaults RPC method. */
export interface QueryAllVaultsRequest {
    pagination?: PageRequest;
}
/** QueryAllVaultsRequest is a request type for the AllVaults RPC method. */
export interface QueryAllVaultsRequestSDKType {
    pagination?: PageRequestSDKType;
}
/** QueryAllVaultsResponse is a response type for the AllVaults RPC method. */
export interface QueryAllVaultsResponse {
    vaults: QueryVaultResponse[];
    pagination?: PageResponse;
}
/** QueryAllVaultsResponse is a response type for the AllVaults RPC method. */
export interface QueryAllVaultsResponseSDKType {
    vaults: QueryVaultResponseSDKType[];
    pagination?: PageResponseSDKType;
}
/**
 * QueryMegavaultTotalSharesRequest is a request type for the
 * MegavaultTotalShares RPC method.
 */
export interface QueryMegavaultTotalSharesRequest {
}
/**
 * QueryMegavaultTotalSharesRequest is a request type for the
 * MegavaultTotalShares RPC method.
 */
export interface QueryMegavaultTotalSharesRequestSDKType {
}
/**
 * QueryMegavaultTotalSharesResponse is a response type for the
 * MegavaultTotalShares RPC method.
 */
export interface QueryMegavaultTotalSharesResponse {
    /**
     * QueryMegavaultTotalSharesResponse is a response type for the
     * MegavaultTotalShares RPC method.
     */
    totalShares?: NumShares;
}
/**
 * QueryMegavaultTotalSharesResponse is a response type for the
 * MegavaultTotalShares RPC method.
 */
export interface QueryMegavaultTotalSharesResponseSDKType {
    total_shares?: NumSharesSDKType;
}
/**
 * QueryMegavaultOwnerSharesRequest is a request type for the
 * MegavaultOwnerShares RPC method.
 */
export interface QueryMegavaultOwnerSharesRequest {
    address: string;
}
/**
 * QueryMegavaultOwnerSharesRequest is a request type for the
 * MegavaultOwnerShares RPC method.
 */
export interface QueryMegavaultOwnerSharesRequestSDKType {
    address: string;
}
/**
 * QueryMegavaultOwnerSharesResponse is a response type for the
 * MegavaultOwnerShares RPC method.
 */
export interface QueryMegavaultOwnerSharesResponse {
    /** Owner address. */
    address: string;
    /** Total number of shares that belong to the owner. */
    shares?: NumShares;
    /** All share unlocks. */
    shareUnlocks: ShareUnlock[];
    /** Owner equity in megavault (in quote quantums). */
    equity: Uint8Array;
    /**
     * Equity that owner can withdraw in quote quantums (as one cannot
     * withdraw locked shares).
     */
    withdrawableEquity: Uint8Array;
}
/**
 * QueryMegavaultOwnerSharesResponse is a response type for the
 * MegavaultOwnerShares RPC method.
 */
export interface QueryMegavaultOwnerSharesResponseSDKType {
    address: string;
    shares?: NumSharesSDKType;
    share_unlocks: ShareUnlockSDKType[];
    equity: Uint8Array;
    withdrawable_equity: Uint8Array;
}
/**
 * QueryMegavaultAllOwnerSharesRequest is a request type for the
 * MegavaultAllOwnerShares RPC method.
 */
export interface QueryMegavaultAllOwnerSharesRequest {
    pagination?: PageRequest;
}
/**
 * QueryMegavaultAllOwnerSharesRequest is a request type for the
 * MegavaultAllOwnerShares RPC method.
 */
export interface QueryMegavaultAllOwnerSharesRequestSDKType {
    pagination?: PageRequestSDKType;
}
/**
 * QueryMegavaultAllOwnerSharesResponse is a response type for the
 * MegavaultAllOwnerShares RPC method.
 */
export interface QueryMegavaultAllOwnerSharesResponse {
    ownerShares: OwnerShare[];
    pagination?: PageResponse;
}
/**
 * QueryMegavaultAllOwnerSharesResponse is a response type for the
 * MegavaultAllOwnerShares RPC method.
 */
export interface QueryMegavaultAllOwnerSharesResponseSDKType {
    owner_shares: OwnerShareSDKType[];
    pagination?: PageResponseSDKType;
}
/** QueryVaultParamsRequest is a request for the VaultParams RPC method. */
export interface QueryVaultParamsRequest {
    type: VaultType;
    number: number;
}
/** QueryVaultParamsRequest is a request for the VaultParams RPC method. */
export interface QueryVaultParamsRequestSDKType {
    type: VaultType;
    number: number;
}
/** QueryVaultParamsResponse is a response for the VaultParams RPC method. */
export interface QueryVaultParamsResponse {
    vaultId?: VaultId;
    vaultParams?: VaultParams;
}
/** QueryVaultParamsResponse is a response for the VaultParams RPC method. */
export interface QueryVaultParamsResponseSDKType {
    vault_id?: VaultIdSDKType;
    vault_params?: VaultParamsSDKType;
}
/**
 * QueryMegavaultWithdrawalInfoRequest is a request type for the
 * MegavaultWithdrawalInfo RPC method.
 */
export interface QueryMegavaultWithdrawalInfoRequest {
    /** Number of shares to withdraw. */
    sharesToWithdraw?: NumShares;
}
/**
 * QueryMegavaultWithdrawalInfoRequest is a request type for the
 * MegavaultWithdrawalInfo RPC method.
 */
export interface QueryMegavaultWithdrawalInfoRequestSDKType {
    shares_to_withdraw?: NumSharesSDKType;
}
/**
 * QueryMegavaultWithdrawalInfoResponse is a response type for the
 * MegavaultWithdrawalInfo RPC method.
 */
export interface QueryMegavaultWithdrawalInfoResponse {
    /** Number of shares to withdraw. */
    sharesToWithdraw?: NumShares;
    /**
     * Number of quote quantums above `shares` are expected to redeem.
     * Withdrawl slippage can be calculated by comparing
     * `expected_quote_quantums` with
     * `megavault_equity * shares_to_withdraw / total_shares`
     */
    expectedQuoteQuantums: Uint8Array;
    /** Equity of megavault (in quote quantums). */
    megavaultEquity: Uint8Array;
    /** Total shares in megavault. */
    totalShares?: NumShares;
}
/**
 * QueryMegavaultWithdrawalInfoResponse is a response type for the
 * MegavaultWithdrawalInfo RPC method.
 */
export interface QueryMegavaultWithdrawalInfoResponseSDKType {
    shares_to_withdraw?: NumSharesSDKType;
    expected_quote_quantums: Uint8Array;
    megavault_equity: Uint8Array;
    total_shares?: NumSharesSDKType;
}
export declare const QueryParamsRequest: {
    encode(_: QueryParamsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryParamsRequest;
    fromPartial(_: DeepPartial<QueryParamsRequest>): QueryParamsRequest;
};
export declare const QueryParamsResponse: {
    encode(message: QueryParamsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryParamsResponse;
    fromPartial(object: DeepPartial<QueryParamsResponse>): QueryParamsResponse;
};
export declare const QueryVaultRequest: {
    encode(message: QueryVaultRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryVaultRequest;
    fromPartial(object: DeepPartial<QueryVaultRequest>): QueryVaultRequest;
};
export declare const QueryVaultResponse: {
    encode(message: QueryVaultResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryVaultResponse;
    fromPartial(object: DeepPartial<QueryVaultResponse>): QueryVaultResponse;
};
export declare const QueryAllVaultsRequest: {
    encode(message: QueryAllVaultsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryAllVaultsRequest;
    fromPartial(object: DeepPartial<QueryAllVaultsRequest>): QueryAllVaultsRequest;
};
export declare const QueryAllVaultsResponse: {
    encode(message: QueryAllVaultsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryAllVaultsResponse;
    fromPartial(object: DeepPartial<QueryAllVaultsResponse>): QueryAllVaultsResponse;
};
export declare const QueryMegavaultTotalSharesRequest: {
    encode(_: QueryMegavaultTotalSharesRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryMegavaultTotalSharesRequest;
    fromPartial(_: DeepPartial<QueryMegavaultTotalSharesRequest>): QueryMegavaultTotalSharesRequest;
};
export declare const QueryMegavaultTotalSharesResponse: {
    encode(message: QueryMegavaultTotalSharesResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryMegavaultTotalSharesResponse;
    fromPartial(object: DeepPartial<QueryMegavaultTotalSharesResponse>): QueryMegavaultTotalSharesResponse;
};
export declare const QueryMegavaultOwnerSharesRequest: {
    encode(message: QueryMegavaultOwnerSharesRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryMegavaultOwnerSharesRequest;
    fromPartial(object: DeepPartial<QueryMegavaultOwnerSharesRequest>): QueryMegavaultOwnerSharesRequest;
};
export declare const QueryMegavaultOwnerSharesResponse: {
    encode(message: QueryMegavaultOwnerSharesResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryMegavaultOwnerSharesResponse;
    fromPartial(object: DeepPartial<QueryMegavaultOwnerSharesResponse>): QueryMegavaultOwnerSharesResponse;
};
export declare const QueryMegavaultAllOwnerSharesRequest: {
    encode(message: QueryMegavaultAllOwnerSharesRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryMegavaultAllOwnerSharesRequest;
    fromPartial(object: DeepPartial<QueryMegavaultAllOwnerSharesRequest>): QueryMegavaultAllOwnerSharesRequest;
};
export declare const QueryMegavaultAllOwnerSharesResponse: {
    encode(message: QueryMegavaultAllOwnerSharesResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryMegavaultAllOwnerSharesResponse;
    fromPartial(object: DeepPartial<QueryMegavaultAllOwnerSharesResponse>): QueryMegavaultAllOwnerSharesResponse;
};
export declare const QueryVaultParamsRequest: {
    encode(message: QueryVaultParamsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryVaultParamsRequest;
    fromPartial(object: DeepPartial<QueryVaultParamsRequest>): QueryVaultParamsRequest;
};
export declare const QueryVaultParamsResponse: {
    encode(message: QueryVaultParamsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryVaultParamsResponse;
    fromPartial(object: DeepPartial<QueryVaultParamsResponse>): QueryVaultParamsResponse;
};
export declare const QueryMegavaultWithdrawalInfoRequest: {
    encode(message: QueryMegavaultWithdrawalInfoRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryMegavaultWithdrawalInfoRequest;
    fromPartial(object: DeepPartial<QueryMegavaultWithdrawalInfoRequest>): QueryMegavaultWithdrawalInfoRequest;
};
export declare const QueryMegavaultWithdrawalInfoResponse: {
    encode(message: QueryMegavaultWithdrawalInfoResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryMegavaultWithdrawalInfoResponse;
    fromPartial(object: DeepPartial<QueryMegavaultWithdrawalInfoResponse>): QueryMegavaultWithdrawalInfoResponse;
};
//# sourceMappingURL=query.d.ts.map