import { TransactionObjectArgument, TransactionObjectInput } from "@mysten/sui/transactions";
import { ClientWithCoreApi, SuiClientTypes } from "@mysten/sui/client";

//#region src/types.d.ts
interface CoinConfig {
  type: string;
  feed: string;
}
interface DiscountInfo {
  discountNft: TransactionObjectInput;
  type: string;
  isFreeClaim?: boolean;
}
interface PackageInfo {
  packageId: string;
  packageIdV1: string;
  packageIdPricing: string;
  suins: string;
  discountsPackage: {
    packageId: string;
    discountHouseId: string;
  };
  subNamesPackageId: string;
  tempSubdomainsProxyPackageId: string;
  coupons: {
    packageId: string;
  };
  payments: {
    packageId: string;
  };
  bbb: {
    packageId: string;
    vault: string;
  };
  registryTableId?: string;
  pyth: {
    pythStateId: string;
    wormholeStateId: string;
  };
  utils?: {
    packageId: string;
  };
  coins: Record<string, CoinConfig>;
}
interface NameRecord {
  name: string;
  nftId: string;
  targetAddress: string;
  expirationTimestampMs: number;
  data: Record<string, string>;
  avatar?: string;
  contentHash?: string;
  walrusSiteId?: string;
}
type Config = Record<'mainnet' | 'testnet', PackageInfo>;
type BaseParams = {
  years: number;
  coinConfig: CoinConfig;
  coin?: TransactionObjectInput;
  couponCode?: string;
  discountInfo?: DiscountInfo;
  maxAmount?: bigint;
  priceInfoObjectId?: string | null;
};
type RegistrationParams = BaseParams & {
  domain: string;
};
type RenewalParams = BaseParams & {
  nft: TransactionObjectInput;
};
type ReceiptParams = {
  paymentIntent: TransactionObjectArgument;
  priceAfterDiscount: TransactionObjectArgument;
  coinConfig: CoinConfig;
  coin?: TransactionObjectInput;
  maxAmount?: bigint;
  priceInfoObjectId?: string | null;
};
type SuinsClientConfig = {
  client: ClientWithCoreApi;
  network?: SuiClientTypes.Network;
  packageInfo?: PackageInfo;
};
type SuinsPriceList = Map<[number, number], number>;
type CoinTypeDiscount = Map<string, number>;
//#endregion
export { CoinTypeDiscount, Config, DiscountInfo, NameRecord, PackageInfo, ReceiptParams, RegistrationParams, RenewalParams, SuinsClientConfig, SuinsPriceList };
//# sourceMappingURL=types.d.mts.map