/**
 * Convert to File Node - Version 1
 * Convert JSON data to binary data
 */


export interface ConvertToFileV1Params {
  operation?: 'csv' | 'html' | 'iCal' | 'toJson' | 'ods' | 'rtf' | 'toText' | 'xls' | 'xlsx' | 'toBinary';
/**
 * Put Output File in Field
 * @hint The name of the output binary field to put the file in
 * @displayOptions.show { operation: ["csv", "html", "rtf", "ods", "xls", "xlsx"] }
 * @default data
 */
    binaryPropertyName?: string | Expression<string> | PlaceholderValue;
/**
 * Options
 * @displayOptions.show { operation: ["csv", "html", "rtf", "ods", "xls", "xlsx"] }
 * @default {}
 */
    options?: {
    /** Whether to reduce the output file size
     * @displayOptions.show { /operation: ["xlsx", "ods"] }
     * @default false
     */
    compression?: boolean | Expression<boolean>;
    /** The character to use to separate fields
     * @displayOptions.show { /operation: ["csv"] }
     * @default ,
     */
    delimiter?: string | Expression<string> | PlaceholderValue;
    /** Name of the output file
     */
    fileName?: string | Expression<string> | PlaceholderValue;
    /** Whether the first row of the file contains the header names
     * @default true
     */
    headerRow?: boolean | Expression<boolean>;
    /** Name of the sheet to create in the spreadsheet
     * @displayOptions.show { /operation: ["ods", "xls", "xlsx"] }
     * @default Sheet
     */
    sheetName?: string | Expression<string> | PlaceholderValue;
    /** Whether to add special marker at the start of your text file. This marker helps some programs understand how to read the file correctly.
     * @displayOptions.show { encoding: ["utf8", "cesu8", "ucs2"] }
     * @default false
     */
    addBOM?: boolean | Expression<boolean>;
    /** Whether the data is already base64 encoded
     * @default true
     */
    dataIsBase64?: boolean | Expression<boolean>;
    /** Choose the character set to use to encode the data
     * @displayOptions.hide { dataIsBase64: [true] }
     * @default utf8
     */
    encoding?: 'armscii8' | 'ascii' | 'base64' | 'big5hkscs' | 'binary' | 'cesu8' | 'cp1046' | 'cp1124' | 'cp1125' | 'cp1129' | 'cp1133' | 'cp1161' | 'cp1162' | 'cp1163' | 'cp437' | 'cp720' | 'cp737' | 'cp775' | 'cp808' | 'cp850' | 'cp852' | 'cp855' | 'cp856' | 'cp857' | 'cp858' | 'cp860' | 'cp861' | 'cp862' | 'cp863' | 'cp864' | 'cp865' | 'cp866' | 'cp869' | 'cp922' | 'cp936' | 'cp949' | 'cp950' | 'eucjp' | 'gb18030' | 'gbk' | 'georgianacademy' | 'georgianps' | 'hex' | 'hproman8' | 'iso646cn' | 'iso646jp' | 'iso88591' | 'iso885910' | 'iso885911' | 'iso885913' | 'iso885914' | 'iso885915' | 'iso885916' | 'iso88592' | 'iso88593' | 'iso88594' | 'iso88595' | 'iso88596' | 'iso88597' | 'iso88598' | 'iso88599' | 'koi8r' | 'koi8ru' | 'koi8t' | 'koi8u' | 'maccenteuro' | 'maccroatian' | 'maccyrillic' | 'macgreek' | 'maciceland' | 'macintosh' | 'macroman' | 'macromania' | 'macthai' | 'macturkish' | 'macukraine' | 'mik' | 'pt154' | 'rk1048' | 'shiftjis' | 'tcvn' | 'tis620' | 'ucs2' | 'utf16' | 'utf16be' | 'utf32' | 'utf32be' | 'utf32le' | 'utf7' | 'utf7imap' | 'utf8' | 'viscii' | 'windows1250' | 'windows1251' | 'windows1252' | 'windows1253' | 'windows1254' | 'windows1255' | 'windows1256' | 'windows1257' | 'windows1258' | 'windows874' | Expression<string>;
    /** The MIME type of the output file. &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types" target="_blank"&gt;Common MIME types&lt;/a&gt;.
     */
    mimeType?: string | Expression<string> | PlaceholderValue;
    /** Whether to format the JSON data for easier reading
     * @default false
     */
    format?: boolean | Expression<boolean>;
  };
/**
 * The name of the input field that contains the base64 string to convert to a file. Use dot-notation for deep fields (e.g. 'level1.level2.currentKey').
 * @displayOptions.show { operation: ["toBinary"] }
 */
    sourceProperty?: string | Expression<string> | PlaceholderValue;
/**
 * Mode
 * @displayOptions.show { operation: ["toJson"] }
 * @default once
 */
    mode?: 'once' | 'each';
/**
 * Event Title
 * @displayOptions.show { operation: ["iCal"] }
 */
    title?: string | Expression<string> | PlaceholderValue;
/**
 * Date and time at which the event begins. (For all-day events, the time will be ignored.).
 * @displayOptions.show { operation: ["iCal"] }
 */
    start?: string | Expression<string>;
/**
 * Date and time at which the event ends. (For all-day events, the time will be ignored.).
 * @hint If not set, will be equal to the start date
 * @displayOptions.show { operation: ["iCal"] }
 */
    end?: string | Expression<string>;
/**
 * Whether the event lasts all day or not
 * @displayOptions.show { operation: ["iCal"] }
 * @default false
 */
    allDay?: boolean | Expression<boolean>;
/**
 * Options
 * @displayOptions.show { operation: ["iCal"] }
 * @default {}
 */
    additionalFields?: {
    /** Attendees
     * @default {}
     */
    attendeesUi?: {
        /** Attendees
     */
    attendeeValues?: Array<{
      /** Name
       */
      name?: string | Expression<string> | PlaceholderValue;
      /** Email
       */
      email?: string | Expression<string> | PlaceholderValue;
      /** Whether the attendee has to confirm attendance or not
       * @default false
       */
      rsvp?: boolean | Expression<boolean>;
    }>;
  };
    /** Used to specify busy status for Microsoft applications, like Outlook
     */
    busyStatus?: 'BUSY' | 'TENTATIVE' | Expression<string>;
    /** Specifies the calendar (not event) name. Used by Apple iCal and Microsoft Outlook. &lt;a href="https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxcical/1da58449-b97e-46bd-b018-a1ce576f3e6d"&gt;More info&lt;/a&gt;.
     */
    calName?: string | Expression<string> | PlaceholderValue;
    /** Description
     */
    description?: string | Expression<string> | PlaceholderValue;
    /** The name of the file to be generated. Default name is event.ics.
     */
    fileName?: string | Expression<string> | PlaceholderValue;
    /** Geolocation
     * @default {}
     */
    geolocationUi?: {
        /** Geolocation
     */
    geolocationValues?: {
      /** Latitude
       */
      lat?: string | Expression<string> | PlaceholderValue;
      /** Longitude
       */
      lon?: string | Expression<string> | PlaceholderValue;
    };
  };
    /** The intended venue
     */
    location?: string | Expression<string> | PlaceholderValue;
    /** A rule to define the repeat pattern of the event (RRULE). (&lt;a href="https://icalendar.org/rrule-tool.html"&gt;Rule generator&lt;/a&gt;).
     */
    recurrenceRule?: string | Expression<string> | PlaceholderValue;
    /** Organizer
     * @default {}
     */
    organizerUi?: {
        /** Organizer
     */
    organizerValues?: {
      /** Name
       */
      name?: string | Expression<string> | PlaceholderValue;
      /** Email
       */
      email?: string | Expression<string> | PlaceholderValue;
    };
  };
    /** When sending an update for an event (with the same uid), defines the revision sequence number
     * @default 0
     */
    sequence?: number | Expression<number>;
    /** Status
     * @default CONFIRMED
     */
    status?: 'CONFIRMED' | 'CANCELLED' | 'TENTATIVE' | Expression<string>;
    /** Universally unique ID for the event (will be auto-generated if not specified here). Should be globally unique.
     */
    uid?: string | Expression<string> | PlaceholderValue;
    /** URL associated with event
     */
    url?: string | Expression<string> | PlaceholderValue;
    /** Whether to use the workflow timezone set in node's settings rather than UTC
     * @default false
     */
    useWorkflowTimezone?: boolean | Expression<boolean>;
  };
}

interface ConvertToFileV1NodeBase {
  type: 'n8n-nodes-base.convertToFile';
  version: 1;
}

export type ConvertToFileV1ParamsNode = ConvertToFileV1NodeBase & {
  config: NodeConfig<ConvertToFileV1Params>;
};

export type ConvertToFileV1Node = ConvertToFileV1ParamsNode;