Skip to content

INestorTransferManager

Git Source

Inherits: IAbstractFeeModule

Author: Originally developed by DEFYCA Labs S.a.r.l., maintained by Nestor Exchange OÜ

MIT Licence. Originally Copyright © 2023 DEFYCA Labs S.a.r.l.

The INestorTransferManager is responsible for the management of the various transfer methodologies, fees processing, and defined control paradigm for DvP for all tokens in the Nestor Protocol.

Functions

updateMinRedeemAmount

function updateMinRedeemAmount(uint256 newMinRedeemAmount_) external;

setTransferFees

function setTransferFees(TokenFeeInfo calldata token0FeeInfo_, TokenFeeInfo calldata token1FeeInfo_) external;

setTokenFee

function setTokenFee(bytes32 tokenFeeKey_, TokenFeeInfo calldata tokenFeeInfo_) external;

exchangeTokens

Executes a token pair exchange. Only invocable by PROTOCOL_TREASURY.

function exchangeTokens(TokenTransferData memory token0TransferData_, TokenTransferData memory token1TransferData_) external;

createTransferOffer

Initiates a transferOffer between a token pair exchange. Returns a transferOfferId for confirmTransferOffer or cancelTransferOffer.

function createTransferOffer(TokenTransferData memory token0TransferData_, TokenTransferData memory token1TransferData_) external returns (uint256);

redeemTokens

function redeemTokens(address tokenAddr_, uint256 redeemAmount_) external;

redeemERC20Tokens

function redeemERC20Tokens(address erc20Token_, address fundDepositToken_, uint256 tokenRedeemAmount_) external;

redeemTokensFrom

Only invocable by PROTOCOL_TREASURY.

function redeemTokensFrom(address tokenAddr_, address userAddr_, uint256 redeemAmount_) external;

redeemERC20TokensFrom

Only invocable by PROTOCOL_TREASURY.

function redeemERC20TokensFrom(address erc20Token_, address fundDepositToken_, address userAddr_, uint256 tokenRedeemAmount_) external;

confirmTransferOffer

function confirmTransferOffer(uint256 transferOfferId_) external;

cancelTransferOffer

function cancelTransferOffer(uint256 transferOfferId_) external;

nextTransferOfferId

function nextTransferOfferId() external view returns (uint256);

minRedeemAmount

function minRedeemAmount() external view returns (uint256);

getTransferData

function getTransferData(uint256 transferOfferId_) external view returns (TransferData memory);

getTransferFeesInfo

function getTransferFeesInfo(address token0_, address token1_) external view returns (FeeInfo memory, FeeInfo memory);

getTransferFeeKeys

function getTransferFeeKeys(address token0_, address token1_) external view returns (bytes32, bytes32);

getTokenFeeKey

function getTokenFeeKey(address token0_, address token1_) external view returns (bytes32);

Events

NestorTransferOfferCreated

event NestorTransferOfferCreated(uint256 transferId);

NestorTransferOfferConfirmed

event NestorTransferOfferConfirmed(uint256 transferId);

NestorTransferOfferCanceled

event NestorTransferOfferCanceled(uint256 transferId);

NestorTokensExchanged

event NestorTokensExchanged(TokenTransferData token0TransferData, TokenTransferData token1TransferData);

NestorTokensRedeemed

event NestorTokensRedeemed(address tokenAddr, address userAddr, uint256 redeemAmount);

Errors

NestorTransferManagerInvalidTokenAddresses

error NestorTransferManagerInvalidTokenAddresses(address token0, address token1);

NestorTransferManagerInvalidTokenSenderAddresses

error NestorTransferManagerInvalidTokenSenderAddresses(address token0Sender, address token1Sender);

NestorTransferManagerInvalidTokensPairForRedeem

error NestorTransferManagerInvalidTokensPairForRedeem(address erc20Token, address funDepositToken);

NestorTransferManagerCannotTransferToken

error NestorTransferManagerCannotTransferToken(address tokenAddr, address from, address to, uint256 amount);

NestorTransferManagerZeroAddress

error NestorTransferManagerZeroAddress();

NestorTransferManagerZeroAmount

error NestorTransferManagerZeroAmount();

NestorTransferManagerRedeemAmountIsLessThanMinimum

error NestorTransferManagerRedeemAmountIsLessThanMinimum(uint256 redeemAmount);

NestorTransferManagerNotEnoughTokens

error NestorTransferManagerNotEnoughTokens(address tokenAddr, address userAddr, uint256 tokensToTransfer);

NestorTransferManagerInvalidTransferStatus

error NestorTransferManagerInvalidTransferStatus(TransferStatuses expectedStatus, TransferStatuses actualStatus);

NestorTransferManagerNotEnoughPermissions

error NestorTransferManagerNotEnoughPermissions();

NestorTransferManagerInvalidERC20TokenForRedeem

error NestorTransferManagerInvalidERC20TokenForRedeem(address erc20Token);

Structs

TokenFeeInfo

struct TokenFeeInfo {
    address tokenAddr;
    FeeInfo feeInfo;
}

TokenTransferData

struct TokenTransferData {
    address tokenAddr;
    address tokenSender;
    uint256 tokenAmount;
}

TransferData

struct TransferData {
    TokenTransferData token0Data;
    TokenTransferData token1Data;
    uint256 feeInBps0;
    uint256 feeInBps1;
    TransferStatuses status;
}

Enums

TransferStatuses

enum TransferStatuses {
    NONE,
    PENDING,
    CONFIRMED,
    CANCELED
}