##
#    This code was generated by
#    ___ _ _ _ _ _    _ ____    ____ ____ _    ____ ____ _  _ ____ ____ ____ ___ __   __
#     |  | | | | |    | |  | __ |  | |__| | __ | __ |___ |\ | |___ |__/ |__|  | |  | |__/
#     |  |_|_| | |___ | |__|    |__| |  | |    |__] |___ | \| |___ |  \ |  |  | |__| |  \
#
#    Twilio - Supersim
#    This is the public Twilio REST API.
#
#    NOTE: This class is auto generated by OpenAPI Generator.
#    https://openapi-generator.tech
#    Do not edit the class manually.
#

module Twilio
    module REST
        class Supersim
            class V1 < Version
                ##
                # Initialize the V1 version of Supersim
                def initialize(domain)
                    super
                    @version = 'v1'
                    @esim_profiles = nil
                    @fleets = nil
                    @ip_commands = nil
                    @networks = nil
                    @network_access_profiles = nil
                    @settings_updates = nil
                    @sims = nil
                    @sms_commands = nil
                    @usage_records = nil
                end

                ##
                # @param [String] sid The SID of the eSIM Profile resource to fetch.
                # @return [Twilio::REST::Supersim::V1::EsimProfileContext] if sid was passed.
                # @return [Twilio::REST::Supersim::V1::EsimProfileList]
                def esim_profiles(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @esim_profiles ||= EsimProfileList.new self
                    else
                        EsimProfileContext.new(self, sid)
                    end
                end
                ##
                # @param [String] sid The SID of the Fleet resource to fetch.
                # @return [Twilio::REST::Supersim::V1::FleetContext] if sid was passed.
                # @return [Twilio::REST::Supersim::V1::FleetList]
                def fleets(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @fleets ||= FleetList.new self
                    else
                        FleetContext.new(self, sid)
                    end
                end
                ##
                # @param [String] sid The SID of the IP Command resource to fetch.
                # @return [Twilio::REST::Supersim::V1::IpCommandContext] if sid was passed.
                # @return [Twilio::REST::Supersim::V1::IpCommandList]
                def ip_commands(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @ip_commands ||= IpCommandList.new self
                    else
                        IpCommandContext.new(self, sid)
                    end
                end
                ##
                # @param [String] sid The SID of the Network resource to fetch.
                # @return [Twilio::REST::Supersim::V1::NetworkContext] if sid was passed.
                # @return [Twilio::REST::Supersim::V1::NetworkList]
                def networks(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @networks ||= NetworkList.new self
                    else
                        NetworkContext.new(self, sid)
                    end
                end
                ##
                # @param [String] sid The SID of the Network Access Profile resource to fetch.
                # @return [Twilio::REST::Supersim::V1::NetworkAccessProfileContext] if sid was passed.
                # @return [Twilio::REST::Supersim::V1::NetworkAccessProfileList]
                def network_access_profiles(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @network_access_profiles ||= NetworkAccessProfileList.new self
                    else
                        NetworkAccessProfileContext.new(self, sid)
                    end
                end
                ##
                # @return [Twilio::REST::Supersim::V1::SettingsUpdateList]
                def settings_updates
                    @settings_updates ||= SettingsUpdateList.new self
                end
                ##
                # @param [String] sid The SID of the Sim resource to fetch.
                # @return [Twilio::REST::Supersim::V1::SimContext] if sid was passed.
                # @return [Twilio::REST::Supersim::V1::SimList]
                def sims(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @sims ||= SimList.new self
                    else
                        SimContext.new(self, sid)
                    end
                end
                ##
                # @param [String] sid The SID of the SMS Command resource to fetch.
                # @return [Twilio::REST::Supersim::V1::SmsCommandContext] if sid was passed.
                # @return [Twilio::REST::Supersim::V1::SmsCommandList]
                def sms_commands(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @sms_commands ||= SmsCommandList.new self
                    else
                        SmsCommandContext.new(self, sid)
                    end
                end
                ##
                # @return [Twilio::REST::Supersim::V1::UsageRecordList]
                def usage_records
                    @usage_records ||= UsageRecordList.new self
                end
                ##
                # Provide a user friendly representation
                def to_s
                    '<Twilio::REST::Supersim::V1>';
                end
            end
        end
    end
end
