// SPDX-FileCopyrightText: 2025 Contributors to the CitrineOS Project
//
// SPDX-License-Identifier: Apache-2.0

/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

import { PaymentStatusEnumType } from '../enums/index.js';
import type { OcppRequest } from '../../../internal-types.js';

export interface NotifySettlementRequest extends OcppRequest {
  /**
   * The _transactionId_ that the settlement belongs to. Can be empty if the payment transaction is canceled prior to the start of the OCPP transaction.
   *
   *
   */
  transactionId?: string | null;
  /**
   * The payment reference received from the payment terminal and is used as the value for _idToken_.
   *
   *
   */
  pspRef: string;
  status: PaymentStatusEnumType;
  /**
   * Additional information from payment terminal/payment process.
   *
   *
   */
  statusInfo?: string | null;
  /**
   * The amount that was settled, or attempted to be settled (in case of failure).
   *
   *
   */
  settlementAmount: number;
  /**
   * The time when the settlement was done.
   *
   *
   */
  settlementTime: string;
  receiptId?: string | null;
  /**
   * The receipt URL, to be used if the receipt is generated by the payment terminal or the CS.
   *
   *
   */
  receiptUrl?: string | null;
  vatCompany?: AddressType | null;
  /**
   * VAT number for a company receipt.
   *
   *
   */
  vatNumber?: string | null;
  customData?: CustomDataType | null;
}
/**
 * *(2.1)* A generic address format.
 *
 */
export interface AddressType {
  /**
   * Name of person/company
   *
   */
  name: string;
  /**
   * Address line 1
   *
   */
  address1: string;
  /**
   * Address line 2
   *
   */
  address2?: string | null;
  /**
   * City
   *
   */
  city: string;
  /**
   * Postal code
   *
   */
  postalCode?: string | null;
  /**
   * Country name
   *
   */
  country: string;
  customData?: CustomDataType | null;
}
/**
 * This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.
 */
export interface CustomDataType {
  vendorId: string;
  [k: string]: unknown;
}
