import type { ChannelType } from 'discord.js';
import type { ChannelSelect, MentionableSelect, RoleSelect, SelectBase, StringSelect, StringSelectOption, UserSelect } from '../types';
type SelectBuilderOptions = Omit<SelectBase, 'id'>;
type SelectBuilderInput = SelectBuilderOptions & {
    customId: SelectBase['id'];
};
type ChannelSelectBuilderInput = SelectBuilderInput & {
    channelTypes?: readonly ChannelType[];
};
type StringSelectBuilderInput = SelectBuilderInput & {
    options: readonly StringSelectOption[];
};
/**
 * Creates a public user-select descriptor.
 *
 * @param customId Custom id or full select config.
 * @param opts Optional select configuration when a custom id is provided.
 * @returns Public user-select descriptor.
 */
export declare function user(customId: SelectBase['id'], opts?: SelectBuilderOptions): UserSelect;
export declare function user(opts: SelectBuilderInput): UserSelect;
/**
 * Creates a public role-select descriptor.
 *
 * @param customId Custom id or full select config.
 * @param opts Optional select configuration when a custom id is provided.
 * @returns Public role-select descriptor.
 */
export declare function role(customId: SelectBase['id'], opts?: SelectBuilderOptions): RoleSelect;
export declare function role(opts: SelectBuilderInput): RoleSelect;
/**
 * Creates a public mentionable-select descriptor.
 *
 * @param customId Custom id or full select config.
 * @param opts Optional select configuration when a custom id is provided.
 * @returns Public mentionable-select descriptor.
 */
export declare function mentionable(customId: SelectBase['id'], opts?: SelectBuilderOptions): MentionableSelect;
export declare function mentionable(opts: SelectBuilderInput): MentionableSelect;
/**
 * Creates a public channel-select descriptor.
 *
 * @param customId Custom id or full select config.
 * @param channelTypes Optional channel type filter list.
 * @param opts Optional select configuration when a custom id is provided.
 * @returns Public channel-select descriptor.
 */
export declare function channel(customId: SelectBase['id'], channelTypes?: readonly ChannelType[], opts?: SelectBuilderOptions): ChannelSelect;
export declare function channel(opts: ChannelSelectBuilderInput): ChannelSelect;
/**
 * Creates a public string-select descriptor.
 *
 * @param customId Custom id or full select config.
 * @param options Select options when a custom id is provided.
 * @param opts Optional select configuration when a custom id is provided.
 * @returns Public string-select descriptor.
 */
export declare function string(customId: SelectBase['id'], options: readonly StringSelectOption[], opts?: SelectBuilderOptions): StringSelect;
export declare function string(opts: StringSelectBuilderInput): StringSelect;
export {};
//# sourceMappingURL=select.d.ts.map