class Cycle3MatchRequestSentStateController extends MatchRequestSentStateController<Cycle3MatchRequestSentState> {

    @Override
    protected void transitionToNextStateForNoMatchResponse() {
        List<UserAccountCreationAttribute> userAccountCreationAttributes = transactionsConfigProxy.getUserAccountCreationAttributes(state.getRequestIssuerEntityId());
        if(!userAccountCreationAttributes.isEmpty()) {
            AttributeQueryRequestDto attributeQueryRequestDto = createAttributeQuery(
                    userAccountCreationAttributes,
                    state.getEncryptedMatchingDatasetAssertion(),
                    state.getAuthnStatementAssertion(),
                    state.getPersistentId(),
                    assertionRestrictionFactory.getAssertionExpiry());

            transitionToUserAccountCreationRequestSentState(attributeQueryRequestDto);
            return;
        }

        hubEventLogger.logCycle3NoMatchEvent(
                state.getSessionId(),
                state.getRequestIssuerEntityId(),
                state.getSessionExpiryTimestamp(),
                state.getRequestId());


        stateTransitionAction.transitionTo(createNoMatchState());
    }

    public  Cycle3MatchRequestSentStateController(
            final Cycle3MatchRequestSentState state,
            final HubEventLogger hubEventLogger,
            final StateTransitionAction stateTransitionAction,
            final PolicyConfiguration policyConfiguration,
            final LevelOfAssuranceValidator validator,
            final ResponseFromHubFactory responseFromHubFactory,
            final TransactionsConfigProxy transactionsConfigProxy,
            final MatchingServiceConfigProxy matchingServiceConfigProxy,
            final AssertionRestrictionsFactory assertionRestrictionFactory,
            final AttributeQueryService attributeQueryService);

}