/// <reference types="node" />
import type { Snowflake } from 'discord-api-types/globals';
import type { URL } from 'url';
/**
 * Wraps the content inside a codeblock with no language.
 * @param content The content to wrap.
 */
export declare function codeBlock<C extends string>(content: C): `\`\`\`\n${C}\`\`\``;
/**
 * Wraps the content inside a codeblock with the specified language.
 * @param language The language for the codeblock.
 * @param content The content to wrap.
 */
export declare function codeBlock<L extends string, C extends string>(language: L, content: C): `\`\`\`${L}\n${C}\`\`\``;
/**
 * Wraps the content inside \`backticks\`, which formats it as inline code.
 * @param content The content to wrap.
 */
export declare function inlineCode<C extends string>(content: C): `\`${C}\``;
/**
 * Formats the content into italic text.
 * @param content The content to wrap.
 */
export declare function italic<C extends string>(content: C): `_${C}_`;
/**
 * Formats the content into bold text.
 * @param content The content to wrap.
 */
export declare function bold<C extends string>(content: C): `**${C}**`;
/**
 * Formats the content into underscored text.
 * @param content The content to wrap.
 */
export declare function underscore<C extends string>(content: C): `__${C}__`;
/**
 * Formats the content into strike-through text.
 * @param content The content to wrap.
 */
export declare function strikethrough<C extends string>(content: C): `~~${C}~~`;
/**
 * Formats the content into a quote. This needs to be at the start of the line for Discord to format it.
 * @param content The content to wrap.
 */
export declare function quote<C extends string>(content: C): `> ${C}`;
/**
 * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it.
 * @param content The content to wrap.
 */
export declare function blockQuote<C extends string>(content: C): `>>> ${C}`;
/**
 * Wraps the URL into `<>`, which stops it from embedding.
 * @param url The URL to wrap.
 */
export declare function hideLinkEmbed<C extends string>(url: C): `<${C}>`;
/**
 * Wraps the URL into `<>`, which stops it from embedding.
 * @param url The URL to wrap.
 */
export declare function hideLinkEmbed(url: URL): `<${string}>`;
/**
 * Formats the content and the URL into a masked URL.
 * @param content The content to display.
 * @param url The URL the content links to.
 */
export declare function hyperlink<C extends string>(content: C, url: URL): `[${C}](${string})`;
/**
 * Formats the content and the URL into a masked URL.
 * @param content The content to display.
 * @param url The URL the content links to.
 */
export declare function hyperlink<C extends string, U extends string>(content: C, url: U): `[${C}](${U})`;
/**
 * Formats the content and the URL into a masked URL.
 * @param content The content to display.
 * @param url The URL the content links to.
 * @param title The title shown when hovering on the masked link.
 */
export declare function hyperlink<C extends string, T extends string>(content: C, url: URL, title: T): `[${C}](${string} "${T}")`;
/**
 * Formats the content and the URL into a masked URL.
 * @param content The content to display.
 * @param url The URL the content links to.
 * @param title The title shown when hovering on the masked link.
 */
export declare function hyperlink<C extends string, U extends string, T extends string>(content: C, url: U, title: T): `[${C}](${U} "${T}")`;
/**
 * Wraps the content inside spoiler (hidden text).
 * @param content The content to wrap.
 */
export declare function spoiler<C extends string>(content: C): `||${C}||`;
/**
 * Formats a user ID into a user mention.
 * @param userId The user ID to format.
 */
export declare function userMention<C extends Snowflake>(userId: C): `<@${C}>`;
/**
 * Formats a user ID into a member-nickname mention.
 * @param memberId The user ID to format.
 */
export declare function memberNicknameMention<C extends Snowflake>(memberId: C): `<@!${C}>`;
/**
 * Formats a channel ID into a channel mention.
 * @param channelId The channel ID to format.
 */
export declare function channelMention<C extends Snowflake>(channelId: C): `<#${C}>`;
/**
 * Formats a role ID into a role mention.
 * @param roleId The role ID to format.
 */
export declare function roleMention<C extends Snowflake>(roleId: C): `<@&${C}>`;
/**
 * Formats an emoji ID into a fully qualified emoji identifier
 * @param emojiId The emoji ID to format.
 */
export declare function formatEmoji<C extends Snowflake>(emojiId: C, animated?: false): `<:_:${C}>`;
/**
 * Formats an emoji ID into a fully qualified emoji identifier
 * @param emojiId The emoji ID to format.
 * @param animated Whether the emoji is animated or not. Defaults to `false`
 */
export declare function formatEmoji<C extends Snowflake>(emojiId: C, animated?: true): `<a:_:${C}>`;
/**
 * Formats a date into a short date-time string.
 * @param date The date to format, defaults to the current time.
 */
export declare function time(date?: Date): `<t:${bigint}>`;
/**
 * Formats a date given a format style.
 * @param date The date to format.
 * @param style The style to use.
 */
export declare function time<S extends TimestampStylesString>(date: Date, style: S): `<t:${bigint}:${S}>`;
/**
 * Formats the given timestamp into a short date-time string.
 * @param seconds The time to format, represents an UNIX timestamp in seconds.
 */
export declare function time<C extends number>(seconds: C): `<t:${C}>`;
/**
 * Formats the given timestamp into a short date-time string.
 * @param seconds The time to format, represents an UNIX timestamp in seconds.
 * @param style The style to use.
 */
export declare function time<C extends number, S extends TimestampStylesString>(seconds: C, style: S): `<t:${C}:${S}>`;
/**
 * The [message formatting timestamp styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord.
 */
export declare const TimestampStyles: {
    /**
     * Short time format, consisting of hours and minutes, e.g. 16:20.
     */
    readonly ShortTime: "t";
    /**
     * Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30.
     */
    readonly LongTime: "T";
    /**
     * Short date format, consisting of day, month, and year, e.g. 20/04/2021.
     */
    readonly ShortDate: "d";
    /**
     * Long date format, consisting of day, month, and year, e.g. 20 April 2021.
     */
    readonly LongDate: "D";
    /**
     * Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20.
     */
    readonly ShortDateTime: "f";
    /**
     * Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20.
     */
    readonly LongDateTime: "F";
    /**
     * Relative time format, consisting of a relative duration format, e.g. 2 months ago.
     */
    readonly RelativeTime: "R";
};
/**
 * The possible values, see {@link TimestampStyles} for more information.
 */
export declare type TimestampStylesString = typeof TimestampStyles[keyof typeof TimestampStyles];
/**
 * An enum with all the available faces from Discord's native slash commands
 */
export declare enum Faces {
    /**
     * ¯\\_(ツ)\\_/¯
     */
    Shrug = "\u00AF\\_(\u30C4)\\_/\u00AF",
    /**
     * (╯°□°）╯︵ ┻━┻
     */
    Tableflip = "(\u256F\u00B0\u25A1\u00B0\uFF09\u256F\uFE35 \u253B\u2501\u253B",
    /**
     * ┬─┬ ノ( ゜-゜ノ)
     */
    Unflip = "\u252C\u2500\u252C \u30CE( \u309C-\u309C\u30CE)"
}
//# sourceMappingURL=formatters.d.ts.map