/**
 * Pushover Node - Version 1
 * Discriminator: resource=message, operation=push
 */


interface Credentials {
  pushoverApi: CredentialReference;
}

export type PushoverV1MessagePushParams = {
  resource: 'message';
  operation: 'push';
/**
 * The user/group key (not e-mail address) of your user (or you), viewable when logged into the &lt;a href="https://pushover.net/"&gt;dashboard&lt;/a&gt; (often referred to as &lt;code&gt;USER_KEY&lt;/code&gt; in the &lt;a href="https://support.pushover.net/i44-example-code-and-pushover-libraries"&gt;libraries&lt;/a&gt; and code examples)
 */
    userKey?: string | Expression<string> | PlaceholderValue;
/**
 * Your message
 */
    message?: string | Expression<string> | PlaceholderValue;
/**
 * Send as -2 to generate no notification/alert, -1 to always send as a quiet notification, 1 to display as high-priority and bypass the user's quiet hours, or 2 to also require confirmation from the user
 * @default -2
 */
    priority?: -2 | -1 | 0 | 1 | 2 | Expression<number>;
/**
 * Specifies how often (in seconds) the Pushover servers will send the same notification to the user. This parameter must have a value of at least 30 seconds between retries.
 * @displayOptions.show { priority: [2] }
 * @default 30
 */
    retry?: number | Expression<number>;
/**
 * Specifies how many seconds your notification will continue to be retried for (every retry seconds)
 * @displayOptions.show { priority: [2] }
 * @default 30
 */
    expire?: number | Expression<number>;
/**
 * Additional Fields
 * @default {}
 */
    additionalFields?: {
    /** Attachment
     * @default {}
     */
    attachmentsUi?: {
        /** Attachment Property
     */
    attachmentsValues?: {
      /** Input Binary Field
       * @hint The name of the input binary field containing the file which should be added to email as attachment
       */
      binaryPropertyName?: string | Expression<string> | PlaceholderValue;
    };
  };
    /** Your user's device name to send the message directly to that device, rather than all of the user's devices (multiple devices may be separated by a comma)
     */
    device?: string | Expression<string> | PlaceholderValue;
    /** Whether to enable messages formatting with HTML tags
     * @default false
     */
    html?: boolean | Expression<boolean>;
    /** The name of one of the sounds supported by device clients to override the user's default sound choice. Choose from the list, or specify an ID using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;.
     */
    sound?: string | Expression<string>;
    /** A Unix timestamp of your message's date and time to display to the user, rather than the time your message is received by our API
     */
    timestamp?: string | Expression<string>;
    /** Your message's title, otherwise your app's name is used
     */
    title?: string | Expression<string> | PlaceholderValue;
    /** A Unix timestamp of your message's date and time to display to the user, rather than the time your message is received by our API
     */
    timestamp?: string | Expression<string>;
    /** A supplementary URL to show with your message
     */
    url?: string | Expression<string> | PlaceholderValue;
    /** A title for your supplementary URL, otherwise just the URL is shown
     */
    url_title?: string | Expression<string> | PlaceholderValue;
  };
};

export type PushoverV1MessagePushOutput = {
  request?: string;
  status?: number;
};

export type PushoverV1MessagePushNode = {
  type: 'n8n-nodes-base.pushover';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<PushoverV1MessagePushParams>;
  output?: Items<PushoverV1MessagePushOutput>;
};