using System;
using System.Collections.Generic;
namespace Discord.Interactions.Builders
{
///
/// Represent a command builder for creating .
///
public interface IParameterBuilder
{
///
/// Gets the parent command of this parameter.
///
ICommandBuilder Command { get; }
///
/// Gets the name of this parameter.
///
string Name { get; }
///
/// Gets the type of this parameter.
///
Type ParameterType { get; }
///
/// Gets whether this parameter is required.
///
bool IsRequired { get; }
///
/// Gets whether this parameter is .
///
bool IsParameterArray { get; }
///
/// Gets the default value of this parameter.
///
object DefaultValue { get; }
///
/// Gets a collection of the attributes of this command.
///
IReadOnlyCollection Attributes { get; }
///
/// Gets a collection of the preconditions of this command.
///
IReadOnlyCollection Preconditions { get; }
///
/// Sets .
///
/// New value of the .
///
/// The builder instance.
///
IParameterBuilder WithName(string name);
///
/// Sets .
///
/// New value of the .
///
/// The builder instance.
///
IParameterBuilder SetParameterType(Type type);
///
/// Sets .
///
/// New value of the .
///
/// The builder instance.
///
IParameterBuilder SetRequired(bool isRequired);
///
/// Sets .
///
/// New value of the .
///
/// The builder instance.
///
IParameterBuilder SetDefaultValue(object defaultValue);
///
/// Adds attributes to .
///
/// New attributes to be added to .
///
/// The builder instance.
///
IParameterBuilder AddAttributes(params Attribute[] attributes);
///
/// Adds preconditions to .
///
/// New attributes to be added to .
///
/// The builder instance.
///
IParameterBuilder AddPreconditions(params ParameterPreconditionAttribute[] preconditions);
}
}