import { MoonProvider } from '@moonup/ethers';
import { MoonSDK } from '@moonup/moon-sdk';
import { ethers } from 'ethers';

interface MoonSDKHook {
    moon: MoonSDK | null;
    initialize: () => Promise<void>;
    disconnect: () => Promise<void>;
}
interface MoonEthersHook {
    moonProvider: MoonProvider | null;
    moon: MoonSDK | null;
    initialize: () => Promise<void>;
    disconnect: () => Promise<void>;
}
interface Transaction {
    from?: string;
    nonce?: ethers.BigNumberish;
    gasLimit?: ethers.BigNumberish;
    gasPrice?: ethers.BigNumberish;
}
interface MoonSkaleEthersHook {
    moonProvider: MoonProvider | null;
    moon: MoonSDK | null;
    initialize: () => Promise<void>;
    disconnect: () => Promise<void>;
    mineForGas: (contractAddress: string, address: string) => Promise<string>;
}

export { MoonEthersHook, MoonSDKHook, MoonSkaleEthersHook, Transaction };
