syntax = "proto2";
package Qot_GetIpoList;
option java_package = "com.futu.openapi.pb";
option go_package = "github.com/futuopen/ftapi4go/pb/qotgetipolist";

import "Common.proto";
import "Qot_Common.proto";

// Ipo基本数据
message BasicIpoData
{
	required Qot_Common.Security security = 1; // Qot_Common::QotMarket 股票市场，支持港股、美股和 A股。其中，A 股整体返回，不区分沪股和深股。
	required string name = 2; // 股票名称
	optional string listTime = 3; // 上市日期字符串
	optional double listTimestamp = 4; // 上市日期时间戳
}

// A股Ipo列表额外数据
message CNIpoExData 
{
	required string applyCode = 1; // 申购代码
	required int64 issueSize = 2; // 发行总数
	required int64 onlineIssueSize = 3; // 网上发行量
	required int64 applyUpperLimit = 4; // 申购上限
	required int64 applyLimitMarketValue = 5; // 顶格申购需配市值
	required bool isEstimateIpoPrice = 6; // 是否预估发行价
	required double ipoPrice = 7; // 发行价 预估值会因为募集资金、发行数量、发行费用等数据变动而变动，仅供参考。实际数据公布后会第一时间更新。
	required double industryPeRate = 8; // 行业市盈率
	required bool isEstimateWinningRatio = 9; // 是否预估中签率
	required double winningRatio = 10; // 中签率 该字段为百分比字段，默认不展示%，如20实际对应20%。预估值会因为募集资金、发行数量、发行费用等数据变动而变动，仅供参考。实际数据公布后会第一时间更新。
	required double issuePeRate = 11; // 发行市盈率
	optional string applyTime = 12; // 申购日期字符串
	optional double applyTimestamp = 13; // 申购日期时间戳
	optional string winningTime = 14; // 公布中签日期字符串
	optional double winningTimestamp = 15; // 公布中签日期时间戳
	required bool isHasWon = 16; // 是否已经公布中签号
	repeated WinningNumData winningNumData = 17; // Qot_GetIpoList::WinningNumData 中签号数据，对应PC中"公布中签日期的已公布"
}

// 中签号数据
message WinningNumData
{
	required string winningName = 1; // 分组名
    required string winningInfo = 2; // 中签号信息
}

// 港股Ipo列表额外数据
message HKIpoExData
{
	required double ipoPriceMin = 1; // 最低发售价
	required double ipoPriceMax = 2; // 最高发售价
	required double listPrice = 3; // 上市价
	required int32 lotSize = 4; // 每手股数
	required double entrancePrice = 5; // 入场费
	required bool isSubscribeStatus = 6; // 是否为认购状态，True-认购中，False-待上市
	optional string applyEndTime = 7; // 截止认购日期字符串
	optional double applyEndTimestamp = 8; // 截止认购日期时间戳 因需处理认购手续，富途认购截止时间会早于交易所公布的日期。
}

// 美股Ipo列表额外数据
message USIpoExData
{
	required double ipoPriceMin = 1; // 最低发行价
	required double ipoPriceMax = 2; // 最高发行价
	required int64 issueSize = 3; // 发行量
}

// 新加坡Ipo列表额外数据
message SGIpoExData
{
	required double ipoPriceMin = 1; // 最低发行价
	required double ipoPriceMax = 2; // 最高发行价
	required int64 issueSize = 3; // 发行量
	optional string applyStartTime = 4; // 开始认购日期字符串
	optional double applyStartTimestamp = 5; // 开始认购日期时间戳
	optional string applyEndTime = 6; // 截止认购日期字符串
	optional double applyEndTimestamp = 7; // 截止认购日期时间戳
	optional string winningTime = 8; // 公布中签日期字符串
	optional double winningTimestamp = 9; // 公布中签日期时间戳
}

// 马来西亚Ipo列表额外数据
message MYIpoExData
{
	required double offerPrice = 1; // 发行价
	required int64 issueSize = 2; // 发行量
	optional string applyStartTime = 3; // 开始认购日期字符串
	optional double applyStartTimestamp = 4; // 开始认购日期时间戳
	optional string applyEndTime = 5; // 截止认购日期字符串
	optional double applyEndTimestamp = 6; // 截止认购日期时间戳
	optional string winningTime = 7; // 公布中签日期字符串
	optional double winningTimestamp = 8; // 公布中签日期时间戳
}

// JP ETF 简介信息
message JPETFBriefInfo
{
	optional int64 managementFeeRates = 1; // 管理费率（原始值*1000000）
	optional int64 dividendTimes = 2; // 派息次数
	optional int32 dividendFrequencyType = 3; // 派息周期类型 1-YEAR 2-QUARTER 3-MONTH
	optional int32 investingRiskType = 4; // 投资风险类型 1-BOND_LINK 2-FUTURES 3-LEVERAGED 4-ACTIVELY_MANAGE 5-CURRENCY_SWAP 6-INVERSE
	optional string indexName = 5; // 标的指数名称
	optional string companyName = 6; // 管理公司名称
	optional string companyIntroductionLink = 7; // 管理公司简介链接
	optional string companyInterviewLink = 8; // 企业采访信息链接
	optional string etfPamphletLink = 9; // 产品手册链接
	optional string etfIntroductionLink = 10; // 产品简介链接
}

// 日本Ipo列表额外数据
message JPIpoExData
{
	required double ipoPriceMin = 1; // 最低发行价
	required double ipoPriceMax = 2; // 最高发行价
	required int64 issueSize = 3; // 发行量

	// CMD 20751 GetIPOList 扩展字段
	optional int32 lotSize = 10; // 每手股数
	optional int64 eqtyIssuedShares = 11; // 总股本
	optional string isin = 12; // ISIN代码 目前仅支持 JP ETF
	optional int64 issuedShares = 13; // 已发行股本，本次IPO前股本
	optional string industry = 14; // 行业板块
	optional string marketSegment = 15; // 细分市场

	// 时间节点字符串与时间戳成对
	optional string approvalTime = 20; // 获批上市时间字符串
	optional double approvalTimestamp = 21; // 获批上市时间戳
	optional string issueConfirmTime = 22; // 发行条件确定时间字符串
	optional double issueConfirmTimestamp = 23; // 发行条件确定时间戳
	optional string priceConfirmStartTime = 24; // 发行价确定开始时间字符串
	optional double priceConfirmStartTimestamp = 25; // 发行价确定开始时间戳
	optional string priceConfirmEndTime = 26; // 发行价确定结束时间字符串
	optional double priceConfirmEndTimestamp = 27; // 发行价确定结束时间戳
	optional string inquiryStartTime = 28; // 询价期开始时间字符串
	optional double inquiryStartTimestamp = 29; // 询价期开始时间戳
	optional string inquiryEndTime = 30; // 询价期结束时间字符串
	optional double inquiryEndTimestamp = 31; // 询价期结束时间戳
	optional string applyStartTime = 32; // 申购期开始时间字符串
	optional double applyStartTimestamp = 33; // 申购期开始时间戳
	optional string applyEndTime = 34; // 申购期结束时间字符串
	optional double applyEndTimestamp = 35; // 申购期结束时间戳
	optional string drawTime = 36; // 抽签时间字符串
	optional double drawTimestamp = 37; // 抽签时间戳
	optional string winningTime = 38; // 中签公布时间字符串
	optional double winningTimestamp = 39; // 中签公布时间戳

	// JP ETF 信息
	optional JPETFBriefInfo etfInfo = 50; // 仅 JP ETF 下发
}

// 新股Ipo数据
message IpoData
{
	required BasicIpoData basic = 1; // IPO基本数据
	optional CNIpoExData cnExData = 2; // A股IPO额外数据
	optional HKIpoExData hkExData = 3; // 港股IPO额外数据
	optional USIpoExData usExData = 4; // 美股IPO额外数据
	optional SGIpoExData sgExData = 5; // 新加坡IPO额外数据
	optional MYIpoExData myExData = 6; // 马来西亚IPO额外数据
	optional JPIpoExData jpExData = 7; // 日本IPO额外数据
}

message C2S
{
	required int32 market = 1; // Qot_Common::QotMarket股票市场，支持沪股和深股，且沪股和深股不做区分都代表A股市场。
	optional Qot_Common.QotHeader header = 100; //行情公共参数头
}

message S2C
{
	repeated IpoData ipoList = 1; // 新股IPO数据
}

message Request
{
	required C2S c2s = 1;
}

message Response
{
	required int32 retType = 1 [default = -400]; //RetType,返回结果
	optional string retMsg = 2;
	optional int32 errCode = 3;
	
	optional S2C s2c = 4;
}
