import { AutoEncoder } from '@simonbackx/simple-encoding'; import { BundleDiscountGroupPriceSettings } from './BundleDiscountGroupPriceSettings.js'; import { Group } from './Group.js'; import { GroupGenderType } from './GroupGenderType.js'; import { OldGroupPrices } from './OldGroupPrices.js'; import { ReduceablePrice } from './ReduceablePrice.js'; import { RegistrationPeriodBase } from './RegistrationPeriodBase.js'; import { TranslatedString } from './TranslatedString.js'; import { Image } from './files/Image.js'; import { OrganizationRecordsConfiguration } from './members/OrganizationRecordsConfiguration.js'; import { RegisterItem } from './members/checkout/RegisterItem.js'; import { RecordCategory } from './members/records/RecordCategory.js'; export declare class GroupPrice extends AutoEncoder { id: string; name: TranslatedString; price: ReduceablePrice; hidden: boolean; /** * Total stock, excluding already sold items into account */ stock: number | null; /** * @deprecated removed */ _usedStock: number; /** * @deprecated removed */ _reserved: number; /** * Bundle discounts that are enabled for this group price, and possible custom settings */ bundleDiscounts: Map; startDate: Date | null; endDate: Date | null; getUsedStock(group: Group): number; /** * Can be negative is we are editing items, positive if other items in the cart cause stock changes */ getPendingStock(item: RegisterItem): number; isSoldOut(item: RegisterItem | Group): boolean; getRemainingStock(item: RegisterItem | Group): number | null; isInPeriod(date: Date): boolean; } export declare class GroupOption extends AutoEncoder { id: string; name: string; hidden: boolean; /** * Price added (can be negative) is always in cents, to avoid floating point errors */ price: ReduceablePrice; /** * Maximum per registration (if > 1, you can choose an amount for this option) * If null = infinite */ allowAmount: boolean; /** * Maximum per registration (in case allowAmount is true) * If null = infinite */ maximum: number | null; /** * Total stock, excluding already sold items into account */ stock: number | null; /** * @deprecated removed */ _usedStock: number; /** * @deprecated removed */ _reserved: number; getUsedStock(group: Group): number; /** * Can be negative is we are editing items, positive if other items in the cart cause stock changes */ getPendingStock(item: RegisterItem): number; isSoldOut(item: RegisterItem | Group): boolean; getRemainingStock(item: RegisterItem | Group): number | null; getMaximumSelection(item: RegisterItem): number | null; } export declare class GroupOptionMenu extends AutoEncoder { id: string; name: string; description: string; multipleChoice: boolean; options: GroupOption[]; get hidden(): boolean; getFilteredOptions(options?: { admin?: boolean; }): GroupOption[]; getDefaultOption(options?: { admin?: boolean; }): GroupOption; } export declare enum WaitingListType { None = "None", PreRegistrations = "PreRegistrations", ExistingMembersFirst = "ExistingMembersFirst", All = "All" } export declare class CycleInformation extends AutoEncoder { startDate: Date | null; endDate: Date | null; registeredMembers: number | null; /** * Amount of members that is reserved (e.g in payment process, or a member on the waiting list that is invited) */ reservedMembers: number | null; /** * Amount of members on the waiting list */ waitingListSize: number | null; } export declare class GroupDefaultEventTime extends AutoEncoder { dayOfWeek: number; startTime: number; endTime: number; } export declare class GroupSettings extends AutoEncoder { name: TranslatedString; description: TranslatedString; eventId: string | null; /** * Cached value so we know what period this group is in, to calculate the age requirements, * and to display the time period in the UI */ period: RegistrationPeriodBase | null; prices: GroupPrice[]; optionMenus: GroupOptionMenu[]; recordsConfiguration: OrganizationRecordsConfiguration; /** * Note: these are saved in the registration, not the member. * Do not confuse with the member's record categories in recordsConfiguration */ recordCategories: RecordCategory[]; /** * Date when the online registrations open automatically (note: the group should be open for this to work) */ registrationStartDate: Date | null; /** * Date when the online registrations close automatically */ registrationEndDate: Date | null; /** * Experimental feature to suggest when to create new activities in the calendar. */ defaultEventTime: GroupDefaultEventTime | null; genderType: GroupGenderType; /** * Number of days on trial for new members */ trialDays: number; minAge: number | null; maxAge: number | null; waitingListType: WaitingListType; /** * Only used for waitingListType = PreRegistrations */ preRegistrationsDate: Date | null; maxMembers: number | null; /** * @deprecated * Use waitinglist instead to determine if a waiting list is enabled */ waitingListIfFull: boolean; /** * @deprecated * If maxMembers is not null, this will get filled in by the backend */ registeredMembers: number | null; /** * @deprecated * Amount of members that is reserved (e.g in payment process, or a member on the waiting list that is invited) */ reservedMembers: number | null; /** * @deprecated * Amount of members on the waiting list */ waitingListSize: number | null; getUsedStock(group: Group): number; /** * Can be negative is we are editing items, positive if other items in the cart cause stock changes */ getPendingStock(item: RegisterItem): number; isSoldOut(item: RegisterItem | Group): boolean; getRemainingStock(item: RegisterItem | Group): number | null; get isFull(): boolean; get availableMembers(): number | null; /** * Of er voorrang moet gegeven worden aan broers en/of zussen als er wachtlijsten of voorinschrijvingen zijn */ priorityForFamily: boolean; coverPhoto: Image | null; squarePhoto: Image | null; /** * @deprecated */ oldPrices: OldGroupPrices[]; /** * @deprecated */ images: Image[]; /** * @deprecated */ location: string; /** * Require that the member is already registered for one of these groups before allowing to register for this group. * If it is empty, then it is not enforced */ requireGroupIds: string[]; /** * Prevent members from these groups from registering for this group. */ preventGroupIds: string[]; /** * Require that the member is already registered for one of these groups before allowing to register for this group. * If it is empty, then it is not enforced */ requireDefaultAgeGroupIds: string[]; /** * The member should have a platform membership for the provided date before being able to register * OR on the date of the registration */ requirePlatformMembershipOn: Date | null; /** * The member should have a platform membership on the date of the registration before being able to register */ requirePlatformMembershipOnRegistrationDate: boolean; /** * The member should have a valid registration (type = GroupType.Membership) for one of these organization ids * * If empty and requireOrganizationTags empty: new members without registrations can also register */ requireOrganizationIds: string[]; /** * The member should have a valid registration (type = GroupType.Membership) for one of these organization tags * * If empty AND requireOrganizationIds empty: new members without registrations can also register */ requireOrganizationTags: string[]; /** * Allow other admins to see registrations of this group - but only for the members they have access to. * Note: when allowRegistrationsByOrganization is enabled, this is implied */ allowViewRegistrations: boolean; /** * Allow other organizations to register members in this group * This would create a payment between the organizations instead, so that often requires invoicing */ allowRegistrationsByOrganization: boolean; get implicitlyAllowViewRegistrations(): boolean; /** * @deprecated * Require that the member is already registered for one of these groups before allowing to register for this group. * If it is empty, then it is not enforced */ requirePreviousGroupIds: string[]; /** * @deprecated */ preventPreviousGroupIds: string[]; /** * @deprecated * Information about previous cycles */ cycleSettings: Map; hasCustomDates: boolean; startDate: Date; endDate: Date; /** * @deprecated * Dispay start and end date times */ displayStartEndTime: boolean; /** * @deprecated */ getGroupPrices(date: Date): OldGroupPrices | undefined; get maxYear(): number | null; get minYear(): number | null; get forAdults(): boolean | 0 | null; getAgeGenderDescription({ includeAge, includeGender }?: { includeAge?: boolean; includeGender?: boolean; }): string | null; getMemberCount({ waitingList }: { waitingList?: boolean; }): number | null; getShortCode(maxLength: number): string; getFilteredPrices(options?: { admin?: boolean; date?: Date; }): GroupPrice[]; getFilteredOptionMenus(options?: { admin?: boolean; }): GroupOptionMenu[]; get isFree(): boolean; throwIfInvalidPrices(): void; } export declare const GroupSettingsPatch: typeof AutoEncoder & (new () => import("@simonbackx/simple-encoding").AutoEncoderPatchType); //# sourceMappingURL=GroupSettings.d.ts.map