import type { ApplicationCommandOptionType, ApplicationCommandPermissionType, ApplicationCommandType, ApplicationIntegrationType, ChannelType, InteractionContextType } from "#enums";
import type { ResolvedDataStructure } from "./others.js";
import type { Localizations as _Localizations } from "./localizations.js";
import { ApplicationCommandOption } from "./application-command-options.js";
declare namespace LocalizedApplicationCommand {
    interface GlobalStructure extends ApplicationCommand.GlobalStructure, _Localizations.Localized {
        options?: Array<ApplicationCommandOption.Localized.Structure>;
    }
    interface GuildStructure extends ApplicationCommand.GuildStructure, _Localizations.Localized {
        options?: Array<ApplicationCommandOption.Localized.Structure>;
    }
}
declare namespace LocalizationsApplicationCommand {
    interface GlobalStructure extends ApplicationCommand.GlobalStructure, _Localizations.Base {
        options?: Array<ApplicationCommandOption.Localizations.Structure>;
    }
    interface GuildStructure extends ApplicationCommand.GuildStructure, _Localizations.Base {
        options?: Array<ApplicationCommandOption.Localizations.Structure>;
    }
}
export declare namespace ApplicationCommand {
    export import Localizations = LocalizationsApplicationCommand;
    export import Localized = LocalizedApplicationCommand;
    export import Option = ApplicationCommandOption;
    type Structure = Localizations.GlobalStructure | Localizations.GuildStructure;
    interface GlobalStructure {
        id: string;
        type?: ApplicationCommandType;
        application_id: string;
        name: string;
        description: string;
        options?: Array<Option.Structure>;
        default_member_permissions: string | null;
        nsfw?: boolean;
        integration_types?: Array<ApplicationIntegrationType>;
        contexts?: Array<InteractionContextType>;
        version: number;
    }
    interface GuildStructure {
        id: string;
        type?: ApplicationCommandType;
        application_id: string;
        guild_id: string;
        name: string;
        description: string;
        options?: Array<Option.Structure>;
        default_member_permissions: string | null;
        nsfw?: boolean;
        integration_types?: Array<ApplicationIntegrationType>;
        version: number;
    }
    interface OptionStructureWithoutNarrowing {
        type: ApplicationCommandOptionType;
        name: string;
        description: string;
        required?: boolean;
        choices?: Array<Option.ChoiceStructure>;
        options?: Array<Option.Structure>;
        channel_types?: Array<ChannelType>;
        min_value?: number;
        max_value?: number;
        min_length?: number;
        max_length?: number;
        autocomplete?: boolean;
    }
    interface DataStructure {
        id: string;
        name: string;
        type: ApplicationCommandType;
        resolved?: ResolvedDataStructure;
        options?: Array<InteractionDataOptionStructure>;
        guild_id?: string;
        target_id?: string;
    }
    interface InteractionDataOptionStructure {
        name: string;
        type: ApplicationCommandOptionType;
        value?: string | number | boolean;
        options?: Array<InteractionDataOptionStructure>;
        focused?: boolean;
    }
    interface GuildPermissionsStructure {
        id: string;
        application_id: string;
        guild_id: string;
        permissions: Array<PermissionsStructure>;
    }
    interface PermissionsStructure {
        id: string;
        type: ApplicationCommandPermissionType;
        permission: boolean;
    }
    namespace Create {
        interface ApplicationCommandJSONParams extends _Localizations.Base {
            name: string;
            description?: string;
            options?: Array<ApplicationCommandOption.Structure>;
            default_member_permissions?: string | null;
            dm_permission?: boolean | null;
            integration_types?: Array<ApplicationIntegrationType> | null;
            contexts?: Array<InteractionContextType> | null;
            type?: ApplicationCommandType;
            nsfw?: boolean;
        }
    }
}
export {};
//# sourceMappingURL=application-command.d.ts.map