import type { CmcApikeyDisabledError } from "../errors/cmc-apikey-disabled.error";
import type { CmcApikeyRequiredError } from "../errors/cmc-apikey-required.error";
import type { CmcInvalidError } from "../errors/cmc-invalid.error";
import type { CmcMissingError } from "../errors/cmc-missing.error";
import type { CmcPaymentExpiredError } from "../errors/cmc-payment-expired.error";
import type { CmcPaymentRequiredError } from "../errors/cmc-payment-required.error";
import type { CmcPlanUnauthorizeError } from "../errors/cmc-plan-unauthorize.error";
import type { CmcDailyRateLimitError } from "../errors/cmc-rate-limit-daily.error";
import type { CmcIpRateLimitError } from "../errors/cmc-rate-limit-ip.error";
import type { CmcMinuteRateLimitError } from "../errors/cmc-rate-limit-minute.error";
import type { CmcMonthlyRateLimitError } from "../errors/cmc-rate-limit-monthly.error";
import type { CmcRequestError } from "../errors/cmc-request.error";
export type CmcBaseResponse<TData = unknown> = {
    data: TData;
    status: CmcStatusResponse;
} | {
    data?: {
        data: TData;
        status: CmcStatusResponse;
    };
    status?: CmcStatusResponse;
};
export interface CmcStatusResponse {
    timestamp: string;
    error_code: number | null;
    error_message: string;
    elapsed: number;
    credit_count: number;
    notice?: string;
}
export type CmcErrorClass = CmcInvalidError | CmcMissingError | CmcPaymentRequiredError | CmcPaymentExpiredError | CmcApikeyRequiredError | CmcPlanUnauthorizeError | CmcApikeyDisabledError | CmcMinuteRateLimitError | CmcDailyRateLimitError | CmcMonthlyRateLimitError | CmcIpRateLimitError | CmcRequestError;
