import { Static } from '@sinclair/typebox';
import { MissionOptions } from './mission.js';
import Commands, { CommandOutputFormat, type ParsedArgs } from '../commands.js';
export declare enum MissionSubscriberRole {
    MISSION_OWNER = "MISSION_OWNER",
    MISSION_SUBSCRIBER = "MISSION_SUBSCRIBER",
    MISSION_READONLY_SUBSCRIBER = "MISSION_READONLY_SUBSCRIBER"
}
export declare enum MissionInviteType {
    CLIENT_UID = "clientUid",
    CALLSIGN = "callsign",
    USERNAME = "userName",
    GROUP = "group",
    TEAM = "team"
}
export declare const MissionRole: import("@sinclair/typebox").TObject<{
    name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
}>;
export declare const MissionInvite: import("@sinclair/typebox").TObject<{
    missionName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    invitee: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    creatorUid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    createTime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    token: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
    }>>;
    missionGuid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
export declare const MissionInviteList: import("@sinclair/typebox").TObject<{
    version: import("@sinclair/typebox").TString;
    type: import("@sinclair/typebox").TString;
    data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        missionName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        invitee: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        creatorUid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        createTime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        token: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
        }>>;
        missionGuid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    }>>;
    messages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
    nodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
/**
 * @class
 */
export default class MissionInviteCommands extends Commands {
    #private;
    schema: {
        list: {
            description: string;
            params: import("@sinclair/typebox").TObject<{}>;
            query: import("@sinclair/typebox").TObject<{}>;
            formats: CommandOutputFormat[];
        };
        get: {
            description: string;
            params: import("@sinclair/typebox").TObject<{
                name: import("@sinclair/typebox").TString;
            }>;
            query: import("@sinclair/typebox").TObject<{}>;
            formats: CommandOutputFormat[];
        };
        invite: {
            description: string;
            params: import("@sinclair/typebox").TObject<{
                name: import("@sinclair/typebox").TString;
                type: import("@sinclair/typebox").TEnum<typeof MissionInviteType>;
                invitee: import("@sinclair/typebox").TString;
            }>;
            query: import("@sinclair/typebox").TObject<{
                creatorUid: import("@sinclair/typebox").TString;
                role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TEnum<typeof MissionSubscriberRole>>;
            }>;
            formats: CommandOutputFormat[];
        };
        uninvite: {
            description: string;
            params: import("@sinclair/typebox").TObject<{
                name: import("@sinclair/typebox").TString;
                type: import("@sinclair/typebox").TEnum<typeof MissionInviteType>;
                invitee: import("@sinclair/typebox").TString;
            }>;
            query: import("@sinclair/typebox").TObject<{
                creatorUid: import("@sinclair/typebox").TString;
            }>;
            formats: CommandOutputFormat[];
        };
    };
    cli(args: ParsedArgs): Promise<object | string>;
    /**
     * List all Invitations for missions
     *
     * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getAllMissionInvitations TAK Server Docs}.
     */
    list(clientUid: string, opts?: Static<typeof MissionOptions>): Promise<Static<typeof MissionInviteList>>;
    /**
     * Get Mission Invitations
     *
     * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/getMissionInvitations TAK Server Docs}.
     */
    get(missionName: string, opts?: Static<typeof MissionOptions>): Promise<Static<typeof MissionInviteList>>;
    /**
     * Invite a user/group to a mission
     *
     * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/inviteToMission TAK Server Docs}.
     */
    invite(missionName: string, type: MissionInviteType, invitee: string, query: {
        creatorUid: string;
        role?: MissionSubscriberRole;
    }, opts?: Static<typeof MissionOptions>): Promise<void>;
    /**
     * Uninvite a user/group from a mission
     *
     * {@link https://docs.tak.gov/api/takserver/redoc#tag/mission-api/operation/uninviteFromMission TAK Server Docs}.
     */
    uninvite(missionName: string, type: MissionInviteType, invitee: string, query: {
        creatorUid: string;
    }, opts?: Static<typeof MissionOptions>): Promise<void>;
}
