declare const AtomicQueueAbi: readonly [{
    readonly type: "function";
    readonly name: "getUserAtomicRequest";
    readonly inputs: readonly [{
        readonly name: "user";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "offer";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "want";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "tuple";
        readonly internalType: "struct AtomicQueue.AtomicRequest";
        readonly components: readonly [{
            readonly name: "deadline";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "atomicPrice";
            readonly type: "uint88";
            readonly internalType: "uint88";
        }, {
            readonly name: "offerAmount";
            readonly type: "uint96";
            readonly internalType: "uint96";
        }, {
            readonly name: "inSolve";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "isAtomicRequestValid";
    readonly inputs: readonly [{
        readonly name: "offer";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "user";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "userRequest";
        readonly type: "tuple";
        readonly internalType: "struct AtomicQueue.AtomicRequest";
        readonly components: readonly [{
            readonly name: "deadline";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "atomicPrice";
            readonly type: "uint88";
            readonly internalType: "uint88";
        }, {
            readonly name: "offerAmount";
            readonly type: "uint96";
            readonly internalType: "uint96";
        }, {
            readonly name: "inSolve";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "solve";
    readonly inputs: readonly [{
        readonly name: "offer";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "want";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "users";
        readonly type: "address[]";
        readonly internalType: "address[]";
    }, {
        readonly name: "runData";
        readonly type: "bytes";
        readonly internalType: "bytes";
    }, {
        readonly name: "solver";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "updateAtomicRequest";
    readonly inputs: readonly [{
        readonly name: "offer";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "want";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "userRequest";
        readonly type: "tuple";
        readonly internalType: "struct AtomicQueue.AtomicRequest";
        readonly components: readonly [{
            readonly name: "deadline";
            readonly type: "uint64";
            readonly internalType: "uint64";
        }, {
            readonly name: "atomicPrice";
            readonly type: "uint88";
            readonly internalType: "uint88";
        }, {
            readonly name: "offerAmount";
            readonly type: "uint96";
            readonly internalType: "uint96";
        }, {
            readonly name: "inSolve";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "userAtomicRequest";
    readonly inputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }];
    readonly outputs: readonly [{
        readonly name: "deadline";
        readonly type: "uint64";
        readonly internalType: "uint64";
    }, {
        readonly name: "atomicPrice";
        readonly type: "uint88";
        readonly internalType: "uint88";
    }, {
        readonly name: "offerAmount";
        readonly type: "uint96";
        readonly internalType: "uint96";
    }, {
        readonly name: "inSolve";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "viewSolveMetaData";
    readonly inputs: readonly [{
        readonly name: "offer";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "want";
        readonly type: "address";
        readonly internalType: "contract ERC20";
    }, {
        readonly name: "users";
        readonly type: "address[]";
        readonly internalType: "address[]";
    }];
    readonly outputs: readonly [{
        readonly name: "metaData";
        readonly type: "tuple[]";
        readonly internalType: "struct AtomicQueue.SolveMetaData[]";
        readonly components: readonly [{
            readonly name: "user";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "flags";
            readonly type: "uint8";
            readonly internalType: "uint8";
        }, {
            readonly name: "assetsToOffer";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }, {
            readonly name: "assetsForWant";
            readonly type: "uint256";
            readonly internalType: "uint256";
        }];
    }, {
        readonly name: "totalAssetsForWant";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }, {
        readonly name: "totalAssetsToOffer";
        readonly type: "uint256";
        readonly internalType: "uint256";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "event";
    readonly name: "AtomicRequestFulfilled";
    readonly inputs: readonly [{
        readonly name: "user";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "offerToken";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "wantToken";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "offerAmountSpent";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "wantAmountReceived";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "timestamp";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "AtomicRequestUpdated";
    readonly inputs: readonly [{
        readonly name: "user";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "offerToken";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "wantToken";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "amount";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "deadline";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "minPrice";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }, {
        readonly name: "timestamp";
        readonly type: "uint256";
        readonly indexed: false;
        readonly internalType: "uint256";
    }];
    readonly anonymous: false;
}, {
    readonly type: "error";
    readonly name: "AtomicQueue__RequestDeadlineExceeded";
    readonly inputs: readonly [{
        readonly name: "user";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "AtomicQueue__UserNotInSolve";
    readonly inputs: readonly [{
        readonly name: "user";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "AtomicQueue__UserRepeated";
    readonly inputs: readonly [{
        readonly name: "user";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "AtomicQueue__ZeroOfferAmount";
    readonly inputs: readonly [{
        readonly name: "user";
        readonly type: "address";
        readonly internalType: "address";
    }];
}];

export { AtomicQueueAbi };
