<?php

namespace App\Exceptions;

use Exception;

class CarrierCreateFailedException extends Exception
{
    public const FAILURE_INSUFFICIENT_BALANCE = 'insufficient_balance';

    public const FAILURE_NON_SERVICEABLE_PINCODE = 'non_serviceable_pincode';

    public const FAILURE_UNKNOWN = 'unknown';

    public function __construct(
        string $message = '',
        int $code = 0,
        ?\Throwable $previous = null,
        protected array $rawResponse = [],
        protected string $failureReason = self::FAILURE_UNKNOWN
    ) {
        parent::__construct($message, $code, $previous);
    }

    public function getRawResponse(): array
    {
        return $this->rawResponse;
    }

    public function getFailureReason(): string
    {
        return $this->failureReason;
    }
}
