import { LusidInstrument } from './lusidInstrument';
import { Schedule } from './schedule';
/**
 * LUSID representation of a Complex Bond.  Including Floating, Callable, Puttable, Sinkable, and Fixed-to-float.
 */
export interface ComplexBond {
    /**
     * external market codes and identifiers for the bond, e.g. ISIN.
     */
    identifiers?: {
        [key: string]: string;
    } | null;
    /**
     * The calculation type applied to the bond coupon amount. This is required for bonds that have a particular type of computing the period coupon, such as simple compounding,  irregular coupons etc.  The default CalculationType is `Standard`, which returns a coupon amount equal to Principal * Coupon Rate / Coupon Frequency. Coupon Frequency is 12M / Payment Frequency.  Payment Frequency can be 1M, 3M, 6M, 12M etc. So Coupon Frequency can be 12, 4, 2, 1 respectively.    Supported string (enumeration) values are: [Standard, DayCountCoupon, NoCalculationFloater, BrazilFixedCoupon].
     */
    calculationType?: string | null;
    /**
     * schedules.
     */
    schedules?: Array<Schedule> | null;
    /**
     * The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap
     */
    instrumentType: ComplexBond.InstrumentTypeEnum;
}
export declare namespace ComplexBond {
    type InstrumentTypeEnum = 'QuotedSecurity' | 'InterestRateSwap' | 'FxForward' | 'Future' | 'ExoticInstrument' | 'FxOption' | 'CreditDefaultSwap' | 'InterestRateSwaption' | 'Bond' | 'EquityOption' | 'FixedLeg' | 'FloatingLeg' | 'BespokeCashFlowsLeg' | 'Unknown' | 'TermDeposit' | 'ContractForDifference' | 'EquitySwap' | 'CashPerpetual' | 'CapFloor' | 'CashSettled' | 'CdsIndex' | 'Basket' | 'FundingLeg' | 'FxSwap' | 'ForwardRateAgreement' | 'SimpleInstrument' | 'Repo' | 'Equity' | 'ExchangeTradedOption' | 'ReferenceInstrument' | 'ComplexBond' | 'InflationLinkedBond' | 'InflationSwap';
    const InstrumentTypeEnum: {
        QuotedSecurity: LusidInstrument.InstrumentTypeEnum;
        InterestRateSwap: LusidInstrument.InstrumentTypeEnum;
        FxForward: LusidInstrument.InstrumentTypeEnum;
        Future: LusidInstrument.InstrumentTypeEnum;
        ExoticInstrument: LusidInstrument.InstrumentTypeEnum;
        FxOption: LusidInstrument.InstrumentTypeEnum;
        CreditDefaultSwap: LusidInstrument.InstrumentTypeEnum;
        InterestRateSwaption: LusidInstrument.InstrumentTypeEnum;
        Bond: LusidInstrument.InstrumentTypeEnum;
        EquityOption: LusidInstrument.InstrumentTypeEnum;
        FixedLeg: LusidInstrument.InstrumentTypeEnum;
        FloatingLeg: LusidInstrument.InstrumentTypeEnum;
        BespokeCashFlowsLeg: LusidInstrument.InstrumentTypeEnum;
        Unknown: LusidInstrument.InstrumentTypeEnum;
        TermDeposit: LusidInstrument.InstrumentTypeEnum;
        ContractForDifference: LusidInstrument.InstrumentTypeEnum;
        EquitySwap: LusidInstrument.InstrumentTypeEnum;
        CashPerpetual: LusidInstrument.InstrumentTypeEnum;
        CapFloor: LusidInstrument.InstrumentTypeEnum;
        CashSettled: LusidInstrument.InstrumentTypeEnum;
        CdsIndex: LusidInstrument.InstrumentTypeEnum;
        Basket: LusidInstrument.InstrumentTypeEnum;
        FundingLeg: LusidInstrument.InstrumentTypeEnum;
        FxSwap: LusidInstrument.InstrumentTypeEnum;
        ForwardRateAgreement: LusidInstrument.InstrumentTypeEnum;
        SimpleInstrument: LusidInstrument.InstrumentTypeEnum;
        Repo: LusidInstrument.InstrumentTypeEnum;
        Equity: LusidInstrument.InstrumentTypeEnum;
        ExchangeTradedOption: LusidInstrument.InstrumentTypeEnum;
        ReferenceInstrument: LusidInstrument.InstrumentTypeEnum;
        ComplexBond: LusidInstrument.InstrumentTypeEnum;
        InflationLinkedBond: LusidInstrument.InstrumentTypeEnum;
        InflationSwap: LusidInstrument.InstrumentTypeEnum;
    };
}
