/* Copyright (C) 2025 Interactive Brokers LLC. All rights reserved. This code is subject to the terms
 * and conditions of the IB API Non-Commercial License or the IB API Commercial License, as applicable. */

syntax = "proto3";

package protobuf;

import "IneligibilityReason.proto";

option java_outer_classname = "ContractDetailsProto";
option java_package = "com.ib.client.protobuf";
option csharp_namespace = "IBApi.protobuf";

message ContractDetails {
    optional string marketName = 1;
    optional string minTick = 2;
    optional string orderTypes = 3;
    optional string validExchanges = 4;
    optional int32 priceMagnifier = 5;
    optional int32 underConId = 6;
    optional string longName = 7;
    optional string contractMonth = 8;
    optional string industry = 9;
    optional string category = 10;
    optional string subcategory = 11;
    optional string timeZoneId = 12;
    optional string tradingHours = 13;
    optional string liquidHours = 14;
    optional string evRule = 15;
    optional double evMultiplier = 16;
    map<string, string> secIdList = 17;
    optional int32 aggGroup = 18;
    optional string underSymbol = 19;
    optional string underSecType = 20;
    optional string marketRuleIds = 21;
    optional string realExpirationDate = 22;
    optional string stockType = 23;
    optional string minSize = 24;
    optional string sizeIncrement = 25;
    optional string suggestedSizeIncrement = 26;

	// fund	fields
    optional string fundName = 27;
    optional string fundFamily = 28;
    optional string fundType = 29;
    optional string fundFrontLoad = 30;
    optional string fundBackLoad = 31;
    optional string fundBackLoadTimeInterval = 32;
    optional string fundManagementFee = 33;
    optional bool fundClosed = 34;
    optional bool fundClosedForNewInvestors = 35;
    optional bool fundClosedForNewMoney = 36;
    optional string fundNotifyAmount = 37;
    optional string fundMinimumInitialPurchase = 38;
    optional string fundMinimumSubsequentPurchase = 39;
    optional string fundBlueSkyStates = 40;
    optional string fundBlueSkyTerritories = 41;
    optional string fundDistributionPolicyIndicator = 42;
    optional string fundAssetType = 43;

	// bond fields
    optional string cusip = 44;
    optional string issueDate = 45;
    optional string ratings = 46;
    optional string bondType = 47;
    optional double coupon = 48;
    optional string couponType = 49;
    optional bool convertible = 50;
    optional bool callable = 51;
    optional bool puttable = 52;
    optional string descAppend = 53;
    optional string nextOptionDate = 54;
    optional string nextOptionType = 55;
    optional bool nextOptionPartial = 56;
    optional string bondNotes = 57;

    repeated IneligibilityReason ineligibilityReasonList = 58;

    // event contract fields
    optional string eventContract1 = 59;
    optional string eventContractDescription1 = 60;
    optional string eventContractDescription2 = 61;

    optional string minAlgoSize = 62;
    optional string lastPricePrecision = 63;
    optional string lastSizePrecision = 64;
}