// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.

package tsptest.armstreamstyleserialization.models;

import java.util.List;
import java.util.Map;
import tsptest.armstreamstyleserialization.fluent.models.SalmonInner;

/**
 * An immutable client-side representation of Salmon.
 */
public interface Salmon {
    /**
     * Gets the age property: The age property.
     * 
     * @return the age value.
     */
    int age();

    /**
     * Gets the dna property: The dna property.
     * 
     * @return the dna value.
     */
    String dna();

    /**
     * Gets the length property: The length property.
     * 
     * @return the length value.
     */
    double length();

    /**
     * Gets the patten property: The patten property.
     * 
     * @return the patten value.
     */
    String patten();

    /**
     * Gets the requiredString property: The requiredString property.
     * 
     * @return the requiredString value.
     */
    String requiredString();

    /**
     * Gets the lengthAnotherPropertiesLength property: The length property.
     * 
     * @return the lengthAnotherPropertiesLength value.
     */
    double lengthAnotherPropertiesLength();

    /**
     * Gets the pattenAnotherPropertiesPatten property: The patten property.
     * 
     * @return the pattenAnotherPropertiesPatten value.
     */
    String pattenAnotherPropertiesPatten();

    /**
     * Gets the requiredStringAnotherPropertiesRequiredString property: The requiredString property.
     * 
     * @return the requiredStringAnotherPropertiesRequiredString value.
     */
    String requiredStringAnotherPropertiesRequiredString();

    /**
     * Gets the kind property: Discriminator property for Fish.
     * 
     * @return the kind value.
     */
    String kind();

    /**
     * Gets the friends property: The friends property.
     * 
     * @return the friends value.
     */
    List<Fish> friends();

    /**
     * Gets the hate property: The hate property.
     * 
     * @return the hate value.
     */
    Map<String, Fish> hate();

    /**
     * Gets the partner property: The partner property.
     * 
     * @return the partner value.
     */
    Fish partner();

    /**
     * Gets the inner tsptest.armstreamstyleserialization.fluent.models.SalmonInner object.
     * 
     * @return the inner object.
     */
    SalmonInner innerModel();
}
