/*
 This file is part of GNU Taler
 (C) 2021-2024 Taler Systems S.A.

 GNU 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.

 GNU 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
 GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 */

/**
 *
 * @author Sebastian Javier Marchano (sebasjm)
 */

import { FunctionalComponent, h } from "preact";
import { CreatePage as TestedComponent } from "./CreatePage.js";
import { MerchantApiProviderTesting } from "@gnu-taler/web-util/browser";
import { RoundingInterval } from "@gnu-taler/taler-util";

export default {
  title: "Pages/Instance/Create",
  component: TestedComponent,
  argTypes: {
    onCreate: { action: "onCreate" },
    goBack: { action: "goBack" },
  },
};

function createExample<Props>(
  Internal: FunctionalComponent<Props>,
  props: Partial<Props>,
) {
  const component = (args: any) => (
    <MerchantApiProviderTesting
      value={{
        cancelRequest: () => {},
        changeBackend: () => {},
        config: {
          currency: "ARS",
          version: "1",
          default_persona: "developer",
          currencies: {
            ASD: {
              name: "testkudos",
              alt_unit_names: {},
              num_fractional_input_digits: 1,
              num_fractional_normal_digits: 1,
              num_fractional_trailing_zero_digits: 1,
            },
          },
          default_wire_transfer_rounding_interval: RoundingInterval.NONE,
          default_pay_delay: { d_us: "forever" },
          have_donau: false,
          mandatory_tan_channels: [],
          payment_target_regex: "*",
          payment_target_types: "*",
          exchanges: [],
          name: "taler-merchant",
        },
        hints: [],
        lib: {} as any,
        onActivity: (() => {}) as any,
        url: new URL("asdasd"),
      }}
    >
      <Internal {...(props as any)} />
    </MerchantApiProviderTesting>
  );
  return { component, props };
}

export const Example = createExample(TestedComponent, {});
