import { Address } from '@btc-vision/transaction';
import { CallResult } from '../../../../contracts/CallResult.js';
import { OPNetEvent } from '../../../../contracts/OPNetEvent.js';
import { IOP_NETContract } from '../opnet/IOP_NETContract.js';
export type PoolCreatedEvent = {
    readonly token0: Address;
    readonly token1: Address;
    readonly pool: Address;
};
export interface IMotoswapFactoryContract extends IOP_NETContract {
    getPool(token0: Address, token1: Address): Promise<CallResult<{
        pool: Address;
    }>>;
    createPool(token0: Address, token1: Address): Promise<CallResult<{
        address: Address;
    }, [OPNetEvent<PoolCreatedEvent>]>>;
    setStakingContractAddress(stakingContractAddress: Address): Promise<CallResult<{
        success: boolean;
    }>>;
    getStakingContractAddress(): Promise<CallResult<{
        stakingContractAddress: Address;
    }>>;
}
