This contract's source code is verified! Compiler
0.8.13+commit.abaa5c0e
File 1 of 14: Batch1155.sol
pragma solidity 0.8.x;
import "../../core/ExecutorCore.sol" ;
abstract contract Batch1155 is ExecutorCore {
function recordSale1155batch (
uint256 [] calldata count,
address [] calldata tokenContract,
uint256 [] calldata tokenId,
uint256 [] calldata price,
address [] calldata priceCurrency ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < tokenContract.length ; i+ + ) {
_recordSale1155(tokenContract[i], tokenId[i], count[i], price[i], priceCurrency[i]);
}
}
function executeSaleUsd1155batch (
uint256 [] calldata count,
uint256 [] calldata price,
uint256 [] calldata tokenId,
address [] calldata tokenContract,
address [] calldata seller,
address [] calldata buyer ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < tokenContract.length ; i+ + ){
_transfer1155(count[i], price[i], _priceCurrencyUSD, tokenId[i], tokenContract[i], seller[i], buyer[i]);
}
}
function executeSaleEth1155batch (
uint256 [] calldata count,
NiftyEvent[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
_transfer1155(count[i], ne[i].price, _priceCurrencyETH, ne[i].tokenId, ne[i].tokenContract, ne[i].seller, ne[i].buyer);
_transferEth(ne[i].seller, ne[i].sellerProceeds);
}
}
function executeSaleToken1155batch (
uint256 [] calldata count,
address [] calldata priceCurrency,
NiftyEvent[] calldata ne ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address currency = priceCurrency[i];
_transfer1155(count[i], ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, ne[i].buyer);
_transfer20(ne[i].sellerProceeds, currency, seller);
}
}
function executeSaleReceiverNeth1155batch (
uint256 [] calldata count,
address [][] calldata receiverCreators,
uint256 [][] calldata receiverAmounts,
NiftyEvent[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
_transfer1155(count[i], ne[i].price, _priceCurrencyETH, ne[i].tokenId, ne[i].tokenContract, seller, ne[i].buyer);
_transferEth(seller, ne[i].sellerProceeds);
for (uint256 j = 0 ; j < receiverCreators[i].length ; j+ + ){
_transferEth(receiverCreators[i][j], receiverAmounts[i][j]);
}
}
}
function executeSaleReceiverNtoken1155batch (uint256 [] calldata count, NiftyEventReceiver[] calldata ne ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address currency = ne[i].priceCurrency;
_transfer1155(count[i], ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, ne[i].buyer);
_transfer20(ne[i].sellerProceeds, currency, seller);
for (uint256 j = 0 ; j < ne[i].receiverCreators.length ; j+ + ){
_transfer20(ne[i].receiverAmounts[j], currency, ne[i].receiverCreators[j]);
}
}
}
} File 2 of 14: Batch721.sol
pragma solidity 0.8.x;
import "../../core/ExecutorCore.sol" ;
abstract contract Batch721 is ExecutorCore {
function recordSale721batch (
address [] calldata tokenContract,
uint256 [] calldata tokenId,
uint256 [] calldata price,
address [] calldata priceCurrency ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < tokenContract.length ; i+ + ) {
_recordSale721(tokenContract[i], tokenId[i], price[i], priceCurrency[i]);
}
}
function executeSaleUsd721batch (
uint256 [] calldata price,
uint256 [] calldata tokenId,
address [] calldata tokenContract,
address [] calldata seller,
address [] calldata buyer ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < tokenContract.length ; i+ + ){
_transfer721(price[i], _priceCurrencyUSD, tokenId[i], tokenContract[i], seller[i], buyer[i]);
}
}
function executeSaleEth721batch (
uint256 [] calldata price,
uint256 [] calldata sellerProceeds,
uint256 [] calldata tokenId,
address [] calldata tokenContract,
address [] calldata seller,
address [] calldata buyer ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < tokenContract.length ; i+ + ){
_transfer721(price[i], _priceCurrencyETH, tokenId[i], tokenContract[i], seller[i], buyer[i]);
_transferEth(seller[i], sellerProceeds[i]);
}
}
function executeSaleToken721batch (
address [] calldata priceCurrency,
NiftyEvent[] calldata ne ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address currency = priceCurrency[i];
_transfer721(ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, ne[i].buyer);
_transfer20(ne[i].sellerProceeds, currency, seller);
}
}
function executeSaleReceiverNeth721batch (
address [][] calldata receiverCreators,
uint256 [][] calldata receiverAmounts,
NiftyEvent[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
_transfer721(ne[i].price, _priceCurrencyETH, ne[i].tokenId, ne[i].tokenContract, seller, ne[i].buyer);
_transferEth(seller, ne[i].sellerProceeds);
for (uint256 j = 0 ; j < receiverCreators[i].length ; j+ + ){
_transferEth(receiverCreators[i][j], receiverAmounts[i][j]);
}
}
}
function executeSaleReceiverNtoken721batch (NiftyEventReceiver[] calldata ne ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address currency = ne[i].priceCurrency;
_transfer721(ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, ne[i].buyer);
_transfer20(ne[i].sellerProceeds, currency, seller);
for (uint256 j = 0 ; j < ne[i].receiverCreators.length ; j+ + ){
_transfer20(ne[i].receiverAmounts[j], currency, ne[i].receiverCreators[j]);
}
}
}
} File 3 of 14: BatchHandler1155.sol
pragma solidity 0.8.x;
import "../../core/ExecutorCore.sol" ;
abstract contract BatchHandler1155 is ExecutorCore {
function executeSaleEth1155batchHandler (
uint256 [] calldata count,
NiftyEventHandler[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address buyer = ne[i].buyer;
bool success = _transfer1155handler(count[i], ne[i].price, _priceCurrencyETH, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_transferEth(seller, ne[i].sellerProceeds);
} else {
_transferEth(buyer, ne[i].refund);
}
}
}
function executeSaleToken1155batchHandler (
uint256 [] calldata count,
address [] calldata priceCurrency,
NiftyEventHandler[] calldata ne ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address buyer = ne[i].buyer;
address currency = priceCurrency[i];
bool success = _transfer1155handler(count[i], ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_transfer20(ne[i].sellerProceeds, currency, seller);
} else {
_transfer20(ne[i].refund, currency, buyer);
}
}
}
function executeSaleReceiverNeth1155batchHandler (
uint256 [] calldata count,
address [][] calldata receiverCreators,
uint256 [][] calldata receiverAmounts,
NiftyEventHandler[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address buyer = ne[i].buyer;
bool success = _transfer1155handler(count[i], ne[i].price, _priceCurrencyETH, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_transferEth(seller, ne[i].sellerProceeds);
for (uint256 j = 0 ; j < receiverCreators[i].length ; j+ + ){
_transferEth(receiverCreators[i][j], receiverAmounts[i][j]);
}
} else {
_transferEth(buyer, ne[i].refund);
}
}
}
function executeSaleReceiverNtoken1155batchHandler (uint256 [] calldata count, NiftyEventReceiverHandler[] calldata ne ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address currency = ne[i].priceCurrency;
address buyer = ne[i].buyer;
bool success = _transfer1155handler(count[i], ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_transfer20(ne[i].sellerProceeds, currency, seller);
for (uint256 j = 0 ; j < ne[i].receiverCreators.length ; j+ + ){
_transfer20(ne[i].receiverAmounts[j], currency, ne[i].receiverCreators[j]);
}
} else {
_transfer20(ne[i].refund, currency, buyer);
}
}
}
} File 4 of 14: BatchHandler721.sol
pragma solidity 0.8.x;
import "../../core/ExecutorCore.sol" ;
abstract contract BatchHandler721 is ExecutorCore {
function executeSaleEth721batchHandler (NiftyEventHandler[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address buyer = ne[i].buyer;
bool success = _transfer721handler(ne[i].price, _priceCurrencyETH, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_transferEth(seller, ne[i].sellerProceeds);
} else {
_transferEth(buyer, ne[i].refund);
}
}
}
function executeSaleToken721batchHandler (
address [] calldata priceCurrency,
NiftyEventHandler[] calldata ne ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address buyer = ne[i].buyer;
address currency = priceCurrency[i];
bool success = _transfer721handler(ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_transfer20(ne[i].sellerProceeds, currency, seller);
} else {
_transfer20(ne[i].refund, currency, buyer);
}
}
}
function executeSaleReceiverNeth721batchHandler (
address [][] calldata receiverCreators,
uint256 [][] calldata receiverAmounts,
NiftyEventHandler[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address buyer = ne[i].buyer;
bool success = _transfer721handler(ne[i].price, _priceCurrencyETH, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_transferEth(seller, ne[i].sellerProceeds);
for (uint256 j = 0 ; j < receiverCreators[i].length ; j+ + ){
_transferEth(receiverCreators[i][j], receiverAmounts[i][j]);
}
} else {
_transferEth(buyer, ne[i].refund);
}
}
}
function executeSaleReceiverNtoken721batchHandler (NiftyEventReceiverHandler[] calldata ne ) external {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ){
address seller = ne[i].seller;
address currency = ne[i].priceCurrency;
address buyer = ne[i].buyer;
bool success = _transfer721handler(ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_transfer20(ne[i].sellerProceeds, currency, seller);
for (uint256 j = 0 ; j < ne[i].receiverCreators.length ; j+ + ){
_transfer20(ne[i].receiverAmounts[j], currency, ne[i].receiverCreators[j]);
}
} else {
_transfer20(ne[i].refund, currency, buyer);
}
}
}
} File 5 of 14: ExecutorCore.sol
pragma solidity 0.8.x;
import "../registry/Registry.sol" ;
interface IERC1155 {
function safeTransferFrom (address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data ) external ;
}
interface IERC721 {
function safeTransferFrom (address _from, address _to, uint256 _tokenId ) external payable ;
}
struct NiftyEvent {
uint256 sellerProceeds;
uint256 price;
uint256 tokenId;
address tokenContract;
address seller;
address buyer;
}
struct NiftyEventHandler {
uint256 refund;
uint256 sellerProceeds;
uint256 price;
uint256 tokenId;
address tokenContract;
address seller;
address buyer;
}
struct NiftyEventReceiver {
uint256 sellerProceeds;
uint256 price;
uint256 tokenId;
address tokenContract;
address seller;
address buyer;
address priceCurrency;
address [] receiverCreators;
uint256 [] receiverAmounts;
}
struct NiftyEventReceiverHandler {
uint256 refund;
uint256 sellerProceeds;
uint256 price;
uint256 tokenId;
address tokenContract;
address seller;
address buyer;
address priceCurrency;
address [] receiverCreators;
uint256 [] receiverAmounts;
}
struct NiftyEventBatch {
uint256 tokenId;
uint256 count;
uint256 sellerProceeds;
uint256 price;
address priceCurrency;
address tokenContract;
address seller;
address buyer;
address [] receiverCreators;
uint256 [] receiverAmounts;
}
abstract contract ExecutorCore is Registry {
address constant public _priceCurrencyETH = address (0 );
address immutable public _priceCurrencyUSD;
event NiftySale721 (address indexed tokenContract, uint256 tokenId, uint256 price, address priceCurrency ) ;
event NiftySale1155 (address indexed tokenContract, uint256 tokenId, uint256 count, uint256 price, address priceCurrency ) ;
constructor (address priceCurrencyUSD_, address recoveryAdmin_, address [] memory validSenders_ ) Registry (recoveryAdmin_, validSenders_ ) {
_priceCurrencyUSD = priceCurrencyUSD_;
}
function _transferEth (address recipient, uint256 value ) internal {
(bool success,) = payable (recipient).call {value : value}("" );
require (success, "NiftyExchangeExecutor: Value transfer unsuccessful" );
}
function _transfer20 (uint256 value, address token, address to ) internal {
(bool success, bytes memory data) = address (token).call (abi .encodeWithSelector (0xa9059cbb , to, value));
require (success & & (data.length = = 0 | | abi .decode (data, (bool ))));
}
function _transfer721 (uint256 price, address priceCurrency, uint256 tokenId, address tokenContract, address seller, address buyer ) internal {
IERC721(tokenContract).safeTransferFrom(seller, buyer, tokenId);
emit NiftySale721(tokenContract, tokenId, price, priceCurrency);
}
function _transfer721handler (uint256 price, address priceCurrency, uint256 tokenId, address tokenContract, address seller, address buyer ) internal returns (bool ) {
try IERC721(tokenContract).safeTransferFrom(seller, buyer, tokenId) {
emit NiftySale721(tokenContract, tokenId, price, priceCurrency);
return true ;
} catch {
return false ;
}
}
function _transfer1155 (uint256 count, uint256 price, address priceCurrency, uint256 tokenId, address tokenContract, address seller, address buyer ) internal {
IERC1155(tokenContract).safeTransferFrom(seller, buyer, tokenId, count, "" );
emit NiftySale1155(tokenContract, tokenId, count, price, priceCurrency);
}
function _transfer1155handler (uint256 count, uint256 price, address priceCurrency, uint256 tokenId, address tokenContract, address seller, address buyer ) internal returns (bool ) {
try IERC1155(tokenContract).safeTransferFrom(seller, buyer, tokenId, count, "" ) {
emit NiftySale1155(tokenContract, tokenId, count, price, priceCurrency);
return true ;
} catch {
return false ;
}
}
function _recordSale721 (address tokenContract, uint256 tokenId, uint256 price, address priceCurrency ) internal {
emit NiftySale721(tokenContract, tokenId, price, priceCurrency);
}
function _recordSale1155 (address tokenContract, uint256 tokenId, uint256 count, uint256 price, address priceCurrency ) internal {
emit NiftySale1155(tokenContract, tokenId, count, price, priceCurrency);
}
function _executeSwitcher (
address currency,
uint256 sellerProceeds,
address seller,
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts ) internal {
bool eth = currency = = _priceCurrencyETH;
if (sellerProceeds > 0 ){
if (eth){
_transferEth(seller, sellerProceeds);
} else {
_transfer20(sellerProceeds, currency, seller);
}
}
uint256 receiverCount = receiverCreators.length ;
if (receiverCount > 0 ){
for (uint256 i = 0 ; i < receiverCount; i+ + ){
if (eth){
_transferEth(receiverCreators[i], receiverAmounts[i]);
} else {
_transfer20(receiverAmounts[i], currency, receiverCreators[i]);
}
}
}
}
function _executeRefund (uint256 refund, address currency, address buyer ) internal {
if (refund > 0 ){
if (currency = = _priceCurrencyETH) {
_transferEth(buyer, refund);
} else {
_transfer20(refund, currency, buyer);
}
}
}
} File 6 of 14: LockRequestable.sol
pragma solidity 0.8.x;
abstract contract LockRequestable {
uint256 public lockRequestCount;
constructor ( ) {
lockRequestCount = 0 ;
}
function generatePreLockId ( ) internal returns (bytes32 preLockId, uint256 lockRequestIdx ) {
lockRequestIdx = + + lockRequestCount;
preLockId = keccak256 (
abi .encodePacked (
blockhash (block .number - 1 ),
address (this ),
lockRequestIdx
)
);
}
} File 7 of 14: NiftyExchangeExecutor.sol
pragma solidity 0.8.x;
import "./single/721/Single721.sol" ;
import "./single/721/SingleHandler721.sol" ;
import "./batch/721/Batch721.sol" ;
import "./batch/721/BatchHandler721.sol" ;
import "./single/1155/Single1155.sol" ;
import "./single/1155/SingleHandler1155.sol" ;
import "./batch/1155/Batch1155.sol" ;
import "./batch/1155/BatchHandler1155.sol" ;
import "./switcher/Switcher.sol" ;
import "./switcher/SwitcherHandler.sol" ;
contract NiftyExchangeExecutor is Single721 ,
SingleHandler721 ,
Batch721 ,
BatchHandler721 ,
Single1155 ,
SingleHandler1155 ,
Batch1155 ,
BatchHandler1155 ,
Switcher ,
SwitcherHandler {
constructor (address priceCurrencyUSD_, address recoveryAdmin_, address [] memory validSenders_ ) ExecutorCore (priceCurrencyUSD_, recoveryAdmin_, validSenders_ ) {
}
function withdraw (address recipient, uint256 value ) external {
_requireOnlyValidSender();
_transferEth(recipient, value);
}
function withdraw20 (address tokenContract, address recipient, uint256 amount ) external {
_requireOnlyValidSender();
_transfer20(amount, tokenContract, recipient);
}
function withdraw721 (address tokenContract, address recipient, uint256 tokenId ) external {
_requireOnlyValidSender();
IERC721(tokenContract).safeTransferFrom(address (this ), recipient, tokenId);
}
} File 8 of 14: Registry.sol
pragma solidity 0.8.x;
import "./LockRequestable.sol" ;
struct AdminUpdateRequest {
address proposed;
}
contract Registry is LockRequestable {
address public custodian;
mapping (bytes32 = > AdminUpdateRequest) public custodianChangeReqs;
event CustodianChangeRequested (
bytes32 _lockId,
address _msgSender,
address _proposedCustodian,
uint256 _lockRequestIdx
) ;
event CustodianChangeConfirmed (bytes32 _lockId, address _newCustodian ) ;
mapping (address = > address ) public _validSenderSet;
uint256 public setSize;
address constant GUARD = address (1 );
mapping (bytes32 = > AdminUpdateRequest) public ownerAddReqs;
event ValidSenderAddRequested (
bytes32 _lockId,
address _msgSender,
address _proposed,
uint256 _lockRequestIdx
) ;
event ValidSenderAddConfirmed (bytes32 _lockId, address _newValidSender ) ;
string internal constant ERROR_INVALID_MSG_SENDER = "Invalid msg.sender" ;
constructor (address custodian_, address [] memory validSenders_ ) LockRequestable ( ) {
custodian = custodian_;
_validSenderSet[GUARD] = GUARD;
for (uint256 i = 0 ; i < validSenders_.length ; i+ + ) {
address sender = validSenders_[i];
_addValidSender(sender);
}
}
modifier onlyCustodian {
require (msg .sender = = custodian, ERROR_INVALID_MSG_SENDER);
_ ;
}
function _requireOnlyValidSender ( ) internal view {
require (isValidSender(msg .sender ), ERROR_INVALID_MSG_SENDER);
}
function confirmCustodianChange (bytes32 lockId ) external onlyCustodian {
custodian = _getRequest(custodianChangeReqs, lockId);
delete custodianChangeReqs[lockId];
emit CustodianChangeConfirmed(lockId, custodian);
}
function confirmValidSenderAdd (bytes32 lockId ) external onlyCustodian {
address proposed = _getRequest(ownerAddReqs, lockId);
_addValidSender(proposed);
delete ownerAddReqs[lockId];
emit ValidSenderAddConfirmed(lockId, proposed);
}
function _getRequest (mapping (bytes32 => AdminUpdateRequest ) storage _m, bytes32 _lockId ) private view returns (address proposed ) {
AdminUpdateRequest storage adminRequest = _m[_lockId];
require (adminRequest.proposed ! = address (0 ), "no such lockId" );
return adminRequest.proposed;
}
function _requestChange (mapping (bytes32 => AdminUpdateRequest ) storage _m, bytes4 _selector, address _proposed ) private returns (bytes32 lockId, uint256 lockRequestIdx ) {
require (_proposed ! = address (0 ), "zero address" );
(bytes32 preLockId, uint256 idx) = generatePreLockId();
lockId = keccak256 (
abi .encodePacked (
preLockId,
_selector,
_proposed
)
);
lockRequestIdx = idx;
_m[lockId] = AdminUpdateRequest({
proposed : _proposed
});
}
function requestCustodianChange (address _proposedCustodian ) external returns (bytes32 lockId ) {
(bytes32 preLockId, uint256 lockRequestIdx) = _requestChange(custodianChangeReqs, this .requestCustodianChange.selector , _proposedCustodian);
emit CustodianChangeRequested(preLockId, msg .sender , _proposedCustodian, lockRequestIdx);
return preLockId;
}
function requestValidSenderAdd (address _sender ) external returns (bytes32 lockId ) {
(bytes32 preLockId, uint256 lockRequestIdx) = _requestChange(ownerAddReqs, this .requestValidSenderAdd.selector , _sender);
emit ValidSenderAddRequested(preLockId, msg .sender , _sender, lockRequestIdx);
return preLockId;
}
function _getPrevSender (address student ) private view returns (address ) {
address currentAddress = GUARD;
while (_validSenderSet[currentAddress] ! = GUARD) {
if (_validSenderSet[currentAddress] = = student) {
return currentAddress;
}
currentAddress = _validSenderSet[currentAddress];
}
return address (0 );
}
function removeValidSender (address sender ) external {
_requireOnlyValidSender();
_removeValidSender(sender);
}
function removeAllValidSenders ( ) external {
_requireOnlyValidSender();
address currentAddress = GUARD;
while (_validSenderSet[currentAddress] ! = GUARD) {
address sender = _validSenderSet[currentAddress];
_removeValidSender(sender);
}
}
function isValidSender (address sender ) public view returns (bool ) {
return _validSenderSet[sender] ! = address (0 );
}
function _addValidSender (address sender ) private {
require (! isValidSender(sender));
_validSenderSet[sender] = _validSenderSet[GUARD];
_validSenderSet[GUARD] = sender;
setSize+ + ;
}
function _removeValidSender (address sender ) private {
address prevSender = _getPrevSender(sender);
_validSenderSet[prevSender] = _validSenderSet[sender];
_validSenderSet[sender] = address (0 );
setSize- - ;
}
function getValidSenderSet ( ) public view returns (address [] memory ) {
address [] memory validSenderList = new address [](setSize);
address currentAddress = _validSenderSet[GUARD];
for (uint256 i = 0 ; currentAddress ! = GUARD; + + i) {
validSenderList[i] = currentAddress;
currentAddress = _validSenderSet[currentAddress];
}
return validSenderList;
}
} File 9 of 14: Single1155.sol
pragma solidity 0.8.x;
import "../../core/ExecutorCore.sol" ;
abstract contract Single1155 is ExecutorCore {
function recordSale1155 (address tokenContract, uint256 tokenId, uint256 count, uint256 price, address priceCurrency ) external {
_requireOnlyValidSender();
_recordSale1155(tokenContract, tokenId, count, price, priceCurrency);
}
function executeSaleUsd1155 (
uint256 count,
uint256 price,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external {
_requireOnlyValidSender();
_transfer1155(count, price, _priceCurrencyUSD, tokenId, tokenContract, seller, buyer);
}
function executeSaleEth1155 (
uint256 count,
uint256 price,
uint256 sellerProceeds,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external payable {
_requireOnlyValidSender();
_transfer1155(count, price, _priceCurrencyETH, tokenId, tokenContract, seller, buyer);
_transferEth(seller, sellerProceeds);
}
function executeSaleToken1155 (
uint256 count,
uint256 price,
uint256 sellerProceeds,
address priceCurrency,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external {
_requireOnlyValidSender();
_transfer1155(count, price, priceCurrency, tokenId, tokenContract, seller, buyer);
_transfer20(sellerProceeds, priceCurrency, seller);
}
function executeSaleReceiver1eth1155 (
uint256 count,
address receiverCreator,
uint256 receiverAmount,
uint256 price,
uint256 sellerProceeds,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external payable {
_requireOnlyValidSender();
_transfer1155(count, price, _priceCurrencyETH, tokenId, tokenContract, seller, buyer);
_transferEth(seller, sellerProceeds);
_transferEth(receiverCreator, receiverAmount);
}
function executeSaleReceiver1token1155 (
uint256 count,
address receiverCreator,
uint256 receiverAmount,
address priceCurrency,
NiftyEvent calldata ne ) external {
_requireOnlyValidSender();
address seller = ne.seller;
_transfer1155(count, ne.price, priceCurrency, ne.tokenId, ne.tokenContract, seller, ne.buyer);
_transfer20(ne.sellerProceeds, priceCurrency, seller);
_transfer20(receiverAmount, priceCurrency, receiverCreator);
}
function executeSaleReceiverNeth1155 (
uint256 count,
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts,
NiftyEvent calldata ne ) external payable {
_requireOnlyValidSender();
address seller = ne.seller;
_transfer1155(count, ne.price, _priceCurrencyETH, ne.tokenId, ne.tokenContract, seller, ne.buyer);
_transferEth(seller, ne.sellerProceeds);
for (uint256 i = 0 ; i < receiverCreators.length ; i+ + ){
_transferEth(receiverCreators[i], receiverAmounts[i]);
}
}
function executeSaleReceiverNtoken1155 (
uint256 count,
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts,
address priceCurrency,
NiftyEvent calldata ne ) external {
_requireOnlyValidSender();
address seller = ne.seller;
_transfer1155(count, ne.price, priceCurrency, ne.tokenId, ne.tokenContract, seller, ne.buyer);
_transfer20(ne.sellerProceeds, priceCurrency, seller);
for (uint256 i = 0 ; i < receiverCreators.length ; i+ + ){
_transfer20(receiverAmounts[i], priceCurrency, receiverCreators[i]);
}
}
} File 10 of 14: Single721.sol
pragma solidity 0.8.x;
import "../../core/ExecutorCore.sol" ;
abstract contract Single721 is ExecutorCore {
function recordSale721 (
uint256 tokenId,
address tokenContract,
uint256 price,
address priceCurrency ) external {
_requireOnlyValidSender();
_recordSale721(tokenContract, tokenId, price, priceCurrency);
}
function executeSaleUsd721 (
uint256 tokenId,
address tokenContract,
uint256 price,
address seller,
address buyer ) external {
_requireOnlyValidSender();
_transfer721(price, _priceCurrencyUSD, tokenId, tokenContract, seller, buyer);
}
function executeSaleEth721 (
uint256 tokenId,
address tokenContract,
uint256 price,
address seller,
uint256 sellerProceeds,
address buyer ) external payable {
_requireOnlyValidSender();
_transfer721(price, _priceCurrencyETH, tokenId, tokenContract, seller, buyer);
_transferEth(seller, sellerProceeds);
}
function executeSaleToken721 (
uint256 tokenId,
address tokenContract,
uint256 price,
address priceCurrency,
address seller,
uint256 sellerProceeds,
address buyer ) external {
_requireOnlyValidSender();
_transfer721(price, priceCurrency, tokenId, tokenContract, seller, buyer);
_transfer20(sellerProceeds, priceCurrency, seller);
}
function executeSaleReceiver1eth721 (
uint256 tokenId,
address tokenContract,
uint256 price,
address seller,
uint256 sellerProceeds,
address buyer,
address receiverCreator,
uint256 receiverAmount ) external payable {
_requireOnlyValidSender();
_transfer721(price, _priceCurrencyETH, tokenId, tokenContract, seller, buyer);
_transferEth(seller, sellerProceeds);
_transferEth(receiverCreator, receiverAmount);
}
function executeSaleReceiver1token721 (
address receiverCreator,
uint256 receiverAmount,
address priceCurrency,
NiftyEvent calldata ne ) external {
_requireOnlyValidSender();
address seller = ne.seller;
_transfer721(ne.price, priceCurrency, ne.tokenId, ne.tokenContract, seller, ne.buyer);
_transfer20(ne.sellerProceeds, priceCurrency, seller);
_transfer20(receiverAmount, priceCurrency, receiverCreator);
}
function executeSaleReceiverNeth721 (
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts,
NiftyEvent calldata ne ) external payable {
_requireOnlyValidSender();
address seller = ne.seller;
_transfer721(ne.price, _priceCurrencyETH, ne.tokenId, ne.tokenContract, seller, ne.buyer);
_transferEth(seller, ne.sellerProceeds);
for (uint256 i = 0 ; i < receiverCreators.length ; i+ + ){
_transferEth(receiverCreators[i], receiverAmounts[i]);
}
}
function executeSaleReceiverNtoken721 (
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts,
address priceCurrency,
NiftyEvent calldata ne ) external {
_requireOnlyValidSender();
address seller = ne.seller;
_transfer721(ne.price, priceCurrency, ne.tokenId, ne.tokenContract, seller, ne.buyer);
_transfer20(ne.sellerProceeds, priceCurrency, seller);
for (uint256 i = 0 ; i < receiverCreators.length ; i+ + ){
_transfer20(receiverAmounts[i], priceCurrency, receiverCreators[i]);
}
}
} File 11 of 14: SingleHandler1155.sol
pragma solidity 0.8.x;
import "../../core/ExecutorCore.sol" ;
abstract contract SingleHandler1155 is ExecutorCore {
function executeSaleEth1155handler (
uint256 count,
uint256 refund,
uint256 price,
uint256 sellerProceeds,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external payable {
_requireOnlyValidSender();
bool success = _transfer1155handler(count, price, _priceCurrencyETH, tokenId, tokenContract, seller, buyer);
if (success){
_transferEth(seller, sellerProceeds);
} else {
_transferEth(buyer, refund);
}
}
function executeSaleToken1155handler (
uint256 count,
uint256 refund,
uint256 price,
uint256 sellerProceeds,
address priceCurrency,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external {
_requireOnlyValidSender();
bool success = _transfer1155handler(count, price, priceCurrency, tokenId, tokenContract, seller, buyer);
if (success){
_transfer20(sellerProceeds, priceCurrency, seller);
} else {
_transfer20(refund, priceCurrency, buyer);
}
}
function executeSaleReceiver1eth1155handler (
uint256 count,
uint256 refund,
address receiverCreator,
uint256 receiverAmount,
uint256 price,
uint256 sellerProceeds,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external payable {
_requireOnlyValidSender();
bool success = _transfer1155handler(count, price, _priceCurrencyETH, tokenId, tokenContract, seller, buyer);
if (success){
_transferEth(seller, sellerProceeds);
_transferEth(receiverCreator, receiverAmount);
} else {
_transferEth(buyer, refund);
}
}
function executeSaleReceiver1token1155handler (
uint256 count,
address receiverCreator,
uint256 receiverAmount,
address priceCurrency,
NiftyEventHandler calldata ne ) external {
_requireOnlyValidSender();
address seller = ne.seller;
address buyer = ne.buyer;
bool success = _transfer1155handler(count, ne.price, priceCurrency, ne.tokenId, ne.tokenContract, seller, ne.buyer);
if (success){
_transfer20(ne.sellerProceeds, priceCurrency, seller);
_transfer20(receiverAmount, priceCurrency, receiverCreator);
} else {
_transfer20(ne.refund, priceCurrency, buyer);
}
}
function executeSaleReceiverNeth1155handler (
uint256 count,
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts,
NiftyEventHandler calldata ne ) external payable {
_requireOnlyValidSender();
address seller = ne.seller;
address buyer = ne.buyer;
bool success = _transfer1155handler(count, ne.price, _priceCurrencyETH, ne.tokenId, ne.tokenContract, seller, ne.buyer);
if (success){
_transferEth(seller, ne.sellerProceeds);
for (uint256 i = 0 ; i < receiverCreators.length ; i+ + ){
_transferEth(receiverCreators[i], receiverAmounts[i]);
}
} else {
_transferEth(buyer, ne.refund);
}
}
function executeSaleReceiverNtoken1155handler (
uint256 count,
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts,
address priceCurrency,
NiftyEventHandler calldata ne ) external {
_requireOnlyValidSender();
address seller = ne.seller;
address buyer = ne.buyer;
bool success = _transfer1155handler(count, ne.price, priceCurrency, ne.tokenId, ne.tokenContract, seller, buyer);
if (success){
_transfer20(ne.sellerProceeds, priceCurrency, seller);
for (uint256 i = 0 ; i < receiverCreators.length ; i+ + ){
_transfer20(receiverAmounts[i], priceCurrency, receiverCreators[i]);
}
} else {
_transfer20(ne.refund, priceCurrency, buyer);
}
}
} File 12 of 14: SingleHandler721.sol
pragma solidity 0.8.x;
import "../../core/ExecutorCore.sol" ;
abstract contract SingleHandler721 is ExecutorCore {
function executeSaleEth721handler (
uint256 refund,
uint256 price,
uint256 sellerProceeds,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external payable {
_requireOnlyValidSender();
bool success = _transfer721handler(price, _priceCurrencyETH, tokenId, tokenContract, seller, buyer);
if (success){
_transferEth(seller, sellerProceeds);
} else {
_transferEth(buyer, refund);
}
}
function executeSaleToken721handler (
uint256 refund,
uint256 price,
uint256 sellerProceeds,
address priceCurrency,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external {
_requireOnlyValidSender();
bool success = _transfer721handler(price, priceCurrency, tokenId, tokenContract, seller, buyer);
if (success){
_transfer20(sellerProceeds, priceCurrency, seller);
} else {
_transfer20(refund, priceCurrency, buyer);
}
}
function executeSaleReceiver1eth721handler (
uint256 refund,
address receiverCreator,
uint256 receiverAmount,
uint256 price,
uint256 sellerProceeds,
uint256 tokenId,
address tokenContract,
address seller,
address buyer ) external payable {
_requireOnlyValidSender();
bool success = _transfer721handler(price, _priceCurrencyETH, tokenId, tokenContract, seller, buyer);
if (success){
_transferEth(seller, sellerProceeds);
_transferEth(receiverCreator, receiverAmount);
} else {
_transferEth(buyer, refund);
}
}
function executeSaleReceiver1token721handler (
address receiverCreator,
uint256 receiverAmount,
address priceCurrency,
NiftyEventHandler calldata ne ) external {
_requireOnlyValidSender();
address seller = ne.seller;
address buyer = ne.buyer;
bool success = _transfer721handler(ne.price, priceCurrency, ne.tokenId, ne.tokenContract, seller, buyer);
if (success){
_transfer20(ne.sellerProceeds, priceCurrency, seller);
_transfer20(receiverAmount, priceCurrency, receiverCreator);
} else {
_transfer20(ne.refund, priceCurrency, buyer);
}
}
function executeSaleReceiverNeth721handler (
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts,
NiftyEventHandler calldata ne ) external payable {
_requireOnlyValidSender();
address seller = ne.seller;
address buyer = ne.buyer;
bool success = _transfer721handler(ne.price, _priceCurrencyETH, ne.tokenId, ne.tokenContract, seller, buyer);
if (success){
_transferEth(seller, ne.sellerProceeds);
for (uint256 i = 0 ; i < receiverCreators.length ; i+ + ){
_transferEth(receiverCreators[i], receiverAmounts[i]);
}
} else {
_transferEth(buyer, ne.refund);
}
}
function executeSaleReceiverNtoken721handler (
address [] calldata receiverCreators,
uint256 [] calldata receiverAmounts,
address priceCurrency,
NiftyEventHandler calldata ne ) external {
_requireOnlyValidSender();
address seller = ne.seller;
address buyer = ne.buyer;
bool success = _transfer721handler(ne.price, priceCurrency, ne.tokenId, ne.tokenContract, seller, buyer);
if (success){
_transfer20(ne.sellerProceeds, priceCurrency, seller);
for (uint256 i = 0 ; i < receiverCreators.length ; i+ + ){
_transfer20(receiverAmounts[i], priceCurrency, receiverCreators[i]);
}
} else {
_transfer20(ne.refund, priceCurrency, buyer);
}
}
} File 13 of 14: Switcher.sol
pragma solidity 0.8.x;
import "../core/ExecutorCore.sol" ;
abstract contract Switcher is ExecutorCore {
function executeSaleBatch (NiftyEventBatch[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ) {
address currency = ne[i].priceCurrency;
uint256 sellerProceeds = ne[i].sellerProceeds;
address seller = ne[i].seller;
if (ne[i].count = = 0 ) {
_transfer721(ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, ne[i].buyer);
} else {
_transfer1155(ne[i].count, ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, ne[i].buyer);
}
_executeSwitcher(currency, sellerProceeds, seller, ne[i].receiverCreators, ne[i].receiverAmounts);
}
}
} File 14 of 14: SwitcherHandler.sol
pragma solidity 0.8.x;
import "../core/ExecutorCore.sol" ;
abstract contract SwitcherHandler is ExecutorCore {
function executeSaleBatchHandler (uint256 [] calldata refund, NiftyEventBatch[] calldata ne ) external payable {
_requireOnlyValidSender();
for (uint256 i = 0 ; i < ne.length ; i+ + ) {
address currency = ne[i].priceCurrency;
uint256 sellerProceeds = ne[i].sellerProceeds;
address seller = ne[i].seller;
address buyer = ne[i].buyer;
if (ne[i].count = = 0 ) {
bool success = _transfer721handler(ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_executeSwitcher(currency, sellerProceeds, seller, ne[i].receiverCreators, ne[i].receiverAmounts);
} else {
_executeRefund(refund[i], currency, buyer);
}
} else {
bool success = _transfer1155handler(ne[i].count, ne[i].price, currency, ne[i].tokenId, ne[i].tokenContract, seller, buyer);
if (success){
_executeSwitcher(currency, sellerProceeds, seller, ne[i].receiverCreators, ne[i].receiverAmounts);
} else {
_executeRefund(refund[i], currency, buyer);
}
}
}
}
} {
"compilationTarget" : {
"contracts/NiftyExchangeExecutor.sol" : "NiftyExchangeExecutor"
} ,
"evmVersion" : "london" ,
"libraries" : { } ,
"metadata" : {
"bytecodeHash" : "ipfs"
} ,
"optimizer" : {
"enabled" : true ,
"runs" : 200
} ,
"remappings" : [ ]
} [{"inputs":[{"internalType":"address","name":"priceCurrencyUSD_","type":"address"},{"internalType":"address","name":"recoveryAdmin_","type":"address"},{"internalType":"address[]","name":"validSenders_","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_lockId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_newCustodian","type":"address"}],"name":"CustodianChangeConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_lockId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_msgSender","type":"address"},{"indexed":false,"internalType":"address","name":"_proposedCustodian","type":"address"},{"indexed":false,"internalType":"uint256","name":"_lockRequestIdx","type":"uint256"}],"name":"CustodianChangeRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"address","name":"priceCurrency","type":"address"}],"name":"NiftySale1155","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"address","name":"priceCurrency","type":"address"}],"name":"NiftySale721","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_lockId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_newValidSender","type":"address"}],"name":"ValidSenderAddConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_lockId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_msgSender","type":"address"},{"indexed":false,"internalType":"address","name":"_proposed","type":"address"},{"indexed":false,"internalType":"uint256","name":"_lockRequestIdx","type":"uint256"}],"name":"ValidSenderAddRequested","type":"event"},{"inputs":[],"name":"_priceCurrencyETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_priceCurrencyUSD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_validSenderSet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"lockId","type":"bytes32"}],"name":"confirmCustodianChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"lockId","type":"bytes32"}],"name":"confirmValidSenderAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"custodian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"custodianChangeReqs","outputs":[{"internalType":"address","name":"proposed","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"}],"internalType":"struct NiftyEventBatch[]","name":"ne","type":"tuple[]"}],"name":"executeSaleBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"refund","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"}],"internalType":"struct NiftyEventBatch[]","name":"ne","type":"tuple[]"}],"name":"executeSaleBatchHandler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleEth1155","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent[]","name":"ne","type":"tuple[]"}],"name":"executeSaleEth1155batch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler[]","name":"ne","type":"tuple[]"}],"name":"executeSaleEth1155batchHandler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleEth1155handler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleEth721","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"price","type":"uint256[]"},{"internalType":"uint256[]","name":"sellerProceeds","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"address[]","name":"tokenContract","type":"address[]"},{"internalType":"address[]","name":"seller","type":"address[]"},{"internalType":"address[]","name":"buyer","type":"address[]"}],"name":"executeSaleEth721batch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler[]","name":"ne","type":"tuple[]"}],"name":"executeSaleEth721batchHandler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleEth721handler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"receiverCreator","type":"address"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleReceiver1eth1155","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"address","name":"receiverCreator","type":"address"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleReceiver1eth1155handler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"address","name":"receiverCreator","type":"address"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"}],"name":"executeSaleReceiver1eth721","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"address","name":"receiverCreator","type":"address"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleReceiver1eth721handler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"receiverCreator","type":"address"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent","name":"ne","type":"tuple"}],"name":"executeSaleReceiver1token1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"receiverCreator","type":"address"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler","name":"ne","type":"tuple"}],"name":"executeSaleReceiver1token1155handler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiverCreator","type":"address"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent","name":"ne","type":"tuple"}],"name":"executeSaleReceiver1token721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiverCreator","type":"address"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler","name":"ne","type":"tuple"}],"name":"executeSaleReceiver1token721handler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent","name":"ne","type":"tuple"}],"name":"executeSaleReceiverNeth1155","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"internalType":"address[][]","name":"receiverCreators","type":"address[][]"},{"internalType":"uint256[][]","name":"receiverAmounts","type":"uint256[][]"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent[]","name":"ne","type":"tuple[]"}],"name":"executeSaleReceiverNeth1155batch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"internalType":"address[][]","name":"receiverCreators","type":"address[][]"},{"internalType":"uint256[][]","name":"receiverAmounts","type":"uint256[][]"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler[]","name":"ne","type":"tuple[]"}],"name":"executeSaleReceiverNeth1155batchHandler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler","name":"ne","type":"tuple"}],"name":"executeSaleReceiverNeth1155handler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent","name":"ne","type":"tuple"}],"name":"executeSaleReceiverNeth721","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[][]","name":"receiverCreators","type":"address[][]"},{"internalType":"uint256[][]","name":"receiverAmounts","type":"uint256[][]"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent[]","name":"ne","type":"tuple[]"}],"name":"executeSaleReceiverNeth721batch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[][]","name":"receiverCreators","type":"address[][]"},{"internalType":"uint256[][]","name":"receiverAmounts","type":"uint256[][]"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler[]","name":"ne","type":"tuple[]"}],"name":"executeSaleReceiverNeth721batchHandler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler","name":"ne","type":"tuple"}],"name":"executeSaleReceiverNeth721handler","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"},{"internalType":"address","name":"priceCurrency","type":"address"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent","name":"ne","type":"tuple"}],"name":"executeSaleReceiverNtoken1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"}],"internalType":"struct NiftyEventReceiver[]","name":"ne","type":"tuple[]"}],"name":"executeSaleReceiverNtoken1155batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"}],"internalType":"struct NiftyEventReceiverHandler[]","name":"ne","type":"tuple[]"}],"name":"executeSaleReceiverNtoken1155batchHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"},{"internalType":"address","name":"priceCurrency","type":"address"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler","name":"ne","type":"tuple"}],"name":"executeSaleReceiverNtoken1155handler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"},{"internalType":"address","name":"priceCurrency","type":"address"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent","name":"ne","type":"tuple"}],"name":"executeSaleReceiverNtoken721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"}],"internalType":"struct NiftyEventReceiver[]","name":"ne","type":"tuple[]"}],"name":"executeSaleReceiverNtoken721batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"}],"internalType":"struct NiftyEventReceiverHandler[]","name":"ne","type":"tuple[]"}],"name":"executeSaleReceiverNtoken721batchHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"receiverCreators","type":"address[]"},{"internalType":"uint256[]","name":"receiverAmounts","type":"uint256[]"},{"internalType":"address","name":"priceCurrency","type":"address"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler","name":"ne","type":"tuple"}],"name":"executeSaleReceiverNtoken721handler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleToken1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"internalType":"address[]","name":"priceCurrency","type":"address[]"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent[]","name":"ne","type":"tuple[]"}],"name":"executeSaleToken1155batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"internalType":"address[]","name":"priceCurrency","type":"address[]"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler[]","name":"ne","type":"tuple[]"}],"name":"executeSaleToken1155batchHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleToken1155handler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleToken721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"priceCurrency","type":"address[]"},{"components":[{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEvent[]","name":"ne","type":"tuple[]"}],"name":"executeSaleToken721batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"priceCurrency","type":"address[]"},{"components":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct NiftyEventHandler[]","name":"ne","type":"tuple[]"}],"name":"executeSaleToken721batchHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"refund","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"sellerProceeds","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleToken721handler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleUsd1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"internalType":"uint256[]","name":"price","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"address[]","name":"tokenContract","type":"address[]"},{"internalType":"address[]","name":"seller","type":"address[]"},{"internalType":"address[]","name":"buyer","type":"address[]"}],"name":"executeSaleUsd1155batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"buyer","type":"address"}],"name":"executeSaleUsd721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"price","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"address[]","name":"tokenContract","type":"address[]"},{"internalType":"address[]","name":"seller","type":"address[]"},{"internalType":"address[]","name":"buyer","type":"address[]"}],"name":"executeSaleUsd721batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getValidSenderSet","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"isValidSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockRequestCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ownerAddReqs","outputs":[{"internalType":"address","name":"proposed","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"}],"name":"recordSale1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"count","type":"uint256[]"},{"internalType":"address[]","name":"tokenContract","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"price","type":"uint256[]"},{"internalType":"address[]","name":"priceCurrency","type":"address[]"}],"name":"recordSale1155batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"priceCurrency","type":"address"}],"name":"recordSale721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenContract","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"price","type":"uint256[]"},{"internalType":"address[]","name":"priceCurrency","type":"address[]"}],"name":"recordSale721batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeAllValidSenders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"removeValidSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proposedCustodian","type":"address"}],"name":"requestCustodianChange","outputs":[{"internalType":"bytes32","name":"lockId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"requestValidSenderAdd","outputs":[{"internalType":"bytes32","name":"lockId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdraw721","outputs":[],"stateMutability":"nonpayable","type":"function"}]