import { CONTRACT_INTERFACES as CI } from '../..'

export interface IPortfolioEntry {
	reference?: string
	pricing: CI.ITradeIdeaPricing
	tracker?: string
	notes: string
	title?: string // only for open
	asset: {
		ticker: string
		description?: string // only for open
		image?: CI.ITradeIdeaImage // only for open
		alternativeProviderSymbols?: CI.ITradeIdeaIdeaAlternativeProviderSymbol[] // only for open
	}
	direction?: 'long' | 'short' // only for open
	// reuse in open and for calculate adjustment
	allocation: number
}

export interface IPortfolioStrategyRequest {
	reference: string
	name?: string
	description?: string
	image?: CI.ITradeIdeaImage
	externalLink?: string
}

export interface IPortfolioCreatorRequest {
	name: string
	walletAddress?: string
	company?: string
	url?: string
	companyLogo?: CI.ITradeIdeaImage
}

export interface IPortfolioRequest {
	strategy: IPortfolioStrategyRequest
	creator: IPortfolioCreatorRequest
	portfolio: IPortfolioEntry[]
	// undefined means public. Empty array means private. Otherwise, it is a list of wallets that can access the idea.
	accessWallets?: string[] | undefined | 'public'
	// devSettings?: {
	// 	// in a future will disable this
	// 	croupierUrl?: string
	// 	environment?: 'dev' | 'prod' // we need this minor field (easy and will not affect anything)
	// }
}

export interface IPortfolioAssetRequest {
	strategy: IPortfolioStrategyRequest
	creator: IPortfolioCreatorRequest
	portfolioAsset: IPortfolioEntry
	// undefined means public. Empty array means private. Otherwise, it is a list of wallets that can access the idea.
	accessWallets?: string[] | undefined | 'public'
}
