IFrictionlessOnChainAssetToken
Inherits: IBasicFrictionlessToken
Author: DEFYCA Labs S.à.r.l
Copyright © 2023 DEFYCA Labs S.à.r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à.r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Implementation of the storage of the underlying OnChain Asset and it's data.
Functions
setSpecificationData
Sets the specData data for the FrictionlessOnChainAssetToken
. throws FrictionlessOnChainAssetTokenUnableToUpdateData
This data is immutable, an attempt to modify will generate the error FrictionlessOnChainAssetTokenUnableToUpdateData
function setSpecificationData(FOCASpecData calldata specData) external;
Parameters
specData
FOCASpecData
the specData data for the FrictionlessOnChainAssetToken
setIssuanceData
Sets the issuanceData data for the FrictionlessOnChainAssetToken
throws FrictionlessOnChainAssetTokenUnableToUpdateData
This data is immutable, an attempt to modify will generate the error FrictionlessOnChainAssetTokenUnableToUpdateData
function setIssuanceData(FOCAIssuanceData calldata issuanceData) external;
Parameters
issuanceData
FOCAIssuanceData
the updatable data for the FrictionlessOnChainAssetToken
setUpdateData
Sets the updatable data for the FrictionlessOnChainAssetToken
function setUpdateData(FOCAUpdateData calldata updateData) external;
Parameters
updateData
FOCAUpdateData
the updatable data for the FrictionlessOnChainAssetToken
getSpecificationData
Get the specData data for the FrictionlessOnChainAssetToken
.
function getSpecificationData() external view returns (FOCASpecData memory);
Returns
<none>
FOCASpecData
the specData data for the FrictionlessOnChainAssetToken
getIssuanceData
Get the issuanceData data for the FrictionlessOnChainAssetToken
.
function getIssuanceData() external view returns (FOCAIssuanceData memory);
Returns
<none>
FOCAIssuanceData
the issuanceData data for the FrictionlessOnChainAssetToken
getUpdateData
Get the updateData data for the FrictionlessOnChainAssetToken
.
function getUpdateData() external view returns (FOCAUpdateData memory);
Returns
<none>
FOCAUpdateData
the updateData data for the FrictionlessOnChainAssetToken
getCurrency
Get the currency the FrictionlessOnChainAssetToken
is issued in.
function getCurrency() external view returns (string memory);
Returns
<none>
string
the currency the FrictionlessOnChainAssetToken
is issued in.
Errors
FrictionlessOnChainAssetTokenUnableToUpdateData
error throw if there is an attempt to modify the immutable data.
error FrictionlessOnChainAssetTokenUnableToUpdateData();
Structs
FOCASpecData
The specification data for the FrictionlessOnChainAssetToken
, this is an immutable data struct.
struct FOCASpecData {
uint256 issuedOn;
uint256 maturityDays;
FrictionlessOnChainAssetSchedule schedule;
FrictionlessOnChainAssetPaymentFrequency paymentFrequency;
FrictionlessOnChainAssetYieldType yieldType;
string baseCurrency;
uint256 stripTotal;
string name;
string symbol;
}
FOCAIssuanceData
The issuance data for the FrictionlessOnChainAssetToken
, this is an immutable data struct.
struct FOCAIssuanceData {
uint256 auctionedOn;
FrictionlessOnChainAssetPriceStatus priceQuoteStatus;
string onChainAssetUUID;
string issuerUUID;
string isin;
string issuanceDocs;
string assetClass;
}
FOCAUpdateData
The uopdatable data for the FrictionlessOnChainAssetToken
.
struct FOCAUpdateData {
uint256 maturesOn;
uint256 total;
FrictionlessOnChainAssetStatus status;
uint256 yield;
FrictionlessOnChainAssetRiskGrade riskGrade;
uint256 pullToParValue;
address custodianAddress;
}
Enums
FrictionlessOnChainAssetSchedule
Enum for the schedule of the payments by the Manager, either pro_rat or coupon/bullet style.
enum FrictionlessOnChainAssetSchedule {
SCHEDULE_COUPON_ONLY,
SCHEDULE_PRO_RATA
}
FrictionlessOnChainAssetPaymentFrequency
Enum for the periodicity of payments by the Manager
enum FrictionlessOnChainAssetPaymentFrequency {
PAYMENT_FREQUENCY_DAILY,
PAYMENT_FREQUENCY_WEEKLY,
PAYMENT_FREQUENCY_MONTHLY,
PAYMENT_FREQUENCY_QUARTERLY,
PAYMENT_FREQUENCY_SEMI_ANNUALLY,
PAYMENT_FREQUENCY_ANNUALLY,
PAYMENT_FREQUENCY_SINGLE
}
FrictionlessOnChainAssetYieldType
Enum for the yield for this FrictionlessOnChainAssetToken
is a fixed/floating rate
enum FrictionlessOnChainAssetYieldType {
YIELD_FIXED,
YIELD_FLOATING
}
FrictionlessOnChainAssetPriceStatus
Enum for the price quote status obtained at auction
enum FrictionlessOnChainAssetPriceStatus {
PRICE_QUOTE_STATUS_UNDER_SUBSCRIBED,
PRICE_QUOTE_STATUS_PRICED_AT_PAR,
PRICE_QUOTE_STATUS_PRICED_AT_DISCOUNT,
PRICE_QUOTE_STATUS_PRICED_AT_PREMIUM
}
FrictionlessOnChainAssetStatus
Enum for the current status of the FrictionlessOnChainAssetToken
. Updated over time by the Treasury
enum FrictionlessOnChainAssetStatus {
STATUS_MINTED,
STATUS_PURCHASED,
STATUS_MATURED,
STATUS_IMPAIRED,
STATUS_REDEEMED
}
FrictionlessOnChainAssetRiskGrade
Enum for the current S&P style riskGrade of the FrictionlessOnChainAssetToken
. Updated over time by the Manager/Treasury/Risk Oracle.
enum FrictionlessOnChainAssetRiskGrade {
BER_AAA,
BER_AA,
BER_A,
BER_BBB,
BER_BB,
BER_B,
BER_CCC,
BER_CC,
BER_C,
BER_D,
BER_UNRATED
}