// AUTO-GENERATED from manifest.json — do not edit by hand.
// Regenerate with: yarn workspace @lifi/composer-sdk generate

import type { Precondition, PreconditionConfigOf } from '@lifi/compose-spec';

import type {
  Erc20AllowancePreconditionConfig,
  Erc20BalancePreconditionConfig,
  NativeBalancePreconditionConfig,
} from './config.generated.js';

export type Erc20BalancePreconditionInput =
  PreconditionConfigOf<Erc20BalancePreconditionConfig>;

/** Assert that a wallet holds at least a given ERC-20 token balance */
export const erc20Balance = (
  config: Erc20BalancePreconditionInput,
): Precondition => ({
  type: 'Erc20Balance',
  ...config,
});

export type NativeBalancePreconditionInput =
  PreconditionConfigOf<NativeBalancePreconditionConfig>;

/** Assert that a wallet holds at least a given native coin balance */
export const nativeBalance = (
  config: NativeBalancePreconditionInput,
): Precondition => ({
  type: 'NativeBalance',
  ...config,
});

export type Erc20AllowancePreconditionInput =
  PreconditionConfigOf<Erc20AllowancePreconditionConfig>;

/** Assert that an ERC-20 allowance is at least a given amount */
export const erc20Allowance = (
  config: Erc20AllowancePreconditionInput,
): Precondition => ({
  type: 'Erc20Allowance',
  ...config,
});
