import { OpenAPIClient, Parameters, AxiosRequestConfig, OperationResponse, UnknownParamsObject } from 'openapi-client-axios';

/* Auto-copied from notification-client */
/* eslint-disable */



declare namespace Components {
    namespace Parameters {
        export type TemplateIdPathParam = string; // uuid
    }
    export interface PathParameters {
        TemplateIdPathParam?: Parameters.TemplateIdPathParam /* uuid */;
    }
    namespace Schemas {
        export interface CreateNotificationTemplateInput {
            /**
             * Internal template name (required)
             */
            name: string;
            /**
             * Notification type key (required)
             */
            type: string;
            /**
             * Notification title (Lexical editor JSON, supports variables)
             */
            notification_title?: string;
            /**
             * Notification body (Lexical editor JSON, supports variables)
             */
            message?: string;
            /**
             * CTA button text (supports variables)
             */
            action_label?: string;
            /**
             * CTA button URL (supports variables)
             */
            action_url?: string;
            /**
             * JSON string with style config
             */
            style?: string;
            /**
             * Display title
             */
            _title?: string;
            /**
             * Tags for categorization
             */
            _tags?: string[];
            /**
             * Manifest ID used to create/update the entity
             */
            _manifest?: string /* uuid */[];
        }
        export interface Entity {
            [name: string]: any;
        }
        /**
         * Access control list
         */
        export interface EntityAcl {
            view?: string[];
            edit?: string[];
            delete?: string[];
        }
        export type EntityId = string; // uuid
        export interface EntityOperation {
            entity: EntityId /* uuid */;
            /**
             * example:
             * updateEntity
             */
            operation?: string;
            /**
             * example:
             * {
             *   "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
             *   "slug": "contact"
             * }
             */
            params?: {
                id?: EntityId /* uuid */;
                slug?: /**
                 * URL-friendly identifier for the entity schema
                 * example:
                 * contact
                 */
                EntitySlug;
            };
            /**
             * example:
             * {
             *   "_schema": "contact",
             *   "_org": "123",
             *   "status": "Inactive"
             * }
             */
            payload?: {
                [name: string]: any;
            };
        }
        export interface EntityOwner {
            /**
             * Organization ID
             */
            org_id: string;
            /**
             * User ID
             */
            user_id: string;
        }
        /**
         * URL-friendly identifier for the entity schema
         * example:
         * contact
         */
        export type EntitySlug = string;
        export interface Error {
            /**
             * Error message
             */
            message: string;
            /**
             * Error code
             */
            code?: string;
        }
        /**
         * example:
         * 123456789
         */
        export type Id = number;
        export interface Notification {
            notification_id?: number;
            timestamp?: string; // date-time
            /**
             * Type of notification
             * example:
             * workflow
             */
            type: string;
            /**
             * Redirect url
             * example:
             * https://epilot.cloud
             */
            redirect_url?: string;
            /**
             * Organization Id
             * example:
             * 206801
             */
            organization_id?: string;
            title: {
                /**
                 * Title for notification. Supports handlebars syntax.
                 * example:
                 * My custom notification
                 */
                en?: string;
                /**
                 * Title for notification. Supports handlebars syntax.
                 * example:
                 * Meine benutzerdefinierte Aktivität
                 */
                de?: string;
            };
            message: {
                /**
                 * Message for notification. Supports handlebars syntax.
                 * example:
                 * {{caller}} did something with {{contact.entity.id}} {{branch.name}}.
                 */
                en?: string;
                /**
                 * Message for notification. Supports handlebars syntax.
                 * example:
                 * {{caller}} habe etwas damit gemacht {{contact.entity.id}} {{branch.name}}.
                 */
                de?: string;
            };
            /**
             * example:
             * {
             *   "entity": {
             *     "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
             *     "schema": "contact"
             *   }
             * }
             */
            payload?: {
                [name: string]: any;
            };
            caller?: NotificationCallerContext;
            operations?: EntityOperation[];
            /**
             * example:
             * {
             *   "12345": {
             *     "email": false,
             *     "in_app": false
             *   }
             * }
             */
            force_notify_users?: {
                [name: string]: any;
            };
            /**
             * example:
             * false
             */
            read_state?: boolean;
            /**
             * The person who is the corresponding event recipient.
             * example:
             * [
             *   "1",
             *   "2",
             *   "3",
             *   "4",
             *   "5"
             * ]
             */
            visibility_user_ids?: string[];
        }
        export interface NotificationBase {
            notification_id?: number;
            timestamp?: string; // date-time
            /**
             * Type of notification
             * example:
             * workflow
             */
            type: string;
            /**
             * Redirect url
             * example:
             * https://epilot.cloud
             */
            redirect_url?: string;
            /**
             * Organization Id
             * example:
             * 206801
             */
            organization_id?: string;
            title: {
                /**
                 * Title for notification. Supports handlebars syntax.
                 * example:
                 * My custom notification
                 */
                en?: string;
                /**
                 * Title for notification. Supports handlebars syntax.
                 * example:
                 * Meine benutzerdefinierte Aktivität
                 */
                de?: string;
            };
            message: {
                /**
                 * Message for notification. Supports handlebars syntax.
                 * example:
                 * {{caller}} did something with {{contact.entity.id}} {{branch.name}}.
                 */
                en?: string;
                /**
                 * Message for notification. Supports handlebars syntax.
                 * example:
                 * {{caller}} habe etwas damit gemacht {{contact.entity.id}} {{branch.name}}.
                 */
                de?: string;
            };
            /**
             * example:
             * {
             *   "entity": {
             *     "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
             *     "schema": "contact"
             *   }
             * }
             */
            payload?: {
                [name: string]: any;
            };
            caller?: NotificationCallerContext;
            operations?: EntityOperation[];
            /**
             * example:
             * {
             *   "12345": {
             *     "email": false,
             *     "in_app": false
             *   }
             * }
             */
            force_notify_users?: {
                [name: string]: any;
            };
        }
        export interface NotificationCallerContext {
            [name: string]: any;
            EpilotAuth?: {
                /**
                 * example:
                 * {
                 *   "sub": "476e9b48-42f4-4234-a2b0-4668b34626ce",
                 *   "cognito:groups": [
                 *     "Administrator"
                 *   ],
                 *   "cognito:preferred_role": "arn:aws:iam::912468240823:role/base-administrator-role",
                 *   "iss": "https://cognito-idp.eu-central-1.amazonaws.com/eu-central-1_6lZSgmU6D",
                 *   "custom:ivy_org_id": "739224",
                 *   "cognito:username": "n.ahmad@epilot.cloud",
                 *   "custom:ivy_user_id": "10006129",
                 *   "cognito:roles": [
                 *     "arn:aws:iam::912468240823:role/base-administrator-role"
                 *   ],
                 *   "aud": "6e0jbdnger7nmoktaaflarue1l",
                 *   "event_id": "cd5f5583-d90c-4db5-8e99-5f5dd29a4d75",
                 *   "token_use": "id",
                 *   "auth_time": 1614333023,
                 *   "exp": 1614336623,
                 *   "iat": 1614333023,
                 *   "email": "n.ahmad@epilot.cloud"
                 * }
                 */
                token?: {
                    /**
                     * example:
                     * 476e9b48-42f4-4234-a2b0-4668b34626ce
                     */
                    sub?: string;
                    /**
                     * example:
                     * example@epilot.cloud
                     */
                    email?: string;
                    /**
                     * example:
                     * example@epilot.cloud
                     */
                    "cognito:username"?: string;
                    /**
                     * example:
                     * 10006129
                     */
                    "custom:ivy_user_id"?: string;
                };
            };
        }
        /**
         * example:
         * 123456789
         */
        export type NotificationId = number;
        export interface NotificationItem {
            id?: /**
             * example:
             * 123456789
             */
            Id;
            notification_id?: /**
             * example:
             * 123456789
             */
            NotificationId;
            timestamp?: string; // date-time
            /**
             * example:
             * false
             */
            read_state?: boolean;
            /**
             * Type of notification
             * example:
             * workflow
             */
            type: string;
            /**
             * Redirect url
             * example:
             * https://epilot.cloud
             */
            redirect_url?: string;
            /**
             * Organization Id
             * example:
             * 206801
             */
            organization_id?: string;
            title: {
                /**
                 * Title for notification. Supports handlebars syntax.
                 * example:
                 * My custom notification
                 */
                en?: string;
                /**
                 * Title for notification. Supports handlebars syntax.
                 * example:
                 * Meine benutzerdefinierte Aktivität
                 */
                de?: string;
            };
            message: {
                /**
                 * Message for notification. Supports handlebars syntax.
                 * example:
                 * {{caller}} did something with {{contact.entity.id}} {{branch.name}}.
                 */
                en?: string;
                /**
                 * Message for notification. Supports handlebars syntax.
                 * example:
                 * {{caller}} habe etwas damit gemacht {{contact.entity.id}} {{branch.name}}.
                 */
                de?: string;
            };
            /**
             * example:
             * {
             *   "entity": {
             *     "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
             *     "schema": "contact"
             *   }
             * }
             */
            payload?: {
                [name: string]: any;
            };
            caller?: NotificationCallerContext;
            operations?: EntityOperation[];
            /**
             * example:
             * {
             *   "12345": {
             *     "email": false,
             *     "in_app": false
             *   }
             * }
             */
            force_notify_users?: {
                [name: string]: any;
            };
        }
        export interface NotificationTemplate {
            /**
             * Unique identifier
             */
            _id: string; // uuid
            /**
             * Entity schema type
             */
            _schema: string;
            /**
             * Display title
             */
            _title: string | null;
            /**
             * Organization ID
             */
            _org: string;
            /**
             * Tags for categorization
             */
            _tags?: string[] | null;
            /**
             * ISO timestamp of creation
             */
            _created_at: string | null; // date-time
            /**
             * ISO timestamp of last update
             */
            _updated_at: string | null; // date-time
            /**
             * Manifest ID used to create/update the entity
             */
            _manifest?: string /* uuid */[];
            /**
             * Entity owners
             */
            _owners?: EntityOwner[];
            /**
             * Access control list
             */
            _acl?: {
                view?: string[];
                edit?: string[];
                delete?: string[];
            };
            /**
             * Internal template name
             */
            name?: string;
            /**
             * Notification type key
             */
            type?: string;
            /**
             * Notification title (Lexical editor JSON, supports variables)
             */
            notification_title?: string;
            /**
             * Notification body (Lexical editor JSON, supports variables)
             */
            message?: string;
            /**
             * CTA button text (supports variables)
             */
            action_label?: string;
            /**
             * CTA button URL (supports variables)
             */
            action_url?: string;
            /**
             * JSON string with style config
             */
            style?: string;
            /**
             * Whether this is a system template
             */
            system_template?: boolean;
            /**
             * User ID who created the template
             */
            created_by?: string;
            /**
             * User ID who last updated the template
             */
            updated_by?: string;
        }
        export interface NotificationTemplateListResponse {
            results?: NotificationTemplate[];
            /**
             * Total number of matching results
             */
            hits?: number;
        }
        export interface SendPreviewInput {
            template: UpdateNotificationTemplateInput;
            /**
             * Optional context IDs for variable replacement
             */
            context_ids?: {
                [name: string]: string;
            };
        }
        /**
         * Array of results for each notification channel (email, in-app)
         */
        export type SendPreviewResponse = {
            /**
             * Whether this notification was sent successfully
             */
            success: boolean;
            /**
             * Result data
             */
            data?: any;
        }[];
        export interface UpdateNotificationTemplateInput {
            /**
             * Internal template name
             */
            name?: string;
            /**
             * Notification title (Lexical editor JSON, supports variables)
             */
            notification_title?: string;
            /**
             * Notification body (Lexical editor JSON, supports variables)
             */
            message?: string;
            /**
             * CTA button text (supports variables)
             */
            action_label?: string;
            /**
             * CTA button URL (supports variables)
             */
            action_url?: string;
            /**
             * JSON string with style config
             */
            style?: string;
            /**
             * Display title
             */
            _title?: string;
            /**
             * Tags for categorization
             */
            _tags?: string[];
            /**
             * Manifest ID used to create/update the entity
             */
            _manifest?: string /* uuid */[];
        }
    }
}
declare namespace Paths {
    namespace CreateNotification {
        export type RequestBody = Components.Schemas.Notification;
        namespace Responses {
            export interface $202 {
            }
        }
    }
    namespace CreateNotificationTemplate {
        export type RequestBody = Components.Schemas.CreateNotificationTemplateInput;
        namespace Responses {
            export type $201 = Components.Schemas.NotificationTemplate;
            export type $400 = Components.Schemas.Error;
            export type $401 = Components.Schemas.Error;
            export type $500 = Components.Schemas.Error;
        }
    }
    namespace DeleteNotificationTemplate {
        namespace Parameters {
            export type Id = string; // uuid
        }
        export interface PathParameters {
            id: Parameters.Id /* uuid */;
        }
        namespace Responses {
            export type $200 = Components.Schemas.NotificationTemplate;
            export type $401 = Components.Schemas.Error;
            export type $404 = Components.Schemas.Error;
            export type $500 = Components.Schemas.Error;
        }
    }
    namespace GetNotification {
        namespace Parameters {
            export type Id = number;
        }
        export interface PathParameters {
            id: Parameters.Id;
        }
        namespace Responses {
            export type $200 = Components.Schemas.NotificationItem;
        }
    }
    namespace GetNotificationTemplate {
        namespace Parameters {
            export type Id = string; // uuid
        }
        export interface PathParameters {
            id: Parameters.Id /* uuid */;
        }
        namespace Responses {
            export type $200 = Components.Schemas.NotificationTemplate;
            export type $401 = Components.Schemas.Error;
            export type $404 = Components.Schemas.Error;
            export type $500 = Components.Schemas.Error;
        }
    }
    namespace GetNotifications {
        namespace Parameters {
            export type AfterId = number;
            export type Limit = number;
            export type NoHydrate = boolean;
        }
        export interface QueryParameters {
            after_id?: Parameters.AfterId;
            limit?: Parameters.Limit;
            no_hydrate?: Parameters.NoHydrate;
        }
        namespace Responses {
            export interface $200 {
                /**
                 * example:
                 * 1
                 */
                total?: number;
                /**
                 * example:
                 * 1
                 */
                total_unread?: number;
                results?: Components.Schemas.NotificationItem[];
            }
        }
    }
    namespace GetNotificationsV2 {
        namespace Parameters {
            export type AfterId = number;
            export type Cursor = string;
            export type Limit = number;
        }
        export interface QueryParameters {
            cursor?: Parameters.Cursor;
            after_id?: Parameters.AfterId;
            limit?: Parameters.Limit;
        }
        namespace Responses {
            export interface $200 {
                /**
                 * Base64 encoded cursor to be used for pagination
                 * example:
                 * eyJjcmVhd
                 */
                cursor?: string;
                /**
                 * example:
                 * 1
                 */
                total?: number;
                /**
                 * example:
                 * 1
                 */
                total_unread?: number;
                results?: Components.Schemas.NotificationItem[];
            }
        }
    }
    namespace GetTotalUnread {
        namespace Responses {
            /**
             * example:
             * 999
             */
            export type $200 = number;
        }
    }
    namespace ListNotificationTemplates {
        namespace Parameters {
            export type Fields = string;
            export type From = number;
            export type Hydrate = boolean;
            export type Q = string;
            export type Size = number;
            export type Sort = string;
        }
        export interface QueryParameters {
            q?: Parameters.Q;
            from?: Parameters.From;
            size?: Parameters.Size;
            sort?: Parameters.Sort;
            fields?: Parameters.Fields;
            hydrate?: Parameters.Hydrate;
        }
        namespace Responses {
            export type $200 = Components.Schemas.NotificationTemplateListResponse;
            export type $401 = Components.Schemas.Error;
            export type $500 = Components.Schemas.Error;
        }
    }
    namespace MarkAllAsRead {
        namespace Responses {
            export interface $204 {
            }
        }
    }
    namespace MarkAsRead {
        namespace Parameters {
            export type Id = number;
        }
        export interface PathParameters {
            id: Parameters.Id;
        }
        namespace Responses {
            export interface $204 {
            }
        }
    }
    namespace PatchNotificationTemplate {
        namespace Parameters {
            export type Id = string; // uuid
        }
        export interface PathParameters {
            id: Parameters.Id /* uuid */;
        }
        export type RequestBody = Components.Schemas.UpdateNotificationTemplateInput;
        namespace Responses {
            export type $200 = Components.Schemas.NotificationTemplate;
            export type $400 = Components.Schemas.Error;
            export type $401 = Components.Schemas.Error;
            export type $404 = Components.Schemas.Error;
            export type $500 = Components.Schemas.Error;
        }
    }
    namespace SendPreview {
        export type RequestBody = Components.Schemas.SendPreviewInput;
        namespace Responses {
            export type $200 = /* Array of results for each notification channel (email, in-app) */ Components.Schemas.SendPreviewResponse;
            export type $400 = Components.Schemas.Error;
            export type $401 = Components.Schemas.Error;
            export type $500 = Components.Schemas.Error;
        }
    }
    namespace UpdateNotificationTemplate {
        namespace Parameters {
            export type Id = string; // uuid
        }
        export interface PathParameters {
            id: Parameters.Id /* uuid */;
        }
        export type RequestBody = Components.Schemas.UpdateNotificationTemplateInput;
        namespace Responses {
            export type $200 = Components.Schemas.NotificationTemplate;
            export type $400 = Components.Schemas.Error;
            export type $401 = Components.Schemas.Error;
            export type $404 = Components.Schemas.Error;
            export type $500 = Components.Schemas.Error;
        }
    }
}


interface OperationMethods {
  /**
   * getNotificationsV2 - getNotificationsV2
   * 
   * Get notifications items. These items may eventually contain entities within their payload, which can be hydrated by the client if desired by calling the Entity API directly.
   */
  'getNotificationsV2'(
    parameters?: Parameters<Paths.GetNotificationsV2.QueryParameters> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.GetNotificationsV2.Responses.$200>
  /**
   * getNotifications - getNotifications
   * 
   * Get notifications
   */
  'getNotifications'(
    parameters?: Parameters<Paths.GetNotifications.QueryParameters> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.GetNotifications.Responses.$200>
  /**
   * createNotification - createNotification
   * 
   * Create a message that can be displayed in the notification panel.
   */
  'createNotification'(
    parameters?: Parameters<UnknownParamsObject> | null,
    data?: Paths.CreateNotification.RequestBody,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.CreateNotification.Responses.$202>
  /**
   * getNotification - getNotification
   * 
   * Get the details of a single notification.
   */
  'getNotification'(
    parameters?: Parameters<Paths.GetNotification.PathParameters> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.GetNotification.Responses.$200>
  /**
   * markAllAsRead - markAllAsRead
   * 
   * Mark all as read
   */
  'markAllAsRead'(
    parameters?: Parameters<UnknownParamsObject> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.MarkAllAsRead.Responses.$204>
  /**
   * markAsRead - markAsRead
   * 
   * Mark as read
   */
  'markAsRead'(
    parameters?: Parameters<Paths.MarkAsRead.PathParameters> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.MarkAsRead.Responses.$204>
  /**
   * getTotalUnread - getTotalUnread
   * 
   * Get total unread
   */
  'getTotalUnread'(
    parameters?: Parameters<UnknownParamsObject> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.GetTotalUnread.Responses.$200>
  /**
   * listNotificationTemplates - listNotificationTemplates
   * 
   * List notification templates with optional filtering and pagination
   */
  'listNotificationTemplates'(
    parameters?: Parameters<Paths.ListNotificationTemplates.QueryParameters> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.ListNotificationTemplates.Responses.$200>
  /**
   * createNotificationTemplate - createNotificationTemplate
   * 
   * Create a new notification template
   */
  'createNotificationTemplate'(
    parameters?: Parameters<UnknownParamsObject> | null,
    data?: Paths.CreateNotificationTemplate.RequestBody,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.CreateNotificationTemplate.Responses.$201>
  /**
   * getNotificationTemplate - getNotificationTemplate
   * 
   * Get a single notification template by ID
   */
  'getNotificationTemplate'(
    parameters?: Parameters<Paths.GetNotificationTemplate.PathParameters> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.GetNotificationTemplate.Responses.$200>
  /**
   * updateNotificationTemplate - updateNotificationTemplate
   * 
   * Update a notification template (full replacement)
   */
  'updateNotificationTemplate'(
    parameters?: Parameters<Paths.UpdateNotificationTemplate.PathParameters> | null,
    data?: Paths.UpdateNotificationTemplate.RequestBody,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.UpdateNotificationTemplate.Responses.$200>
  /**
   * patchNotificationTemplate - patchNotificationTemplate
   * 
   * Partially update a notification template
   */
  'patchNotificationTemplate'(
    parameters?: Parameters<Paths.PatchNotificationTemplate.PathParameters> | null,
    data?: Paths.PatchNotificationTemplate.RequestBody,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.PatchNotificationTemplate.Responses.$200>
  /**
   * deleteNotificationTemplate - deleteNotificationTemplate
   * 
   * Delete a notification template permanently
   */
  'deleteNotificationTemplate'(
    parameters?: Parameters<Paths.DeleteNotificationTemplate.PathParameters> | null,
    data?: any,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.DeleteNotificationTemplate.Responses.$200>
  /**
   * sendPreview - sendPreview
   * 
   * Send a preview notification (both email and in-app) to the requesting user.
   * Used to test notification templates before saving.
   * 
   */
  'sendPreview'(
    parameters?: Parameters<UnknownParamsObject> | null,
    data?: Paths.SendPreview.RequestBody,
    config?: AxiosRequestConfig  
  ): OperationResponse<Paths.SendPreview.Responses.$200>
}

interface PathsDictionary {
  ['/v2/notification/notifications']: {
    /**
     * getNotificationsV2 - getNotificationsV2
     * 
     * Get notifications items. These items may eventually contain entities within their payload, which can be hydrated by the client if desired by calling the Entity API directly.
     */
    'get'(
      parameters?: Parameters<Paths.GetNotificationsV2.QueryParameters> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.GetNotificationsV2.Responses.$200>
  }
  ['/v1/notification/notifications']: {
    /**
     * createNotification - createNotification
     * 
     * Create a message that can be displayed in the notification panel.
     */
    'post'(
      parameters?: Parameters<UnknownParamsObject> | null,
      data?: Paths.CreateNotification.RequestBody,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.CreateNotification.Responses.$202>
    /**
     * getNotifications - getNotifications
     * 
     * Get notifications
     */
    'get'(
      parameters?: Parameters<Paths.GetNotifications.QueryParameters> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.GetNotifications.Responses.$200>
  }
  ['/v1/notification/notifications/{id}']: {
    /**
     * getNotification - getNotification
     * 
     * Get the details of a single notification.
     */
    'get'(
      parameters?: Parameters<Paths.GetNotification.PathParameters> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.GetNotification.Responses.$200>
  }
  ['/v1/notification/notifications/mark']: {
    /**
     * markAllAsRead - markAllAsRead
     * 
     * Mark all as read
     */
    'put'(
      parameters?: Parameters<UnknownParamsObject> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.MarkAllAsRead.Responses.$204>
  }
  ['/v1/notification/notifications/{id}/mark']: {
    /**
     * markAsRead - markAsRead
     * 
     * Mark as read
     */
    'put'(
      parameters?: Parameters<Paths.MarkAsRead.PathParameters> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.MarkAsRead.Responses.$204>
  }
  ['/v1/notification/unreads']: {
    /**
     * getTotalUnread - getTotalUnread
     * 
     * Get total unread
     */
    'get'(
      parameters?: Parameters<UnknownParamsObject> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.GetTotalUnread.Responses.$200>
  }
  ['/v1/notification/templates']: {
    /**
     * listNotificationTemplates - listNotificationTemplates
     * 
     * List notification templates with optional filtering and pagination
     */
    'get'(
      parameters?: Parameters<Paths.ListNotificationTemplates.QueryParameters> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.ListNotificationTemplates.Responses.$200>
    /**
     * createNotificationTemplate - createNotificationTemplate
     * 
     * Create a new notification template
     */
    'post'(
      parameters?: Parameters<UnknownParamsObject> | null,
      data?: Paths.CreateNotificationTemplate.RequestBody,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.CreateNotificationTemplate.Responses.$201>
  }
  ['/v1/notification/templates/{id}']: {
    /**
     * getNotificationTemplate - getNotificationTemplate
     * 
     * Get a single notification template by ID
     */
    'get'(
      parameters?: Parameters<Paths.GetNotificationTemplate.PathParameters> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.GetNotificationTemplate.Responses.$200>
    /**
     * updateNotificationTemplate - updateNotificationTemplate
     * 
     * Update a notification template (full replacement)
     */
    'put'(
      parameters?: Parameters<Paths.UpdateNotificationTemplate.PathParameters> | null,
      data?: Paths.UpdateNotificationTemplate.RequestBody,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.UpdateNotificationTemplate.Responses.$200>
    /**
     * patchNotificationTemplate - patchNotificationTemplate
     * 
     * Partially update a notification template
     */
    'patch'(
      parameters?: Parameters<Paths.PatchNotificationTemplate.PathParameters> | null,
      data?: Paths.PatchNotificationTemplate.RequestBody,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.PatchNotificationTemplate.Responses.$200>
    /**
     * deleteNotificationTemplate - deleteNotificationTemplate
     * 
     * Delete a notification template permanently
     */
    'delete'(
      parameters?: Parameters<Paths.DeleteNotificationTemplate.PathParameters> | null,
      data?: any,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.DeleteNotificationTemplate.Responses.$200>
  }
  ['/v1/notification/templates/send-preview']: {
    /**
     * sendPreview - sendPreview
     * 
     * Send a preview notification (both email and in-app) to the requesting user.
     * Used to test notification templates before saving.
     * 
     */
    'post'(
      parameters?: Parameters<UnknownParamsObject> | null,
      data?: Paths.SendPreview.RequestBody,
      config?: AxiosRequestConfig  
    ): OperationResponse<Paths.SendPreview.Responses.$200>
  }
}

type Client = OpenAPIClient<OperationMethods, PathsDictionary>


type CreateNotificationTemplateInput = Components.Schemas.CreateNotificationTemplateInput;
type Entity = Components.Schemas.Entity;
type EntityAcl = Components.Schemas.EntityAcl;
type EntityId = Components.Schemas.EntityId;
type EntityOperation = Components.Schemas.EntityOperation;
type EntityOwner = Components.Schemas.EntityOwner;
type EntitySlug = Components.Schemas.EntitySlug;
type Error = Components.Schemas.Error;
type Id = Components.Schemas.Id;
type Notification = Components.Schemas.Notification;
type NotificationBase = Components.Schemas.NotificationBase;
type NotificationCallerContext = Components.Schemas.NotificationCallerContext;
type NotificationId = Components.Schemas.NotificationId;
type NotificationItem = Components.Schemas.NotificationItem;
type NotificationTemplate = Components.Schemas.NotificationTemplate;
type NotificationTemplateListResponse = Components.Schemas.NotificationTemplateListResponse;
type SendPreviewInput = Components.Schemas.SendPreviewInput;
type SendPreviewResponse = Components.Schemas.SendPreviewResponse;
type UpdateNotificationTemplateInput = Components.Schemas.UpdateNotificationTemplateInput;

export { type Client as C, type Entity as E, type Id as I, type Notification as N, type OperationMethods as O, Paths as P, type SendPreviewInput as S, type UpdateNotificationTemplateInput as U, Components as a, type PathsDictionary as b, type CreateNotificationTemplateInput as c, type EntityAcl as d, type EntityId as e, type EntityOperation as f, type EntityOwner as g, type EntitySlug as h, type Error as i, type NotificationBase as j, type NotificationCallerContext as k, type NotificationId as l, type NotificationItem as m, type NotificationTemplate as n, type NotificationTemplateListResponse as o, type SendPreviewResponse as p };
