package usagebased import ( "context" "github.com/openmeterio/openmeter/openmeter/billing/charges/meta" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/creditrealization" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/invoicedusage" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/payment" "github.com/openmeterio/openmeter/pkg/framework/entutils" ) type Adapter interface { RealizationRunAdapter RealizationRunCreditAllocationAdapter RealizationRunInvoiceUsageAdapter RealizationRunPaymentAdapter ChargeAdapter entutils.TxCreator } type ChargeAdapter interface { CreateCharges(ctx context.Context, charges CreateChargesInput) ([]Charge, error) UpdateCharge(ctx context.Context, charge ChargeBase) (ChargeBase, error) CreateChargeOverride(ctx context.Context, charge ChargeBase, override IntentMutableFields) (ChargeBase, error) DeleteChargeOverride(ctx context.Context, charge ChargeBase) (ChargeBase, error) UpdateSubscriptionItemID(ctx context.Context, charge Charge, newSubscriptionItemID string) (Charge, error) DeleteCharge(ctx context.Context, charge Charge) error GetByIDs(ctx context.Context, input GetByIDsInput) ([]Charge, error) GetByID(ctx context.Context, input GetByIDInput) (Charge, error) } type RealizationRunAdapter interface { CreateRealizationRun(ctx context.Context, chargeID meta.ChargeID, input CreateRealizationRunInput) (RealizationRunBase, error) UpdateRealizationRun(ctx context.Context, input UpdateRealizationRunInput) (RealizationRunBase, error) UpsertRunDetailedLines(ctx context.Context, chargeID meta.ChargeID, runID RealizationRunID, lines DetailedLines) error FetchDetailedLines(ctx context.Context, charge Charge) (Charge, error) } type RealizationRunCreditAllocationAdapter interface { CreateRunCreditRealization(ctx context.Context, runID RealizationRunID, creditAllocations creditrealization.CreateInputs) (creditrealization.Realizations, error) } type RealizationRunInvoiceUsageAdapter interface { CreateRunInvoicedUsage(ctx context.Context, runID RealizationRunID, invoicedUsage invoicedusage.AccruedUsage) (invoicedusage.AccruedUsage, error) } type RealizationRunPaymentAdapter interface { CreateRunPayment(ctx context.Context, runID RealizationRunID, in payment.InvoicedCreate) (payment.Invoiced, error) UpdateRunPayment(ctx context.Context, in payment.Invoiced) (payment.Invoiced, error) }