import _m0 from "protobufjs/minimal";
export declare const protobufPackage = "tendermint.spn.types";
/** MerkleRoot represents a Merkle Root in ConsensusState */
export interface MerkleRoot {
    hash: string;
}
/**
 * ConsensusState represents a Consensus State
 * it is compatible with the dumped state from `appd q ibc client self-consensus-state` command
 */
export interface ConsensusState {
    nextValidatorsHash: string;
    timestamp: string;
    root: MerkleRoot | undefined;
}
/** PubKey represents a public key in Validator */
export interface PubKey {
    type: string;
    value: string;
}
/** Validator represents a validator in ValSet */
export interface Validator {
    proposerPriority: string;
    votingPower: string;
    pubKey: PubKey | undefined;
}
/**
 * ValidatorSet represents a Validator Set
 * it is compatible with the dumped set from `appd q tendermint-validator-set n` command
 */
export interface ValidatorSet {
    validators: Validator[];
}
export declare const MerkleRoot: {
    encode(message: MerkleRoot, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MerkleRoot;
    fromJSON(object: any): MerkleRoot;
    toJSON(message: MerkleRoot): unknown;
    fromPartial<I extends {
        hash?: string;
    } & {
        hash?: string;
    } & { [K in Exclude<keyof I, "hash">]: never; }>(object: I): MerkleRoot;
};
export declare const ConsensusState: {
    encode(message: ConsensusState, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ConsensusState;
    fromJSON(object: any): ConsensusState;
    toJSON(message: ConsensusState): unknown;
    fromPartial<I extends {
        nextValidatorsHash?: string;
        timestamp?: string;
        root?: {
            hash?: string;
        };
    } & {
        nextValidatorsHash?: string;
        timestamp?: string;
        root?: {
            hash?: string;
        } & {
            hash?: string;
        } & { [K in Exclude<keyof I["root"], "hash">]: never; };
    } & { [K_1 in Exclude<keyof I, keyof ConsensusState>]: never; }>(object: I): ConsensusState;
};
export declare const PubKey: {
    encode(message: PubKey, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PubKey;
    fromJSON(object: any): PubKey;
    toJSON(message: PubKey): unknown;
    fromPartial<I extends {
        type?: string;
        value?: string;
    } & {
        type?: string;
        value?: string;
    } & { [K in Exclude<keyof I, keyof PubKey>]: never; }>(object: I): PubKey;
};
export declare const Validator: {
    encode(message: Validator, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Validator;
    fromJSON(object: any): Validator;
    toJSON(message: Validator): unknown;
    fromPartial<I extends {
        proposerPriority?: string;
        votingPower?: string;
        pubKey?: {
            type?: string;
            value?: string;
        };
    } & {
        proposerPriority?: string;
        votingPower?: string;
        pubKey?: {
            type?: string;
            value?: string;
        } & {
            type?: string;
            value?: string;
        } & { [K in Exclude<keyof I["pubKey"], keyof PubKey>]: never; };
    } & { [K_1 in Exclude<keyof I, keyof Validator>]: never; }>(object: I): Validator;
};
export declare const ValidatorSet: {
    encode(message: ValidatorSet, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ValidatorSet;
    fromJSON(object: any): ValidatorSet;
    toJSON(message: ValidatorSet): unknown;
    fromPartial<I extends {
        validators?: {
            proposerPriority?: string;
            votingPower?: string;
            pubKey?: {
                type?: string;
                value?: string;
            };
        }[];
    } & {
        validators?: {
            proposerPriority?: string;
            votingPower?: string;
            pubKey?: {
                type?: string;
                value?: string;
            };
        }[] & ({
            proposerPriority?: string;
            votingPower?: string;
            pubKey?: {
                type?: string;
                value?: string;
            };
        } & {
            proposerPriority?: string;
            votingPower?: string;
            pubKey?: {
                type?: string;
                value?: string;
            } & {
                type?: string;
                value?: string;
            } & { [K in Exclude<keyof I["validators"][number]["pubKey"], keyof PubKey>]: never; };
        } & { [K_1 in Exclude<keyof I["validators"][number], keyof Validator>]: never; })[] & { [K_2 in Exclude<keyof I["validators"], keyof {
            proposerPriority?: string;
            votingPower?: string;
            pubKey?: {
                type?: string;
                value?: string;
            };
        }[]>]: never; };
    } & { [K_3 in Exclude<keyof I, "validators">]: never; }>(object: I): ValidatorSet;
};
declare type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export declare type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
declare type KeysOfUnion<T> = T extends T ? keyof T : never;
export declare type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & {
    [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
};
export {};
