> $outputs * @param array $requestPayload * @param array $responsePayload */ public function __construct( public readonly string $status, public readonly ?string $providerTaskId = null, public readonly ?string $failureCode = null, public readonly ?string $failureMessage = null, public readonly ?string $safetyState = null, public readonly array $safetyReasons = [], public readonly ?float $costUsd = null, public readonly array $outputs = [], public readonly array $requestPayload = [], public readonly array $responsePayload = [], public readonly ?int $httpStatus = null, ) {} /** * @param array> $outputs * @param array $requestPayload * @param array $responsePayload */ public static function succeeded( array $outputs = [], ?float $costUsd = null, ?string $safetyState = null, array $safetyReasons = [], array $requestPayload = [], array $responsePayload = [], ?int $httpStatus = null, ): self { return new self( status: 'succeeded', outputs: $outputs, costUsd: $costUsd, safetyState: $safetyState, safetyReasons: $safetyReasons, requestPayload: $requestPayload, responsePayload: $responsePayload, httpStatus: $httpStatus, ); } /** * @param array $requestPayload * @param array $responsePayload */ public static function processing( string $providerTaskId, ?float $costUsd = null, array $requestPayload = [], array $responsePayload = [], ?int $httpStatus = null, ): self { return new self( status: 'processing', providerTaskId: $providerTaskId, costUsd: $costUsd, requestPayload: $requestPayload, responsePayload: $responsePayload, httpStatus: $httpStatus, ); } /** * @param array $requestPayload * @param array $responsePayload */ public static function failed( string $failureCode, string $failureMessage, array $requestPayload = [], array $responsePayload = [], ?int $httpStatus = null, ): self { return new self( status: 'failed', failureCode: $failureCode, failureMessage: $failureMessage, requestPayload: $requestPayload, responsePayload: $responsePayload, httpStatus: $httpStatus, ); } /** * @param array $requestPayload * @param array $responsePayload */ public static function blocked( string $failureCode, string $failureMessage, ?string $safetyState = null, array $safetyReasons = [], array $requestPayload = [], array $responsePayload = [], ?int $httpStatus = null, ): self { return new self( status: 'blocked', failureCode: $failureCode, failureMessage: $failureMessage, safetyState: $safetyState, safetyReasons: $safetyReasons, requestPayload: $requestPayload, responsePayload: $responsePayload, httpStatus: $httpStatus, ); } }