import {
   Activity,
   Allocation,
   Calendar,
   Curve,
   DateLine,
   Entity,
   HierarchySupplementaryDefinition,
   Link,
   PeriodHighlighter,
   Resource,
   Skill,
   Symbol,
   TableRowDefinition,
   TooltipTemplate,
   VSWidgetObject,
   VSWidgetOptions,
} from 'nwaf_rab';

// SampleApp-specific interfaces extending the base types for explanations by tooltip in SampleData2.ts
export interface SampleAppVSWidgetObject extends VSWidgetObject {
   _CustomField1?: string;
   _CustomField2?: string;
   _CustomField3?: string;
}
export interface SampleAppActivity extends Activity, SampleAppVSWidgetObject {
   _CustomField1?: string;
   _CustomField2?: string;
   _CustomField3?: string;
}
export interface SampleAppAllocation extends Allocation, SampleAppVSWidgetObject {
   _CustomDate1?: string;
   _CustomDate2?: string;
   _CustomDateLineColor1?: string;
   _CustomDateLineColor2?: string;
}
export interface SampleAppLink extends Link, SampleAppVSWidgetObject {
}
export interface SampleAppResource extends Resource, SampleAppVSWidgetObject {
   _GroupingProperty1?: string; // for demonstrating grouping feature in SampleData1.ts
   _GroupingProperty2?: string; // for demonstrating grouping feature in SampleData1.ts
}

export interface SampleData {
  options?: VSWidgetOptions;
  Activities?: SampleAppActivity[];
  Allocations?: SampleAppAllocation[];
  Calendars?: Calendar[];
  Curves?: Curve[];
  DateLines?: DateLine[];
  Entities?: Entity[];
  HierarchySupplementaryDefinitions?: HierarchySupplementaryDefinition[];
  Links?: SampleAppLink[];
  PeriodHighlighters?: PeriodHighlighter[];
  Resources?: SampleAppResource[];
  Skills?: Skill[];
  Symbols?: Symbol[];
  TableRowDefinitions?: TableRowDefinition[];
  TooltipTemplates?: TooltipTemplate[];
}
