using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Amazon.Runtime.SharedInterfaces
{
    /// 
    /// ICoreAmazonSQS is not meant to use directly. It defines SQS with basic .NET types
    /// and allows other services to be able to use SQS as a runtime dependency. This interface
    /// is implemented by the AmazonSQSClient defined in the SQS assembly.
    /// 
    public interface ICoreAmazonSQS
    {
#if BCL
        /// 
        /// 
        /// This method is used internally to access the Amazon SQS service within other service assemblies.
        /// Please use AmazonSQSClient to access Amazon SQS instead.
        /// 
        /// Get the attributes for the queue identified by the queue URL.
        /// 
        /// The queue URL to get attributes for.
        /// The attributes for the queue.
        Dictionary GetAttributes(string queueUrl);
#endif
#if AWS_ASYNC_API
        /// 
        /// Get the attributes for the queue identified by the queue URL asynchronously.
        /// 
        /// The queue URL to get attributes for.
        /// A Task containing the result of a dictionary of attributes for the queue.
        System.Threading.Tasks.Task> GetAttributesAsync(string queueUrl);
#endif
#if BCL
        /// 
        /// 
        /// This method is used internally to access the Amazon SQS service within other service assemblies.
        /// Please use AmazonSQSClient to access Amazon SQS instead.
        /// 
        /// Set the attributes on the queue identified by the queue URL.
        /// 
        /// The queue URL to set the attributues.
        /// The attributes to set.
        void SetAttributes(string queueUrl, Dictionary attributes);
#endif
#if AWS_ASYNC_API
        /// 
        /// Set the attributes on the queue identified by the queue URL asynchronously.
        /// 
        /// The queue URL to set the attributues.
        /// The attributes to set.
        /// A Task
        System.Threading.Tasks.Task SetAttributesAsync(string queueUrl, Dictionary attributes);
#endif
    }
}