/**
 * @license
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Currently supported fcm notification display parameters. Note that
 * {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/notifications/NotificationOptions}
 * defines a full list of display notification parameters. This interface we only include what the
 * SEND API support for clarity.
 */
export interface NotificationPayload {
  title?: string;
  body?: string;
  image?: string;
}

/**
 * @public
 */
export interface FcmOptions {
  link?: string;
  analyticsLabel?: string;
}

/**
 * @public
 */
export interface MessagePayload {
  notification?: NotificationPayload;
  data?: { [key: string]: string };
  fcmOptions?: FcmOptions;
  from: string;
  collapseKey: string;
}

/**
 * @public
 */
export interface FirebaseMessaging {}

/**
 * @internal
 */
export type _FirebaseMessagingName = 'messaging';

export { NextFn, Observer, Unsubscribe } from '@firebase/util';

declare module '@firebase/component' {
  interface NameServiceMapping {
    'messaging-exp': FirebaseMessaging;
  }
}
