import { UniqueID } from "@/core/common/domain";
import { Collection, Result } from "@repo/rdx-utils";
import { Invoice } from "../aggregates";

export interface IInvoiceRepository {
  findAll(transaction?: any): Promise<Result<Collection<Invoice>, Error>>;
  getById(id: UniqueID, transaction?: any): Promise<Result<Invoice, Error>>;
  deleteById(id: UniqueID, transaction?: any): Promise<Result<boolean, Error>>;

  create(invoice: Invoice, transaction?: any): Promise<void>;
  update(invoice: Invoice, transaction?: any): Promise<void>;
}
