import { Config } from './config'; /** 좋아요 여부 (‘Y’ 또는 ‘N’) */ export type LikeYN = 'Y' | 'N'; /** * 개별 음원의 좋아요 수 데이터 */ export interface ISongLikeCntData { /** 콘텐츠 ID */ CONTSID: number; /** 좋아요 여부 */ LIKEYN: LikeYN; /** 좋아요 총 수 */ SUMMCNT: number; } /** * 좋아요 수 조회 API의 응답 데이터 */ export interface ILikeCntList { /** 음원별 좋아요 데이터 배열 */ contsLike: ISongLikeCntData[]; /** HTTP 도메인 */ httpDomain: string; /** HTTPS 도메인 */ httpsDomain: string; /** 정적 리소스 도메인 */ staticDomain: string; } /** * 안정성이 강화된 HTTP 클라이언트 클래스 * 지수 백오프(Exponential Backoff)와 재시도 로직을 지원합니다. * * @example * ```typescript * const config = new Config(); * const http = new HTTP(config); * * try { * const html = await http.getHTML('https://www.melon.com/chart/index.htm'); * console.log('페이지 로드 성공'); * } catch (error) { * console.error('페이지 로드 실패:', error); * } * ``` */ export declare class HTTP { /** 설정 인스턴스 */ private config; /** * HTTP 클라이언트를 생성합니다. * @param config 설정 객체 */ constructor(config: Config); /** * 지수 백오프 지연 시간을 계산합니다. * @param attempt 시도 횟수 (0부터 시작) * @returns 지연 시간(밀리초) */ private calculateDelayMs; /** * 에러가 재시도 가능한지 확인합니다. * @param error 발생한 에러 * @param statusCode HTTP 상태 코드 (있는 경우) * @returns 재시도 가능 여부 */ private isRetryableError; /** * HTTP GET 요청을 수행합니다. * 실패 시 지수 백오프를 사용하여 자동으로 재시도합니다. * * @param url 요청할 URL (상대 경로 또는 절대 URL) * @param params URL 매개변수 (옵션) * @returns HTML 문자열을 Promise로 반환 * @throws {Error} 모든 재시도 시도가 실패할 경우 * * @example * ```typescript * // 기본 사용 * const html = await http.getHTML('/chart/index.htm'); * * // 매개변수와 함께 사용 * const params = new URLSearchParams(); * params.append('q', '윤하'); * const searchHtml = await http.getHTML('/search/song/index.htm', params); * ``` */ getHTML(url: string, params?: URLSearchParams): Promise; private _getHTML; } /** * 멜론 API의 보조 기능들을 제공하는 유틸리티 클래스 * 좋아요 수 조회 등의 기능을 포함합니다. */ export declare class Utility { /** 설정 인스턴스 */ private config; /** * Utility 클래스를 생성합니다. * @param config 설정 객체 */ constructor(config: Config); /** * 지수 백오프 지연 시간을 계산합니다. * @param attempt 시도 횟수 (0부터 시작) * @returns 지연 시간(밀리초) */ private calculateDelayMs; /** * 에러가 재시도 가능한지 확인합니다. * @param error 발생한 에러 * @param statusCode HTTP 상태 코드 (있는 경우) * @returns 재시도 가능 여부 */ private isRetryableError; /** * 음원들의 좋아요 수를 조회합니다. * 실패 시 지수 백오프를 사용하여 자동으로 재시도합니다. * * @param songs 좋아요 수를 조회할 음원 번호 배열 * @returns 좋아요 데이터를 Promise로 반환 * @throws {Error} 모든 재시도 시도가 실패할 경우 * * @example * ```typescript * const songIds = [1, 2, 3]; * const likeCntData = await utility.getLikeCnt(songIds); * console.log('첫 번째 음원 좋아요 수:', likeCntData.contsLike[0].SUMMCNT); * ``` */ getLikeCnt(songs: number[]): Promise; private _getLikeCnt; }