/*
* This file is part of LibEuFin.
* Copyright (C) 2019 Stanisci and Dold.
* LibEuFin is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation; either version 3, or
* (at your option) any later version.
* LibEuFin is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
* Public License for more details.
* You should have received a copy of the GNU Affero General Public
* License along with LibEuFin; see the file COPYING. If not, see
*
*/
package tech.libeufin.sandbox
import com.fasterxml.jackson.annotation.JsonProperty
import tech.libeufin.util.PaymentInfo
data class WithdrawalRequest(
/**
* Note: the currency is redundant, because at each point during
* the execution the Demobank should have a handle of the currency.
*/
val amount: String // $CURRENCY:X.Y
)
data class Demobank(
val currency: String,
val name: String,
val userDebtLimit: Int,
val bankDebtLimit: Int,
val allowRegistrations: Boolean
)
/**
* Used to show the list of Ebics hosts that exist
* in the system.
*/
data class EbicsHostsResponse(
val ebicsHosts: List
)
data class EbicsHostCreateRequest(
val hostID: String,
val ebicsVersion: String
)
/**
* List type that show all the payments existing in the system.
*/
data class AccountTransactions(
val payments: MutableList = mutableListOf()
)
/**
* Used to create AND show one Ebics subscriber.
*/
data class EbicsSubscriberInfo(
val hostID: String,
val partnerID: String,
val userID: String,
val systemID: String? = null,
val demobankAccountLabel: String
)
data class AdminGetSubscribers(
var subscribers: MutableList = mutableListOf()
)
/**
* The following definition is obsolete because it
* doesn't allow to specify a demobank that will host
* the Ebics subscriber. */
data class EbicsSubscriberObsoleteApi(
val hostID: String,
val partnerID: String,
val userID: String,
val systemID: String? = null
)
data class EbicsBankAccountRequest(
val subscriber: EbicsSubscriberObsoleteApi,
val iban: String,
val bic: String,
val name: String,
val label: String,
)
data class CustomerRegistration(
val username: String,
val password: String,
val isPublic: Boolean = false,
// When missing, it's autogenerated.
val iban: String?,
// When missing, stays null in the DB.
val name: String?
)
// Could be used as a general bank account info container.
data class PublicAccountInfo(
val balance: String,
val iban: String,
// Name / Label of the bank account _and_ of the
// Sandbox username that owns it.
val accountLabel: String
// more ..?
)
data class CamtParams(
// name/label of the bank account to query.
val bankaccount: String,
val type: Int,
// need range parameter
)
data class TalerWithdrawalStatus(
val selection_done: Boolean,
val transfer_done: Boolean,
val amount: String,
val wire_types: List = listOf("iban"),
val suggested_exchange: String? = null,
val sender_wire: String? = null,
val aborted: Boolean
)
data class TalerWithdrawalSelection(
val reserve_pub: String,
val selected_exchange: String?
)
data class NewTransactionReq(
/**
* This Payto address must contain the wire transfer
* subject among its query parameters -- 'message' parameter.
*/
val paytoUri: String,
// $currency:X.Y format
val amount: String?
)