Repository: discordjs/discord.js
File: packages/rest/src/lib/CDN.ts (TypeScript)

Code before:
		return this.makeURL(`/app-icons/${clientId}/${iconHash}`, options);
	}

	/**
	 * Generates an avatar URL, e.g. for a user or a webhook.
	 *
	 * @param id - The id that has the icon
	 * @param avatarHash - The hash provided by Discord for this avatar
	 * @param options - Optional options for the avatar
	 */
	public avatar(id: string, avatarHash: string, options?: Readonly<ImageURLOptions>): string {
		return this.dynamicMakeURL(`/avatars/${id}/${avatarHash}`, avatarHash, options);
	}

	/**
	 * Generates a user avatar decoration preset URL.
	 *
	 * @param asset - The avatar decoration hash
	 * @param options - Optional options for the avatar decoration preset
	 */
	public avatarDecoration(asset: string, options?: Readonly<ImageURLOptions>): string;

	/**
	 * Generates a user avatar decoration URL.
	 *
	 * @deprecated This overload is deprecated. Pass an hash instead.
	 * @param userId - The id of the user
	 * @param userAvatarDecoration - The hash provided by Discord for this avatar decoration
	 * @param options - Optional options for the avatar decoration
	 */
	public avatarDecoration(
		userId: string,
		userAvatarDecoration: string,
		options?: Readonly<BaseImageURLOptions>,
	): string;

	public avatarDecoration(
		userIdOrAsset: string,
		assetOrOptions?: Readonly<ImageURLOptions> | string,
		options?: Readonly<BaseImageURLOptions>,
	): string {
		if (typeof assetOrOptions === 'string') {
			return this.makeURL(`/avatar-decorations/${userIdOrAsset}/${assetOrOptions}`, options);
		}

		return this.dynamicMakeURL(`/avatar-decoration-presets/${userIdOrAsset}`, userIdOrAsset, assetOrOptions);
	}

	/**
	 * Generates a banner URL, e.g. for a user or a guild.
	 *

Review comment (suggestion):
```suggestion
	 * @deprecated This overload is deprecated. Pass a hash instead.
```

Code after:
		return this.makeURL(`/app-icons/${clientId}/${iconHash}`, options);
	}

	/**
	 * Generates an avatar URL, e.g. for a user or a webhook.
	 *
	 * @param id - The id that has the icon
	 * @param avatarHash - The hash provided by Discord for this avatar
	 * @param options - Optional options for the avatar
	 */
	public avatar(id: string, avatarHash: string, options?: Readonly<ImageURLOptions>): string {
		return this.dynamicMakeURL(`/avatars/${id}/${avatarHash}`, avatarHash, options);
	}

	/**
	 * Generates a user avatar decoration preset URL.
	 *
	 * @param asset - The avatar decoration hash
	 */
	public avatarDecoration(asset: string): string;

	/**
	 * Generates a user avatar decoration URL.
	 *
	 * @deprecated This overload is deprecated. Pass a hash instead.
	 * @param userId - The id of the user
	 * @param userAvatarDecoration - The hash provided by Discord for this avatar decoration
	 * @param options - Optional options for the avatar decoration
	 */
	public avatarDecoration(
		userId: string,
		userAvatarDecoration: string,
		// eslint-disable-next-line @typescript-eslint/unified-signatures
		options?: Readonly<BaseImageURLOptions>,
	): string;

	public avatarDecoration(
		userIdOrAsset: string,
		userAvatarDecoration?: string,
		options?: Readonly<BaseImageURLOptions>,
	): string {
		if (userAvatarDecoration) {
			return this.makeURL(`/avatar-decorations/${userIdOrAsset}/${userAvatarDecoration}`, options);
		}

		return this.makeURL(`/avatar-decoration-presets/${userIdOrAsset}`, { extension: 'png' });
	}

	/**
	 * Generates a banner URL, e.g. for a user or a guild.
	 *