syntax = "proto3";

package IBProto;

import "TagValue.proto";

message IneligibilityReason {
    optional string id = 1;
    optional string description = 2;
}

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;
    repeated TagValue 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 fundSubsequentMinimumPurchase = 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 putable = 52;
    optional string descAppend = 53;
    optional string nextOptionDate = 54;
    optional string nextOptionType = 55;
    optional bool nextOptionPartial = 56;
    optional string notes = 57;

    repeated IneligibilityReason ineligibilityReasonList = 58;

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

    optional string minAlgoSize = 62;
}
