// import { PublicKey, Transaction } from "@solana/web3.js";
// import ApplicationState from "./utils/ApplicationState";
// import Listing from "./utils/Listing";
// import ProgramLoader from "./utils/ProgramLoader";
// import Userdata from "./utils/Userdata";
// import BidReceipt from "./utils/BidReciept";

// var programLoader = new ProgramLoader();


// (async() => {
//     try{
//         var applicationState = new ApplicationState(programLoader);
//         var applicationData = await applicationState.get(programLoader.applicationState);
//         console.log("[*] Application state: ", JSON.stringify(applicationData, null, 4));



//         var bidReceiptState = new BidReceipt(programLoader);
//         var txn = await bidReceiptState.createTransaction(
//             new PublicKey("6rzF2CvnmUwc8nCEvsLGWPk6Ki6i2R5L8wvhAGnQ3RU9"),
//             programLoader.wallet.publicKey,
//             0
//         );
//         console.log("[*] Bid receipt transaction: ", JSON.stringify(txn, null, 4));
//         const txSignature = await programLoader.program.provider.connection.sendTransaction(txn, [programLoader.wallet], {
//             skipPreflight: true,
//         });
//         console.log("Your transaction signature", txSignature); 
//         // var listing = await listingState.get(); 
//         // var listingData = await listingState.get(new PublicKey("Fb4CeHgZL9dSE2UD78foyPKv3A1W4WWZ1cLggtcK4Sm6"));
//         // // console.log("[*] Listing state: ", JSON.stringify(listingData, null, 4));

//         // var userdataState = new Userdata(programLoader);
//         // var userdata = await userdataState.get(programLoader.wallet.publicKey);
//         // // console.log("[*] Userdata state: ----> ", JSON.stringify(userdata, null, 4));
//         // if(!userdata){
//         //     var tx = await userdataState.getOrCreate(programLoader.wallet.publicKey);
//         //     console.log("[*] Userdata transaction: ----> ", JSON.stringify(tx, null, 4));
//         //     const txSignature = await programLoader.program.provider.connection.sendTransaction(tx as Transaction, [programLoader.wallet], {
//         //         skipPreflight: true,
//         //     });
//         //     console.log("Your transaction signature", txSignature); 
//         //     userdata = await userdataState.get(programLoader.wallet.publicKey);      
//         // }
//         // console.log("[*] Userdata state: ", JSON.stringify(userdata, null, 4));
//         // var userBidReceipts = await userdataState.getBidReceipts(programLoader.wallet.publicKey);
//         // console.log("[*] User bid receipts: ", JSON.stringify(userBidReceipts, null, 4));
//         // var userListings = await userdataState.getListings(programLoader.wallet.publicKey);
//         // console.log("[*] User listings: ", JSON.stringify(userListings, null, 4));
//         // var userBidRequests = await userdataState.getBidRequests(programLoader.wallet.publicKey);
//         // console.log("[*] User bid requests: ", JSON.stringify(userBidRequests, null, 4));


//         // console.log("[*] User address: ", programLoader.wallet.publicKey.toBase58());
//         // console.log("[*] Executing sale");
//         // var txn = await applicationState.executeSale(new PublicKey("91c8CmXipoBHwirDatUDxWt7EmrC5EwE6kgLKokesiW9"));

//         // console.log("[*] Transaction: ", JSON.stringify(txn, null, 4));
//     }catch(e: any){
//         console.error(e.message);
//     }
// })()

import ApplicationState from './utils/ApplicationState';
import AuctionManager from './utils/AuctionManager';
import BidReceipt from './utils/BidReciept';
import Listing from './utils/Listing';
import ProgramLoader from './utils/ProgramLoader';
import Userdata from './utils/Userdata';
import { ListingState } from "./types/listing";

export {
    ApplicationState,
    AuctionManager,
    BidReceipt,
    Listing,
    ProgramLoader,
    Userdata,
    ListingState
};