import { PageRequest, PageRequestAmino, PageResponse, PageResponseAmino } from "../../../base/query/v1beta1/pagination";
import { Any, AnyAmino } from "../../../../google/protobuf/any";
import { Duration, DurationAmino } from "../../../../google/protobuf/duration";
import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * GetRequest is the Query/Get request type.
 * @name GetRequest
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.GetRequest
 */
export interface GetRequest {
    /**
     * message_name is the fully-qualified message name of the ORM table being queried.
     */
    messageName: string;
    /**
     * index is the index fields expression used in orm definitions. If it
     * is empty, the table's primary key is assumed. If it is non-empty, it must
     * refer to an unique index.
     */
    index: string;
    /**
     * values are the values of the fields corresponding to the requested index.
     * There must be as many values provided as there are fields in the index and
     * these values must correspond to the index field types.
     */
    values: IndexValue[];
}
export interface GetRequestProtoMsg {
    typeUrl: "/cosmos.orm.query.v1alpha1.GetRequest";
    value: Uint8Array;
}
/**
 * GetRequest is the Query/Get request type.
 * @name GetRequestAmino
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.GetRequest
 */
export interface GetRequestAmino {
    /**
     * message_name is the fully-qualified message name of the ORM table being queried.
     */
    message_name: string;
    /**
     * index is the index fields expression used in orm definitions. If it
     * is empty, the table's primary key is assumed. If it is non-empty, it must
     * refer to an unique index.
     */
    index: string;
    /**
     * values are the values of the fields corresponding to the requested index.
     * There must be as many values provided as there are fields in the index and
     * these values must correspond to the index field types.
     */
    values: IndexValueAmino[];
}
export interface GetRequestAminoMsg {
    type: "cosmos-sdk/GetRequest";
    value: GetRequestAmino;
}
/**
 * GetResponse is the Query/Get response type.
 * @name GetResponse
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.GetResponse
 */
export interface GetResponse {
    /**
     * result is the result of the get query. If no value is found, the gRPC
     * status code NOT_FOUND will be returned.
     */
    result?: Any;
}
export interface GetResponseProtoMsg {
    typeUrl: "/cosmos.orm.query.v1alpha1.GetResponse";
    value: Uint8Array;
}
/**
 * GetResponse is the Query/Get response type.
 * @name GetResponseAmino
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.GetResponse
 */
export interface GetResponseAmino {
    /**
     * result is the result of the get query. If no value is found, the gRPC
     * status code NOT_FOUND will be returned.
     */
    result?: AnyAmino;
}
export interface GetResponseAminoMsg {
    type: "cosmos-sdk/GetResponse";
    value: GetResponseAmino;
}
/**
 * ListRequest is the Query/List request type.
 * @name ListRequest
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.ListRequest
 */
export interface ListRequest {
    /**
     * message_name is the fully-qualified message name of the ORM table being queried.
     */
    messageName: string;
    /**
     * index is the index fields expression used in orm definitions. If it
     * is empty, the table's primary key is assumed.
     */
    index: string;
    /**
     * prefix defines a prefix query.
     */
    prefix?: ListRequest_Prefix;
    /**
     * range defines a range query.
     */
    range?: ListRequest_Range;
    /**
     * pagination is the pagination request.
     */
    pagination?: PageRequest;
}
export interface ListRequestProtoMsg {
    typeUrl: "/cosmos.orm.query.v1alpha1.ListRequest";
    value: Uint8Array;
}
/**
 * ListRequest is the Query/List request type.
 * @name ListRequestAmino
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.ListRequest
 */
export interface ListRequestAmino {
    /**
     * message_name is the fully-qualified message name of the ORM table being queried.
     */
    message_name: string;
    /**
     * index is the index fields expression used in orm definitions. If it
     * is empty, the table's primary key is assumed.
     */
    index: string;
    /**
     * prefix defines a prefix query.
     */
    prefix?: ListRequest_PrefixAmino;
    /**
     * range defines a range query.
     */
    range?: ListRequest_RangeAmino;
    /**
     * pagination is the pagination request.
     */
    pagination?: PageRequestAmino;
}
export interface ListRequestAminoMsg {
    type: "cosmos-sdk/ListRequest";
    value: ListRequestAmino;
}
/**
 * Prefix specifies the arguments to a prefix query.
 * @name ListRequest_Prefix
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.Prefix
 */
export interface ListRequest_Prefix {
    /**
     * values specifies the index values for the prefix query.
     * It is valid to special a partial prefix with fewer values than
     * the number of fields in the index.
     */
    values: IndexValue[];
}
export interface ListRequest_PrefixProtoMsg {
    typeUrl: "/cosmos.orm.query.v1alpha1.Prefix";
    value: Uint8Array;
}
/**
 * Prefix specifies the arguments to a prefix query.
 * @name ListRequest_PrefixAmino
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.ListRequest_Prefix
 */
export interface ListRequest_PrefixAmino {
    /**
     * values specifies the index values for the prefix query.
     * It is valid to special a partial prefix with fewer values than
     * the number of fields in the index.
     */
    values: IndexValueAmino[];
}
export interface ListRequest_PrefixAminoMsg {
    type: "cosmos-sdk/Prefix";
    value: ListRequest_PrefixAmino;
}
/**
 * Range specifies the arguments to a range query.
 * @name ListRequest_Range
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.Range
 */
export interface ListRequest_Range {
    /**
     * start specifies the starting index values for the range query.
     * It is valid to provide fewer values than the number of fields in the
     * index.
     */
    start: IndexValue[];
    /**
     * end specifies the inclusive ending index values for the range query.
     * It is valid to provide fewer values than the number of fields in the
     * index.
     */
    end: IndexValue[];
}
export interface ListRequest_RangeProtoMsg {
    typeUrl: "/cosmos.orm.query.v1alpha1.Range";
    value: Uint8Array;
}
/**
 * Range specifies the arguments to a range query.
 * @name ListRequest_RangeAmino
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.ListRequest_Range
 */
export interface ListRequest_RangeAmino {
    /**
     * start specifies the starting index values for the range query.
     * It is valid to provide fewer values than the number of fields in the
     * index.
     */
    start: IndexValueAmino[];
    /**
     * end specifies the inclusive ending index values for the range query.
     * It is valid to provide fewer values than the number of fields in the
     * index.
     */
    end: IndexValueAmino[];
}
export interface ListRequest_RangeAminoMsg {
    type: "cosmos-sdk/Range";
    value: ListRequest_RangeAmino;
}
/**
 * ListResponse is the Query/List response type.
 * @name ListResponse
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.ListResponse
 */
export interface ListResponse {
    /**
     * results are the results of the query.
     */
    results: Any[];
    /**
     * pagination is the pagination response.
     */
    pagination?: PageResponse;
}
export interface ListResponseProtoMsg {
    typeUrl: "/cosmos.orm.query.v1alpha1.ListResponse";
    value: Uint8Array;
}
/**
 * ListResponse is the Query/List response type.
 * @name ListResponseAmino
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.ListResponse
 */
export interface ListResponseAmino {
    /**
     * results are the results of the query.
     */
    results: AnyAmino[];
    /**
     * pagination is the pagination response.
     */
    pagination?: PageResponseAmino;
}
export interface ListResponseAminoMsg {
    type: "cosmos-sdk/ListResponse";
    value: ListResponseAmino;
}
/**
 * IndexValue represents the value of a field in an ORM index expression.
 * @name IndexValue
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.IndexValue
 */
export interface IndexValue {
    /**
     * uint specifies a value for an uint32, fixed32, uint64, or fixed64
     * index field.
     */
    uint?: bigint;
    /**
     * int64 specifies a value for an int32, sfixed32, int64, or sfixed64
     * index field.
     */
    int?: bigint;
    /**
     * str specifies a value for a string index field.
     */
    str?: string;
    /**
     * bytes specifies a value for a bytes index field.
     */
    bytes?: Uint8Array;
    /**
     * enum specifies a value for an enum index field.
     */
    enum?: string;
    /**
     * bool specifies a value for a bool index field.
     */
    bool?: boolean;
    /**
     * timestamp specifies a value for a timestamp index field.
     */
    timestamp?: Date;
    /**
     * duration specifies a value for a duration index field.
     */
    duration?: Duration;
}
export interface IndexValueProtoMsg {
    typeUrl: "/cosmos.orm.query.v1alpha1.IndexValue";
    value: Uint8Array;
}
/**
 * IndexValue represents the value of a field in an ORM index expression.
 * @name IndexValueAmino
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.IndexValue
 */
export interface IndexValueAmino {
    /**
     * uint specifies a value for an uint32, fixed32, uint64, or fixed64
     * index field.
     */
    uint?: string;
    /**
     * int64 specifies a value for an int32, sfixed32, int64, or sfixed64
     * index field.
     */
    int?: string;
    /**
     * str specifies a value for a string index field.
     */
    str?: string;
    /**
     * bytes specifies a value for a bytes index field.
     */
    bytes?: string;
    /**
     * enum specifies a value for an enum index field.
     */
    enum?: string;
    /**
     * bool specifies a value for a bool index field.
     */
    bool?: boolean;
    /**
     * timestamp specifies a value for a timestamp index field.
     */
    timestamp?: string;
    /**
     * duration specifies a value for a duration index field.
     */
    duration?: DurationAmino;
}
export interface IndexValueAminoMsg {
    type: "cosmos-sdk/IndexValue";
    value: IndexValueAmino;
}
/**
 * GetRequest is the Query/Get request type.
 * @name GetRequest
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.GetRequest
 */
export declare const GetRequest: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is GetRequest;
    isAmino(o: any): o is GetRequestAmino;
    encode(message: GetRequest, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): GetRequest;
    fromPartial(object: DeepPartial<GetRequest>): GetRequest;
    fromAmino(object: GetRequestAmino): GetRequest;
    toAmino(message: GetRequest): GetRequestAmino;
    fromAminoMsg(object: GetRequestAminoMsg): GetRequest;
    toAminoMsg(message: GetRequest): GetRequestAminoMsg;
    fromProtoMsg(message: GetRequestProtoMsg): GetRequest;
    toProto(message: GetRequest): Uint8Array;
    toProtoMsg(message: GetRequest): GetRequestProtoMsg;
    registerTypeUrl(): void;
};
/**
 * GetResponse is the Query/Get response type.
 * @name GetResponse
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.GetResponse
 */
export declare const GetResponse: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is GetResponse;
    isAmino(o: any): o is GetResponseAmino;
    encode(message: GetResponse, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): GetResponse;
    fromPartial(object: DeepPartial<GetResponse>): GetResponse;
    fromAmino(object: GetResponseAmino): GetResponse;
    toAmino(message: GetResponse): GetResponseAmino;
    fromAminoMsg(object: GetResponseAminoMsg): GetResponse;
    toAminoMsg(message: GetResponse): GetResponseAminoMsg;
    fromProtoMsg(message: GetResponseProtoMsg): GetResponse;
    toProto(message: GetResponse): Uint8Array;
    toProtoMsg(message: GetResponse): GetResponseProtoMsg;
    registerTypeUrl(): void;
};
/**
 * ListRequest is the Query/List request type.
 * @name ListRequest
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.ListRequest
 */
export declare const ListRequest: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ListRequest;
    isAmino(o: any): o is ListRequestAmino;
    encode(message: ListRequest, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ListRequest;
    fromPartial(object: DeepPartial<ListRequest>): ListRequest;
    fromAmino(object: ListRequestAmino): ListRequest;
    toAmino(message: ListRequest): ListRequestAmino;
    fromAminoMsg(object: ListRequestAminoMsg): ListRequest;
    toAminoMsg(message: ListRequest): ListRequestAminoMsg;
    fromProtoMsg(message: ListRequestProtoMsg): ListRequest;
    toProto(message: ListRequest): Uint8Array;
    toProtoMsg(message: ListRequest): ListRequestProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Prefix specifies the arguments to a prefix query.
 * @name ListRequest_Prefix
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.Prefix
 */
export declare const ListRequest_Prefix: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ListRequest_Prefix;
    isAmino(o: any): o is ListRequest_PrefixAmino;
    encode(message: ListRequest_Prefix, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ListRequest_Prefix;
    fromPartial(object: DeepPartial<ListRequest_Prefix>): ListRequest_Prefix;
    fromAmino(object: ListRequest_PrefixAmino): ListRequest_Prefix;
    toAmino(message: ListRequest_Prefix): ListRequest_PrefixAmino;
    fromAminoMsg(object: ListRequest_PrefixAminoMsg): ListRequest_Prefix;
    toAminoMsg(message: ListRequest_Prefix): ListRequest_PrefixAminoMsg;
    fromProtoMsg(message: ListRequest_PrefixProtoMsg): ListRequest_Prefix;
    toProto(message: ListRequest_Prefix): Uint8Array;
    toProtoMsg(message: ListRequest_Prefix): ListRequest_PrefixProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Range specifies the arguments to a range query.
 * @name ListRequest_Range
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.Range
 */
export declare const ListRequest_Range: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ListRequest_Range;
    isAmino(o: any): o is ListRequest_RangeAmino;
    encode(message: ListRequest_Range, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ListRequest_Range;
    fromPartial(object: DeepPartial<ListRequest_Range>): ListRequest_Range;
    fromAmino(object: ListRequest_RangeAmino): ListRequest_Range;
    toAmino(message: ListRequest_Range): ListRequest_RangeAmino;
    fromAminoMsg(object: ListRequest_RangeAminoMsg): ListRequest_Range;
    toAminoMsg(message: ListRequest_Range): ListRequest_RangeAminoMsg;
    fromProtoMsg(message: ListRequest_RangeProtoMsg): ListRequest_Range;
    toProto(message: ListRequest_Range): Uint8Array;
    toProtoMsg(message: ListRequest_Range): ListRequest_RangeProtoMsg;
    registerTypeUrl(): void;
};
/**
 * ListResponse is the Query/List response type.
 * @name ListResponse
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.ListResponse
 */
export declare const ListResponse: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ListResponse;
    isAmino(o: any): o is ListResponseAmino;
    encode(message: ListResponse, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ListResponse;
    fromPartial(object: DeepPartial<ListResponse>): ListResponse;
    fromAmino(object: ListResponseAmino): ListResponse;
    toAmino(message: ListResponse): ListResponseAmino;
    fromAminoMsg(object: ListResponseAminoMsg): ListResponse;
    toAminoMsg(message: ListResponse): ListResponseAminoMsg;
    fromProtoMsg(message: ListResponseProtoMsg): ListResponse;
    toProto(message: ListResponse): Uint8Array;
    toProtoMsg(message: ListResponse): ListResponseProtoMsg;
    registerTypeUrl(): void;
};
/**
 * IndexValue represents the value of a field in an ORM index expression.
 * @name IndexValue
 * @package cosmos.orm.query.v1alpha1
 * @see proto type: cosmos.orm.query.v1alpha1.IndexValue
 */
export declare const IndexValue: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is IndexValue;
    isAmino(o: any): o is IndexValueAmino;
    encode(message: IndexValue, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): IndexValue;
    fromPartial(object: DeepPartial<IndexValue>): IndexValue;
    fromAmino(object: IndexValueAmino): IndexValue;
    toAmino(message: IndexValue): IndexValueAmino;
    fromAminoMsg(object: IndexValueAminoMsg): IndexValue;
    toAminoMsg(message: IndexValue): IndexValueAminoMsg;
    fromProtoMsg(message: IndexValueProtoMsg): IndexValue;
    toProto(message: IndexValue): Uint8Array;
    toProtoMsg(message: IndexValue): IndexValueProtoMsg;
    registerTypeUrl(): void;
};
