Skip to content

INestorTreasuryManager

Git Source

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 INestorTreasuryManager is responsible for all token operations — minting, transferring and burning — in the Nestor Protocol.

Functions

setTokensInitData

function setTokensInitData(NestorTokenInitData[] calldata initDataArr_) external;

mintFundDepositForTreasury

Mints a Fund Deposit Token in the specified currency/IBAN pair. Creates the genesis mint in the PROTOCOL_TREASURY.

function mintFundDepositForTreasury(
    INestorFundDepositToken.FFDImmutableData calldata depositData,
    address treasuryAddress,
    uint256 amount
) external returns (address);

mintDigitalSecurity

Mints a NestorDigitalSecurityToken as the future dated cash distribution from the underlying NestorOnChainAssetToken.

function mintDigitalSecurity(
    INestorDigitalSecurityToken.FDSImmutableData memory initData,
    INestorDigitalSecurityToken.FDSMutableData memory updateData,
    uint256 amount,
    address userAddress
) external returns (address);

mintOnChainAsset

Mints a NestorOnChainAssetToken as the representation of the asset to be securitised, fractionalised and sold.

function mintOnChainAsset(
    INestorOnChainAssetToken.FOCASpecData memory specData,
    INestorOnChainAssetToken.FOCAIssuanceData memory issuanceData,
    INestorOnChainAssetToken.FOCAUpdateData memory updateData,
    address custodianAddress
) external returns (address);

mintTokenForUser

function mintTokenForUser(address token, address userAddress, uint256 amount) external;

transferToken

function transferToken(address token, address userAddressFrom, address userAddressTo, uint256 amount) external;

burnToken

function burnToken(address token, address userAddress, uint256 amount) external;

getFundDepositToken

function getFundDepositToken(string calldata currency_, string calldata fundIBAN_) external view returns (address);

getFundDepositTokenKey

function getFundDepositTokenKey(string memory currency_, string memory fundIBAN_) external pure returns (bytes32);

Events

NestorTokenMinted

event NestorTokenMinted(
    IBasicNestorToken.NestorTokenTypes tokenType,
    address token, string tokenName, string tokenSymbol,
    uint256 amount, address toAddress
);

NestorTokenTransferred

event NestorTokenTransferred(
    IBasicNestorToken.NestorTokenTypes tokenType,
    address token, uint256 amount,
    address fromAddress, address toAddress
);

NestorTokenBurned

event NestorTokenBurned(
    IBasicNestorToken.NestorTokenTypes tokenType,
    address token, uint256 amount, address fromAddress
);

Errors

NestorIsZeroAddress

error NestorIsZeroAddress(string);

NestorTreasuryManagerNotAProtocolTreasury

error NestorTreasuryManagerNotAProtocolTreasury(address);

NestorTreasuryManagerFundDepositTokenAlreadyExists

error NestorTreasuryManagerFundDepositTokenAlreadyExists(string currency, string fundIBAN);

NestorTreasuryManagerInvalidTokenInitData

error NestorTreasuryManagerInvalidTokenInitData(NestorTokenInitData);

NestorTreasuryManagerUnableToUpdateTokenInitData

error NestorTreasuryManagerUnableToUpdateTokenInitData(IBasicNestorToken.NestorTokenTypes);

NestorTreasuryManagerInvalidDepositData

error NestorTreasuryManagerInvalidDepositData(INestorFundDepositToken.FFDImmutableData);

NestorTreasuryManagerInvalidFDSImmutableData

error NestorTreasuryManagerInvalidFDSImmutableData(INestorDigitalSecurityToken.FDSImmutableData);

NestorTreasuryManagerInvalidFOCASpecData

error NestorTreasuryManagerInvalidFOCASpecData(INestorOnChainAssetToken.FOCASpecData);

NestorTreasuryManagerInvalidFOCAIssuanceData

error NestorTreasuryManagerInvalidFOCAIssuanceData(INestorOnChainAssetToken.FOCAIssuanceData);

Structs

NestorTokenInitData

struct NestorTokenInitData {
    address implAuthority;
    IBasicNestorToken.NestorTokenTypes tokenType;
}