--
-- This file is part of TALER
-- Copyright (C) 2014--2023 Taler Systems SA
--
-- TALER is free software; you can redistribute it and/or modify it under the
-- terms of the GNU General Public License as published by the Free Software
-- Foundation; either version 3, or (at your option) any later version.
--
-- TALER 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 General Public License for more details.
--
-- You should have received a copy of the GNU General Public License along with
-- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
--

BEGIN;

SELECT _v.register_patch('exchange-0002', NULL, NULL);
SET search_path TO exchange;

CREATE DOMAIN gnunet_hashcode
  AS BYTEA
  CHECK(LENGTH(VALUE) = 32);

CREATE TYPE taler_amount
  AS
  (val INT8
  ,frac INT4
  );
COMMENT ON TYPE taler_amount
  IS 'Stores an amount, fraction is in units of 1/100000000 of the base value';

CREATE TYPE exchange_do_array_reserve_insert_return_type
  AS
  (transaction_duplicate BOOLEAN
  ,ruuid INT8
  );
COMMENT ON TYPE exchange_do_array_reserve_insert_return_type
  IS 'Return type for exchange_do_array_reserves_insert() stored procedure';

CREATE TYPE exchange_do_select_deposits_missing_wire_return_type
  AS
  (
    batch_deposit_serial_id INT8,
    total_amount taler_amount,
    wire_target_h_payto BYTEA,
    deadline INT8
  );
COMMENT ON TYPE exchange_do_select_deposits_missing_wire_return_type
  IS 'Return type for exchange_do_select_deposits_missing_wire';

CREATE TYPE exchange_do_select_aggregations_above_serial_return_type
  AS
  (
    batch_deposit_serial_id INT8,
    aggregation_serial_id INT8,
    total_amount taler_amount
  );
COMMENT ON TYPE exchange_do_select_aggregations_above_serial_return_type
  IS 'Return type for exchange_do_select_aggregations_above_serial';
