import { ChainflipAsset } from "./chainflip.cjs";

//#region src/types.d.ts
type HexString = `0x${string}`;
type Bytelike = Uint8Array | number[] | HexString;
type CcmMetadata<Data = never> = {
  channelMetadata: {
    message: HexString;
    gasBudget: HexString;
  };
  ccmAdditionalData: Data;
};
type VaultSwapData<Broker, CcmData = never> = {
  amount: bigint;
  destinationAddress: string;
  inputAsset: ChainflipAsset;
  outputAsset: ChainflipAsset;
  depositChainBlockHeight: number | null;
  brokerFee: {
    account: Broker;
    commissionBps: number;
  };
  affiliateFees: {
    accountIndex: number;
    commissionBps: number;
  }[];
  maxBoostFee: number;
  dcaParams: {
    chunkInterval: number;
    numberOfChunks: number;
  } | null;
  refundParams: {
    refundAddress: string;
    minPrice: bigint;
    retryDuration: number;
    maxOraclePriceSlippage: number | null;
    refundCcmMetadata: CcmMetadata<CcmData> | null;
  };
  ccmDepositMetadata: CcmMetadata<CcmData> | null;
};
//#endregion
export { Bytelike, HexString, VaultSwapData };