import { Instrument, UserJwtPayload } from "src/common/interfaces";
import { InstrumentDocument } from "./schemas/instrument.schema";
import { LeanDocument } from "mongoose";
import { FundDocument } from "./schemas/fund.schema";
import { NavDocument } from "./schemas/nav.schema";
export interface INav {
instrumentId: string;
isAuditedNav: boolean;
value: number;
}
export interface ICreateInstrument {
instrumentId: string;
fundId: string;
stAddress: string;
}
export interface InstrumentSubgraphAndDB {
subgraphInstrument: Instrument;
dbInstrument: IInstrumentDbWithNavs;
}
export interface FundWithInstrument extends LeanDocument<FundDocument> {
instruments: InstrumentSubgraphAndDB[];
}
export interface IInstrumentConfig {
lookBackPeriod: number;
lookBackUnit: number;
topUpPeriod: number;
topUpUnit: number;
masterFundMinHolding: number;
feederFundMinHolding: number;
investorMinHolding: number;
investorMinSubsequentHolding: number;
cutoffTime: number;
numbOfNoticePeriod: number;
noticePeriodUnit: number;
}
export interface IInitializeInstrument {
userJwtPayload: UserJwtPayload;
instrumentId: string;
}
export interface IInstrumentDbWithNavs
extends LeanDocument<InstrumentDocument> {
navs: LeanDocument<NavDocument>[];
}