// Path: src/main/java/org/swarmcom/jsynapse/domain/Authentication.java
// public static class AuthenticationResult {
// 
//     @JsonProperty("user_id")
//     String user;
// 
//     @JsonProperty("access_token")
//     String accessToken;
// 
//     public AuthenticationResult(String user, String accessToken) {
//         this.user = user;
//         this.accessToken = accessToken;
//     }
// 
//     public String getUser() {
//         return user;
//     }
// 
//     public void setUser(String user) {
//         this.user = user;
//     }
// 
//     public String getAccessToken() {
//         return accessToken;
//     }
// }
// 
// Path: src/main/java/org/swarmcom/jsynapse/domain/Authentication.java
// public static class AuthenticationFlows {
// 
//     @JsonProperty
//     List<AuthenticationInfo> flows = new LinkedList<>();
// 
//     public AuthenticationFlows(List<AuthenticationInfo> flows) {
//         this.flows = flows;
//     }
// }
// 
// Path: src/main/java/org/swarmcom/jsynapse/domain/Authentication.java
// public static class AuthenticationSubmission extends HashMap<String, String> {
//     static final String TYPE = "type";
//     static final String REMOTE_ADDR = "remoteAddr";
// 
//     public AuthenticationSubmission() {
//     }
// 
//     public String getType() {
//         return get(TYPE);
//     }
// 
//     public void setRemoteAddr(String remoteAddr) {
//         put(REMOTE_ADDR, remoteAddr);
//     }
// 
//     public String getRemoteAddr() {
//         return get(REMOTE_ADDR);
//     }
// }


import org.swarmcom.jsynapse.domain.Authentication.AuthenticationResult;
import org.swarmcom.jsynapse.domain.Authentication.AuthenticationFlows;
import org.swarmcom.jsynapse.domain.Authentication.AuthenticationSubmission;
/*
 * (C) Copyright 2015 eZuce Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
*/
package org.swarmcom.jsynapse.service.authentication;


public interface AuthenticationService {
    AuthenticationFlows getSupportedFlows();

    AuthenticationResult register(AuthenticationSubmission authentication);

// Path: src/main/java/org/swarmcom/jsynapse/domain/Authentication.java
// public static class AuthenticationResult {
// 
//     @JsonProperty("user_id")
//     String user;
// 
//     @JsonProperty("access_token")
//     String accessToken;
// 
//     public AuthenticationResult(String user, String accessToken) {
//         this.user = user;
//         this.accessToken = accessToken;
//     }
// 
//     public String getUser() {
//         return user;
//     }
// 
//     public void setUser(String user) {
//         this.user = user;
//     }
// 
//     public String getAccessToken() {
//         return accessToken;
//     }
// }
// 
// Path: src/main/java/org/swarmcom/jsynapse/domain/Authentication.java
// public static class AuthenticationFlows {
// 
//     @JsonProperty
//     List<AuthenticationInfo> flows = new LinkedList<>();
// 
//     public AuthenticationFlows(List<AuthenticationInfo> flows) {
//         this.flows = flows;
//     }
// }
// 
// Path: src/main/java/org/swarmcom/jsynapse/domain/Authentication.java
// public static class AuthenticationSubmission extends HashMap<String, String> {
//     static final String TYPE = "type";
//     static final String REMOTE_ADDR = "remoteAddr";
// 
//     public AuthenticationSubmission() {
//     }
// 
//     public String getType() {
//         return get(TYPE);
//     }
// 
//     public void setRemoteAddr(String remoteAddr) {
//         put(REMOTE_ADDR, remoteAddr);
//     }
// 
//     public String getRemoteAddr() {
//         return get(REMOTE_ADDR);
//     }
// }


// Path: src/main/java/org/swarmcom/jsynapse/service/authentication/AuthenticationService.java
import org.swarmcom.jsynapse.domain.Authentication.AuthenticationResult;
import org.swarmcom.jsynapse.domain.Authentication.AuthenticationFlows;
import org.swarmcom.jsynapse.domain.Authentication.AuthenticationSubmission;

/*
 * (C) Copyright 2015 eZuce Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
*/
package org.swarmcom.jsynapse.service.authentication;


public interface AuthenticationService {
    AuthenticationFlows getSupportedFlows();

    AuthenticationResult register(AuthenticationSubmission authentication);

    AuthenticationResult login(AuthenticationSubmission authentication);