/**
 * Generated by orval v6.31.0 🍺
 * Do not edit manually.
 * Hub Events Service
 * OpenAPI spec version: 0.0.1
 */
import { customClient } from "../custom-client";
import { Awaited } from "../awaited-type";
export interface IUpdateRegistration {
    /** Role of the user in the event */
    role?: RegistrationRole;
    /** Status of the registration */
    status?: RegistrationStatus;
    /** Attendance type for this registration */
    type?: EventAttendanceType;
}
export interface IPagedRegistrationResponse {
    items: IRegistration[];
    nextStart: number;
    total: number;
}
export declare enum RegistrationSort {
    createdAt = "createdAt",
    updatedAt = "updatedAt",
    firstName = "firstName",
    lastName = "lastName",
    username = "username"
}
export interface ICreateRegistration {
    /** ArcGIS Online id for a user. Will always be extracted from the token unless service token is used. */
    agoId?: string;
    /** Email for the subscriber. Will always be extracted from the token unless service token is used. */
    email?: string;
    /** Event id being registered for */
    eventId: string;
    /** First name for the subscriber. Will always be extracted from the token unless service token is used. */
    firstName?: string;
    /** Last name for the subscriber. Will always be extracted from the token unless service token is used. */
    lastName?: string;
    /** Role of the user in the event */
    role?: RegistrationRole;
    /** Attendance type for this registration */
    type: EventAttendanceType;
    /** Username for the subscriber. Will always be extracted from the token unless service token is used. */
    username?: string;
}
/**
 * Online meeting for the event
 * @nullable
 */
export type IUpdateEventOnlineMeeting = ICreateOnlineMeeting | null;
/**
 * Location for the event
 * @nullable
 */
export type IUpdateEventLocation = ICreateEventLocation | null;
/**
 * capabilities for an event
 * @nullable
 */
export type IUpdateEventCapabilities = {
    [key: string]: unknown;
} | null;
export interface IUpdateEvent {
    /** Access level of the event */
    access?: EventAccess;
    /** Flag for all day event */
    allDay?: boolean;
    /** Boolean to indicate if users can register for an event */
    allowRegistration?: boolean;
    /** Items associated with the event */
    associations?: ICreateEventAssociation[];
    /** Valid ways to attend the event */
    attendanceType?: EventAttendanceType[];
    /**
     * capabilities for an event
     * @nullable
     */
    capabilities?: IUpdateEventCapabilities;
    /** categories for the event */
    categories?: string[];
    /**
     * Description of the event. null to un-set
     * @nullable
     */
    description?: string | null;
    /** Groups with edit access to the event */
    editGroups?: string[];
    /** end date string formatted YYYY-MM-DD */
    endDate?: string;
    /** end time string 24 hour formatted HH:MM:SS */
    endTime?: string;
    /** in-person capacity for the event. Minimum value is 1 */
    inPersonCapacity?: number;
    /**
     * Location for the event
     * @nullable
     */
    location?: IUpdateEventLocation;
    /** Flag to notify attendees */
    notifyAttendees?: boolean;
    /**
     * Online meeting for the event
     * @nullable
     */
    onlineMeeting?: IUpdateEventOnlineMeeting;
    /** Groups with read access to the event */
    readGroups?: string[];
    /** start date string formatted YYYY-MM-DD */
    startDate?: string;
    /** start time string 24 hour formatted HH:MM:SS */
    startTime?: string;
    /** Status of the event */
    status?: EventStatus;
    /**
     * Summary of the event. null to un-set
     * @nullable
     */
    summary?: string | null;
    /** Tags for the event */
    tags?: string[];
    /**
     * Url for the thumbnail image. null to un-set
     * @nullable
     */
    thumbnailUrl?: string | null;
    /** IANA time zone for the event */
    timeZone?: string;
    /** Title of the event */
    title?: string;
}
export interface IPagedEventResponse {
    items: IEvent[];
    nextStart: number;
    total: number;
}
/**
 * esri geometry object
 */
export type ISearchEventsGeometry = {
    [key: string]: unknown;
};
export declare enum EventSortOrder {
    asc = "asc",
    desc = "desc"
}
export type GetRegistrationsParams = {
    /**
     * Event id being registered for
     */
    eventId?: string;
    /**
     * ArcGIS Online id for a user
     */
    userId?: string;
    /**
     * comma separated string list of registration roles
     */
    role?: string;
    /**
     * comma separated string list of registration statuses
     */
    status?: string;
    /**
     * comma separated string list of registration types
     */
    type?: string;
    /**
     * latest ISO8601 updatedAt for the registrations
     */
    updatedAtBefore?: string;
    /**
     * earliest ISO8601 updatedAt for the registrations
     */
    updatedAtAfter?: string;
    /**
     * filter to be matched to firstName, lastName, or username
     */
    name?: string;
    /**
     * the max amount of registrations to return
     */
    num?: string;
    /**
     * the index to start at
     */
    start?: string;
    /**
     * property to sort results by
     */
    sortBy?: RegistrationSort;
    /**
     * sort order desc or asc
     */
    sortOrder?: EventSortOrder;
};
export declare enum EventSort {
    title = "title",
    startDateTime = "startDateTime",
    createdAt = "createdAt",
    updatedAt = "updatedAt"
}
export declare enum GetEventsInclude {
    associations = "associations",
    creator = "creator",
    location = "location",
    onlineMeeting = "onlineMeeting",
    registrations = "registrations"
}
export declare enum EventsSearchFormat {
    csv = "csv",
    json = "json"
}
export interface ISearchEvents {
    /** Array of EventAccess. Example: PRIVATE,ORG,PUBLIC */
    access?: EventAccess[];
    /** Array of AttendanceTypes. Example: VIRTUAL,IN_PERSON */
    attendanceTypes?: EventAttendanceType[];
    /** boolean to filter events that can be edited by the user */
    canEdit?: boolean;
    /** Array of categories */
    categories?: string[];
    /** earliest ISO8601 createdAt for the events */
    createdAtAfter?: string;
    /** latest ISO8601 createdAt for the events */
    createdAtBefore?: string;
    /** Array of user ids */
    createdByIds?: string[];
    /** Array of edit groupIds */
    editGroups?: string[];
    /** earliest ISO8601 end date-time for the events */
    endDateTimeAfter?: string;
    /** latest ISO8601 end date-time for the events */
    endDateTimeBefore?: string;
    /** Array of associated entityIds */
    entityIds?: string[];
    /** Array of associated entity types. Example: Hub Site Application,Hub Initiative,Hub Project */
    entityTypes?: EventAssociationEntityType[];
    /** Array of event ids. Cannot be used with notEventIds. */
    eventIds?: string[];
    /** response data format. Example: csv,json */
    f?: EventsSearchFormat;
    /** esri geometry object */
    geometry?: ISearchEventsGeometry;
    /** Array of relation fields to include in response. Example: associations,creator,location,onlineMeeting,registrations */
    include?: GetEventsInclude[];
    /** Array of event ids to exclude. Cannot be used with eventIds */
    notEventIds?: string[];
    /** the max amount of events to return */
    num?: number;
    /**
     * orgId string (deprecated, use orgIds instead)
     * @deprecated
     */
    orgId?: string;
    /** Array of orgIds */
    orgIds?: string[];
    /** Array of read groupIds */
    readGroups?: string[];
    /** Array of shared groupIds */
    sharedToGroups?: string[];
    /** Event property to sort results by */
    sortBy?: EventSort;
    /** sort results order desc or asc */
    sortOrder?: EventSortOrder;
    /** the index to start at */
    start?: number;
    /** earliest ISO8601 start date-time for the events */
    startDateTimeAfter?: string;
    /** latest ISO8601 start date-time for the events */
    startDateTimeBefore?: string;
    /** Array of event statuses. Example: PLANNED,CANCELED,REMOVED */
    status?: EventStatus[];
    /** Array of tags */
    tags?: string[];
    /** string to match within an event title */
    title?: string;
    /** earliest ISO8601 updatedAt for the events */
    updatedAtAfter?: string;
    /** latest ISO8601 updatedAt for the events */
    updatedAtBefore?: string;
    /** Array of edit groupIds that event is not shared to */
    withoutEditGroups?: string[];
    /** Array of read groupIds that event is not shared to */
    withoutReadGroups?: string[];
}
export interface IRegistrationPermission {
    canDelete: boolean;
    canEdit: boolean;
}
export interface IRegistration {
    createdAt: string;
    createdBy?: IUser;
    createdById: string;
    event?: IEvent;
    eventId: string;
    id: string;
    permission: IRegistrationPermission;
    role: RegistrationRole;
    status: RegistrationStatus;
    type: EventAttendanceType;
    updatedAt: string;
    user?: IUser;
    userId: string;
}
/**
 * @nullable
 */
export type IEventCapabilities = {
    [key: string]: unknown;
} | null;
export interface IEventPermission {
    canDelete: boolean;
    canEdit: boolean;
    canSetAccessToOrg: boolean;
    canSetAccessToPrivate: boolean;
    canSetAccessToPublic: boolean;
    canSetStatusToCancelled: boolean;
    canSetStatusToRemoved: boolean;
}
export interface IEventRegistrationCount {
    inPerson: number;
    virtual: number;
}
export declare enum RegistrationStatus {
    PENDING = "PENDING",
    ACCEPTED = "ACCEPTED",
    DECLINED = "DECLINED",
    BLOCKED = "BLOCKED"
}
export declare enum RegistrationRole {
    OWNER = "OWNER",
    ORGANIZER = "ORGANIZER",
    ATTENDEE = "ATTENDEE"
}
export declare enum EventStatus {
    PLANNED = "PLANNED",
    CANCELED = "CANCELED",
    REMOVED = "REMOVED"
}
export interface IOnlineMeeting {
    /** @nullable */
    capacity: number | null;
    createdAt: string;
    /** @nullable */
    details: string | null;
    eventId: string;
    updatedAt: string;
    url: string;
}
export type IEventLocationGeometriesItem = {
    [key: string]: unknown;
};
export interface ILocationSpatialReference {
    latestVcsWkid?: number;
    latestWkid?: number;
    latestWkt?: string;
    vcsWkid?: number;
    wkid?: number;
    wkt?: string;
}
/**
 * @nullable
 */
export type IEventLocationSpatialReference = ILocationSpatialReference | null;
export interface IEventLocation {
    /** @nullable */
    addNum: string | null;
    /** @nullable */
    city: string | null;
    /** @nullable */
    cntryName: string | null;
    eventId: string;
    /** @nullable */
    extent: number[][] | null;
    /** @nullable */
    geometries: IEventLocationGeometriesItem[] | null;
    id: string;
    /** @nullable */
    nbrhd: string | null;
    /** @nullable */
    placeAddr: string | null;
    /** @nullable */
    placeName: string | null;
    /** @nullable */
    postal: number | null;
    /** @nullable */
    region: string | null;
    /** @nullable */
    spatialReference: IEventLocationSpatialReference;
    /** @nullable */
    stDir: string | null;
    /** @nullable */
    stName: string | null;
    /** @nullable */
    stType: string | null;
    /** @nullable */
    subRegion: string | null;
    type: EventLocationType;
}
export interface IUser {
    agoId: string;
    createdAt: string;
    deleted: boolean;
    email: string;
    firstName: string;
    lastName: string;
    optedOut: boolean;
    updatedAt: string;
    username: string;
}
export interface IEventAssociation {
    entityId: string;
    entityType: EventAssociationEntityType;
    eventId: string;
}
export interface IEvent {
    access: EventAccess;
    allDay: boolean;
    allowRegistration: boolean;
    associations?: IEventAssociation[];
    attendanceType: EventAttendanceType[];
    /** @nullable */
    capabilities?: IEventCapabilities;
    categories: string[];
    createdAt: string;
    /** @nullable */
    createdById: string | null;
    creator?: IUser;
    /** @nullable */
    description: string | null;
    editGroups: string[];
    endDate: string;
    endDateTime: string;
    endTime: string;
    id: string;
    /** @nullable */
    inPersonCapacity: number | null;
    location?: IEventLocation;
    notifyAttendees: boolean;
    onlineMeeting?: IOnlineMeeting;
    orgId: string;
    permission: IEventPermission;
    readGroups: string[];
    /** @nullable */
    recurrence: string | null;
    registrationCount?: IEventRegistrationCount;
    registrations?: IRegistration[];
    startDate: string;
    startDateTime: string;
    startTime: string;
    status: EventStatus;
    /** @nullable */
    summary: string | null;
    tags: string[];
    /** @nullable */
    thumbnailUrl: string | null;
    timeZone: string;
    title: string;
    updatedAt: string;
}
/**
 * capabilities for an event
 * @nullable
 */
export type ICreateEventCapabilities = {
    [key: string]: unknown;
} | null;
export interface ICreateOnlineMeeting {
    /** Capacity of the online meeting. Minimum value is 1 */
    capacity?: number;
    /** Details related to the online meeting */
    details?: string;
    /** Url for the online meeting */
    url: string;
}
export interface ICreateEvent {
    /** Access level of the event */
    access?: EventAccess;
    /** ArcGIS Online id for a user. Will always be extracted from the token unless service token is used. */
    agoId?: string;
    /** Flag for all day event */
    allDay?: boolean;
    /** Boolean to indicate if users can register for an event */
    allowRegistration?: boolean;
    /** Items associated with the event */
    associations?: ICreateEventAssociation[];
    /** Valid ways to attend the event */
    attendanceType?: EventAttendanceType[];
    /**
     * capabilities for an event
     * @nullable
     */
    capabilities?: ICreateEventCapabilities;
    /** categories for the event */
    categories?: string[];
    /** Description of the event */
    description?: string;
    /** Groups with edit access to the event */
    editGroups?: string[];
    /** Email for the subscriber. Will always be extracted from the token unless service token is used. */
    email?: string;
    /** end date string formatted YYYY-MM-DD */
    endDate: string;
    /** end time string 24 hour formatted HH:MM:SS */
    endTime: string;
    /** First name for the subscriber. Will always be extracted from the token unless service token is used. */
    firstName?: string;
    /** in-person capacity for the event. Minimum value is 1 */
    inPersonCapacity?: number;
    /** Last name for the subscriber. Will always be extracted from the token unless service token is used. */
    lastName?: string;
    /**
     * Location for the event
     * @nullable
     */
    location?: ICreateEventLocationProperty;
    /** Flag to notify attendees */
    notifyAttendees?: boolean;
    /** Online meeting for the event. Required if attendanceType includes VIRTUAL */
    onlineMeeting?: ICreateOnlineMeeting;
    /** Groups with read access to the event */
    readGroups?: string[];
    /** start date string formatted YYYY-MM-DD */
    startDate: string;
    /** start time string 24 hour formatted HH:MM:SS */
    startTime: string;
    /** Summary of the event */
    summary?: string;
    /** Tags for the event */
    tags?: string[];
    /** Url for the thumbnail image */
    thumbnailUrl?: string;
    /** IANA time zone for the event */
    timeZone: string;
    /** Title of the event */
    title: string;
    /** Username for the subscriber. Will always be extracted from the token unless service token is used. */
    username?: string;
}
export type ICreateEventLocationGeometriesItem = {
    [key: string]: unknown;
};
export declare enum EventLocationType {
    none = "none",
    custom = "custom",
    org = "org",
    item = "item"
}
export interface ICreateLocationSpatialReference {
    latestVcsWkid?: number;
    latestWkid?: number;
    latestWkt?: string;
    vcsWkid?: number;
    wkid?: number;
    wkt?: string;
}
export interface ICreateEventLocation {
    /** Address number */
    addNum?: string;
    /** City */
    city?: string;
    /** Country name */
    cntryName?: string;
    /** 2D array of numbers */
    extent?: number[][];
    /** Array of esri geometry objects */
    geometries?: ICreateEventLocationGeometriesItem[];
    /** Neighborhood */
    nbrhd?: string;
    /** Place address */
    placeAddr?: string;
    /** Place name */
    placeName?: string;
    /** Postal */
    postal?: number;
    /** Region */
    region?: string;
    /** Spatial reference */
    spatialReference?: ICreateLocationSpatialReference;
    /** Street direction */
    stDir?: string;
    /** Street name */
    stName?: string;
    /** Street type */
    stType?: string;
    /** Sub region */
    subRegion?: string;
    /** Location type */
    type: EventLocationType;
}
/**
 * Location for the event
 * @nullable
 */
export type ICreateEventLocationProperty = ICreateEventLocation | null;
export declare enum EventAttendanceType {
    VIRTUAL = "VIRTUAL",
    IN_PERSON = "IN_PERSON"
}
export declare enum EventAssociationEntityType {
    Hub_Site_Application = "Hub Site Application",
    Hub_Initiative = "Hub Initiative",
    Hub_Project = "Hub Project"
}
export interface ICreateEventAssociation {
    /** Entity Id */
    entityId: string;
    /** Entity type */
    entityType: EventAssociationEntityType;
}
export declare enum EventAccess {
    PRIVATE = "PRIVATE",
    ORG = "ORG",
    PUBLIC = "PUBLIC"
}
type SecondParameter<T extends (...args: any) => any> = Parameters<T>[1];
/**
 * Create a new event.
 */
export declare const createEvent: (iCreateEvent: ICreateEvent, options?: SecondParameter<typeof customClient>) => Promise<IEvent>;
/**
 * Search for events matching request criteria.
 */
export declare const searchEvents: (iSearchEvents: ISearchEvents, options?: SecondParameter<typeof customClient>) => Promise<IPagedEventResponse>;
/**
 * Get a single event.
 */
export declare const getEvent: (id: string, options?: SecondParameter<typeof customClient>) => Promise<IEvent>;
/**
 * Update an existing event.
 */
export declare const updateEvent: (id: string, iUpdateEvent: IUpdateEvent, options?: SecondParameter<typeof customClient>) => Promise<IEvent>;
/**
 * Delete an existing event.
 */
export declare const deleteEvent: (id: string, options?: SecondParameter<typeof customClient>) => Promise<IEvent>;
/**
 * Create a new registration.
 */
export declare const createRegistration: (iCreateRegistration: ICreateRegistration, options?: SecondParameter<typeof customClient>) => Promise<IRegistration>;
/**
 * Get a list of registrations matching request criteria.
 */
export declare const getRegistrations: (params?: GetRegistrationsParams, options?: SecondParameter<typeof customClient>) => Promise<IPagedRegistrationResponse>;
/**
 * Get a registration by id.
 */
export declare const getRegistration: (id: string, options?: SecondParameter<typeof customClient>) => Promise<IRegistration>;
/**
 * Update a registration by id.
 */
export declare const updateRegistration: (id: string, iUpdateRegistration: IUpdateRegistration, options?: SecondParameter<typeof customClient>) => Promise<IRegistration>;
/**
 * Delete a registration by id.
 */
export declare const deleteRegistration: (id: string, options?: SecondParameter<typeof customClient>) => Promise<IRegistration>;
export type CreateEventResult = NonNullable<Awaited<ReturnType<typeof createEvent>>>;
export type SearchEventsResult = NonNullable<Awaited<ReturnType<typeof searchEvents>>>;
export type GetEventResult = NonNullable<Awaited<ReturnType<typeof getEvent>>>;
export type UpdateEventResult = NonNullable<Awaited<ReturnType<typeof updateEvent>>>;
export type DeleteEventResult = NonNullable<Awaited<ReturnType<typeof deleteEvent>>>;
export type CreateRegistrationResult = NonNullable<Awaited<ReturnType<typeof createRegistration>>>;
export type GetRegistrationsResult = NonNullable<Awaited<ReturnType<typeof getRegistrations>>>;
export type GetRegistrationResult = NonNullable<Awaited<ReturnType<typeof getRegistration>>>;
export type UpdateRegistrationResult = NonNullable<Awaited<ReturnType<typeof updateRegistration>>>;
export type DeleteRegistrationResult = NonNullable<Awaited<ReturnType<typeof deleteRegistration>>>;
export {};
