/**
 * Represents a comprehensive set of TypeScript interfaces, types, and enums for interacting with a market data API.
 * These definitions are designed to facilitate the retrieval and manipulation of financial market data, including quotes,
 * option chains, fundamental data, and reference information for various asset types.
 *
 * ### Key Features:
 * - **Quote Retrieval**: Interfaces for requesting and receiving quotes for multiple symbols or a single symbol.
 * - **Option Chains**: Support for retrieving detailed option chain data, including contract types, expiration dates, and theoretical values.
 * - **Market Hours**: Provides information about market hours, including session intervals and open/close status.
 * - **Reference Data**: Includes detailed reference information for equities, forex, mutual funds, futures, and options.
 * - **Error Handling**: Structured error responses with detailed descriptions and sources of errors.
 * - **Fundamental Data**: Access to fundamental metrics such as dividend yield, P/E ratio, and earnings per share.
 * - **Enums for Standardization**: Enums for asset types, option strategies, expiration types, and more to ensure consistency.
 *
 * ### Interfaces Overview:
 * - **GetQuotesRequest**: Represents a request to retrieve quotes for a list of symbols, with optional fields and indicative quotes.
 * - **GetQuotesResponse**: Represents the response for a quotes request, including quote data or error information.
 * - **GetOptionChainsRequest**: Represents a request to retrieve option chains for a specific symbol, with various optional parameters.
 * - **OptionChain**: Represents the detailed structure of an option chain, including call and put expiration date maps.
 * - **MarketHours**: Provides detailed market hours information for a specific date and market type.
 * - **ErrorResponse**: Represents a structured error response with detailed error information.
 * - **Fundamental**: Provides fundamental metrics for a financial instrument, such as dividend yield and P/E ratio.
 * - **InstrumentResponse**: Represents detailed information about a financial instrument, including bonds and fundamental data.
 *
 * ### Enums Overview:
 * - **AssetMainTypeEnum**: Enum for main asset types such as equity, bond, ETF, and option.
 * - **OptionStrategyEnum**: Enum for various option strategies, including single, vertical, and straddle.
 * - **OptionExpirationType**: Enum for expiration types such as monthly, quarterly, and weekly.
 * - **DividendFrequency**: Enum for dividend payment frequencies, such as annual, quarterly, and monthly.
 * - **HttpStatusCode**: Enum for HTTP status codes, including 400 (Bad Request) and 500 (Internal Server Error).
 *
 * ### Usage:
 * These TypeScript definitions are intended to be used in applications that interact with a financial market data API.
 * They provide a strongly-typed structure for making API requests and handling responses, ensuring type safety and clarity.
 *
 * ### Example:
 * ```typescript
 * const request: GetQuotesRequest = {
 *   symbols: ['AAPL', 'MSFT'],
 *   fields: [GetQuotesAcceptableFieldsEnum.QUOTE, GetQuotesAcceptableFieldsEnum.FUNDAMENTAL],
 *   indicative: true,
 * };
 *
 * const response: GetQuotesResponse = await fetchQuotes(request);
 * if ('errors' in response) {
 *   console.error('Error fetching quotes:', response.errors);
 * } else {
 *   console.log('Quotes:', response);
 * }
 * ```
 */
import { PutCallEnum } from './asset.types';
import { ExchangeName } from './market.types';
/**
 * GET /v1/marketdata/quotes
 * Represents a request to retrieve quotes for a list of symbols.
 *
 * @property symbols - An array of symbols for which quotes are requested.
 *
 * @property fields - An optional array of acceptable field enums to specify a subset of data to return.
 * Possible root nodes include:
 * - `quote`
 * - `fundamental`
 * - `extended`
 * - `reference`
 * - `regular`
 *
 * If not provided, the default fields `[quote, fundamental]` will be used.
 * To retrieve the full response, omit this attribute.
 *
 * @property indicative - An optional boolean to include indicative symbol quotes for all ETF symbols in the request.
 * If set to `true`, the API will return quotes for the requested ETF symbols and their corresponding indicative quotes
 * (e.g., `$ABC.IV` for the ETF symbol `ABC`).
 */
export interface GetQuotesRequest {
    symbols: string[];
    fields?: GetQuotesAcceptableFieldsEnum[];
    indicative?: boolean;
}
/**
 * GET /v1/marketdata/quotes
 * Represents a map of symbols to their corresponding quote responses.
 */
export type GetQuotesResponse = QuoteResponse | ErrorResponse;
/**
 * GET /v1/marketdata/{symbol_id}/quotes
 * Represents a request to retrieve quotes for a specific symbol.
 *
 * @property symbol - The symbol for which the quote is requested.
 *
 * @property fields - An optional array of acceptable field enums to specify a subset of data to return.
 * Possible root nodes include:
 * - `quote`
 * - `fundamental`
 * - `extended`
 * - `reference`
 * - `regular`
 *
 * If not provided, the default fields `[quote, fundamental]` will be used.
 * To retrieve the full response, omit this attribute.
 */
export interface GetSingleQuoteRequest {
    symbol: string;
    fields?: GetQuotesAcceptableFieldsEnum[];
}
/**
 * GET /v1/marketdata/{symbol_id}/quotes
 * Represents a response containing the quote information for a specific symbol.
 */
export type GetSingleQuoteResponse = QuoteResponseObject | ErrorResponse;
/**
 * GET /v1/marketdata/chains
 *
 * Represents a request to retrieve option chains for a specific symbol.
 */
export interface GetOptionChainsRequest {
    /**
     * The ticker symbol for which to fetch option chains (e.g., "AAPL").
     */
    symbol: string;
    /**
     * Filter by contract type: CALL, PUT, or ALL.
     */
    contractType?: PutCallAllEnum;
    /**
     * Number of strikes above and below the at‑the‑money price to return.
     * @type integer
     */
    strikeCount?: number;
    /**
     * Whether to include the underlying symbol’s quote alongside the options.
     * @default false
     */
    includeUnderlyingQuote?: boolean;
    /**
     * Strategy for the option chain:
     * - SINGLE: basic chain
     * - ANALYTICAL: includes theoretical values using volatility, underlyingPrice, interestRate, and daysToExpiration
     */
    strategy?: OptionStrategyEnum;
    /**
     * Strike interval for spread strategies (only used when strategy ≠ SINGLE).
     * @type integer
     */
    interval?: number;
    /**
     * A specific strike price to filter the chain.
     * @type float
     */
    strike?: number;
    /**
     * Range (in price units) around the at‑the‑money strike to include.
     * @type float
     */
    range?: number;
    /**
     * Lower bound for expiration dates (inclusive). Accepts a Date object or ISO 8601 string.
     */
    fromDate?: string | Date;
    /**
     * Upper bound for expiration dates (inclusive). Accepts a Date object or ISO 8601 string.
     */
    toDate?: string | Date;
    /**
     * Volatility (as a decimal, e.g. 0.25 for 25%) used for theoretical pricing (ANALYTICAL only).
     * @type float
     */
    volatility?: number;
    /**
     * Underlying price used for theoretical calculations (ANALYTICAL only).
     * @type float
     */
    underlyingPrice?: number;
    /**
     * Interest rate (as a decimal, e.g. 0.01 for 1%) used for theoretical pricing (ANALYTICAL only).
     * @type float
     */
    interestRate?: number;
    /**
     * Days to expiration used for theoretical calculations (ANALYTICAL only).
     * @type integer
     */
    daysToExpiration?: number;
    /**
     * Filter by expiration month.
     */
    expMonth?: OptionExpiryMonthEnum;
    /**
     * Further filter by option type (e.g. "CALL" or "PUT") if supported.
     */
    optionType?: string;
    /**
     * Client entitlement level, used to determine data access permissions.
     */
    entitlement?: EntitlementEnum;
}
/**
 * GET /v1/marketdata/chains
 * Represents a response containing the option chain information for a specific symbol.
 */
export type GetOptionsChainsResponse = OptionChain | ErrorResponse;
/**
 * GET /v1/marketdata/expirationchain
 * Represents a request to retrieve expiration chain information for a specific symbol.
 * Request: string symbol
 */
export type GetExpirationChainRequest = string;
export type GetExpirationChainResponse = ExpirationChain | ErrorResponse;
/**
 * GET /v1/marketdata/pricehistory
 * Represents a request to retrieve price history for a specific symbol.
 *
 * @property symbol - The symbol for which to fetch price history (e.g., "AAPL").
 */
export interface GetPriceHistoryRequest {
    symbol: string;
    periodType?: PeriodTypeEnum;
    period?: number;
    frequencyType?: FrequencyTypeEnum;
    frequency?: number;
    startDate?: string | Date;
    endDate?: string | Date;
    needExtendedHoursData?: boolean;
    needPreviousClose?: boolean;
}
/**
 * GET /v1/marketdata/movers/{symbol_id}
 * Represents a request to retrieve market movers for a specific symbol.
 *
 * @property symbol - the index for which to fetch market movers (e.g., "$SPX").
 */
export interface GetMarketMoversRequest {
    symbol_id: IndexSymbolEnum;
    sort?: SortMoversByEnum;
    /**
     * Frequency property.
     * Acceptable values: 0, 1, 5, 10, 30, 60
     * Default value: 0
     */
    frequency?: 0 | 1 | 5 | 10 | 30 | 60;
}
export type GetMarketMoversResponse = MarketMoversResponse | ErrorResponse;
/**
 * GET /v1/marketdata/markets
 * Represents a request to retrieve market hours for a specific date.
 */
export type GetMarketHoursRequest = {
    markets: MarketsEnum[];
    date: string | Date;
};
/**
 * Represents the response type for a request to retrieve market hours.
 *
 * This type is a union of two possible responses:
 * - `MarketHoursResponse`: Indicates a successful response containing market hours data.
 * - `ErrorResponse`: Indicates an error occurred during the request, providing error details.
 *
 * ### MarketHoursResponse Structure:
 * - The `MarketHoursResponse` is a `Record<string, Record<string, MarketHours>>`.
 * - The outer `Record<string, MarketHours>` keys represent the market type, which can be one of the following:
 *   - `equity`
 *   - `option`
 *   - `future`
 *   - `bond`
 * - The inner `Record<string, MarketHours>` keys represent product codes (guessing, not documented).
 * - Each inner `MarketHours` object contains detailed information about the market hours for that product.
 *
 * ### MarketHours Object:
 * - `date`: The date for which the market hours are provided, in `YYYY-MM-DD` format.
 * - `marketType`: The type of market, corresponding to the outer record key.
 * - `exchange`: The name of the exchange (e.g., "NYSE", "NASDAQ").
 * - `category`: The category of the market (e.g., "equity", "option").
 * - `product`: The product type (e.g., "stock", "option").
 * - `productName`: The name of the product (e.g., "Apple Inc.").
 * - `isOpen`: A boolean indicating whether the market is open.
 * - `sessionHours`: A `Record<string, Interval[]>` where:
 *   - The keys represent the session type, such as:
 *     - `preMarket`
 *     - `regularMarket`
 *     - `postMarket`
 *   - The values are arrays of `Interval` objects, each containing:
 *     - `start`: The start time of the session in `HH:mm:ss` format.
 *     - `end`: The end time of the session in `HH:mm:ss` format.
 */
export type GetMarketHoursResponse = MarketHoursResponse | ErrorResponse;
/**
 * GET /v1/marketdata/markets/{market}
 * Represents a request to retrieve market hours for a specific market.
 */
export interface GetSingleMarketHoursRequest {
    market: MarketsEnum;
    date: string | Date;
}
export type GetSingleMarketHoursResponse = GetMarketHoursResponse;
/**
 * GET /v1/marketdata/instruments
 * Represents a request to retrieve instrument information for a specific symbol.
 */
export interface GetInstrumentsRequest {
    symbol: string;
    projection: SearchByEnum;
}
/**
 * GET /v1/marketdata/instruments
 * Represents a response containing instrument information for a specific symbol.
 */
export type GetInstrumentsResponse = GetInstrumentsBaseResponse | ErrorResponse;
/**
 * GET /v1/marketdata/instruments/{cusip_id}
 * Represents a request to retrieve instrument information for a specific CUSIP.
 */
export type GetInstrumentByCusipRequest = string;
/**
 * GET /v1/marketdata/instruments/{cusip_id}
 * Represents a response containing instrument information for a specific CUSIP.
 */
export type GetInstrumentByCUSIPResponse = InstrumentResponse | ErrorResponse;
export interface GetInstrumentsBaseResponse {
    instruments: InstrumentResponse[];
}
export declare enum SearchByEnum {
    SYMBOL_SEARCH = "symbol-search",
    SYMBOL_REGEX = "symbol-regex",
    DESC_SEARCH = "desc-search",
    DESC_REGEX = "desc-regex",
    SEARCH = "search",
    FUNDAMENTAL = "fundamental"
}
export type MarketHoursResponse = Record<string, Record<string, MarketHours>>;
export declare enum MarketsEnum {
    EQUITY = "equity",
    OPTION = "option",
    FUTURE = "future",
    BOND = "bond"
}
export interface MarketMoversResponse {
    screeners: Screener[];
}
export declare enum IndexSymbolEnum {
    DJI = "$DJI",// Dow Jones Industrial Average
    COMPX = "$COMPX",// NASDAQ Composite
    SPX = "$SPX",// S&P 500
    NYSE = "NYSE",// New York Stock Exchange
    NASDAQ = "NASDAQ",// NASDAQ Stock Market
    OTCBB = "OTCBB",// Over-the-Counter Bulletin Board
    INDEX_ALL = "INDEX_ALL",// All Indexes
    EQUITY_ALL = "EQUITY_ALL",// All Equities
    OPTION_ALL = "OPTION_ALL",// All Options
    OPTION_PUT = "OPTION_PUT",// All Put Options
    OPTION_CALL = "OPTION_CALL"
}
export declare enum SortMoversByEnum {
    VOLUME = "VOLUME",
    TRADES = "TRADES",
    PERCENT_CHANGE_UP = "PERCENT_CHANGE_UP",
    PERCENT_CHANGE_DOWN = "PERCENT_CHANGE_DOWN"
}
export declare enum EntitlementEnum {
    PP = "PP",// Paying Pro
    NP = "NP",// NonPro
    PN = "PN"
}
export declare enum PeriodTypeEnum {
    DAY = "day",
    MONTH = "month",
    YEAR = "year",
    YTD = "ytd"
}
export declare enum FrequencyTypeEnum {
    MINUTE = "minute",
    DAILY = "daily",
    WEEKLY = "weekly",
    MONTHLY = "monthly"
}
export type PutCallAllEnum = PutCallEnum | {
    ALL: 'ALL';
};
export declare enum GetQuotesAcceptableFieldsEnum {
    QUOTE = "quote",
    FUNDAMENTAL = "fundamental",
    EXTENDED = "extended",
    REFERENCE = "reference",
    REGULAR = "regular"
}
export declare enum OptionExpirationType {
    MONTHLY = "M",// End Of Month Expiration Calendar Cycle
    QUARTERLY = "Q",// Quarterly expirations
    WEEKLY = "W",// Weekly expiration
    REGULAR_S = "S"
}
export declare enum OptionSettlementTypeEnum {
    AM = "A",// AM settlement
    PM = "P"
}
export declare enum QuoteTypeEnum {
    NBBO = "NBBO",// Realtime
    NFL = "NFL"
}
export declare enum OptionStrategyEnum {
    SINGLE = "SINGLE",
    ANALYTICAL = "ANALYTICAL",
    COVERED = "COVERED",
    VERTICAL = "VERTICAL",
    CALENDAR = "CALENDAR",
    STRANGLE = "STRANGLE",
    STRADDLE = "STRADDLE",
    BUTTERFLY = "BUTTERFLY",
    CONDOR = "CONDOR",
    DIAGONAL = "DIAGONAL",
    COLLAR = "COLLAR",
    ROLL = "ROLL"
}
export declare enum FundStrategyEnum {
    ACTIVE = "A",
    LEVERAGED = "L",
    PASSIVE = "P",
    QUANTITATIVE = "Q",
    SHORT = "S"
}
export declare enum OptionExerciseTypeEnum {
    AMERICAN = "A",
    EUROPEAN = "E"
}
export declare enum OptionExpiryMonthEnum {
    JANUARY = "JAN",
    FEBRUARY = "FEB",
    MARCH = "MAR",
    APRIL = "APR",
    MAY = "MAY",
    JUNE = "JUN",
    JULY = "JUL",
    AUGUST = "AUG",
    SEPTEMBER = "SEP",
    OCTOBER = "OCT",
    NOVEMBER = "NOV",
    DECEMBER = "DEC",
    ALL = "ALL"
}
export declare enum DividendFrequency {
    ANNUAL = 1,
    SEMI_ANNUAL = 2,
    THREE_TIMES_A_YEAR = 3,
    QUARTERLY = 4,
    EVERY_OTHER_MONTH = 6,
    ELEVEN_TIMES_A_YEAR = 11,
    MONTHLY = 12
}
export declare enum MutualFundAssetSubType {
    OPEN_ENDED_FUND = "OEF",// Open-End Fund
    CLOSED_ENDED_FUND = "CEF",// Closed-End Fund
    MONEY_MARKET_FUND = "MMF"
}
export declare enum EquityAssetSubTypeEnum {
    COMMON_EQUITY = "COE",// Common Equity
    PREFERRED_EQUITY = "PRF",// Preferred Equity
    AMERICAN_DEPOSITARY_RECEIPT = "ADR",// American Depositary Receipt
    GLOBAL_DEPOSITARY_RECEIPT = "GDR",// Global Depositary Receipt
    CLOSED_END_FUND = "CEF",// Closed-End Fund
    EXCHANGE_TRADED_FUND = "ETF",// Exchange-Traded Fund
    EXCHANGE_TRADED_NOTE = "ETN",// Exchange-Traded Note
    UNIT_INVESTMENT_TRUST = "UIT",// Unit Investment Trust
    WARRANT = "WAR",// Warrant
    RIGHTS = "RGT"
}
export declare enum AssetMainTypeEnum {
    BOND = "BOND",
    EQUITY = "EQUITY",
    ETF = "ETF",
    EXTENDED = "EXTENDED",
    FOREX = "FOREX",
    FUTURE = "FUTURE",
    FUTURE_OPTION = "FUTURE_OPTION",
    FUNDAMENTAL = "FUNDAMENTAL",
    INDEX = "INDEX",
    INDICATOR = "INDICATOR",
    MUTUAL_FUND = "MUTUAL_FUND",
    OPTION = "OPTION",
    UNKNOWN = "UNKNOWN"
}
export declare enum DirectionEnum {
    UP = "UP",
    DOWN = "DOWN"
}
export declare enum HttpStatusCode {
    BAD_REQUEST = 400,
    UNAUTHORIZED = 401,
    NOT_FOUND = 404,
    INTERNAL_SERVER_ERROR = 500
}
export interface Error {
    id: string;
    status: string;
    title: string;
    detail: string;
    source?: ErrorSource;
}
export interface ErrorResponse {
    errors: Error[];
}
export interface Interval {
    start: string;
    end: string;
}
export interface MarketHours {
    date: string;
    marketType: AssetMainTypeEnum;
    exchange: string;
    category: string;
    product: string;
    productName: string;
    isOpen: boolean;
    sessionHours: Record<string, Interval[]>;
}
export interface Screener {
    description: string;
    change: number;
    percentChange: number;
    name: string;
    direction: DirectionEnum;
    last: number;
    symbol: string;
    totalVolume: number;
}
export interface Candle {
    close: number;
    datetime: number;
    datetimeISO8601: string;
    high: number;
    low: number;
    open: number;
    volume: number;
}
export interface CandleList {
    candles: Candle[];
    empty: boolean;
    previousClose: number;
    previousCloseDate: number;
    previousCloseDateISO8601: string;
    symbol: string;
}
export interface ReferenceBase {
    description: string;
    cusip: string;
    exchange: string;
    exchangeName: string;
}
export interface ReferenceEquity extends ReferenceBase {
    fsiDesc: string;
    htbQuantity: number;
    htbRate: number;
    isHardToBorrow: boolean;
    isShortable: boolean;
    otcMarketTier: string;
}
export interface ReferenceForex extends ReferenceBase {
    isTradable: boolean;
    marketMaker: string;
    product: string | null;
    tradingHours: string;
}
export type ReferenceMutualFund = ReferenceBase;
export type ReferenceIndex = Omit<ReferenceBase, 'cusip'>;
export interface ReferenceFutureOption extends Omit<ReferenceBase, 'cusip'> {
    contractType: PutCallEnum;
    multiplier: number;
    expirationDate: number;
    expirationStyle: string;
    strikePrice: number;
    underlying: string;
}
export interface ReferenceFuture extends Omit<ReferenceBase, 'cusip'> {
    futureActiveSymbol: string;
    futureExpirationDate: number;
    futureIsActive: boolean;
    futureMultiplier: number;
    futurePriceFormat: string;
    futureSettlementPrice: number;
    futureTradingHours: string;
    product: string;
}
export interface Expiration {
    daysToExpiration: number;
    expiration: string;
    expirationType: OptionExpirationType;
    standard: boolean;
    settlementType: OptionSettlementTypeEnum;
    optionRoots: string;
}
export interface ExpirationChain {
    status: string;
    expirationList: Expiration[];
}
export interface OptionDeliverables {
    symbol: string;
    assetType: string;
    deliverableUnits: string;
    currencyType: string;
}
export interface OptionContract {
    putCall: PutCallEnum;
    symbol: string;
    description: string;
    exchangeName: string;
    bidPrice: number;
    askPrice: number;
    lastPrice: number;
    markPrice: number;
    bidSize: number;
    askSize: number;
    lastSize: number;
    highPrice: number;
    lowPrice: number;
    openPrice: number;
    closePrice: number;
    totalVolume: number;
    tradeDate: number;
    quoteTimeInLong: number;
    tradeTimeInLong: number;
    netChange: number;
    volatility: number;
    delta: number;
    gamma: number;
    theta: number;
    vega: number;
    rho: number;
    timeValue: number;
    openInterest: number;
    isInTheMoney: boolean;
    theoreticalOptionValue: number;
    theoreticalVolatility: number;
    isMini: boolean;
    isNonStandard: boolean;
    optionDeliverablesList: OptionDeliverables[];
    strikePrice: number;
    expirationDate: string;
    daysToExpiration: number;
    expirationType: OptionExpirationType;
    lastTradingDay: number;
    multiplier: number;
    settlementType: OptionSettlementTypeEnum;
    deliverableNote: string;
    isIndexOption: boolean;
    percentChange: number;
    markChange: number;
    markPercentChange: number;
    isPennyPilot: boolean;
    intrinsicValue: number;
    optionRoot: string;
}
export interface Underlying {
    ask: number;
    askSize: number;
    bid: number;
    bidSize: number;
    change: number;
    close: number;
    delayed: boolean;
    description: string;
    exchangeName: ExchangeName;
    fiftyTwoWeekHigh: number;
    fiftyTwoWeekLow: number;
    highPrice: number;
    last: number;
    lowPrice: number;
    mark: number;
    markChange: number;
    markPercentChange: number;
    openPrice: number;
    percentChange: number;
    quoteTime: number;
    symbol: string;
    totalVolume: number;
    tradeTime: number;
}
export interface OptionContractMap {
    [key: string]: OptionContract;
}
export interface OptionChain {
    symbol: string;
    status: string;
    underlying?: Underlying;
    strategy: OptionStrategyEnum;
    interval: number;
    isDelayed: boolean;
    isIndex: boolean;
    daysToExpiration: number;
    interestRate: number;
    underlyingPrice: number;
    volatility: number;
    callExpDateMap: Record<string, OptionContractMap>;
    putExpDateMap: Record<string, OptionContractMap>;
}
export interface ErrorSource {
    pointer?: string[];
    parameter?: string;
    header?: string;
}
export interface BaseQuoteResponse<Quote, Reference> {
    assetMainType: AssetMainTypeEnum;
    ssid: number;
    symbol: string;
    realtime: boolean;
    quote: Quote;
    reference: Reference;
}
export interface EquityResponse extends BaseQuoteResponse<QuoteEquity, ReferenceEquity> {
    assetSubType?: EquityAssetSubTypeEnum;
    quoteType?: QuoteTypeEnum;
    extended?: ExtendedMarketQuoteInformation;
    fundamental?: Fundamental;
    regular?: RegularMarketQuoteInformation;
}
export type OptionResponse = BaseQuoteResponse<QuoteOption, ReferenceOption>;
export type ForexResponse = BaseQuoteResponse<QuoteForex, ReferenceForex>;
export type FutureResponse = BaseQuoteResponse<QuoteFuture, ReferenceFuture>;
export type FutureOptionResponse = BaseQuoteResponse<QuoteFutureOption, ReferenceFutureOption>;
export type IndexResponse = BaseQuoteResponse<QuoteIndex, ReferenceIndex>;
export type MutualFundResponse = BaseQuoteResponse<QuoteMutualFund, ReferenceMutualFund>;
export interface QuoteError {
    invalidCusips?: string[];
    invalidSSIDs?: number[];
    invalidSymbols?: string[];
}
export type QuoteResponseObject = EquityResponse | OptionResponse | ForexResponse | FutureResponse | FutureOptionResponse | IndexResponse | MutualFundResponse | QuoteError;
export type QuoteResponse = Record<string, QuoteResponseObject>;
export interface QuoteRequest {
    /**
     * Request one or more quote data in POST body
     */
    cusips?: string[];
    /**
     * Comma-separated list of nodes in each quote.
     * Possible values are quote, fundamental, reference, extended, regular.
     * Don't send this attribute for full response.
     */
    fields?: string;
    /**
     * List of Schwab security IDs (SSID), max of 500 of symbols+cusip+ssids.
     */
    ssids?: number[];
    /**
     * List of symbols, max of 500 of symbols+cusip+ssids.
     */
    symbols?: string[];
    /**
     * Get realtime quotes and skip entitlement check.
     */
    realtime?: boolean;
    /**
     * Include indicative symbol quotes for all ETF symbols in request.
     * If ETF symbol ABC is in request and indicative=true, API will return quotes for ABC and its corresponding indicative quote for $ABC.IV.
     */
    indicative?: boolean;
}
export interface RegularMarketQuoteInformation {
    regularMarketLastPrice: number;
    regularMarketLastSize: number;
    regularMarketNetChange: number;
    regularMarketPercentChange: number;
    regularMarketTradeTime: number;
}
export interface ExtendedMarketQuoteInformation {
    askPrice?: number;
    askSize?: number;
    bidPrice?: number;
    bidSize?: number;
    lastPrice?: number;
    lastSize?: number;
    mark?: number;
    quoteTime?: number;
    totalVolume?: number;
    tradeTime?: number;
}
export interface QuoteBase {
    '52WeekHigh'?: number;
    '52WeekLow'?: number;
    askPrice?: number;
    bidPrice?: number;
    askSize?: number;
    bidSize?: number;
    highPrice?: number;
    lowPrice?: number;
    openPrice?: number;
    closePrice?: number;
    lastPrice?: number;
    netChange?: number;
    netPercentChange?: number;
    totalVolume?: number;
    tradeTime?: number;
    quoteTime?: number;
    securityStatus?: string;
}
export interface QuoteForex extends QuoteBase {
    lastSize?: number;
    mark?: number;
    tick?: number;
    tickAmount?: number;
}
export interface QuoteEquity extends QuoteBase {
    askMICId?: string;
    askTime?: number;
    bidMICId?: string;
    bidTime?: number;
    lastMICId?: string;
    lastSize?: number;
    volatility?: number;
}
export interface QuoteOption extends QuoteBase {
    delta?: number;
    gamma?: number;
    impliedYield?: number;
    indAskPrice?: number;
    indBidPrice?: number;
    indQuoteTime?: number;
    moneyIntrinsicValue?: number;
    openInterest?: number;
    rho?: number;
    theoreticalOptionValue?: number;
    theta?: number;
    timeValue?: number;
    underlyingPrice?: number;
    vega?: number;
    volatility?: number;
    intrinsicValue?: number;
    percentChange?: number;
    mark?: number;
    markChange?: number;
    markPercentChange?: number;
}
export interface QuoteMutualFund extends QuoteBase {
    nAV?: number;
    divYield?: number;
}
export type QuoteIndex = QuoteBase;
export interface QuoteFutureOption extends QuoteBase {
    askMICId?: string;
    bidMICId?: string;
    lastMICId?: string;
    settlementPrice?: number;
    tick?: number;
    tickAmount?: number;
}
export interface QuoteFuture extends QuoteBase {
    askMICId?: string;
    askTime?: number;
    bidMICId?: string;
    bidTime?: number;
    futurePercentChange?: number;
    quotedInSession?: boolean;
    settleTime?: number;
}
export interface ReferenceOption {
    contractType: PutCallEnum;
    cusip: string;
    daysToExpiration: number;
    deliverables: string;
    exchange: string;
    exchangeName: string;
    exerciseType: OptionExerciseTypeEnum;
    expirationDay: number;
    expirationMonth: number;
    expirationType: OptionExpirationType;
    expirationYear: number;
    isPennyPilot: boolean;
    lastTradingDay: number;
    multiplier: number;
    settlementType: OptionSettlementTypeEnum;
    strikePrice: number;
    underlying: string;
}
export interface Fundamental {
    avg10DaysVolume: number;
    avg1YearVolume: number;
    declarationDate: string;
    divAmount: number;
    divExDate: string;
    divFreq: DividendFrequency | null;
    divPayAmount: number;
    divPayDate: string;
    divYield: number;
    eps: number;
    fundLeverageFactor: number;
    fundStrategy: FundStrategyEnum | null;
    nextDivExDate: string;
    nextDivPayDate: string;
    peRatio: number;
}
export interface Bond {
    cusip: string;
    symbol: string;
    description: string;
    exchange: string;
    assetType: AssetMainTypeEnum;
    bondFactor: string;
    bondMultiplier: string;
    bondPrice: number;
    type: AssetMainTypeEnum;
}
export interface FundamentalInst {
    symbol: string;
    high52: number;
    low52: number;
    pegRatio: number;
    pbRatio: number;
    prRatio: number;
    pcfRatio: number;
    grossMarginTTM: number;
    grossMarginMRQ: number;
    netProfitMarginTTM: number;
    netProfitMarginMRQ: number;
    operatingMarginTTM: number;
    operatingMarginMRQ: number;
    returnOnEquity: number;
    returnOnAssets: number;
    returnOnInvestment: number;
    quickRatio: number;
    currentRatio: number;
    interestCoverage: number;
    totalDebtToCapital: number;
    ltDebtToEquity: number;
    totalDebtToEquity: number;
    epsChangePercentTTM: number;
    epsChangeYear: number;
    epsChange: number;
    revChangeYear: number;
    revChangeTTM: number;
    revChangeIn: number;
    sharesOutstanding: number;
    marketCapFloat: number;
    marketCap: number;
    bookValuePerShare: number;
    shortIntToFloat: number;
    shortIntDayToCover: number;
    divGrowthRate3Year: number;
    beta: number;
    vol1DayAvg: number;
    vol10DayAvg: number;
    vol3MonthAvg: number;
    avg1DayVolume: number;
    avg3MonthVolume: number;
    corpactionDate: string;
    dtnVolume: number;
}
export interface Instrument {
    cusip: string;
    symbol: string;
    description: string;
    exchange: string;
    assetType: AssetMainTypeEnum;
    type: AssetMainTypeEnum;
}
export interface InstrumentResponse extends Instrument {
    bondFactor?: string;
    bondMultiplier?: string;
    bondPrice?: number;
    fundamental?: FundamentalInst;
    bondInstrumentInfo?: Bond;
}
//# sourceMappingURL=dataapi.types.d.ts.map