import { type Subscription, Notification as OSNotification } from "@onesignal/node-onesignal";
export interface OSAppConfig {
  appId: string;
  restApiKey: string;
  appName: string;
}
type NotificationMessage = {
  message: string;
  title: string;
  additionalData?: Record<string, any>;
};
type NotificationPayload = Omit<OSNotification, "app_id"> & {
  appName: string;
  content: NotificationMessage;
  targetType: "subscription_id" | "alias";
  targetData:
    | string[]
    | {
        [key: string]: string[];
      };
  additionalData?: Record<string, any>;
};
declare class LocalPNInstance {
  private $apps;
  constructor(userAuthKey: string, configs: OSAppConfig[]);
  static createLocalPNInstance(userAuthKey: string, configs: OSAppConfig[]): LocalPNInstance;
  createPNUser(
    appName: string,
    aliasLabel: string,
    aliasId: string,
    delayMS?: number
  ): Promise<{
    id: string;
  }>;
  createPNSubscription(
    appName: string,
    aliasLabel: string,
    aliasId: string,
    type:
      | "ios"
      | "android"
      | "chrome"
      | "windows"
      | "firefox"
      | "safari"
      | "huawei"
      | "chrome-extension"
      | "fireos"
      | "macos",
    token: string,
    delayMS?: number
  ): Promise<Subscription>;
  deletePNSubscription(appName: string, subId: string): Promise<void>;
  createPN({
    appName,
    content,
    targetType,
    targetData,
    ...payload
  }: NotificationPayload): Promise<import("@onesignal/node-onesignal").CreateNotificationSuccessResponse>;
}
/**
 *
 * @param userAuthKey OneSignal application ID
 * @param configs List of configurations for multiple apps
 * @returns
 */
export declare const initializePNInstance: (userAuthKey: string, configs: OSAppConfig[]) => LocalPNInstance;
export {};
//# sourceMappingURL=push-notification.d.ts.map
