class AttributeQueryRequestDto extends AbstractAttributeQueryRequestDto {

    public static AttributeQueryRequestDto createCycle3MatchingServiceRequest(
            String requestId,
            String encryptedMatchingDatasetAssertion,
            String encryptedAuthnAssertion,
            Cycle3Dataset cycle3Assertion,
            String authnRequestIssuerEntityId,
            URI assertionConsumerServiceUri,
            String matchingServiceEntityId,
            DateTime matchingServiceRequestTimeOut,
            LevelOfAssurance levelOfAssurance,
            Optional<List<UserAccountCreationAttribute>> userAccountCreationAttributes,
            PersistentId persistentId,
            DateTime assertionExpiry,
            URI attributeQueryUri,
            boolean onboarding) {

        return new AttributeQueryRequestDto(
            requestId,
            authnRequestIssuerEntityId,
            assertionConsumerServiceUri,
            assertionExpiry, matchingServiceEntityId,
            attributeQueryUri,
            matchingServiceRequestTimeOut,
            onboarding,
            levelOfAssurance,
            persistentId,
            Optional.ofNullable(cycle3Assertion),
            userAccountCreationAttributes,
            encryptedMatchingDatasetAssertion,
            encryptedAuthnAssertion
        );
    }

    public  AttributeQueryRequestDto(
        final String requestId,
        final String authnRequestIssuerEntityId,
        final URI assertionConsumerServiceUri,
        final DateTime assertionExpiry,
        final String matchingServiceEntityId,
        final URI attributeQueryUri,
        final DateTime matchingServiceRequestTimeOut,
        final boolean onboarding,
        final LevelOfAssurance levelOfAssurance,
        final PersistentId persistentId,
        final Optional<Cycle3Dataset> cycle3Dataset,
        final Optional<List<UserAccountCreationAttribute>> userAccountCreationAttributes,
        final String encryptedMatchingDatasetAssertion,
        final String encryptedAuthnAssertion);

}