/**
 * Google Calendar Node - Version 1.3
 * Discriminator: resource=calendar, operation=availability
 */


interface Credentials {
  googleCalendarOAuth2Api: CredentialReference;
}

/** If a time-slot is available in a calendar */
export type GoogleCalendarV13CalendarAvailabilityParams = {
  resource: 'calendar';
  operation: 'availability';
/**
 * Google Calendar to operate on
 * @default {"mode":"list","value":""}
 */
    calendar?: { __rl: true; mode: 'list' | 'id'; value: string; cachedResultName?: string };
/**
 * Start of the interval, use &lt;a href="https://docs.n8n.io/code/cookbook/luxon/" target="_blank"&gt;expression&lt;/a&gt; to set a date, or switch to fixed mode to choose date from widget
 * @default ={{ $now }}
 */
    timeMin?: string | Expression<string>;
/**
 * End of the interval, use &lt;a href="https://docs.n8n.io/code/cookbook/luxon/" target="_blank"&gt;expression&lt;/a&gt; to set a date, or switch to fixed mode to choose date from widget
 * @default ={{ $now.plus(1, 'hour') }}
 */
    timeMax?: string | Expression<string>;
/**
 * Options
 * @default {}
 */
    options?: {
    /** The format to return the data in
     * @default availability
     */
    outputFormat?: 'availability' | 'bookedSlots' | 'raw' | Expression<string>;
    /** Time zone used in the response. By default n8n timezone is used.
     * @default {"mode":"list","value":""}
     */
    timezone?: { __rl: true; mode: 'list' | 'id'; value: string; cachedResultName?: string };
  };
};

export type GoogleCalendarV13CalendarAvailabilityOutput = {
  available?: boolean;
};

export type GoogleCalendarV13CalendarAvailabilityNode = {
  type: 'n8n-nodes-base.googleCalendar';
  version: 1.3;
  credentials?: Credentials;
  config: NodeConfig<GoogleCalendarV13CalendarAvailabilityParams>;
  output?: Items<GoogleCalendarV13CalendarAvailabilityOutput>;
};