import { PerpetualFeeParams, PerpetualFeeParamsSDKType, PerpetualFeeTier, PerpetualFeeTierSDKType } from "./params";
import { PerMarketFeeDiscountParams, PerMarketFeeDiscountParamsSDKType } from "./per_market_fee_discount";
import { StakingTier, StakingTierSDKType } from "./staking_tier";
import * as _m0 from "protobufjs/minimal";
import { DeepPartial } from "../../helpers";
/**
 * QueryPerpetualFeeParamsRequest is a request type for the PerpetualFeeParams
 * RPC method.
 */
export interface QueryPerpetualFeeParamsRequest {
}
/**
 * QueryPerpetualFeeParamsRequest is a request type for the PerpetualFeeParams
 * RPC method.
 */
export interface QueryPerpetualFeeParamsRequestSDKType {
}
/**
 * QueryPerpetualFeeParamsResponse is a response type for the PerpetualFeeParams
 * RPC method.
 */
export interface QueryPerpetualFeeParamsResponse {
    params?: PerpetualFeeParams;
}
/**
 * QueryPerpetualFeeParamsResponse is a response type for the PerpetualFeeParams
 * RPC method.
 */
export interface QueryPerpetualFeeParamsResponseSDKType {
    params?: PerpetualFeeParamsSDKType;
}
/** QueryUserFeeTierRequest is a request type for the UserFeeTier RPC method. */
export interface QueryUserFeeTierRequest {
    user: string;
}
/** QueryUserFeeTierRequest is a request type for the UserFeeTier RPC method. */
export interface QueryUserFeeTierRequestSDKType {
    user: string;
}
/** QueryUserFeeTierResponse is a request type for the UserFeeTier RPC method. */
export interface QueryUserFeeTierResponse {
    /** Index of the fee tier in the list queried from PerpetualFeeParams. */
    index: number;
    tier?: PerpetualFeeTier;
}
/** QueryUserFeeTierResponse is a request type for the UserFeeTier RPC method. */
export interface QueryUserFeeTierResponseSDKType {
    index: number;
    tier?: PerpetualFeeTierSDKType;
}
/**
 * QueryPerMarketFeeDiscountParamsRequest is the request type for the
 * Query/PerMarketFeeDiscountParams RPC method.
 */
export interface QueryPerMarketFeeDiscountParamsRequest {
    /**
     * QueryPerMarketFeeDiscountParamsRequest is the request type for the
     * Query/PerMarketFeeDiscountParams RPC method.
     */
    clobPairId: number;
}
/**
 * QueryPerMarketFeeDiscountParamsRequest is the request type for the
 * Query/PerMarketFeeDiscountParams RPC method.
 */
export interface QueryPerMarketFeeDiscountParamsRequestSDKType {
    clob_pair_id: number;
}
/**
 * QueryPerMarketFeeDiscountParamsResponse is the response type for the
 * Query/PerMarketFeeDiscountParams RPC method.
 */
export interface QueryPerMarketFeeDiscountParamsResponse {
    params?: PerMarketFeeDiscountParams;
}
/**
 * QueryPerMarketFeeDiscountParamsResponse is the response type for the
 * Query/PerMarketFeeDiscountParams RPC method.
 */
export interface QueryPerMarketFeeDiscountParamsResponseSDKType {
    params?: PerMarketFeeDiscountParamsSDKType;
}
/**
 * QueryAllMarketFeeDiscountParamsRequest is the request type for the
 * Query/AllMarketFeeDiscountParams RPC method.
 */
export interface QueryAllMarketFeeDiscountParamsRequest {
}
/**
 * QueryAllMarketFeeDiscountParamsRequest is the request type for the
 * Query/AllMarketFeeDiscountParams RPC method.
 */
export interface QueryAllMarketFeeDiscountParamsRequestSDKType {
}
/**
 * QueryAllMarketFeeDiscountParamsResponse is the response type for the
 * Query/AllMarketFeeDiscountParams RPC method.
 */
export interface QueryAllMarketFeeDiscountParamsResponse {
    params: PerMarketFeeDiscountParams[];
}
/**
 * QueryAllMarketFeeDiscountParamsResponse is the response type for the
 * Query/AllMarketFeeDiscountParams RPC method.
 */
export interface QueryAllMarketFeeDiscountParamsResponseSDKType {
    params: PerMarketFeeDiscountParamsSDKType[];
}
/** QueryStakingTiersRequest is a request type for the StakingTiers RPC method. */
export interface QueryStakingTiersRequest {
}
/** QueryStakingTiersRequest is a request type for the StakingTiers RPC method. */
export interface QueryStakingTiersRequestSDKType {
}
/** QueryStakingTiersResponse is a response type for the StakingTiers RPC method. */
export interface QueryStakingTiersResponse {
    /** QueryStakingTiersResponse is a response type for the StakingTiers RPC method. */
    stakingTiers: StakingTier[];
}
/** QueryStakingTiersResponse is a response type for the StakingTiers RPC method. */
export interface QueryStakingTiersResponseSDKType {
    staking_tiers: StakingTierSDKType[];
}
/**
 * QueryUserStakingTierRequest is a request type for the UserStakingTier RPC
 * method.
 */
export interface QueryUserStakingTierRequest {
    address: string;
}
/**
 * QueryUserStakingTierRequest is a request type for the UserStakingTier RPC
 * method.
 */
export interface QueryUserStakingTierRequestSDKType {
    address: string;
}
/**
 * QueryUserStakingTierResponse is a response type for the UserStakingTier RPC
 * method.
 */
export interface QueryUserStakingTierResponse {
    /** The user's current fee tier name */
    feeTierName: string;
    /** Amount of tokens staked by the user (in base units) */
    stakedBaseTokens: Uint8Array;
    /** The discount percentage in ppm that user qualifies for */
    discountPpm: number;
}
/**
 * QueryUserStakingTierResponse is a response type for the UserStakingTier RPC
 * method.
 */
export interface QueryUserStakingTierResponseSDKType {
    fee_tier_name: string;
    staked_base_tokens: Uint8Array;
    discount_ppm: number;
}
export declare const QueryPerpetualFeeParamsRequest: {
    encode(_: QueryPerpetualFeeParamsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryPerpetualFeeParamsRequest;
    fromPartial(_: DeepPartial<QueryPerpetualFeeParamsRequest>): QueryPerpetualFeeParamsRequest;
};
export declare const QueryPerpetualFeeParamsResponse: {
    encode(message: QueryPerpetualFeeParamsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryPerpetualFeeParamsResponse;
    fromPartial(object: DeepPartial<QueryPerpetualFeeParamsResponse>): QueryPerpetualFeeParamsResponse;
};
export declare const QueryUserFeeTierRequest: {
    encode(message: QueryUserFeeTierRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryUserFeeTierRequest;
    fromPartial(object: DeepPartial<QueryUserFeeTierRequest>): QueryUserFeeTierRequest;
};
export declare const QueryUserFeeTierResponse: {
    encode(message: QueryUserFeeTierResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryUserFeeTierResponse;
    fromPartial(object: DeepPartial<QueryUserFeeTierResponse>): QueryUserFeeTierResponse;
};
export declare const QueryPerMarketFeeDiscountParamsRequest: {
    encode(message: QueryPerMarketFeeDiscountParamsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryPerMarketFeeDiscountParamsRequest;
    fromPartial(object: DeepPartial<QueryPerMarketFeeDiscountParamsRequest>): QueryPerMarketFeeDiscountParamsRequest;
};
export declare const QueryPerMarketFeeDiscountParamsResponse: {
    encode(message: QueryPerMarketFeeDiscountParamsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryPerMarketFeeDiscountParamsResponse;
    fromPartial(object: DeepPartial<QueryPerMarketFeeDiscountParamsResponse>): QueryPerMarketFeeDiscountParamsResponse;
};
export declare const QueryAllMarketFeeDiscountParamsRequest: {
    encode(_: QueryAllMarketFeeDiscountParamsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryAllMarketFeeDiscountParamsRequest;
    fromPartial(_: DeepPartial<QueryAllMarketFeeDiscountParamsRequest>): QueryAllMarketFeeDiscountParamsRequest;
};
export declare const QueryAllMarketFeeDiscountParamsResponse: {
    encode(message: QueryAllMarketFeeDiscountParamsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryAllMarketFeeDiscountParamsResponse;
    fromPartial(object: DeepPartial<QueryAllMarketFeeDiscountParamsResponse>): QueryAllMarketFeeDiscountParamsResponse;
};
export declare const QueryStakingTiersRequest: {
    encode(_: QueryStakingTiersRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryStakingTiersRequest;
    fromPartial(_: DeepPartial<QueryStakingTiersRequest>): QueryStakingTiersRequest;
};
export declare const QueryStakingTiersResponse: {
    encode(message: QueryStakingTiersResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryStakingTiersResponse;
    fromPartial(object: DeepPartial<QueryStakingTiersResponse>): QueryStakingTiersResponse;
};
export declare const QueryUserStakingTierRequest: {
    encode(message: QueryUserStakingTierRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryUserStakingTierRequest;
    fromPartial(object: DeepPartial<QueryUserStakingTierRequest>): QueryUserStakingTierRequest;
};
export declare const QueryUserStakingTierResponse: {
    encode(message: QueryUserStakingTierResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): QueryUserStakingTierResponse;
    fromPartial(object: DeepPartial<QueryUserStakingTierResponse>): QueryUserStakingTierResponse;
};
//# sourceMappingURL=query.d.ts.map