/*
 * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file 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 com.amazonaws.services.entityresolution;
import javax.annotation.Generated;
import com.amazonaws.services.entityresolution.model.*;
/**
 * Interface for accessing AWSEntityResolution asynchronously. Each asynchronous method will return a Java Future object
 * representing the asynchronous operation; overloads which accept an {@code AsyncHandler} can be used to receive
 * notification when an asynchronous operation completes.
 * 
 * Note: Do not directly implement this interface, new methods are added to it regularly. Extend from
 * {@link com.amazonaws.services.entityresolution.AbstractAWSEntityResolutionAsync} instead.
 * 
 * 
 * 
 * Welcome to the AWS Entity Resolution API Reference.
 * 
 * 
 * AWS Entity Resolution is an AWS service that provides pre-configured entity resolution capabilities that enable
 * developers and analysts at advertising and marketing companies to build an accurate and complete view of their
 * consumers.
 * 
 * 
 * With AWS Entity Resolution, you have the ability to match source records containing consumer identifiers, such as
 * name, email address, and phone number. This holds true even when these records have incomplete or conflicting
 * identifiers. For example, AWS Entity Resolution can effectively match a source record from a customer relationship
 * management (CRM) system, which includes account information like first name, last name, postal address, phone number,
 * and email address, with a source record from a marketing system containing campaign information, such as username and
 * email address.
 * 
 * 
 * To learn more about AWS Entity Resolution concepts, procedures, and best practices, see the AWS Entity Resolution User
 * Guide.
 * 
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public interface AWSEntityResolutionAsync extends AWSEntityResolution {
    /**
     * 
     * Creates a MatchingWorkflow object which stores the configuration of the data processing job to be
     * run. It is important to note that there should not be a pre-existing MatchingWorkflow with the same
     * name. To modify an existing workflow, utilize the UpdateMatchingWorkflow API.
     * 
     * 
     * @param createMatchingWorkflowRequest
     * @return A Java Future containing the result of the CreateMatchingWorkflow operation returned by the service.
     * @sample AWSEntityResolutionAsync.CreateMatchingWorkflow
     * @see AWS API Documentation
     */
    java.util.concurrent.Future createMatchingWorkflowAsync(CreateMatchingWorkflowRequest createMatchingWorkflowRequest);
    /**
     * 
     * Creates a MatchingWorkflow object which stores the configuration of the data processing job to be
     * run. It is important to note that there should not be a pre-existing MatchingWorkflow with the same
     * name. To modify an existing workflow, utilize the UpdateMatchingWorkflow API.
     * 
     * 
     * @param createMatchingWorkflowRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the CreateMatchingWorkflow operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.CreateMatchingWorkflow
     * @see AWS API Documentation
     */
    java.util.concurrent.Future createMatchingWorkflowAsync(CreateMatchingWorkflowRequest createMatchingWorkflowRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Creates a schema mapping, which defines the schema of the input customer records table. The
     * SchemaMapping also provides Entity Resolution with some metadata about the table, such as the
     * attribute types of the columns and which columns to match on.
     * 
     * 
     * @param createSchemaMappingRequest
     * @return A Java Future containing the result of the CreateSchemaMapping operation returned by the service.
     * @sample AWSEntityResolutionAsync.CreateSchemaMapping
     * @see AWS API Documentation
     */
    java.util.concurrent.Future createSchemaMappingAsync(CreateSchemaMappingRequest createSchemaMappingRequest);
    /**
     * 
     * Creates a schema mapping, which defines the schema of the input customer records table. The
     * SchemaMapping also provides Entity Resolution with some metadata about the table, such as the
     * attribute types of the columns and which columns to match on.
     * 
     * 
     * @param createSchemaMappingRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the CreateSchemaMapping operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.CreateSchemaMapping
     * @see AWS API Documentation
     */
    java.util.concurrent.Future createSchemaMappingAsync(CreateSchemaMappingRequest createSchemaMappingRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Deletes the MatchingWorkflow with a given name. This operation will succeed even if a workflow with
     * the given name does not exist.
     * 
     * 
     * @param deleteMatchingWorkflowRequest
     * @return A Java Future containing the result of the DeleteMatchingWorkflow operation returned by the service.
     * @sample AWSEntityResolutionAsync.DeleteMatchingWorkflow
     * @see AWS API Documentation
     */
    java.util.concurrent.Future deleteMatchingWorkflowAsync(DeleteMatchingWorkflowRequest deleteMatchingWorkflowRequest);
    /**
     * 
     * Deletes the MatchingWorkflow with a given name. This operation will succeed even if a workflow with
     * the given name does not exist.
     * 
     * 
     * @param deleteMatchingWorkflowRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the DeleteMatchingWorkflow operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.DeleteMatchingWorkflow
     * @see AWS API Documentation
     */
    java.util.concurrent.Future deleteMatchingWorkflowAsync(DeleteMatchingWorkflowRequest deleteMatchingWorkflowRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Deletes the SchemaMapping with a given name. This operation will succeed even if a schema with the
     * given name does not exist. This operation will fail if there is a DataIntegrationWorkflow object
     * that references the SchemaMapping in the workflow's InputSourceConfig.
     * 
     * 
     * @param deleteSchemaMappingRequest
     * @return A Java Future containing the result of the DeleteSchemaMapping operation returned by the service.
     * @sample AWSEntityResolutionAsync.DeleteSchemaMapping
     * @see AWS API Documentation
     */
    java.util.concurrent.Future deleteSchemaMappingAsync(DeleteSchemaMappingRequest deleteSchemaMappingRequest);
    /**
     * 
     * Deletes the SchemaMapping with a given name. This operation will succeed even if a schema with the
     * given name does not exist. This operation will fail if there is a DataIntegrationWorkflow object
     * that references the SchemaMapping in the workflow's InputSourceConfig.
     * 
     * 
     * @param deleteSchemaMappingRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the DeleteSchemaMapping operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.DeleteSchemaMapping
     * @see AWS API Documentation
     */
    java.util.concurrent.Future deleteSchemaMappingAsync(DeleteSchemaMappingRequest deleteSchemaMappingRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Returns the corresponding Match ID of a customer record if the record has been processed.
     * 
     * 
     * @param getMatchIdRequest
     * @return A Java Future containing the result of the GetMatchId operation returned by the service.
     * @sample AWSEntityResolutionAsync.GetMatchId
     * @see AWS
     *      API Documentation
     */
    java.util.concurrent.Future getMatchIdAsync(GetMatchIdRequest getMatchIdRequest);
    /**
     * 
     * Returns the corresponding Match ID of a customer record if the record has been processed.
     * 
     * 
     * @param getMatchIdRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the GetMatchId operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.GetMatchId
     * @see AWS
     *      API Documentation
     */
    java.util.concurrent.Future getMatchIdAsync(GetMatchIdRequest getMatchIdRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Gets the status, metrics, and errors (if there are any) that are associated with a job.
     * 
     * 
     * @param getMatchingJobRequest
     * @return A Java Future containing the result of the GetMatchingJob operation returned by the service.
     * @sample AWSEntityResolutionAsync.GetMatchingJob
     * @see AWS API Documentation
     */
    java.util.concurrent.Future getMatchingJobAsync(GetMatchingJobRequest getMatchingJobRequest);
    /**
     * 
     * Gets the status, metrics, and errors (if there are any) that are associated with a job.
     * 
     * 
     * @param getMatchingJobRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the GetMatchingJob operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.GetMatchingJob
     * @see AWS API Documentation
     */
    java.util.concurrent.Future getMatchingJobAsync(GetMatchingJobRequest getMatchingJobRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Returns the MatchingWorkflow with a given name, if it exists.
     * 
     * 
     * @param getMatchingWorkflowRequest
     * @return A Java Future containing the result of the GetMatchingWorkflow operation returned by the service.
     * @sample AWSEntityResolutionAsync.GetMatchingWorkflow
     * @see AWS API Documentation
     */
    java.util.concurrent.Future getMatchingWorkflowAsync(GetMatchingWorkflowRequest getMatchingWorkflowRequest);
    /**
     * 
     * Returns the MatchingWorkflow with a given name, if it exists.
     * 
     * 
     * @param getMatchingWorkflowRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the GetMatchingWorkflow operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.GetMatchingWorkflow
     * @see AWS API Documentation
     */
    java.util.concurrent.Future getMatchingWorkflowAsync(GetMatchingWorkflowRequest getMatchingWorkflowRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Returns the SchemaMapping of a given name.
     * 
     * 
     * @param getSchemaMappingRequest
     * @return A Java Future containing the result of the GetSchemaMapping operation returned by the service.
     * @sample AWSEntityResolutionAsync.GetSchemaMapping
     * @see AWS API Documentation
     */
    java.util.concurrent.Future getSchemaMappingAsync(GetSchemaMappingRequest getSchemaMappingRequest);
    /**
     * 
     * Returns the SchemaMapping of a given name.
     * 
     * 
     * @param getSchemaMappingRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the GetSchemaMapping operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.GetSchemaMapping
     * @see AWS API Documentation
     */
    java.util.concurrent.Future getSchemaMappingAsync(GetSchemaMappingRequest getSchemaMappingRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Lists all jobs for a given workflow.
     * 
     * 
     * @param listMatchingJobsRequest
     * @return A Java Future containing the result of the ListMatchingJobs operation returned by the service.
     * @sample AWSEntityResolutionAsync.ListMatchingJobs
     * @see AWS API Documentation
     */
    java.util.concurrent.Future listMatchingJobsAsync(ListMatchingJobsRequest listMatchingJobsRequest);
    /**
     * 
     * Lists all jobs for a given workflow.
     * 
     * 
     * @param listMatchingJobsRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the ListMatchingJobs operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.ListMatchingJobs
     * @see AWS API Documentation
     */
    java.util.concurrent.Future listMatchingJobsAsync(ListMatchingJobsRequest listMatchingJobsRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Returns a list of all the MatchingWorkflows that have been created for an AWS account.
     * 
     * 
     * @param listMatchingWorkflowsRequest
     * @return A Java Future containing the result of the ListMatchingWorkflows operation returned by the service.
     * @sample AWSEntityResolutionAsync.ListMatchingWorkflows
     * @see AWS API Documentation
     */
    java.util.concurrent.Future listMatchingWorkflowsAsync(ListMatchingWorkflowsRequest listMatchingWorkflowsRequest);
    /**
     * 
     * Returns a list of all the MatchingWorkflows that have been created for an AWS account.
     * 
     * 
     * @param listMatchingWorkflowsRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the ListMatchingWorkflows operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.ListMatchingWorkflows
     * @see AWS API Documentation
     */
    java.util.concurrent.Future listMatchingWorkflowsAsync(ListMatchingWorkflowsRequest listMatchingWorkflowsRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Returns a list of all the SchemaMappings that have been created for an AWS account.
     * 
     * 
     * @param listSchemaMappingsRequest
     * @return A Java Future containing the result of the ListSchemaMappings operation returned by the service.
     * @sample AWSEntityResolutionAsync.ListSchemaMappings
     * @see AWS API Documentation
     */
    java.util.concurrent.Future listSchemaMappingsAsync(ListSchemaMappingsRequest listSchemaMappingsRequest);
    /**
     * 
     * Returns a list of all the SchemaMappings that have been created for an AWS account.
     * 
     * 
     * @param listSchemaMappingsRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the ListSchemaMappings operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.ListSchemaMappings
     * @see AWS API Documentation
     */
    java.util.concurrent.Future listSchemaMappingsAsync(ListSchemaMappingsRequest listSchemaMappingsRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Displays the tags associated with an AWS Entity Resolution resource. In Entity Resolution,
     * SchemaMapping, and MatchingWorkflow can be tagged.
     * 
     * 
     * @param listTagsForResourceRequest
     * @return A Java Future containing the result of the ListTagsForResource operation returned by the service.
     * @sample AWSEntityResolutionAsync.ListTagsForResource
     * @see AWS API Documentation
     */
    java.util.concurrent.Future listTagsForResourceAsync(ListTagsForResourceRequest listTagsForResourceRequest);
    /**
     * 
     * Displays the tags associated with an AWS Entity Resolution resource. In Entity Resolution,
     * SchemaMapping, and MatchingWorkflow can be tagged.
     * 
     * 
     * @param listTagsForResourceRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the ListTagsForResource operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.ListTagsForResource
     * @see AWS API Documentation
     */
    java.util.concurrent.Future listTagsForResourceAsync(ListTagsForResourceRequest listTagsForResourceRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Starts the MatchingJob of a workflow. The workflow must have previously been created using the
     * CreateMatchingWorkflow endpoint.
     * 
     * 
     * @param startMatchingJobRequest
     * @return A Java Future containing the result of the StartMatchingJob operation returned by the service.
     * @sample AWSEntityResolutionAsync.StartMatchingJob
     * @see AWS API Documentation
     */
    java.util.concurrent.Future startMatchingJobAsync(StartMatchingJobRequest startMatchingJobRequest);
    /**
     * 
     * Starts the MatchingJob of a workflow. The workflow must have previously been created using the
     * CreateMatchingWorkflow endpoint.
     * 
     * 
     * @param startMatchingJobRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the StartMatchingJob operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.StartMatchingJob
     * @see AWS API Documentation
     */
    java.util.concurrent.Future startMatchingJobAsync(StartMatchingJobRequest startMatchingJobRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Assigns one or more tags (key-value pairs) to the specified AWS Entity Resolution resource. Tags can help you
     * organize and categorize your resources. You can also use them to scope user permissions by granting a user
     * permission to access or change only resources with certain tag values. In Entity Resolution,
     * SchemaMapping, and MatchingWorkflow can be tagged. Tags don't have any semantic meaning
     * to AWS and are interpreted strictly as strings of characters. You can use the TagResource action
     * with a resource that already has tags. If you specify a new tag key, this tag is appended to the list of tags
     * associated with the resource. If you specify a tag key that is already associated with the resource, the new tag
     * value that you specify replaces the previous value for that tag.
     * 
     * 
     * @param tagResourceRequest
     * @return A Java Future containing the result of the TagResource operation returned by the service.
     * @sample AWSEntityResolutionAsync.TagResource
     * @see AWS
     *      API Documentation
     */
    java.util.concurrent.Future tagResourceAsync(TagResourceRequest tagResourceRequest);
    /**
     * 
     * Assigns one or more tags (key-value pairs) to the specified AWS Entity Resolution resource. Tags can help you
     * organize and categorize your resources. You can also use them to scope user permissions by granting a user
     * permission to access or change only resources with certain tag values. In Entity Resolution,
     * SchemaMapping, and MatchingWorkflow can be tagged. Tags don't have any semantic meaning
     * to AWS and are interpreted strictly as strings of characters. You can use the TagResource action
     * with a resource that already has tags. If you specify a new tag key, this tag is appended to the list of tags
     * associated with the resource. If you specify a tag key that is already associated with the resource, the new tag
     * value that you specify replaces the previous value for that tag.
     * 
     * 
     * @param tagResourceRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the TagResource operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.TagResource
     * @see AWS
     *      API Documentation
     */
    java.util.concurrent.Future tagResourceAsync(TagResourceRequest tagResourceRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Removes one or more tags from the specified AWS Entity Resolution resource. In Entity Resolution,
     * SchemaMapping, and MatchingWorkflow can be tagged.
     * 
     * 
     * @param untagResourceRequest
     * @return A Java Future containing the result of the UntagResource operation returned by the service.
     * @sample AWSEntityResolutionAsync.UntagResource
     * @see AWS
     *      API Documentation
     */
    java.util.concurrent.Future untagResourceAsync(UntagResourceRequest untagResourceRequest);
    /**
     * 
     * Removes one or more tags from the specified AWS Entity Resolution resource. In Entity Resolution,
     * SchemaMapping, and MatchingWorkflow can be tagged.
     * 
     * 
     * @param untagResourceRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the UntagResource operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.UntagResource
     * @see AWS
     *      API Documentation
     */
    java.util.concurrent.Future untagResourceAsync(UntagResourceRequest untagResourceRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
    /**
     * 
     * Updates an existing MatchingWorkflow. This method is identical to
     * CreateMatchingWorkflow, except it uses an HTTP PUT request instead of a
     * POST request, and the MatchingWorkflow must already exist for the method to succeed.
     * 
     * 
     * @param updateMatchingWorkflowRequest
     * @return A Java Future containing the result of the UpdateMatchingWorkflow operation returned by the service.
     * @sample AWSEntityResolutionAsync.UpdateMatchingWorkflow
     * @see AWS API Documentation
     */
    java.util.concurrent.Future updateMatchingWorkflowAsync(UpdateMatchingWorkflowRequest updateMatchingWorkflowRequest);
    /**
     * 
     * Updates an existing MatchingWorkflow. This method is identical to
     * CreateMatchingWorkflow, except it uses an HTTP PUT request instead of a
     * POST request, and the MatchingWorkflow must already exist for the method to succeed.
     * 
     * 
     * @param updateMatchingWorkflowRequest
     * @param asyncHandler
     *        Asynchronous callback handler for events in the lifecycle of the request. Users can provide an
     *        implementation of the callback methods in this interface to receive notification of successful or
     *        unsuccessful completion of the operation.
     * @return A Java Future containing the result of the UpdateMatchingWorkflow operation returned by the service.
     * @sample AWSEntityResolutionAsyncHandler.UpdateMatchingWorkflow
     * @see AWS API Documentation
     */
    java.util.concurrent.Future updateMatchingWorkflowAsync(UpdateMatchingWorkflowRequest updateMatchingWorkflowRequest,
            com.amazonaws.handlers.AsyncHandler asyncHandler);
}