/* =========================================================
   abis.jsx — compiled contract ABIs + deployed addresses
   Sepolia Testnet · 배포일 2026-06-06 (v12 - hotel imageUrl)
   ========================================================= */

const FACTORY_ADDRESS  = '0xC742C418C6e8E60773333627d9C4ab6E32248269';
const NFT_ADDRESS      = '0x444D790ff2B3C6f8EC674eF3b60Bed77BE7dfaA7';
const SEPOLIA_CHAIN_ID = 11155111;

const FACTORY_ABI = [{"inputs":[{"internalType":"address","name":"_nftContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"escrowAddress","type":"address"},{"indexed":true,"internalType":"address","name":"consumer","type":"address"},{"indexed":true,"internalType":"address","name":"hotel","type":"address"}],"name":"BookingRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"hotelAddress","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"city","type":"string"}],"name":"HotelRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"hotelAddress","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"city","type":"string"},{"indexed":false,"internalType":"string","name":"description","type":"string"},{"indexed":false,"internalType":"string","name":"imageUrl","type":"string"}],"name":"HotelUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"roomAddress","type":"address"},{"indexed":true,"internalType":"address","name":"hotel","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositRatio","type":"uint256"},{"indexed":false,"internalType":"string","name":"roomName","type":"string"}],"name":"RoomRegistered","type":"event"},{"inputs":[{"internalType":"address","name":"roomAddress","type":"address"},{"internalType":"uint256","name":"checkInTime","type":"uint256"},{"internalType":"uint256","name":"checkOutTime","type":"uint256"},{"internalType":"string","name":"guestName","type":"string"},{"internalType":"string","name":"guestPhone","type":"string"},{"internalType":"uint256","name":"guests","type":"uint256"}],"name":"book","outputs":[{"internalType":"address","name":"escrowAddress","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"bookingsByConsumer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"bookingsByHotel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pricePerNight","type":"uint256"},{"internalType":"uint256","name":"depositRatio","type":"uint256"},{"internalType":"string","name":"roomName","type":"string"},{"internalType":"string","name":"roomType","type":"string"},{"internalType":"string","name":"beds","type":"string"},{"internalType":"string","name":"roomSize","type":"string"},{"internalType":"uint256","name":"maxGuests","type":"uint256"},{"internalType":"string","name":"imageUrl","type":"string"},{"internalType":"uint256","name":"availFrom","type":"uint256"},{"internalType":"uint256","name":"availTo","type":"uint256"}],"name":"createRoom","outputs":[{"internalType":"address","name":"roomAddress","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"consumer","type":"address"}],"name":"getBookingsByConsumer","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"hotel","type":"address"}],"name":"getBookingsByHotel","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHotelCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"hotelAddr","type":"address"}],"name":"getHotelInfo","outputs":[{"components":[{"internalType":"address","name":"hotelAddress","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"city","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageUrl","type":"string"},{"internalType":"bool","name":"registered","type":"bool"}],"internalType":"struct BookingFactory.HotelInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRoomCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRoomsByDepositRatio","outputs":[{"internalType":"address[]","name":"sorted","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"hotel","type":"address"}],"name":"getRoomsByHotel","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hotelList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hotels","outputs":[{"internalType":"address","name":"hotelAddress","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"city","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageUrl","type":"string"},{"internalType":"bool","name":"registered","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isRegisteredEscrow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"city","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageUrl","type":"string"}],"name":"registerHotel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rooms","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"roomsByHotel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nftContract","type":"address"}],"name":"setNftContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"city","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageUrl","type":"string"}],"name":"updateHotel","outputs":[],"stateMutability":"nonpayable","type":"function"}];
const ESCROW_ABI = [{"inputs":[{"internalType":"address","name":"_consumer","type":"address"},{"internalType":"address payable","name":"_hotel","type":"address"},{"internalType":"address","name":"_hotelRoom","type":"address"},{"internalType":"uint256","name":"_checkInTime","type":"uint256"},{"internalType":"uint256","name":"_checkOutTime","type":"uint256"},{"internalType":"uint256","name":"_depositRatio","type":"uint256"},{"internalType":"address","name":"_nftContract","type":"address"},{"internalType":"string","name":"_guestName","type":"string"},{"internalType":"string","name":"_guestPhone","type":"string"},{"internalType":"uint256","name":"_guests","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"consumer","type":"address"},{"indexed":true,"internalType":"address","name":"hotel","type":"address"},{"indexed":false,"internalType":"string","name":"guestName","type":"string"},{"indexed":false,"internalType":"string","name":"guestPhone","type":"string"},{"indexed":false,"internalType":"uint256","name":"bookingAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"depositAmount","type":"uint256"}],"name":"BookingConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"CheckedIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"hotelPayout","type":"uint256"}],"name":"CheckoutCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"refundAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"hotelAmount","type":"uint256"}],"name":"ConsumerCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"consumerPayout","type":"uint256"}],"name":"DisputeResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"hotelPayout","type":"uint256"}],"name":"TimeoutExecuted","type":"event"},{"inputs":[],"name":"bookingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelByConsumer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkInTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkOutTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"completeCheckout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"consumer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dispute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRefundAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guestName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guestPhone","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guests","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hotel","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hotelRoom","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"performUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"enum BookingEscrow.BookingStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}];
const HOTEL_ROOM_ABI = [{"inputs":[{"internalType":"uint256","name":"_pricePerNight","type":"uint256"},{"internalType":"uint256","name":"_depositRatio","type":"uint256"},{"internalType":"address","name":"_nftContract","type":"address"},{"internalType":"address","name":"_hotel","type":"address"},{"internalType":"string","name":"_roomName","type":"string"},{"internalType":"string","name":"_roomType","type":"string"},{"internalType":"string","name":"_beds","type":"string"},{"internalType":"string","name":"_roomSize","type":"string"},{"internalType":"uint256","name":"_maxGuests","type":"uint256"},{"internalType":"string","name":"_imageUrl","type":"string"},{"internalType":"uint256","name":"_availFrom","type":"uint256"},{"internalType":"uint256","name":"_availTo","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isAvailable","type":"bool"}],"name":"AvailabilityChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"escrowAddress","type":"address"},{"indexed":true,"internalType":"address","name":"consumer","type":"address"},{"indexed":false,"internalType":"uint256","name":"checkInTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"checkOutTime","type":"uint256"},{"indexed":false,"internalType":"string","name":"guestName","type":"string"},{"indexed":false,"internalType":"string","name":"guestPhone","type":"string"}],"name":"BookingCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"hotel","type":"address"},{"indexed":false,"internalType":"string","name":"roomName","type":"string"},{"indexed":false,"internalType":"string","name":"roomType","type":"string"},{"indexed":false,"internalType":"string","name":"beds","type":"string"},{"indexed":false,"internalType":"string","name":"roomSize","type":"string"},{"indexed":false,"internalType":"uint256","name":"maxGuests","type":"uint256"},{"indexed":false,"internalType":"string","name":"imageUrl","type":"string"},{"indexed":false,"internalType":"uint256","name":"availFrom","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"availTo","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pricePerNight","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"depositRatio","type":"uint256"}],"name":"RoomCreated","type":"event"},{"inputs":[],"name":"addDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"availFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"availTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beds","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"checkInTime","type":"uint256"},{"internalType":"uint256","name":"checkOutTime","type":"uint256"},{"internalType":"address","name":"consumerOverride","type":"address"},{"internalType":"string","name":"guestName","type":"string"},{"internalType":"string","name":"guestPhone","type":"string"},{"internalType":"uint256","name":"guests","type":"uint256"}],"name":"book","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bookedRanges","outputs":[{"internalType":"uint256","name":"checkIn","type":"uint256"},{"internalType":"uint256","name":"checkOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bookingCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bookings","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBookedRangesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bookingAmount","type":"uint256"}],"name":"getDepositRequired","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hotel","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"imageUrl","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAvailable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isEscrow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGuests","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerNight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roomName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roomSize","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roomType","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_isAvailable","type":"bool"}],"name":"setAvailable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}];

Object.assign(window, { FACTORY_ADDRESS, NFT_ADDRESS, SEPOLIA_CHAIN_ID, FACTORY_ABI, ESCROW_ABI, HOTEL_ROOM_ABI });
