{{- $global := . }}
{{- if not .OnlyTemplate}}
/**
 * KRA - {{.Description}}类型定义
 * Auto-generated by KRA AutoCode
 */

/**
 * {{.StructName}} {{.Description}}实体类型
 */
export interface {{.StructName}} {
	{{- if .GvaModel }}
	/** 主键ID */
	ID?: number;
	/** 创建时间 */
	CreatedAt?: string;
	/** 更新时间 */
	UpdatedAt?: string;
	/** 删除时间 */
	DeletedAt?: string | null;
	{{- end }}
	{{- range .Fields}}
	/** {{.FieldDesc}} */
	{{.FieldJson}}{{if not .Require}}?{{end}}: {{ GenerateTSType .FieldType }};
	{{- end }}
	{{- if .AutoCreateResource }}
	/** 创建者ID */
	createdBy?: number;
	/** 更新者ID */
	updatedBy?: number;
	/** 删除者ID */
	deletedBy?: number;
	{{- end }}
	{{- if .IsTree }}
	/** 子节点 */
	children?: {{.StructName}}[];
	/** 父节点ID */
	parentID?: number;
	{{- end }}
}

/**
 * {{.StructName}}ListReq {{.Description}}列表请求参数
 */
export interface {{.StructName}}ListReq {
	/** 页码 */
	page: number;
	/** 每页数量 */
	pageSize: number;
	{{- if .GvaModel }}
	/** 创建时间范围 */
	createdAtRange?: string[];
	/** 创建时间开始 */
	startCreatedAt?: string;
	/** 创建时间结束 */
	endCreatedAt?: string;
	{{- end }}
	{{- range .Fields}}
	{{- if .FieldSearchType}}
	{{- if eq .FieldSearchType "BETWEEN"}}
	/** {{.FieldDesc}}开始值 */
	start{{.FieldName}}?: {{ GenerateTSType .FieldType }};
	/** {{.FieldDesc}}结束值 */
	end{{.FieldName}}?: {{ GenerateTSType .FieldType }};
	{{- else}}
	/** {{.FieldDesc}} */
	{{.FieldJson}}?: {{ GenerateTSType .FieldType }};
	{{- end}}
	{{- end}}
	{{- end}}
	{{- if .NeedSort}}
	/** 排序字段 */
	orderKey?: string;
	/** 是否降序 */
	desc?: boolean;
	{{- end}}
}

/**
 * {{.StructName}}Search {{.Description}}搜索条件
 * @description 与 {{.StructName}}ListReq 相同，用于API服务层
 */
export type {{.StructName}}Search = {{.StructName}}ListReq;

/**
 * {{.StructName}}ListRes {{.Description}}列表响应
 */
export interface {{.StructName}}ListRes {
	/** 数据列表 */
	list: {{.StructName}}[];
	/** 总数 */
	total: number;
	/** 当前页码 */
	page: number;
	/** 每页数量 */
	pageSize: number;
}

/**
 * {{.StructName}}IdReq {{.Description}}ID请求参数
 */
export interface {{.StructName}}IdReq {
	/** {{.PrimaryField.FieldDesc}} */
	{{.PrimaryField.FieldJson}}: {{ GenerateTSType .PrimaryField.FieldType }};
}

/**
 * {{.StructName}}IdsReq {{.Description}}批量ID请求参数
 */
export interface {{.StructName}}IdsReq {
	/** {{.PrimaryField.FieldDesc}}列表 */
	{{.PrimaryField.FieldJson}}s: {{ GenerateTSType .PrimaryField.FieldType }}[];
}

{{- if .HasDataSource }}

/**
 * {{.StructName}}DataSource {{.Description}}数据源类型
 */
export interface {{.StructName}}DataSource {
	{{- range .Fields}}
	{{- if .CheckDataSource}}
	/** {{.FieldDesc}}数据源 */
	{{.FieldJson}}?: Array<{ label: string; value: any }>;
	{{- end}}
	{{- end}}
}
{{- end }}

{{- if .DictTypes }}

/**
 * 字典选项类型
 */
export interface DictOption {
	/** 显示标签 */
	label: string;
	/** 值 */
	value: number | string;
	/** 状态 */
	status?: boolean;
}

/**
 * {{.StructName}}相关字典类型
 */
export interface {{.StructName}}DictTypes {
	{{- range $index, $element := .DictTypes}}
	/** {{$element}}字典选项 */
	{{$element}}: DictOption[];
	{{- end }}
}
{{- end }}

{{- else}}
/**
 * KRA - {{.Description}}类型定义
 * Auto-generated by KRA AutoCode (Template Only)
 */

// 仅模板模式，请根据实际需求定义类型
export interface {{.StructName}} {
	// TODO: 添加字段定义
}

export interface {{.StructName}}ListReq {
	page: number;
	pageSize: number;
}

/**
 * {{.StructName}}Search {{.Description}}搜索条件
 * @description 与 {{.StructName}}ListReq 相同，用于API服务层
 */
export type {{.StructName}}Search = {{.StructName}}ListReq;

export interface {{.StructName}}ListRes {
	list: {{.StructName}}[];
	total: number;
	page: number;
	pageSize: number;
}
{{- end }}
