import { ConfigureProgramMap, GrantProgramCycleBudgetFundingSource, OfflineProgramDetail, Program, ProgramDashboardMap, ProgramDetailFromApi, ProgramForDashboard } from '@core/typings/program.typing'; import { SimpleStringMap, TypeaheadSelectOption } from '@yourcause/common'; import { BaseYcState, RegisterYCState } from '@yourcause/common/state'; @RegisterYCState() export class ProgramState extends BaseYcState { readonly programCycleBudgetFundingSource: Record = {}; readonly allPrograms: Program[]; readonly allPublishedPrograms: Program[]; readonly allPublishedActivePrograms: Program[]; readonly allActiveManagerPrograms: Program[]; // segmented readonly allManagerPrograms: Program[]; // segmented readonly allActiveManagerProgramOptions: TypeaheadSelectOption[]; readonly dashboardPrograms: ProgramForDashboard[]; readonly nonMaskedDashboardPrograms: ProgramForDashboard[]; readonly programMap: SimpleStringMap = {}; readonly offlineProgramMap: SimpleStringMap = {}; readonly programDashboardMap: ProgramDashboardMap = {}; readonly configureProgramMap: ConfigureProgramMap = {}; readonly cycleBudgetsMap: SimpleStringMap = {}; readonly activeProgramId: string; readonly ycProcessingPrograms: Program[]; readonly clientProcessingPrograms: Program[]; // Track the cycle ids we are filtering on the program dashboard for use in child tabs readonly currentProgramDashCycleIds: number[]; }