// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.

import type {DeepLink, Launch} from '@constants';

export interface DeepLink {
    serverUrl: string;
    teamName: string;
}

export interface DeepLinkChannel extends DeepLink {
    channelName: string;
}

export interface DeepLinkDM extends DeepLink {
    userName: string;
}

export interface DeepLinkPermalink extends DeepLink {
    postId: string;
}

export interface DeepLinkGM extends DeepLink {
    channelId: string;
}

export interface DeepLinkPlugin extends DeepLink {
    id: string;
}

export type DeepLinkType = typeof DeepLink[keyof typeof DeepLink];

export interface DeepLinkWithData {
    type: DeepLinkType;
    url: string;
    data?: DeepLinkChannel | DeepLinkDM | DeepLinkGM | DeepLinkPermalink | DeepLinkPlugin;
}

export type LaunchType = typeof Launch[keyof typeof Launch];

export interface LaunchProps {
    extra?: DeepLinkWithData | NotificationWithData;
    launchType: LaunchType;
    launchError?: Boolean;
    serverUrl?: string;
    displayName?: string;
    time?: number;
    coldStart?: boolean;
}
