arrow-left
All pages
gitbookPowered by GitBook
1 of 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Frictionless Tokens

The Frictionless Tokens describe the tokens which are emitted by the Frictionless protocol to represent Asset, Securities and Deposits. These tokens are based on the ERC-3643 arrow-up-rightspecification of IToken.

The following diagram describes the high-level interaction and composition of a Frictionless token.

Schematic relationship of Frictionless Tokens

IBasicFrictionlessToken

Inherits: IToken

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.

The IBasicFrictionlessToken Represents the base interface for Frictionless protocol tokens, this interface is used to determine a token type.

hashtag
Functions

hashtag
setFrictionlessTokenType

Sets the token type according to the specified enumeration

Parameters

Name
Type
Description

newTokenType_

FrictionlessTokenTypes

the token type to set

hashtag
getFrictionlessTokenType

Returns the token type according to the specified enumeration

Returns

Name
Type
Description

<none>

FrictionlessTokenTypes

FrictionlessTokenTypes the token type according to the specified enumeration

hashtag
Errors

hashtag
BasicFrictionlessTokenUnableToUpdateFrictionlessTokenType

error thrown if an attempt to set an invalid token type during function setFrictionlessTokenType

hashtag
Enums

hashtag
FrictionlessTokenTypes

Enumeration to represent each of the tokens in the Frictionless protocol.

Git Sourcearrow-up-right
function setFrictionlessTokenType(FrictionlessTokenTypes newTokenType_) external;
function getFrictionlessTokenType() external view returns (FrictionlessTokenTypes);
error BasicFrictionlessTokenUnableToUpdateFrictionlessTokenType();
enum FrictionlessTokenTypes {
    NONE,
    FUND_DEPOSIT_TOKEN,
    DIGITAL_SECURITY_TOKEN,
    ON_CHAIN_ASSET_TOKEN
}

IFrictionlessFundDepositToken

Git Sourcearrow-up-right

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.

A Fund Deposit Token represents a permissioned Investors FIAT contribution to a specific fund IBAN in a denominated FIAT currency. The Fund Deposit Token is used as a means of payment and settlement. The Fund Deposit Token can only be transferred between permissioned Investors in the fund. A daily attestation of the fund IBAN serves to prove the 1:1 backing with FIAT. Exclusively under Frictionless Markets S.à.r.l issuance terms Investors holding a FrictionlessFundDepositToken have the legal right to the FIAT value held in the fund IBAN account.

hashtag
Functions

hashtag
setInitData

Sets the immutable data for the FrictionlessFundDepositToken

Parameters

Name
Type
Description

hashtag
getCurrency

Get the currency the FIAT denomination of the deposit token.

Returns

Name
Type
Description

hashtag
getDescription

Get the description the description of the deposit token.

Returns

Name
Type
Description

hashtag
getFundIBAN

Get the IBAN which Frictionless Markets S.à.r.l holds a matching FIAT currency ledger with a G-SIB for this currency, attestations are provided on this IBAN. This is restricted to onlyAgent roles.

Returns

Name
Type
Description

hashtag
Errors

hashtag
FrictionlessFundDepositTokenUnableToUpdateInitData

error throw if there is an attempt to modify the immutable data.

hashtag
Structs

hashtag
FFDImmutableData

Struct which represents the immutable data in the Token. Once set it cannot be modified.

initData

FFDImmutableData

the immutable data for the FrictionlessFundDepositToken

<none>

string

the currency the FIAT denomination of the deposit token.

<none>

string

the description the description of the deposit token

<none>

string

the IBAN which Frictionless Markets S.à.r.l holds a matching FIAT currency ledger with a G-SIB for this currency, attestations are provided on this IBAN.

function setInitData(FFDImmutableData calldata initData) external;
function getCurrency() external view returns (string memory);
function getDescription() external view returns (string memory);
function getFundIBAN() external returns (string memory);
error FrictionlessFundDepositTokenUnableToUpdateInitData();
struct FFDImmutableData {
    string currency;
    string description;
    string fundIBAN;
}

IFrictionlessDigitalSecurityToken

Git Sourcearrow-up-right

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.

This is the permissioned & transferable digital security which represents the future cash flow from the FrictionlessOnChainAssetToken and is purchased by the Investor using FrictionlessFundDepositTokens. These digital securities are permissioned and transferable between permissioned Investors in a permissioned secondary market. This token is linked to the FrictionlessOnChainAssetToken and denominated in a FIAT currency at a future date for settlement.

hashtag
Functions

hashtag
setInitData

Sets the immutable data for the FrictionlessDigitalSecurityToken

Parameters

Name
Type
Description

hashtag
setUpdateData

Sets the updatable data for the FrictionlessDigitalSecurityToken

Parameters

Name
Type
Description

hashtag
getCurrency

Get the baseCurrency is the FIAT denomination of the digital security, this is the currency the FrictionlessOnChainAssetToken is issued in.

Returns

Name
Type
Description

hashtag
getTokenType

Get the type of the token as defined in the enum FrictionlessDigitalSecurityTokenType.

Returns

Name
Type
Description

hashtag
getOnChainAssetAddress

Get the onChainAssetAddress the address of the FrictionlessOnChainAssetToken for which this token is a future cash distribution.

Returns

Name
Type
Description

hashtag
getMaturesOn

Get the maturity date of the digital security.

Returns

Name
Type
Description

hashtag
Errors

hashtag
FrictionlessDigitalSecurityTokenInitDataHasAlreadyBeenSet

error throw if there is an attempt to modify the immutable data.

hashtag
Structs

hashtag
FDSImmutableData

Struct which represents the immutable data in the Token. Once set it cannot be modified.

hashtag
FDSMutableData

Struct which represents the updatable data in the Token. This data can be modified by the Agent only.

hashtag
Enums

hashtag
FrictionlessDigitalSecurityTokenType

IFrictionlessTokensFactory

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.

Interface defining the token factory for all tokens in the Frictionless protocol.

initData

FDSImmutableData

the immutable data for the FrictionlessDigitalSecurityToken

mutableData

FDSMutableData

the updatable data for the FrictionlessDigitalSecurityToken

<none>

string

the baseCurrency is the FIAT denomination of the digital security, this is the currency the FrictionlessOnChainAssetToken is issued in.

<none>

FrictionlessDigitalSecurityTokenType

the type of the token as defined in the enum.

<none>

address

onChainAssetAddress the address of the FrictionlessOnChainAssetToken for which this token is a future cash distribution.

<none>

uint256

the maturity date of the digital security.

function setInitData(FDSImmutableData calldata initData) external;
function setUpdateData(FDSMutableData calldata mutableData) external;
function getCurrency() external view returns (string memory);
function getTokenType() external view returns (FrictionlessDigitalSecurityTokenType);
function getOnChainAssetAddress() external view returns (address);
function getMaturesOn() external view returns (uint256);
error FrictionlessDigitalSecurityTokenInitDataHasAlreadyBeenSet();
struct FDSImmutableData {
    string baseCurrency;
    FrictionlessDigitalSecurityTokenType tokenType;
    address onChainAssetAddress;
}
struct FDSMutableData {
    uint256 maturesOn;
}
enum FrictionlessDigitalSecurityTokenType {
    COUPON,
    STRIP
}
hashtag
Functions

hashtag
setTreasuryManager

Sets the Treasury Manager to be the specified address.

Parameters

Name
Type
Description

newTreasuryManager_

address

the addresses of the treasury manager to set throws FrictionlessTokensFactoryZeroAddress if the newTreasuryManager_ is a zero address

hashtag
deployFundDepositToken

Deploys the FrictionlessFundDepositToken contract as a proxy

Parameters

Name
Type
Description

tokenOwner_

address

The owner of the deployed contract

baseTokenInitParams_

BaseTokenInitParams

the base contract data to deploy a Frictionless token contract

initData_

IFrictionlessFundDepositToken.FFDImmutableData

the immutable data for the FrictionlessFundDepositToken

Returns

Name
Type
Description

tokenProxyAddr_

address

the address of the deployed token contract FrictionlessFundDepositToken throws FrictionlessTokensFactoryNotATreasuryManager if the msg.sender is not the treasury manager emits FrictionlessTokenDeployed event upon successful deployment of the token contract.

hashtag
deployDigitalSecurityToken

Deploys the FrictionlessDigitalSecurityToken contract as a proxy

Parameters

Name
Type
Description

tokenOwner_

address

The owner of the deployed contract

baseTokenInitParams_

BaseTokenInitParams

the base contract data to deploy a Frictionless token contract

initData_

IFrictionlessDigitalSecurityToken.FDSImmutableData

the immutable data for the FrictionlessDigitalSecurityToken

Returns

Name
Type
Description

tokenProxyAddr_

address

the address of the deployed token contract FrictionlessDigitalSecurityToken throws FrictionlessTokensFactoryNotATreasuryManager if the msg.sender is not the treasury manager emits FrictionlessTokenDeployed event upon successful deployment of the token contract.

hashtag
deployOnChainAssetToken

Deploys the FrictionlessOnChainAssetToken contract as a proxy

Parameters

Name
Type
Description

tokenOwner_

address

The owner of the deployed contract

baseTokenInitParams_

BaseTokenInitParams

the base contract data to deploy a Frictionless token contract

specData_

IFrictionlessOnChainAssetToken.FOCASpecData

the immutable specification data for the FrictionlessOnChainAssetToken

Returns

Name
Type
Description

tokenProxyAddr_

address

the address of the deployed token contract FrictionlessOnChainAssetToken throws FrictionlessTokensFactoryNotATreasuryManager if the msg.sender is not the treasury manager emits FrictionlessTokenDeployed event upon successful deployment of the token contract.

hashtag
treasuryManager

returns the address of the treasuryManager

Returns

Name
Type
Description

<none>

address

the address of the treasuryManager

hashtag
existingFrictionlessTokens

Checks whether a given token address is an existing frictionless token

Parameters

Name
Type
Description

tokenAddr_

address

the address of the token to check

Returns

Name
Type
Description

<none>

bool

A boolean indicating whether the token is an existing frictionless token

hashtag
Events

hashtag
FrictionlessTokenDeployed

Event emitted upon successful deployment of a compliance contract.

hashtag
Errors

hashtag
FrictionlessTokensFactoryZeroAddress

error thrown if an attempt to set a zero address contract during function setTreasuryManager

hashtag
FrictionlessTokensFactoryNotATreasuryManager

error thrown if the msg.sender is not the treasury manager during the functions deployFundDepositToken, deployDigitalSecurityToken, or deployOnChainAssetToken

hashtag
Structs

hashtag
BaseTokenInitParams

Struct to represent the base contract data to deploy a Frictionless token contract.

Git Sourcearrow-up-right

IFrictionlessOnChainAssetToken

Git Sourcearrow-up-right

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.

hashtag
Functions

hashtag
setSpecificationData

Sets the specData data for the FrictionlessOnChainAssetToken. throws FrictionlessOnChainAssetTokenUnableToUpdateData This data is immutable, an attempt to modify will generate the error FrictionlessOnChainAssetTokenUnableToUpdateData

Parameters

Name
Type
Description

hashtag
setIssuanceData

Sets the issuanceData data for the FrictionlessOnChainAssetToken throws FrictionlessOnChainAssetTokenUnableToUpdateData This data is immutable, an attempt to modify will generate the error FrictionlessOnChainAssetTokenUnableToUpdateData

Parameters

Name
Type
Description

hashtag
setUpdateData

Sets the updatable data for the FrictionlessOnChainAssetToken

Parameters

Name
Type
Description

hashtag
getSpecificationData

Get the specData data for the FrictionlessOnChainAssetToken.

Returns

Name
Type
Description

hashtag
getIssuanceData

Get the issuanceData data for the FrictionlessOnChainAssetToken.

Returns

Name
Type
Description

hashtag
getUpdateData

Get the updateData data for the FrictionlessOnChainAssetToken.

Returns

Name
Type
Description

hashtag
getCurrency

Get the currency the FrictionlessOnChainAssetToken is issued in.

Returns

Name
Type
Description

hashtag
Errors

hashtag
FrictionlessOnChainAssetTokenUnableToUpdateData

error throw if there is an attempt to modify the immutable data.

hashtag
Structs

hashtag
FOCASpecData

The specification data for the FrictionlessOnChainAssetToken, this is an immutable data struct.

hashtag
FOCAIssuanceData

The issuance data for the FrictionlessOnChainAssetToken, this is an immutable data struct.

hashtag
FOCAUpdateData

The uopdatable data for the FrictionlessOnChainAssetToken.

hashtag
Enums

hashtag
FrictionlessOnChainAssetSchedule

Enum for the schedule of the payments by the Manager, either pro_rat or coupon/bullet style.

hashtag
FrictionlessOnChainAssetPaymentFrequency

Enum for the periodicity of payments by the Manager

hashtag
FrictionlessOnChainAssetYieldType

Enum for the yield for this FrictionlessOnChainAssetToken is a fixed/floating rate

hashtag
FrictionlessOnChainAssetPriceStatus

Enum for the price quote status obtained at auction

hashtag
FrictionlessOnChainAssetStatus

Enum for the current status of the FrictionlessOnChainAssetToken. Updated over time by the Treasury

hashtag
FrictionlessOnChainAssetRiskGrade

Enum for the current S&P style riskGrade of the FrictionlessOnChainAssetToken. Updated over time by the Manager/Treasury/Risk Oracle.

function setTreasuryManager(address newTreasuryManager_) external;
function deployFundDepositToken(
    address tokenOwner_,
    BaseTokenInitParams calldata baseTokenInitParams_,
    IFrictionlessFundDepositToken.FFDImmutableData calldata initData_
) external returns (address tokenProxyAddr_);
function deployDigitalSecurityToken(
    address tokenOwner_,
    BaseTokenInitParams calldata baseTokenInitParams_,
    IFrictionlessDigitalSecurityToken.FDSImmutableData calldata initData_,
    IFrictionlessDigitalSecurityToken.FDSMutableData calldata updateData_
) external returns (address tokenProxyAddr_);
function deployOnChainAssetToken(
    address tokenOwner_,
    BaseTokenInitParams calldata baseTokenInitParams_,
    IFrictionlessOnChainAssetToken.FOCASpecData calldata specData_,
    IFrictionlessOnChainAssetToken.FOCAIssuanceData calldata issuanceData_,
    IFrictionlessOnChainAssetToken.FOCAUpdateData calldata updateData_
) external returns (address tokenProxyAddr_);
function treasuryManager() external view returns (address);
function existingFrictionlessTokens(address tokenAddr_) external view returns (bool);
event FrictionlessTokenDeployed(
    IBasicFrictionlessToken.FrictionlessTokenTypes indexed tokenType, address newTokenContract
);
error FrictionlessTokensFactoryZeroAddress();
error FrictionlessTokensFactoryNotATreasuryManager(address);
struct BaseTokenInitParams {
    address implementationAuthority;
    address identityRegistry;
    address compliance;
    address onChainId;
    string tokenName;
    string tokenSymbol;
}

updateData_

IFrictionlessDigitalSecurityToken.FDSMutableData

the mutable data for the FrictionlessDigitalSecurityToken

issuanceData_

IFrictionlessOnChainAssetToken.FOCAIssuanceData

the immutable issuance data for the FrictionlessOnChainAssetToken

updateData_

IFrictionlessOnChainAssetToken.FOCAUpdateData

the mutable update data for the FrictionlessOnChainAssetToken

specData

FOCASpecData

the specData data for the FrictionlessOnChainAssetToken

issuanceData

FOCAIssuanceData

the updatable data for the FrictionlessOnChainAssetToken

updateData

FOCAUpdateData

the updatable data for the FrictionlessOnChainAssetToken

<none>

FOCASpecData

the specData data for the FrictionlessOnChainAssetToken

<none>

FOCAIssuanceData

the issuanceData data for the FrictionlessOnChainAssetToken

<none>

FOCAUpdateData

the updateData data for the FrictionlessOnChainAssetToken

<none>

string

the currency the FrictionlessOnChainAssetToken is issued in.

function setSpecificationData(FOCASpecData calldata specData) external;
function setIssuanceData(FOCAIssuanceData calldata issuanceData) external;
function setUpdateData(FOCAUpdateData calldata updateData) external;
function getSpecificationData() external view returns (FOCASpecData memory);
function getIssuanceData() external view returns (FOCAIssuanceData memory);
function getUpdateData() external view returns (FOCAUpdateData memory);
function getCurrency() external view returns (string memory);
error FrictionlessOnChainAssetTokenUnableToUpdateData();
struct FOCASpecData {
    uint256 issuedOn;
    uint256 maturityDays;
    FrictionlessOnChainAssetSchedule schedule;
    FrictionlessOnChainAssetPaymentFrequency paymentFrequency;
    FrictionlessOnChainAssetYieldType yieldType;
    string baseCurrency;
    uint256 stripTotal;
    string name;
    string symbol;
}
struct FOCAIssuanceData {
    uint256 auctionedOn;
    FrictionlessOnChainAssetPriceStatus priceQuoteStatus;
    string onChainAssetUUID;
    string issuerUUID;
    string isin;
    string issuanceDocs;
    string assetClass;
}
struct FOCAUpdateData {
    uint256 maturesOn;
    uint256 total;
    FrictionlessOnChainAssetStatus status;
    uint256 yield;
    FrictionlessOnChainAssetRiskGrade riskGrade;
    uint256 pullToParValue;
    address custodianAddress;
}
enum FrictionlessOnChainAssetSchedule {
    SCHEDULE_COUPON_ONLY,
    SCHEDULE_PRO_RATA
}
enum FrictionlessOnChainAssetPaymentFrequency {
    PAYMENT_FREQUENCY_DAILY,
    PAYMENT_FREQUENCY_WEEKLY,
    PAYMENT_FREQUENCY_MONTHLY,
    PAYMENT_FREQUENCY_QUARTERLY,
    PAYMENT_FREQUENCY_SEMI_ANNUALLY,
    PAYMENT_FREQUENCY_ANNUALLY,
    PAYMENT_FREQUENCY_SINGLE
}
enum FrictionlessOnChainAssetYieldType {
    YIELD_FIXED,
    YIELD_FLOATING
}
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
}
enum FrictionlessOnChainAssetStatus {
    STATUS_MINTED,
    STATUS_PURCHASED,
    STATUS_MATURED,
    STATUS_IMPAIRED,
    STATUS_REDEEMED
}
enum FrictionlessOnChainAssetRiskGrade {
    BER_AAA,
    BER_AA,
    BER_A,
    BER_BBB,
    BER_BB,
    BER_B,
    BER_CCC,
    BER_CC,
    BER_C,
    BER_D,
    BER_UNRATED
}