Skip to content

Commit

Permalink
v0.2: openfunds templates
Browse files Browse the repository at this point in the history
  • Loading branch information
0x0ece committed May 11, 2024
1 parent 591e1ef commit ad4ca94
Show file tree
Hide file tree
Showing 8 changed files with 342 additions and 166 deletions.
42 changes: 23 additions & 19 deletions anchor/programs/glam/src/state/model/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,18 +87,18 @@ pub struct ShareClassOpenfundsModel {
// Core
// pub applied_subscription_fee_in_favour_of_distributor: Option<String>,
// pub applied_subscription_fee_in_favour_of_distributor_reference_date: Option<String>,
// pub currency_of_minimal_subscription: Option<String>,
pub currency_of_minimal_subscription: Option<String>,
pub full_share_class_name: Option<String>,
pub has_performance_fee: Option<bool>,
// pub has_performance_fee: Option<bool>,
// pub has_subscription_fee_in_favour_of_distributor: Option<bool>,
pub investment_status: Option<String>,
pub management_fee_applied: Option<String>,
pub management_fee_applied_reference_date: Option<String>,
pub management_fee_maximum: Option<String>,
// pub management_fee_applied: Option<String>,
// pub management_fee_applied_reference_date: Option<String>,
// pub management_fee_maximum: Option<String>,
// pub maximum_subscription_fee_in_favour_of_distributor: Option<String>,
// pub minimal_initial_subscription_category: Option<String>,
// pub minimal_initial_subscription_in_amount: Option<String>,
// pub minimal_initial_subscription_in_shares: Option<String>,
pub minimal_initial_subscription_category: Option<String>,
pub minimal_initial_subscription_in_amount: Option<String>,
pub minimal_initial_subscription_in_shares: Option<String>,
// pub minimal_subsequent_subscription_category: Option<String>,
// pub minimal_subsequent_subscription_in_amount: Option<String>,
// pub minimal_subsequent_subscription_in_shares: Option<String>,
Expand All @@ -122,28 +122,28 @@ pub struct ShareClassOpenfundsModel {
// Full
// pub applied_redemption_fee_in_favour_of_distributor: Option<String>,
// pub applied_redemption_fee_in_favour_of_distributor_reference_date: Option<String>,
// pub currency_of_minimal_or_maximum_redemption: Option<String>,
pub currency_of_minimal_or_maximum_redemption: Option<String>,
// pub cut_off_date_offset_for_redemption: Option<String>,
// pub cut_off_date_offset_for_subscription: Option<String>,
// pub cut_off_time_for_redemption: Option<String>,
// pub cut_off_time_for_subscription: Option<String>,
// pub has_lock_up_for_redemption: Option<bool>,
pub has_lock_up_for_redemption: Option<bool>,
// pub has_redemption_fee_in_favour_of_distributor: Option<bool>,
pub is_valid_isin: Option<bool>,
pub lock_up_comment: Option<String>,
pub lock_up_period_in_days: Option<String>,
pub management_fee_minimum: Option<String>,
pub maximal_number_of_possible_decimals_amount: Option<String>,
pub maximal_number_of_possible_decimals_nav: Option<String>,
pub maximal_number_of_possible_decimals_shares: Option<String>,
// pub maximum_initialredemption_in_amount: Option<String>,
// pub maximum_initialredemption_in_shares: Option<String>,
// pub management_fee_minimum: Option<String>,
// pub maximal_number_of_possible_decimals_amount: Option<String>,
// pub maximal_number_of_possible_decimals_nav: Option<String>,
// pub maximal_number_of_possible_decimals_shares: Option<String>,
pub maximum_initial_redemption_in_amount: Option<String>,
pub maximum_initial_redemption_in_shares: Option<String>,
// pub maximum_redemption_fee_in_favour_of_distributor: Option<String>,
// pub maximum_subsequent_redemption_in_amount: Option<String>,
// pub maximum_subsequent_redemption_in_shares: Option<String>,
// pub minimal_initial_redemption_in_amount: Option<String>,
// pub minimal_initial_redemption_in_shares: Option<String>,
// pub minimal_redemption_category: Option<String>,
pub minimal_initial_redemption_in_amount: Option<String>,
pub minimal_initial_redemption_in_shares: Option<String>,
pub minimal_redemption_category: Option<String>,
// pub minimal_subsequent_redemption_in_amount: Option<String>,
// pub minimal_subsequent_redemption_in_shares: Option<String>,
// pub minimum_redemption_fee_in_favour_of_distributor: Option<String>,
Expand All @@ -155,6 +155,10 @@ pub struct ShareClassOpenfundsModel {
// pub rounding_method_for_redemption_in_shares: Option<String>,
// pub rounding_method_for_subscription_in_amount: Option<String>,
// pub rounding_method_for_subscription_in_shares: Option<String>,
pub share_class_dividend_type: Option<String>,
// Full | Country
pub cusip: Option<String>,
pub valor: Option<String>,
}

// Company
Expand Down
147 changes: 75 additions & 72 deletions anchor/programs/glam/src/state/model/openfunds.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,54 +94,54 @@ impl From<&ShareClassModel> for Vec<ShareClassField> {
// model.applied_subscription_fee_in_favour_of_distributor_reference_date,
// ShareClassFieldName::AppliedSubscriptionFeeInFavourOfDistributorReferenceDate,
// ),
// (
// model.currency_of_minimal_subscription,
// ShareClassFieldName::CurrencyOfMinimalSubscription,
// ),
(
model.full_share_class_name,
ShareClassFieldName::FullShareClassName,
model.currency_of_minimal_subscription,
ShareClassFieldName::CurrencyOfMinimalSubscription,
),
(
bool2string(model.has_performance_fee),
ShareClassFieldName::HasPerformanceFee,
model.full_share_class_name,
ShareClassFieldName::FullShareClassName,
),
// (
// bool2string(model.has_performance_fee),
// ShareClassFieldName::HasPerformanceFee,
// ),
// (
// bool2string(model.has_subscription_fee_in_favour_of_distributor),
// ShareClassFieldName::HasSubscriptionFeeInFavourOfDistributor,
// ),
(
model.investment_status,
ShareClassFieldName::InvestmentStatus,
),
(
model.management_fee_applied,
ShareClassFieldName::ManagementFeeApplied,
),
(
model.management_fee_applied_reference_date,
ShareClassFieldName::ManagementFeeAppliedReferenceDate,
),
(
model.management_fee_maximum,
ShareClassFieldName::ManagementFeeMaximum,
),
// (
// model.maximum_subscription_fee_in_favour_of_distributor,
// ShareClassFieldName::MaximumSubscriptionFeeInFavourOfDistributor,
// model.management_fee_applied,
// ShareClassFieldName::ManagementFeeApplied,
// ),
// (
// model.minimal_initial_subscription_category,
// ShareClassFieldName::MinimalInitialSubscriptionCategory,
// model.management_fee_applied_reference_date,
// ShareClassFieldName::ManagementFeeAppliedReferenceDate,
// ),
// (
// model.minimal_initial_subscription_in_amount,
// ShareClassFieldName::MinimalInitialSubscriptionInAmount,
// model.management_fee_maximum,
// ShareClassFieldName::ManagementFeeMaximum,
// ),
// (
// model.minimal_initial_subscription_in_shares,
// ShareClassFieldName::MinimalInitialSubscriptionInShares,
// model.maximum_subscription_fee_in_favour_of_distributor,
// ShareClassFieldName::MaximumSubscriptionFeeInFavourOfDistributor,
// ),
(
model.minimal_initial_subscription_category,
ShareClassFieldName::MinimalInitialSubscriptionCategory,
),
(
model.minimal_initial_subscription_in_amount,
ShareClassFieldName::MinimalInitialSubscriptionInAmount,
),
(
model.minimal_initial_subscription_in_shares,
ShareClassFieldName::MinimalInitialSubscriptionInShares,
),
// (
// model.minimal_subsequent_subscription_category,
// ShareClassFieldName::MinimalSubsequentSubscriptionCategory,
Expand Down Expand Up @@ -225,10 +225,10 @@ impl From<&ShareClassModel> for Vec<ShareClassField> {
// model.applied_redemption_fee_in_favour_of_distributor_reference_date,
// ShareClassFieldName::AppliedRedemptionFeeInFavourOfDistributorReferenceDate,
// ),
// (
// model.currency_of_minimal_or_maximum_redemption,
// ShareClassFieldName::CurrencyOfMinimalOrMaximumRedemption,
// ),
(
model.currency_of_minimal_or_maximum_redemption,
ShareClassFieldName::CurrencyOfMinimalOrMaximumRedemption,
),
// (
// model.cut_off_date_offset_for_redemption,
// ShareClassFieldName::CutOffDateOffsetForRedemption,
Expand All @@ -245,10 +245,10 @@ impl From<&ShareClassModel> for Vec<ShareClassField> {
// model.cut_off_time_for_subscription,
// ShareClassFieldName::CutOffTimeForSubscription,
// ),
// (
// bool2string(model.has_lock_up_for_redemption),
// ShareClassFieldName::HasLockUpForRedemption,
// ),
(
bool2string(model.has_lock_up_for_redemption),
ShareClassFieldName::HasLockUpForRedemption,
),
// (
// bool2string(model.has_redemption_fee_in_favour_of_distributor),
// ShareClassFieldName::HasRedemptionFeeInFavourOfDistributor,
Expand All @@ -262,31 +262,31 @@ impl From<&ShareClassModel> for Vec<ShareClassField> {
model.lock_up_period_in_days,
ShareClassFieldName::LockUpPeriodInDays,
),
(
model.management_fee_minimum,
ShareClassFieldName::ManagementFeeMinimum,
),
(
model.maximal_number_of_possible_decimals_amount,
ShareClassFieldName::MaximalNumberOfPossibleDecimalsAmount,
),
(
model.maximal_number_of_possible_decimals_nav,
ShareClassFieldName::MaximalNumberOfPossibleDecimalsNAV,
),
(
model.maximal_number_of_possible_decimals_shares,
ShareClassFieldName::MaximalNumberOfPossibleDecimalsShares,
),
// (
// model.maximum_initialredemption_in_amount,
// ShareClassFieldName::MaximumInitialRedemptionInAmount,
// model.management_fee_minimum,
// ShareClassFieldName::ManagementFeeMinimum,
// ),
// (
// model.maximum_initialredemption_in_shares,
// ShareClassFieldName::MaximumInitialRedemptionInShares,
// model.maximal_number_of_possible_decimals_amount,
// ShareClassFieldName::MaximalNumberOfPossibleDecimalsAmount,
// ),
// (
// model.maximal_number_of_possible_decimals_nav,
// ShareClassFieldName::MaximalNumberOfPossibleDecimalsNAV,
// ),
// (
// model.maximal_number_of_possible_decimals_shares,
// ShareClassFieldName::MaximalNumberOfPossibleDecimalsShares,
// ),
(
model.maximum_initial_redemption_in_amount,
ShareClassFieldName::MaximumInitialRedemptionInAmount,
),
(
model.maximum_initial_redemption_in_shares,
ShareClassFieldName::MaximumInitialRedemptionInShares,
),
// (
// model.maximum_redemption_fee_in_favour_of_distributor,
// ShareClassFieldName::MaximumRedemptionFeeInFavourOfDistributor,
// ),
Expand All @@ -298,18 +298,18 @@ impl From<&ShareClassModel> for Vec<ShareClassField> {
// model.maximum_subsequent_redemption_in_shares,
// ShareClassFieldName::MaximumSubsequentRedemptionInShares,
// ),
// (
// model.minimal_initial_redemption_in_amount,
// ShareClassFieldName::MinimalInitialRedemptionInAmount,
// ),
// (
// model.minimal_initial_redemption_in_shares,
// ShareClassFieldName::MinimalInitialRedemptionInShares,
// ),
// (
// model.minimal_redemption_category,
// ShareClassFieldName::MinimalRedemptionCategory,
// ),
(
model.minimal_initial_redemption_in_amount,
ShareClassFieldName::MinimalInitialRedemptionInAmount,
),
(
model.minimal_initial_redemption_in_shares,
ShareClassFieldName::MinimalInitialRedemptionInShares,
),
(
model.minimal_redemption_category,
ShareClassFieldName::MinimalRedemptionCategory,
),
// (
// model.minimal_subsequent_redemption_in_amount,
// ShareClassFieldName::MinimalSubsequentRedemptionInAmount,
Expand Down Expand Up @@ -354,6 +354,13 @@ impl From<&ShareClassModel> for Vec<ShareClassField> {
// model.rounding_method_for_subscription_in_shares,
// ShareClassFieldName::RoundingMethodForSubscriptionInShares,
// ),
(
model.share_class_dividend_type,
ShareClassFieldName::ShareClassDividendType,
),
// Full | Country
(model.cusip, ShareClassFieldName::CUSIP),
(model.valor, ShareClassFieldName::Valor),
]
.iter()
.for_each(|(value, field)| {
Expand All @@ -372,10 +379,6 @@ impl From<&ShareClassModel> for Vec<ShareClassField> {
//TODO
let v: Vec<(Option<String>, ShareClassFieldName)> = vec![
(pubkey2string(model.fund_id), ShareClassFieldName::FundId),
(
pubkey2string(model.asset),
ShareClassFieldName::ShareClassCurrencyId,
),
(model.image_uri, ShareClassFieldName::ImageUri),
];
v.iter().for_each(|(value, field)| {
Expand Down
12 changes: 7 additions & 5 deletions anchor/programs/glam/src/state/openfunds/share_class.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ pub enum ShareClassFieldName {
ShareClassExtension, // impl
ShareClassLaunchDate, // impl
ShareClassLifecycle, // impl
SRRI,
SRRI, // impl
TERExcludingPerformanceFee,
TERExcludingPerformanceFeeDate,
TERIncludingPerformanceFee,
Expand Down Expand Up @@ -220,7 +220,7 @@ pub enum ShareClassFieldName {
SettlementPeriodForSubscription,
SettlementPeriodForSwitchIn,
SettlementPeriodForSwitchOut,
ShareClassDividendType,
ShareClassDividendType, // impl
SingleRegisterAccountRestrictions,
SubscriptionPeriodEndDate,
SubscriptionPeriodStartDate,
Expand All @@ -236,10 +236,12 @@ pub enum ShareClassFieldName {
WeeklySubscriptionDealingDays,
YearlyRedemptionDealingDays,
YearlySubscriptionDealingDays,
// Full | Country
CUSIP, // impl
Valor, // impl
// Glam Extensions
FundId, // impl
ShareClassCurrencyId, // impl
ImageUri, // impl
FundId, // impl
ImageUri, // impl
}

#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)]
Expand Down
Loading

0 comments on commit ad4ca94

Please sign in to comment.