import { Vote, VoteAmino, LightBlock, LightBlockAmino } from "./types";
import { Validator, ValidatorAmino } from "./validator";
import { BinaryReader, BinaryWriter } from "../../binary";
import { DeepPartial } from "../../helpers";
/**
 * @name Evidence
 * @package tendermint.types
 * @see proto type: tendermint.types.Evidence
 */
export interface Evidence {
    duplicateVoteEvidence?: DuplicateVoteEvidence;
    lightClientAttackEvidence?: LightClientAttackEvidence;
}
export interface EvidenceProtoMsg {
    typeUrl: "/tendermint.types.Evidence";
    value: Uint8Array;
}
/**
 * @name EvidenceAmino
 * @package tendermint.types
 * @see proto type: tendermint.types.Evidence
 */
export interface EvidenceAmino {
    duplicate_vote_evidence?: DuplicateVoteEvidenceAmino;
    light_client_attack_evidence?: LightClientAttackEvidenceAmino;
}
export interface EvidenceAminoMsg {
    type: "/tendermint.types.Evidence";
    value: EvidenceAmino;
}
/**
 * DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.
 * @name DuplicateVoteEvidence
 * @package tendermint.types
 * @see proto type: tendermint.types.DuplicateVoteEvidence
 */
export interface DuplicateVoteEvidence {
    voteA?: Vote;
    voteB?: Vote;
    totalVotingPower: bigint;
    validatorPower: bigint;
    timestamp: Date;
}
export interface DuplicateVoteEvidenceProtoMsg {
    typeUrl: "/tendermint.types.DuplicateVoteEvidence";
    value: Uint8Array;
}
/**
 * DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.
 * @name DuplicateVoteEvidenceAmino
 * @package tendermint.types
 * @see proto type: tendermint.types.DuplicateVoteEvidence
 */
export interface DuplicateVoteEvidenceAmino {
    vote_a?: VoteAmino;
    vote_b?: VoteAmino;
    total_voting_power: string;
    validator_power: string;
    timestamp: string;
}
export interface DuplicateVoteEvidenceAminoMsg {
    type: "/tendermint.types.DuplicateVoteEvidence";
    value: DuplicateVoteEvidenceAmino;
}
/**
 * LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.
 * @name LightClientAttackEvidence
 * @package tendermint.types
 * @see proto type: tendermint.types.LightClientAttackEvidence
 */
export interface LightClientAttackEvidence {
    conflictingBlock?: LightBlock;
    commonHeight: bigint;
    byzantineValidators: Validator[];
    totalVotingPower: bigint;
    timestamp: Date;
}
export interface LightClientAttackEvidenceProtoMsg {
    typeUrl: "/tendermint.types.LightClientAttackEvidence";
    value: Uint8Array;
}
/**
 * LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.
 * @name LightClientAttackEvidenceAmino
 * @package tendermint.types
 * @see proto type: tendermint.types.LightClientAttackEvidence
 */
export interface LightClientAttackEvidenceAmino {
    conflicting_block?: LightBlockAmino;
    common_height: string;
    byzantine_validators: ValidatorAmino[];
    total_voting_power: string;
    timestamp: string;
}
export interface LightClientAttackEvidenceAminoMsg {
    type: "/tendermint.types.LightClientAttackEvidence";
    value: LightClientAttackEvidenceAmino;
}
/**
 * @name EvidenceList
 * @package tendermint.types
 * @see proto type: tendermint.types.EvidenceList
 */
export interface EvidenceList {
    evidence: Evidence[];
}
export interface EvidenceListProtoMsg {
    typeUrl: "/tendermint.types.EvidenceList";
    value: Uint8Array;
}
/**
 * @name EvidenceListAmino
 * @package tendermint.types
 * @see proto type: tendermint.types.EvidenceList
 */
export interface EvidenceListAmino {
    evidence: EvidenceAmino[];
}
export interface EvidenceListAminoMsg {
    type: "/tendermint.types.EvidenceList";
    value: EvidenceListAmino;
}
/**
 * @name Evidence
 * @package tendermint.types
 * @see proto type: tendermint.types.Evidence
 */
export declare const Evidence: {
    typeUrl: string;
    is(o: any): o is Evidence;
    isAmino(o: any): o is EvidenceAmino;
    encode(message: Evidence, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Evidence;
    fromPartial(object: DeepPartial<Evidence>): Evidence;
    fromAmino(object: EvidenceAmino): Evidence;
    toAmino(message: Evidence): EvidenceAmino;
    fromAminoMsg(object: EvidenceAminoMsg): Evidence;
    fromProtoMsg(message: EvidenceProtoMsg): Evidence;
    toProto(message: Evidence): Uint8Array;
    toProtoMsg(message: Evidence): EvidenceProtoMsg;
    registerTypeUrl(): void;
};
/**
 * DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.
 * @name DuplicateVoteEvidence
 * @package tendermint.types
 * @see proto type: tendermint.types.DuplicateVoteEvidence
 */
export declare const DuplicateVoteEvidence: {
    typeUrl: string;
    is(o: any): o is DuplicateVoteEvidence;
    isAmino(o: any): o is DuplicateVoteEvidenceAmino;
    encode(message: DuplicateVoteEvidence, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): DuplicateVoteEvidence;
    fromPartial(object: DeepPartial<DuplicateVoteEvidence>): DuplicateVoteEvidence;
    fromAmino(object: DuplicateVoteEvidenceAmino): DuplicateVoteEvidence;
    toAmino(message: DuplicateVoteEvidence): DuplicateVoteEvidenceAmino;
    fromAminoMsg(object: DuplicateVoteEvidenceAminoMsg): DuplicateVoteEvidence;
    fromProtoMsg(message: DuplicateVoteEvidenceProtoMsg): DuplicateVoteEvidence;
    toProto(message: DuplicateVoteEvidence): Uint8Array;
    toProtoMsg(message: DuplicateVoteEvidence): DuplicateVoteEvidenceProtoMsg;
    registerTypeUrl(): void;
};
/**
 * LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.
 * @name LightClientAttackEvidence
 * @package tendermint.types
 * @see proto type: tendermint.types.LightClientAttackEvidence
 */
export declare const LightClientAttackEvidence: {
    typeUrl: string;
    is(o: any): o is LightClientAttackEvidence;
    isAmino(o: any): o is LightClientAttackEvidenceAmino;
    encode(message: LightClientAttackEvidence, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): LightClientAttackEvidence;
    fromPartial(object: DeepPartial<LightClientAttackEvidence>): LightClientAttackEvidence;
    fromAmino(object: LightClientAttackEvidenceAmino): LightClientAttackEvidence;
    toAmino(message: LightClientAttackEvidence): LightClientAttackEvidenceAmino;
    fromAminoMsg(object: LightClientAttackEvidenceAminoMsg): LightClientAttackEvidence;
    fromProtoMsg(message: LightClientAttackEvidenceProtoMsg): LightClientAttackEvidence;
    toProto(message: LightClientAttackEvidence): Uint8Array;
    toProtoMsg(message: LightClientAttackEvidence): LightClientAttackEvidenceProtoMsg;
    registerTypeUrl(): void;
};
/**
 * @name EvidenceList
 * @package tendermint.types
 * @see proto type: tendermint.types.EvidenceList
 */
export declare const EvidenceList: {
    typeUrl: string;
    is(o: any): o is EvidenceList;
    isAmino(o: any): o is EvidenceListAmino;
    encode(message: EvidenceList, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): EvidenceList;
    fromPartial(object: DeepPartial<EvidenceList>): EvidenceList;
    fromAmino(object: EvidenceListAmino): EvidenceList;
    toAmino(message: EvidenceList): EvidenceListAmino;
    fromAminoMsg(object: EvidenceListAminoMsg): EvidenceList;
    fromProtoMsg(message: EvidenceListProtoMsg): EvidenceList;
    toProto(message: EvidenceList): Uint8Array;
    toProtoMsg(message: EvidenceList): EvidenceListProtoMsg;
    registerTypeUrl(): void;
};
