import { FuturesContractDetails } from './futuresContractDetails';
import { LusidInstrument } from './lusidInstrument';
/**
 * LUSID representation of a Future.  Including, but not limited to, Equity Futures, Bond Futures, Index Futures, Currency Futures, and Interest Rate Futures.
 */
export interface Future {
    /**
     * The start date of the instrument. This is normally synonymous with the trade-date.
     */
    startDate: Date;
    /**
     * The final maturity date of the instrument. This means the last date on which the instruments makes a payment of any amount.  For the avoidance of doubt, that is not necessarily prior to its last sensitivity date for the purposes of risk; e.g. instruments such as  Constant Maturity Swaps (CMS) often have sensitivities to rates that may well be observed or set prior to the maturity date, but refer to a termination date beyond it.
     */
    maturityDate: Date;
    /**
     * External market codes and identifiers for the bond, e.g. ISIN.
     */
    identifiers: {
        [key: string]: string;
    };
    contractDetails: FuturesContractDetails;
    /**
     * The number of contracts held.
     */
    contracts?: number;
    /**
     * The reference spot price for the future at which the contract was entered into.
     */
    refSpotPrice?: number;
    underlying?: LusidInstrument;
    /**
     * Calculation type for some Future instruments which have non-standard methodology.  Optional, if not set defaults as follows:  - If ExchangeCode is \"ASX\" and ContractCode is \"IR\" or \"BB\" set to ASX_BankBills  - If ExchangeCode is \"ASX\" and ContractCode is \"YT\" set to ASX_3Year  - If ExchangeCode is \"ASX\" and ContractCode is \"VT\" set to ASX_5Year  - If ExchangeCode is \"ASX\" and ContractCode is \"XT\" set to ASX_10Year  - If ExchangeCode is \"ASX\" and ContractCode is \"LT\" set to ASX_20Year  - otherwise set to Standard    Specific calculation types for ASX bond futures are:  - [Standard] The default calculation type, which does not fit into any of the categories below.  - [ASX_BankBills] Used for AUD and NZD futures “IR” and “BB” on ASX. 90D Bank Bills.  - [ASX_3Year] Used for “YT” on ASX. 3YR semi-annual bond (6 coupons) @ 6%.  - [ASX_5Year] Used for “VT” on ASX. 5yr semi-annual bond (10 coupons) @ 2%.  - [ASX_10Year] Used for “XT” on ASX. 10yr semi-annual bond (20 coupons) @ 6%.  - [ASX_20Year] Used for “LT” on ASX. 20yr semi-annual bond (40 coupons) @ 4%.    Supported string (enumeration) values are: [Standard, ASX_BankBills, ASX_3Year, ASX_5Year, ASX_10Year, ASX_20Year].
     */
    calculationType?: string | 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: Future.InstrumentTypeEnum;
}
export declare namespace Future {
    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;
    };
}
