/// <reference types="node" />
import { MessageType } from '../MessageType';
import { IDlcMessage } from './DlcMessage';
import { IOracleEventV0JSON, OracleEventV0 } from './OracleEventV0';
/**
 * In order to make it possible to hold oracles accountable in cases where
 * they do not release a signature for an event outcome, there needs to be
 * a proof that an oracle has committed to a given outcome. This proof is
 * given in a so-called oracle announcement, which contains an oracle event
 * together with the oracle public key and a signature over its serialization,
 * which must be valid with respect to the specified public key.
 *
 * This also makes it possible for users to obtain oracle event information
 * from an un-trusted peer while being guaranteed that it originates from a
 * given oracle.
 */
export declare class OracleAnnouncementV0 implements IDlcMessage {
    static type: MessageType;
    /**
     * Deserializes an oracle_announcement_v0 message
     * @param buf
     */
    static deserialize(buf: Buffer): OracleAnnouncementV0;
    /**
     * The type for oracle_announcement_v0 message. oracle_announcement_v0 = 55332
     */
    type: MessageType;
    length: bigint;
    announcementSig: Buffer;
    oraclePubkey: Buffer;
    oracleEvent: OracleEventV0;
    validate(): void;
    /**
     * Converts oracle_announcement_v0 to JSON
     */
    toJSON(): OracleAnnouncementV0JSON;
    /**
     * Serializes the oracle_announcement_v0 message into a Buffer
     */
    serialize(): Buffer;
}
export interface OracleAnnouncementV0JSON {
    type: number;
    announcementSig: string;
    oraclePubkey: string;
    oracleEvent: IOracleEventV0JSON;
}
