/// <reference types="node" />
import { IOrderMetadataJSON } from '..';
import { MessageType } from '../MessageType';
import { BatchFundingGroup, IBatchFundingGroupJSON } from './BatchFundingGroup';
import { ContractInfo, IContractInfoV0JSON, IContractInfoV1JSON } from './ContractInfo';
import { IDlcMessage } from './DlcMessage';
import { IOrderIrcInfoJSON, OrderIrcInfo } from './OrderIrcInfo';
import { OrderMetadata } from './OrderMetadata';
import { IOrderPositionInfoJSON, OrderPositionInfo } from './OrderPositionInfo';
/**
 * OrderOffer message contains information about a node and indicates its
 * desire to enter into a new contract. This is the first step toward
 * order negotiation. This is a simpler message than DlcOffer.
 */
export declare class OrderOffer implements IDlcMessage {
    static type: MessageType;
    /**
     * Creates an OrderOffer from JSON data
     * @param json JSON object representing an order offer
     */
    static fromJSON(json: any): OrderOffer;
    /**
     * Deserializes an order_offer message
     * @param buf
     */
    static deserialize(buf: Buffer): OrderOffer;
    /**
     * The type for order_offer message. order_offer = 62770
     */
    type: MessageType;
    protocolVersion: number;
    temporaryContractId: Buffer;
    contractFlags: Buffer;
    chainHash: Buffer;
    contractInfo: ContractInfo;
    offerCollateral: bigint;
    feeRatePerVb: bigint;
    cetLocktime: number;
    refundLocktime: number;
    metadata?: OrderMetadata;
    ircInfo?: OrderIrcInfo;
    positionInfo?: OrderPositionInfo;
    batchFundingGroups?: BatchFundingGroup[];
    unknownTlvs?: Array<{
        type: number;
        data: Buffer;
    }>;
    get offerCollateralSatoshis(): bigint;
    set offerCollateralSatoshis(value: bigint);
    validate(): void;
    /**
     * Converts order_offer to JSON
     */
    toJSON(): IOrderOfferJSON;
    /**
     * Serializes the order_offer message into a Buffer
     */
    serialize(): Buffer;
}
export interface IOrderOfferJSON {
    type: number;
    protocolVersion: number;
    temporaryContractId: string;
    contractFlags: number;
    chainHash: string;
    contractInfo: IContractInfoV0JSON | IContractInfoV1JSON;
    offerCollateral: number;
    offerCollateralSatoshis: number;
    feeRatePerVb: number;
    cetLocktime: number;
    refundLocktime: number;
    tlvs: (IOrderMetadataJSON | IOrderIrcInfoJSON | IOrderPositionInfoJSON | IBatchFundingGroupJSON | unknown)[];
}
export declare class OrderOfferContainer {
    private offers;
    /**
     * Adds an OrderOffer to the container.
     * @param offer The OrderOffer to add.
     */
    addOffer(offer: OrderOffer): void;
    /**
     * Returns all OrderOffers in the container.
     * @returns An array of OrderOffer instances.
     */
    getOffers(): OrderOffer[];
    /**
     * Serializes all OrderOffers in the container to a Buffer.
     * @returns A Buffer containing the serialized OrderOffers.
     */
    serialize(): Buffer;
    /**
     * Deserializes a Buffer into an OrderOfferContainer with OrderOffers.
     * @param buf The Buffer to deserialize.
     * @returns An OrderOfferContainer instance.
     */
    static deserialize(buf: Buffer): OrderOfferContainer;
}
