/**
 * Google Sheets Trigger Node - Version 1
 * Starts the workflow when Google Sheets events occur
 */


export interface GoogleSheetsTriggerV1Params {
/**
 * Time at which polling should occur
 * @default {"item":[{"mode":"everyMinute"}]}
 */
    pollTimes?: {
        /** Item
     */
    item?: Array<{
      /** How often to trigger.
       * @default everyDay
       */
      mode?: 'everyMinute' | 'everyHour' | 'everyDay' | 'everyWeek' | 'everyMonth' | 'everyX' | 'custom' | Expression<string>;
      /** The hour of the day to trigger (24h format)
       * @displayOptions.hide { mode: ["custom", "everyHour", "everyMinute", "everyX"] }
       * @default 14
       */
      hour?: number | Expression<number>;
      /** The minute of the day to trigger
       * @displayOptions.hide { mode: ["custom", "everyMinute", "everyX"] }
       * @default 0
       */
      minute?: number | Expression<number>;
      /** The day of the month to trigger
       * @displayOptions.show { mode: ["everyMonth"] }
       * @default 1
       */
      dayOfMonth?: number | Expression<number>;
      /** The weekday to trigger
       * @displayOptions.show { mode: ["everyWeek"] }
       * @default 1
       */
      weekday?: '1' | '2' | '3' | '4' | '5' | '6' | '0' | Expression<string>;
      /** Use custom cron expression. Values and ranges as follows:&lt;ul&gt;&lt;li&gt;Seconds: 0-59&lt;/li&gt;&lt;li&gt;Minutes: 0 - 59&lt;/li&gt;&lt;li&gt;Hours: 0 - 23&lt;/li&gt;&lt;li&gt;Day of Month: 1 - 31&lt;/li&gt;&lt;li&gt;Months: 0 - 11 (Jan - Dec)&lt;/li&gt;&lt;li&gt;Day of Week: 0 - 6 (Sun - Sat)&lt;/li&gt;&lt;/ul&gt;
       * @displayOptions.show { mode: ["custom"] }
       * @default * * * * * *
       */
      cronExpression?: string | Expression<string> | PlaceholderValue;
      /** All how many X minutes/hours it should trigger
       * @displayOptions.show { mode: ["everyX"] }
       * @default 2
       */
      value?: number | Expression<number>;
      /** If it should trigger all X minutes or hours
       * @displayOptions.show { mode: ["everyX"] }
       * @default hours
       */
      unit?: 'minutes' | 'hours' | Expression<string>;
    }>;
  };
  authentication?: unknown;
  documentId?: { __rl: true; mode: 'list' | 'url' | 'id'; value: string; cachedResultName?: string };
  sheetName?: { __rl: true; mode: 'list' | 'url' | 'id'; value: string; cachedResultName?: string };
/**
 * It will be triggered also by newly created columns (if the 'Columns to Watch' option is not set)
 * @default anyUpdate
 */
    event?: 'rowAdded' | 'rowUpdate' | 'anyUpdate' | Expression<string>;
/**
 * This option will be effective only when automatically executing the workflow
 * @displayOptions.hide { event: ["rowAdded"] }
 * @default new
 */
    includeInOutput?: 'new' | 'old' | 'both' | Expression<string>;
  options?: {
    /** Choose from the list, or specify IDs using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;
     * @displayOptions.show { /event: ["anyUpdate", "rowUpdate"] }
     * @default []
     */
    columnsToWatch?: string[];
    /** Data Location on Sheet
     * @default {"values":{"rangeDefinition":"specifyRangeA1"}}
     */
    dataLocationOnSheet?: {
        /** Values
     */
    values?: {
      /** Range Definition
       */
      rangeDefinition?: 'specifyRangeA1' | 'specifyRange' | Expression<string>;
      /** Index of the row which contains the keys. Starts at 1. The incoming node data is matched to the keys for assignment. The matching is case sensitive.
       * @hint First row is row 1
       * @displayOptions.show { rangeDefinition: ["specifyRange"] }
       * @default 1
       */
      headerRow?: number | Expression<number>;
      /** Index of the first row which contains the actual data and not the keys. Starts with 1.
       * @hint First row is row 1
       * @displayOptions.show { rangeDefinition: ["specifyRange"] }
       * @default 2
       */
      firstDataRow?: number | Expression<number>;
      /** The table range to read from or to append data to. See the Google &lt;a href="https://developers.google.com/sheets/api/guides/values#writing"&gt;documentation&lt;/a&gt; for the details.
       * @hint You can specify both the rows and the columns, e.g. C4:E7
       * @displayOptions.show { rangeDefinition: ["specifyRangeA1"] }
       */
      range?: string | Expression<string> | PlaceholderValue;
    };
  };
    /** Determines how values will be rendered in the output. &lt;a href="https://developers.google.com/sheets/api/reference/rest/v4/ValueRenderOption" target="_blank"&gt;More info&lt;/a&gt;.
     * @displayOptions.hide { /event: ["anyUpdate", "rowUpdate"] }
     * @default UNFORMATTED_VALUE
     */
    valueRender?: 'UNFORMATTED_VALUE' | 'FORMATTED_VALUE' | 'FORMULA' | Expression<string>;
    /** Determines how dates should be rendered in the output.  &lt;a href="https://developers.google.com/sheets/api/reference/rest/v4/DateTimeRenderOption" target="_blank"&gt;More info&lt;/a&gt;.
     * @displayOptions.hide { /event: ["anyUpdate", "rowUpdate"] }
     * @default SERIAL_NUMBER
     */
    dateTimeRenderOption?: 'SERIAL_NUMBER' | 'FORMATTED_STRING' | Expression<string>;
  };
}

export interface GoogleSheetsTriggerV1Credentials {
  googleSheetsTriggerOAuth2Api: CredentialReference;
}

interface GoogleSheetsTriggerV1NodeBase {
  type: 'n8n-nodes-base.googleSheetsTrigger';
  version: 1;
  credentials?: GoogleSheetsTriggerV1Credentials;
  isTrigger: true;
}

export type GoogleSheetsTriggerV1ParamsNode = GoogleSheetsTriggerV1NodeBase & {
  config: NodeConfig<GoogleSheetsTriggerV1Params>;
};

export type GoogleSheetsTriggerV1Node = GoogleSheetsTriggerV1ParamsNode;