import type {
	AntecipacaoParcela,
	Categoria,
	Lancamento,
	Pagador,
} from "@/db/schema";

/**
 * Parcela elegível para antecipação
 */
export type EligibleInstallment = {
	id: string;
	name: string;
	amount: string;
	period: string;
	purchaseDate: Date;
	dueDate: Date | null;
	currentInstallment: number | null;
	installmentCount: number | null;
	paymentMethod: string;
	categoriaId: string | null;
	pagadorId: string | null;
};

/**
 * Antecipação com dados completos
 */
export type InstallmentAnticipationWithRelations = AntecipacaoParcela & {
	lancamento: Lancamento;
	pagador: Pagador | null;
	categoria: Categoria | null;
};

/**
 * Input para criar antecipação
 */
export type CreateAnticipationInput = {
	seriesId: string;
	installmentIds: string[];
	anticipationPeriod: string;
	pagadorId?: string;
	categoriaId?: string;
	note?: string;
};

/**
 * Input para cancelar antecipação
 */
export type CancelAnticipationInput = {
	anticipationId: string;
};

/**
 * Resumo de antecipação para exibição
 */
export type AnticipationSummary = {
	id: string;
	totalAmount: string;
	installmentCount: number;
	anticipationPeriod: string;
	anticipationDate: Date;
	note: string | null;
	isSettled: boolean;
	lancamentoId: string;
	anticipatedInstallments: string[];
};
