# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.5.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.

package libdnf5::base;
use base qw(Exporter);
use base qw(DynaLoader);
require libdnf5::advisory;
require libdnf5::common;
require libdnf5::exception;
require libdnf5::comps;
require libdnf5::repo;
require libdnf5::conf;
require libdnf5::logger;
require libdnf5::transaction;
require libdnf5::plugin;
require libdnf5::rpm;
package libdnf5::basec;
bootstrap libdnf5::base;
package libdnf5::base;
@EXPORT = qw();

# ---------- BASE METHODS -------------

package libdnf5::base;

sub TIEHASH {
    my ($classname,$obj) = @_;
    return bless $obj, $classname;
}

sub CLEAR { }

sub FIRSTKEY { }

sub NEXTKEY { }

sub FETCH {
    my ($self,$field) = @_;
    my $member_func = "swig_${field}_get";
    $self->$member_func();
}

sub STORE {
    my ($self,$field,$newval) = @_;
    my $member_func = "swig_${field}_set";
    $self->$member_func($newval);
}

sub this {
    my $ptr = shift;
    return tied(%$ptr);
}


# ------- FUNCTION WRAPPERS --------

package libdnf5::base;

*goal_action_to_string = *libdnf5::basec::goal_action_to_string;
*goal_action_is_replay = *libdnf5::basec::goal_action_is_replay;
*__or__ = *libdnf5::basec::__or__;
*__and__ = *libdnf5::basec::__and__;

############# Class : libdnf5::base::BaseWeakPtr ##############

package libdnf5::base::BaseWeakPtr;
use overload
    "!=" => sub { $_[0]->__ne__($_[1])},
    ">=" => sub { $_[0]->__ge__($_[1])},
    "==" => sub { $_[0]->__eq__($_[1])},
    "<=" => sub { $_[0]->__le__($_[1])},
    ">" => sub { $_[0]->__gt__($_[1])},
    "<" => sub { $_[0]->__lt__($_[1])},
    "=" => sub { my $class = ref($_[0]); $class->new($_[0]) },
    "fallback" => 1;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_BaseWeakPtr(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_BaseWeakPtr($self);
        delete $OWNER{$self};
    }
}

*__deref__ = *libdnf5::basec::BaseWeakPtr___deref__;
*get = *libdnf5::basec::BaseWeakPtr_get;
*is_valid = *libdnf5::basec::BaseWeakPtr_is_valid;
*has_same_guard = *libdnf5::basec::BaseWeakPtr_has_same_guard;
*__ref__ = *libdnf5::basec::BaseWeakPtr___ref__;
*__eq__ = *libdnf5::basec::BaseWeakPtr___eq__;
*__ne__ = *libdnf5::basec::BaseWeakPtr___ne__;
*__lt__ = *libdnf5::basec::BaseWeakPtr___lt__;
*__gt__ = *libdnf5::basec::BaseWeakPtr___gt__;
*__le__ = *libdnf5::basec::BaseWeakPtr___le__;
*__ge__ = *libdnf5::basec::BaseWeakPtr___ge__;
*set_download_callbacks = *libdnf5::basec::BaseWeakPtr_set_download_callbacks;
*get_download_callbacks = *libdnf5::basec::BaseWeakPtr_get_download_callbacks;
*set_interaction_callbacks = *libdnf5::basec::BaseWeakPtr_set_interaction_callbacks;
*lock = *libdnf5::basec::BaseWeakPtr_lock;
*unlock = *libdnf5::basec::BaseWeakPtr_unlock;
*get_locked_base = *libdnf5::basec::BaseWeakPtr_get_locked_base;
*load_config = *libdnf5::basec::BaseWeakPtr_load_config;
*get_config = *libdnf5::basec::BaseWeakPtr_get_config;
*get_logger = *libdnf5::basec::BaseWeakPtr_get_logger;
*get_comps_sack = *libdnf5::basec::BaseWeakPtr_get_comps_sack;
*get_repo_sack = *libdnf5::basec::BaseWeakPtr_get_repo_sack;
*get_rpm_package_sack = *libdnf5::basec::BaseWeakPtr_get_rpm_package_sack;
*get_module_sack = *libdnf5::basec::BaseWeakPtr_get_module_sack;
*enable_disable_plugins = *libdnf5::basec::BaseWeakPtr_enable_disable_plugins;
*get_plugins_info = *libdnf5::basec::BaseWeakPtr_get_plugins_info;
*setup = *libdnf5::basec::BaseWeakPtr_setup;
*lock_system_repo = *libdnf5::basec::BaseWeakPtr_lock_system_repo;
*unlock_system_repo = *libdnf5::basec::BaseWeakPtr_unlock_system_repo;
*get_system_repo_lock = *libdnf5::basec::BaseWeakPtr_get_system_repo_lock;
*is_initialized = *libdnf5::basec::BaseWeakPtr_is_initialized;
*notify_repos_configured = *libdnf5::basec::BaseWeakPtr_notify_repos_configured;
*are_repos_configured = *libdnf5::basec::BaseWeakPtr_are_repos_configured;
*get_transaction_history = *libdnf5::basec::BaseWeakPtr_get_transaction_history;
*get_vars = *libdnf5::basec::BaseWeakPtr_get_vars;
*get_weak_ptr = *libdnf5::basec::BaseWeakPtr_get_weak_ptr;
*load_plugin_config = *libdnf5::basec::BaseWeakPtr_load_plugin_config;
*add_plugin = *libdnf5::basec::BaseWeakPtr_add_plugin;
*message = *libdnf5::basec::BaseWeakPtr_message;
*confirm = *libdnf5::basec::BaseWeakPtr_confirm;
*choice = *libdnf5::basec::BaseWeakPtr_choice;
*input_text = *libdnf5::basec::BaseWeakPtr_input_text;
*progress = *libdnf5::basec::BaseWeakPtr_progress;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::VarsWeakPtr ##############

package libdnf5::base::VarsWeakPtr;
use overload
    "!=" => sub { $_[0]->__ne__($_[1])},
    ">=" => sub { $_[0]->__ge__($_[1])},
    "==" => sub { $_[0]->__eq__($_[1])},
    "<=" => sub { $_[0]->__le__($_[1])},
    ">" => sub { $_[0]->__gt__($_[1])},
    "<" => sub { $_[0]->__lt__($_[1])},
    "=" => sub { my $class = ref($_[0]); $class->new($_[0]) },
    "fallback" => 1;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_VarsWeakPtr(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_VarsWeakPtr($self);
        delete $OWNER{$self};
    }
}

*__deref__ = *libdnf5::basec::VarsWeakPtr___deref__;
*get = *libdnf5::basec::VarsWeakPtr_get;
*is_valid = *libdnf5::basec::VarsWeakPtr_is_valid;
*has_same_guard = *libdnf5::basec::VarsWeakPtr_has_same_guard;
*__ref__ = *libdnf5::basec::VarsWeakPtr___ref__;
*__eq__ = *libdnf5::basec::VarsWeakPtr___eq__;
*__ne__ = *libdnf5::basec::VarsWeakPtr___ne__;
*__lt__ = *libdnf5::basec::VarsWeakPtr___lt__;
*__gt__ = *libdnf5::basec::VarsWeakPtr___gt__;
*__le__ = *libdnf5::basec::VarsWeakPtr___le__;
*__ge__ = *libdnf5::basec::VarsWeakPtr___ge__;
*substitute = *libdnf5::basec::VarsWeakPtr_substitute;
*get_variables = *libdnf5::basec::VarsWeakPtr_get_variables;
*set = *libdnf5::basec::VarsWeakPtr_set;
*unset = *libdnf5::basec::VarsWeakPtr_unset;
*is_read_only = *libdnf5::basec::VarsWeakPtr_is_read_only;
*contains = *libdnf5::basec::VarsWeakPtr_contains;
*get_value = *libdnf5::basec::VarsWeakPtr_get_value;
*detect_release = *libdnf5::basec::VarsWeakPtr_detect_release;
*detect_releasevers = *libdnf5::basec::VarsWeakPtr_detect_releasevers;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::VectorPluginInfo ##############

package libdnf5::base::VectorPluginInfo;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_VectorPluginInfo(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::basec::VectorPluginInfo_size;
*empty = *libdnf5::basec::VectorPluginInfo_empty;
*clear = *libdnf5::basec::VectorPluginInfo_clear;
*get = *libdnf5::basec::VectorPluginInfo_get;
*set = *libdnf5::basec::VectorPluginInfo_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_VectorPluginInfo($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::TextValidatorCallback ##############

package libdnf5::base::TextValidatorCallback;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = $_[0];
    my $self = libdnf5::basec::new_TextValidatorCallback(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_TextValidatorCallback($self);
        delete $OWNER{$self};
    }
}

*validate = *libdnf5::basec::TextValidatorCallback_validate;
sub DISOWN {
    my $self = shift;
    libdnf5::basec::disown_TextValidatorCallback($self);
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}

sub FETCH {
    my ($self,$field) = @_;
    my $member_func = "swig_${field}_get";
    if (not $self->can($member_func)) {
        my $h = libdnf5::basec::swig_get_attr_TextValidatorCallback($self);
        return $h->{$field} if $h;
    }
    return $self->$member_func;
}

sub STORE {
    my ($self,$field,$newval) = @_;
    my $member_func = "swig_${field}_set";
    if (not $self->can($member_func)) {
        my $h = libdnf5::basec::swig_get_attr_TextValidatorCallback($self);
        return $h->{$field} = $newval if $h;
    }
    return $self->$member_func($newval);
}

############# Class : libdnf5::base::TextValidator ##############

package libdnf5::base::TextValidator;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
*validate = *libdnf5::basec::TextValidator_validate;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::InteractionCallbacks ##############

package libdnf5::base::InteractionCallbacks;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
*MessageLevel_ERROR = *libdnf5::basec::InteractionCallbacks_MessageLevel_ERROR;
*MessageLevel_WARNING = *libdnf5::basec::InteractionCallbacks_MessageLevel_WARNING;
*MessageLevel_NOTICE = *libdnf5::basec::InteractionCallbacks_MessageLevel_NOTICE;
*MessageLevel_INFO = *libdnf5::basec::InteractionCallbacks_MessageLevel_INFO;
*ProgressState_NEW = *libdnf5::basec::InteractionCallbacks_ProgressState_NEW;
*ProgressState_UPDATE = *libdnf5::basec::InteractionCallbacks_ProgressState_UPDATE;
*ProgressState_END_OK = *libdnf5::basec::InteractionCallbacks_ProgressState_END_OK;
*ProgressState_END_ERROR = *libdnf5::basec::InteractionCallbacks_ProgressState_END_ERROR;
*ProgressState_INFO = *libdnf5::basec::InteractionCallbacks_ProgressState_INFO;
*ProgressState_WARNING = *libdnf5::basec::InteractionCallbacks_ProgressState_WARNING;
*ProgressState_ERROR = *libdnf5::basec::InteractionCallbacks_ProgressState_ERROR;
sub new {
    my $pkg = $_[0];
    my $self = libdnf5::basec::new_InteractionCallbacks(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_InteractionCallbacks($self);
        delete $OWNER{$self};
    }
}

*message = *libdnf5::basec::InteractionCallbacks_message;
*confirm = *libdnf5::basec::InteractionCallbacks_confirm;
*choice = *libdnf5::basec::InteractionCallbacks_choice;
*input_text = *libdnf5::basec::InteractionCallbacks_input_text;
*progress = *libdnf5::basec::InteractionCallbacks_progress;
sub DISOWN {
    my $self = shift;
    libdnf5::basec::disown_InteractionCallbacks($self);
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}

sub FETCH {
    my ($self,$field) = @_;
    my $member_func = "swig_${field}_get";
    if (not $self->can($member_func)) {
        my $h = libdnf5::basec::swig_get_attr_InteractionCallbacks($self);
        return $h->{$field} if $h;
    }
    return $self->$member_func;
}

sub STORE {
    my ($self,$field,$newval) = @_;
    my $member_func = "swig_${field}_set";
    if (not $self->can($member_func)) {
        my $h = libdnf5::basec::swig_get_attr_InteractionCallbacks($self);
        return $h->{$field} = $newval if $h;
    }
    return $self->$member_func($newval);
}

############# Class : libdnf5::base::InteractionCallbacksUniquePtr ##############

package libdnf5::base::InteractionCallbacksUniquePtr;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_InteractionCallbacksUniquePtr(@_);
    bless $self, $pkg if defined($self);
}

*__deref__ = *libdnf5::basec::InteractionCallbacksUniquePtr___deref__;
*release = *libdnf5::basec::InteractionCallbacksUniquePtr_release;
*reset = *libdnf5::basec::InteractionCallbacksUniquePtr_reset;
*swap = *libdnf5::basec::InteractionCallbacksUniquePtr_swap;
*get = *libdnf5::basec::InteractionCallbacksUniquePtr_get;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_InteractionCallbacksUniquePtr($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::Base ##############

package libdnf5::base::Base;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_Base(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_Base($self);
        delete $OWNER{$self};
    }
}

*set_download_callbacks = *libdnf5::basec::Base_set_download_callbacks;
*get_download_callbacks = *libdnf5::basec::Base_get_download_callbacks;
*set_interaction_callbacks = *libdnf5::basec::Base_set_interaction_callbacks;
*lock = *libdnf5::basec::Base_lock;
*unlock = *libdnf5::basec::Base_unlock;
*get_locked_base = *libdnf5::basec::Base_get_locked_base;
*load_config = *libdnf5::basec::Base_load_config;
*get_config = *libdnf5::basec::Base_get_config;
*get_logger = *libdnf5::basec::Base_get_logger;
*get_comps_sack = *libdnf5::basec::Base_get_comps_sack;
*get_repo_sack = *libdnf5::basec::Base_get_repo_sack;
*get_rpm_package_sack = *libdnf5::basec::Base_get_rpm_package_sack;
*get_module_sack = *libdnf5::basec::Base_get_module_sack;
*enable_disable_plugins = *libdnf5::basec::Base_enable_disable_plugins;
*get_plugins_info = *libdnf5::basec::Base_get_plugins_info;
*setup = *libdnf5::basec::Base_setup;
*lock_system_repo = *libdnf5::basec::Base_lock_system_repo;
*unlock_system_repo = *libdnf5::basec::Base_unlock_system_repo;
*get_system_repo_lock = *libdnf5::basec::Base_get_system_repo_lock;
*is_initialized = *libdnf5::basec::Base_is_initialized;
*notify_repos_configured = *libdnf5::basec::Base_notify_repos_configured;
*are_repos_configured = *libdnf5::basec::Base_are_repos_configured;
*get_transaction_history = *libdnf5::basec::Base_get_transaction_history;
*get_vars = *libdnf5::basec::Base_get_vars;
*get_weak_ptr = *libdnf5::basec::Base_get_weak_ptr;
*load_plugin_config = *libdnf5::basec::Base_load_plugin_config;
*add_plugin = *libdnf5::basec::Base_add_plugin;
*message = *libdnf5::basec::Base_message;
*confirm = *libdnf5::basec::Base_confirm;
*choice = *libdnf5::basec::Base_choice;
*input_text = *libdnf5::basec::Base_input_text;
*progress = *libdnf5::basec::Base_progress;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::SolverProblems ##############

package libdnf5::base::SolverProblems;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_SolverProblems(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_SolverProblems($self);
        delete $OWNER{$self};
    }
}

*get_problems = *libdnf5::basec::SolverProblems_get_problems;
*to_string = *libdnf5::basec::SolverProblems_to_string;
*problem_to_string = *libdnf5::basec::SolverProblems_problem_to_string;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::LogEvent ##############

package libdnf5::base::LogEvent;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_LogEvent($self);
        delete $OWNER{$self};
    }
}

sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_LogEvent(@_);
    bless $self, $pkg if defined($self);
}

*get_action = *libdnf5::basec::LogEvent_get_action;
*get_problem = *libdnf5::basec::LogEvent_get_problem;
*get_additional_data = *libdnf5::basec::LogEvent_get_additional_data;
*get_job_settings = *libdnf5::basec::LogEvent_get_job_settings;
*get_spec = *libdnf5::basec::LogEvent_get_spec;
*get_solver_problems = *libdnf5::basec::LogEvent_get_solver_problems;
*to_string = *libdnf5::basec::LogEvent_to_string;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::ActiveTransactionInfo ##############

package libdnf5::base::ActiveTransactionInfo;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_ActiveTransactionInfo(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_ActiveTransactionInfo($self);
        delete $OWNER{$self};
    }
}

*get_description = *libdnf5::basec::ActiveTransactionInfo_get_description;
*get_comment = *libdnf5::basec::ActiveTransactionInfo_get_comment;
*get_pid = *libdnf5::basec::ActiveTransactionInfo_get_pid;
*get_start_time = *libdnf5::basec::ActiveTransactionInfo_get_start_time;
*set_description = *libdnf5::basec::ActiveTransactionInfo_set_description;
*set_comment = *libdnf5::basec::ActiveTransactionInfo_set_comment;
*set_pid = *libdnf5::basec::ActiveTransactionInfo_set_pid;
*set_start_time = *libdnf5::basec::ActiveTransactionInfo_set_start_time;
*to_toml = *libdnf5::basec::ActiveTransactionInfo_to_toml;
*from_toml = *libdnf5::basec::ActiveTransactionInfo_from_toml;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::Transaction ##############

package libdnf5::base::Transaction;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
*TransactionRunResult_SUCCESS = *libdnf5::basec::Transaction_TransactionRunResult_SUCCESS;
*TransactionRunResult_ERROR_RERUN = *libdnf5::basec::Transaction_TransactionRunResult_ERROR_RERUN;
*TransactionRunResult_ERROR_RESOLVE = *libdnf5::basec::Transaction_TransactionRunResult_ERROR_RESOLVE;
*TransactionRunResult_ERROR_LOCK = *libdnf5::basec::Transaction_TransactionRunResult_ERROR_LOCK;
*TransactionRunResult_ERROR_CHECK = *libdnf5::basec::Transaction_TransactionRunResult_ERROR_CHECK;
*TransactionRunResult_ERROR_RPM_RUN = *libdnf5::basec::Transaction_TransactionRunResult_ERROR_RPM_RUN;
*TransactionRunResult_ERROR_GPG_CHECK = *libdnf5::basec::Transaction_TransactionRunResult_ERROR_GPG_CHECK;
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_Transaction(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_Transaction($self);
        delete $OWNER{$self};
    }
}

*get_problems = *libdnf5::basec::Transaction_get_problems;
*get_resolve_logs = *libdnf5::basec::Transaction_get_resolve_logs;
*get_resolve_logs_as_strings = *libdnf5::basec::Transaction_get_resolve_logs_as_strings;
*get_transaction_packages = *libdnf5::basec::Transaction_get_transaction_packages;
*get_transaction_packages_count = *libdnf5::basec::Transaction_get_transaction_packages_count;
*get_transaction_groups = *libdnf5::basec::Transaction_get_transaction_groups;
*get_transaction_modules = *libdnf5::basec::Transaction_get_transaction_modules;
*get_transaction_environments = *libdnf5::basec::Transaction_get_transaction_environments;
*get_broken_dependency_packages = *libdnf5::basec::Transaction_get_broken_dependency_packages;
*get_conflicting_packages = *libdnf5::basec::Transaction_get_conflicting_packages;
*get_vendor_change_skipped_packages = *libdnf5::basec::Transaction_get_vendor_change_skipped_packages;
*empty = *libdnf5::basec::Transaction_empty;
*download = *libdnf5::basec::Transaction_download;
*test = *libdnf5::basec::Transaction_test;
*run = *libdnf5::basec::Transaction_run;
*set_callbacks = *libdnf5::basec::Transaction_set_callbacks;
*set_description = *libdnf5::basec::Transaction_set_description;
*set_user_id = *libdnf5::basec::Transaction_set_user_id;
*set_comment = *libdnf5::basec::Transaction_set_comment;
*set_persistence = *libdnf5::basec::Transaction_set_persistence;
*transaction_result_to_string = *libdnf5::basec::Transaction_transaction_result_to_string;
*get_transaction_problems = *libdnf5::basec::Transaction_get_transaction_problems;
*check_gpg_signatures = *libdnf5::basec::Transaction_check_gpg_signatures;
*get_gpg_signature_problems = *libdnf5::basec::Transaction_get_gpg_signature_problems;
*serialize = *libdnf5::basec::Transaction_serialize;
*store_comps = *libdnf5::basec::Transaction_store_comps;
*set_download_local_pkgs = *libdnf5::basec::Transaction_set_download_local_pkgs;
*get_download_local_pkgs = *libdnf5::basec::Transaction_get_download_local_pkgs;
*get_last_script_output = *libdnf5::basec::Transaction_get_last_script_output;
*get_rpm_messages = *libdnf5::basec::Transaction_get_rpm_messages;
*get_concurrent_transaction = *libdnf5::basec::Transaction_get_concurrent_transaction;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::VectorLogEvent ##############

package libdnf5::base::VectorLogEvent;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_VectorLogEvent(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::basec::VectorLogEvent_size;
*empty = *libdnf5::basec::VectorLogEvent_empty;
*clear = *libdnf5::basec::VectorLogEvent_clear;
*push = *libdnf5::basec::VectorLogEvent_push;
*pop = *libdnf5::basec::VectorLogEvent_pop;
*get = *libdnf5::basec::VectorLogEvent_get;
*set = *libdnf5::basec::VectorLogEvent_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_VectorLogEvent($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::TransactionEnvironment ##############

package libdnf5::base::TransactionEnvironment;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
*get_environment = *libdnf5::basec::TransactionEnvironment_get_environment;
*get_action = *libdnf5::basec::TransactionEnvironment_get_action;
*get_state = *libdnf5::basec::TransactionEnvironment_get_state;
*get_reason = *libdnf5::basec::TransactionEnvironment_get_reason;
*get_with_optional = *libdnf5::basec::TransactionEnvironment_get_with_optional;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_TransactionEnvironment($self);
        delete $OWNER{$self};
    }
}

sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_TransactionEnvironment(@_);
    bless $self, $pkg if defined($self);
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::TransactionGroup ##############

package libdnf5::base::TransactionGroup;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
*get_group = *libdnf5::basec::TransactionGroup_get_group;
*get_action = *libdnf5::basec::TransactionGroup_get_action;
*get_state = *libdnf5::basec::TransactionGroup_get_state;
*get_reason = *libdnf5::basec::TransactionGroup_get_reason;
*get_package_types = *libdnf5::basec::TransactionGroup_get_package_types;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_TransactionGroup($self);
        delete $OWNER{$self};
    }
}

sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_TransactionGroup(@_);
    bless $self, $pkg if defined($self);
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::TransactionPackage ##############

package libdnf5::base::TransactionPackage;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
*get_package = *libdnf5::basec::TransactionPackage_get_package;
*get_action = *libdnf5::basec::TransactionPackage_get_action;
*get_state = *libdnf5::basec::TransactionPackage_get_state;
*get_reason = *libdnf5::basec::TransactionPackage_get_reason;
*get_replaces = *libdnf5::basec::TransactionPackage_get_replaces;
*get_replaced_by = *libdnf5::basec::TransactionPackage_get_replaced_by;
*get_reason_change_group_id = *libdnf5::basec::TransactionPackage_get_reason_change_group_id;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_TransactionPackage($self);
        delete $OWNER{$self};
    }
}

sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_TransactionPackage(@_);
    bless $self, $pkg if defined($self);
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::VectorBaseTransactionEnvironment ##############

package libdnf5::base::VectorBaseTransactionEnvironment;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_VectorBaseTransactionEnvironment(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::basec::VectorBaseTransactionEnvironment_size;
*empty = *libdnf5::basec::VectorBaseTransactionEnvironment_empty;
*clear = *libdnf5::basec::VectorBaseTransactionEnvironment_clear;
*push = *libdnf5::basec::VectorBaseTransactionEnvironment_push;
*pop = *libdnf5::basec::VectorBaseTransactionEnvironment_pop;
*get = *libdnf5::basec::VectorBaseTransactionEnvironment_get;
*set = *libdnf5::basec::VectorBaseTransactionEnvironment_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_VectorBaseTransactionEnvironment($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::VectorBaseTransactionGroup ##############

package libdnf5::base::VectorBaseTransactionGroup;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_VectorBaseTransactionGroup(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::basec::VectorBaseTransactionGroup_size;
*empty = *libdnf5::basec::VectorBaseTransactionGroup_empty;
*clear = *libdnf5::basec::VectorBaseTransactionGroup_clear;
*push = *libdnf5::basec::VectorBaseTransactionGroup_push;
*pop = *libdnf5::basec::VectorBaseTransactionGroup_pop;
*get = *libdnf5::basec::VectorBaseTransactionGroup_get;
*set = *libdnf5::basec::VectorBaseTransactionGroup_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_VectorBaseTransactionGroup($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::VectorBaseTransactionPackage ##############

package libdnf5::base::VectorBaseTransactionPackage;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_VectorBaseTransactionPackage(@_);
    bless $self, $pkg if defined($self);
}

*size = *libdnf5::basec::VectorBaseTransactionPackage_size;
*empty = *libdnf5::basec::VectorBaseTransactionPackage_empty;
*clear = *libdnf5::basec::VectorBaseTransactionPackage_clear;
*push = *libdnf5::basec::VectorBaseTransactionPackage_push;
*pop = *libdnf5::basec::VectorBaseTransactionPackage_pop;
*get = *libdnf5::basec::VectorBaseTransactionPackage_get;
*set = *libdnf5::basec::VectorBaseTransactionPackage_set;
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_VectorBaseTransactionPackage($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::Goal ##############

package libdnf5::base::Goal;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_Goal(@_);
    bless $self, $pkg if defined($self);
}

sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_Goal($self);
        delete $OWNER{$self};
    }
}

*add_module_enable = *libdnf5::basec::Goal_add_module_enable;
*add_module_disable = *libdnf5::basec::Goal_add_module_disable;
*add_module_reset = *libdnf5::basec::Goal_add_module_reset;
*add_install = *libdnf5::basec::Goal_add_install;
*add_debug_install = *libdnf5::basec::Goal_add_debug_install;
*add_upgrade = *libdnf5::basec::Goal_add_upgrade;
*add_downgrade = *libdnf5::basec::Goal_add_downgrade;
*add_reinstall = *libdnf5::basec::Goal_add_reinstall;
*add_remove = *libdnf5::basec::Goal_add_remove;
*add_rpm_install = *libdnf5::basec::Goal_add_rpm_install;
*add_rpm_install_or_reinstall = *libdnf5::basec::Goal_add_rpm_install_or_reinstall;
*add_rpm_reinstall = *libdnf5::basec::Goal_add_rpm_reinstall;
*add_rpm_remove = *libdnf5::basec::Goal_add_rpm_remove;
*add_rpm_upgrade = *libdnf5::basec::Goal_add_rpm_upgrade;
*add_rpm_downgrade = *libdnf5::basec::Goal_add_rpm_downgrade;
*add_rpm_distro_sync = *libdnf5::basec::Goal_add_rpm_distro_sync;
*add_rpm_reason_change = *libdnf5::basec::Goal_add_rpm_reason_change;
*add_group_install = *libdnf5::basec::Goal_add_group_install;
*add_group_remove = *libdnf5::basec::Goal_add_group_remove;
*add_group_upgrade = *libdnf5::basec::Goal_add_group_upgrade;
*add_provide_install = *libdnf5::basec::Goal_add_provide_install;
*add_serialized_transaction = *libdnf5::basec::Goal_add_serialized_transaction;
*add_revert_transactions = *libdnf5::basec::Goal_add_revert_transactions;
*add_redo_transaction = *libdnf5::basec::Goal_add_redo_transaction;
*set_allow_erasing = *libdnf5::basec::Goal_set_allow_erasing;
*get_allow_erasing = *libdnf5::basec::Goal_get_allow_erasing;
*resolve = *libdnf5::basec::Goal_resolve;
*reset = *libdnf5::basec::Goal_reset;
*get_base = *libdnf5::basec::Goal_get_base;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::ResolveSpecSettings ##############

package libdnf5::base::ResolveSpecSettings;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_ResolveSpecSettings($self);
        delete $OWNER{$self};
    }
}

sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_ResolveSpecSettings(@_);
    bless $self, $pkg if defined($self);
}

*set_ignore_case = *libdnf5::basec::ResolveSpecSettings_set_ignore_case;
*get_ignore_case = *libdnf5::basec::ResolveSpecSettings_get_ignore_case;
*set_with_nevra = *libdnf5::basec::ResolveSpecSettings_set_with_nevra;
*get_with_nevra = *libdnf5::basec::ResolveSpecSettings_get_with_nevra;
*set_with_provides = *libdnf5::basec::ResolveSpecSettings_set_with_provides;
*get_with_provides = *libdnf5::basec::ResolveSpecSettings_get_with_provides;
*set_with_filenames = *libdnf5::basec::ResolveSpecSettings_set_with_filenames;
*get_with_filenames = *libdnf5::basec::ResolveSpecSettings_get_with_filenames;
*set_with_binaries = *libdnf5::basec::ResolveSpecSettings_set_with_binaries;
*get_with_binaries = *libdnf5::basec::ResolveSpecSettings_get_with_binaries;
*set_expand_globs = *libdnf5::basec::ResolveSpecSettings_set_expand_globs;
*get_expand_globs = *libdnf5::basec::ResolveSpecSettings_get_expand_globs;
*set_nevra_forms = *libdnf5::basec::ResolveSpecSettings_set_nevra_forms;
*get_nevra_forms = *libdnf5::basec::ResolveSpecSettings_get_nevra_forms;
*set_group_with_id = *libdnf5::basec::ResolveSpecSettings_set_group_with_id;
*get_group_with_id = *libdnf5::basec::ResolveSpecSettings_get_group_with_id;
*set_group_with_name = *libdnf5::basec::ResolveSpecSettings_set_group_with_name;
*get_group_with_name = *libdnf5::basec::ResolveSpecSettings_get_group_with_name;
*set_group_search_groups = *libdnf5::basec::ResolveSpecSettings_set_group_search_groups;
*get_group_search_groups = *libdnf5::basec::ResolveSpecSettings_get_group_search_groups;
*set_group_search_environments = *libdnf5::basec::ResolveSpecSettings_set_group_search_environments;
*get_group_search_environments = *libdnf5::basec::ResolveSpecSettings_get_group_search_environments;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


############# Class : libdnf5::base::GoalJobSettings ##############

package libdnf5::base::GoalJobSettings;
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
@ISA = qw( libdnf5::base::ResolveSpecSettings libdnf5::base );
%OWNER = ();
%ITERATORS = ();
sub DESTROY {
    return unless $_[0]->isa('HASH');
    my $self = tied(%{$_[0]});
    return unless defined $self;
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        libdnf5::basec::delete_GoalJobSettings($self);
        delete $OWNER{$self};
    }
}

sub new {
    my $pkg = shift;
    my $self = libdnf5::basec::new_GoalJobSettings(@_);
    bless $self, $pkg if defined($self);
}

*get_used_skip_broken = *libdnf5::basec::GoalJobSettings_get_used_skip_broken;
*get_used_skip_unavailable = *libdnf5::basec::GoalJobSettings_get_used_skip_unavailable;
*get_used_best = *libdnf5::basec::GoalJobSettings_get_used_best;
*get_used_clean_requirements_on_remove = *libdnf5::basec::GoalJobSettings_get_used_clean_requirements_on_remove;
*set_advisory_filter = *libdnf5::basec::GoalJobSettings_set_advisory_filter;
*get_advisory_filter = *libdnf5::basec::GoalJobSettings_get_advisory_filter;
*set_group_package_types = *libdnf5::basec::GoalJobSettings_set_group_package_types;
*get_group_package_types = *libdnf5::basec::GoalJobSettings_get_group_package_types;
*set_group_no_packages = *libdnf5::basec::GoalJobSettings_set_group_no_packages;
*get_group_no_packages = *libdnf5::basec::GoalJobSettings_get_group_no_packages;
*set_environment_no_groups = *libdnf5::basec::GoalJobSettings_set_environment_no_groups;
*get_environment_no_groups = *libdnf5::basec::GoalJobSettings_get_environment_no_groups;
*set_comps_type_preferred = *libdnf5::basec::GoalJobSettings_set_comps_type_preferred;
*get_comps_type_preferred = *libdnf5::basec::GoalJobSettings_get_comps_type_preferred;
*set_report_hint = *libdnf5::basec::GoalJobSettings_set_report_hint;
*get_report_hint = *libdnf5::basec::GoalJobSettings_get_report_hint;
*set_skip_broken = *libdnf5::basec::GoalJobSettings_set_skip_broken;
*get_skip_broken = *libdnf5::basec::GoalJobSettings_get_skip_broken;
*set_skip_unavailable = *libdnf5::basec::GoalJobSettings_set_skip_unavailable;
*get_skip_unavailable = *libdnf5::basec::GoalJobSettings_get_skip_unavailable;
*set_best = *libdnf5::basec::GoalJobSettings_set_best;
*get_best = *libdnf5::basec::GoalJobSettings_get_best;
*set_clean_requirements_on_remove = *libdnf5::basec::GoalJobSettings_set_clean_requirements_on_remove;
*get_clean_requirements_on_remove = *libdnf5::basec::GoalJobSettings_get_clean_requirements_on_remove;
*set_from_repo_ids = *libdnf5::basec::GoalJobSettings_set_from_repo_ids;
*get_from_repo_ids = *libdnf5::basec::GoalJobSettings_get_from_repo_ids;
*set_to_repo_ids = *libdnf5::basec::GoalJobSettings_set_to_repo_ids;
*get_to_repo_ids = *libdnf5::basec::GoalJobSettings_get_to_repo_ids;
*set_to_vendors = *libdnf5::basec::GoalJobSettings_set_to_vendors;
*get_to_vendors = *libdnf5::basec::GoalJobSettings_get_to_vendors;
*set_ignore_extras = *libdnf5::basec::GoalJobSettings_set_ignore_extras;
*get_ignore_extras = *libdnf5::basec::GoalJobSettings_get_ignore_extras;
*set_ignore_installed = *libdnf5::basec::GoalJobSettings_set_ignore_installed;
*get_ignore_installed = *libdnf5::basec::GoalJobSettings_get_ignore_installed;
*set_override_reasons = *libdnf5::basec::GoalJobSettings_set_override_reasons;
*get_override_reasons = *libdnf5::basec::GoalJobSettings_get_override_reasons;
sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
}

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
}


# ------- VARIABLE STUBS --------

package libdnf5::base;

*ANSWER_YES = *libdnf5::basec::ANSWER_YES;
*ANSWER_NO = *libdnf5::basec::ANSWER_NO;
*ANSWER_DEFAULT = *libdnf5::basec::ANSWER_DEFAULT;
*ANSWER_ABORT = *libdnf5::basec::ANSWER_ABORT;
*ProblemRules_RULE_DISTUPGRADE = *libdnf5::basec::ProblemRules_RULE_DISTUPGRADE;
*ProblemRules_RULE_INFARCH = *libdnf5::basec::ProblemRules_RULE_INFARCH;
*ProblemRules_RULE_UPDATE = *libdnf5::basec::ProblemRules_RULE_UPDATE;
*ProblemRules_RULE_JOB = *libdnf5::basec::ProblemRules_RULE_JOB;
*ProblemRules_RULE_JOB_UNSUPPORTED = *libdnf5::basec::ProblemRules_RULE_JOB_UNSUPPORTED;
*ProblemRules_RULE_JOB_NOTHING_PROVIDES_DEP = *libdnf5::basec::ProblemRules_RULE_JOB_NOTHING_PROVIDES_DEP;
*ProblemRules_RULE_JOB_UNKNOWN_PACKAGE = *libdnf5::basec::ProblemRules_RULE_JOB_UNKNOWN_PACKAGE;
*ProblemRules_RULE_JOB_PROVIDED_BY_SYSTEM = *libdnf5::basec::ProblemRules_RULE_JOB_PROVIDED_BY_SYSTEM;
*ProblemRules_RULE_PKG = *libdnf5::basec::ProblemRules_RULE_PKG;
*ProblemRules_RULE_BEST_1 = *libdnf5::basec::ProblemRules_RULE_BEST_1;
*ProblemRules_RULE_BEST_2 = *libdnf5::basec::ProblemRules_RULE_BEST_2;
*ProblemRules_RULE_PKG_NOT_INSTALLABLE_1 = *libdnf5::basec::ProblemRules_RULE_PKG_NOT_INSTALLABLE_1;
*ProblemRules_RULE_PKG_NOT_INSTALLABLE_2 = *libdnf5::basec::ProblemRules_RULE_PKG_NOT_INSTALLABLE_2;
*ProblemRules_RULE_PKG_NOT_INSTALLABLE_3 = *libdnf5::basec::ProblemRules_RULE_PKG_NOT_INSTALLABLE_3;
*ProblemRules_RULE_PKG_NOT_INSTALLABLE_4 = *libdnf5::basec::ProblemRules_RULE_PKG_NOT_INSTALLABLE_4;
*ProblemRules_RULE_PKG_NOTHING_PROVIDES_DEP = *libdnf5::basec::ProblemRules_RULE_PKG_NOTHING_PROVIDES_DEP;
*ProblemRules_RULE_PKG_SAME_NAME = *libdnf5::basec::ProblemRules_RULE_PKG_SAME_NAME;
*ProblemRules_RULE_PKG_CONFLICTS = *libdnf5::basec::ProblemRules_RULE_PKG_CONFLICTS;
*ProblemRules_RULE_PKG_OBSOLETES = *libdnf5::basec::ProblemRules_RULE_PKG_OBSOLETES;
*ProblemRules_RULE_PKG_INSTALLED_OBSOLETES = *libdnf5::basec::ProblemRules_RULE_PKG_INSTALLED_OBSOLETES;
*ProblemRules_RULE_PKG_IMPLICIT_OBSOLETES = *libdnf5::basec::ProblemRules_RULE_PKG_IMPLICIT_OBSOLETES;
*ProblemRules_RULE_PKG_REQUIRES = *libdnf5::basec::ProblemRules_RULE_PKG_REQUIRES;
*ProblemRules_RULE_PKG_SELF_CONFLICT = *libdnf5::basec::ProblemRules_RULE_PKG_SELF_CONFLICT;
*ProblemRules_RULE_YUMOBS = *libdnf5::basec::ProblemRules_RULE_YUMOBS;
*ProblemRules_RULE_UNKNOWN = *libdnf5::basec::ProblemRules_RULE_UNKNOWN;
*ProblemRules_RULE_PKG_REMOVAL_OF_PROTECTED = *libdnf5::basec::ProblemRules_RULE_PKG_REMOVAL_OF_PROTECTED;
*ProblemRules_RULE_PKG_REMOVAL_OF_RUNNING_KERNEL = *libdnf5::basec::ProblemRules_RULE_PKG_REMOVAL_OF_RUNNING_KERNEL;
*ProblemRules_RULE_MODULE_DISTUPGRADE = *libdnf5::basec::ProblemRules_RULE_MODULE_DISTUPGRADE;
*ProblemRules_RULE_MODULE_INFARCH = *libdnf5::basec::ProblemRules_RULE_MODULE_INFARCH;
*ProblemRules_RULE_MODULE_UPDATE = *libdnf5::basec::ProblemRules_RULE_MODULE_UPDATE;
*ProblemRules_RULE_MODULE_JOB = *libdnf5::basec::ProblemRules_RULE_MODULE_JOB;
*ProblemRules_RULE_MODULE_JOB_UNSUPPORTED = *libdnf5::basec::ProblemRules_RULE_MODULE_JOB_UNSUPPORTED;
*ProblemRules_RULE_MODULE_JOB_NOTHING_PROVIDES_DEP = *libdnf5::basec::ProblemRules_RULE_MODULE_JOB_NOTHING_PROVIDES_DEP;
*ProblemRules_RULE_MODULE_JOB_UNKNOWN_PACKAGE = *libdnf5::basec::ProblemRules_RULE_MODULE_JOB_UNKNOWN_PACKAGE;
*ProblemRules_RULE_MODULE_JOB_PROVIDED_BY_SYSTEM = *libdnf5::basec::ProblemRules_RULE_MODULE_JOB_PROVIDED_BY_SYSTEM;
*ProblemRules_RULE_MODULE_PKG = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG;
*ProblemRules_RULE_MODULE_BEST_1 = *libdnf5::basec::ProblemRules_RULE_MODULE_BEST_1;
*ProblemRules_RULE_MODULE_BEST_2 = *libdnf5::basec::ProblemRules_RULE_MODULE_BEST_2;
*ProblemRules_RULE_MODULE_PKG_NOT_INSTALLABLE_1 = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_NOT_INSTALLABLE_1;
*ProblemRules_RULE_MODULE_PKG_NOT_INSTALLABLE_2 = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_NOT_INSTALLABLE_2;
*ProblemRules_RULE_MODULE_PKG_NOT_INSTALLABLE_3 = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_NOT_INSTALLABLE_3;
*ProblemRules_RULE_MODULE_PKG_NOT_INSTALLABLE_4 = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_NOT_INSTALLABLE_4;
*ProblemRules_RULE_MODULE_PKG_NOTHING_PROVIDES_DEP = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_NOTHING_PROVIDES_DEP;
*ProblemRules_RULE_MODULE_PKG_SAME_NAME = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_SAME_NAME;
*ProblemRules_RULE_MODULE_PKG_CONFLICTS = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_CONFLICTS;
*ProblemRules_RULE_MODULE_PKG_OBSOLETES = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_OBSOLETES;
*ProblemRules_RULE_MODULE_PKG_INSTALLED_OBSOLETES = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_INSTALLED_OBSOLETES;
*ProblemRules_RULE_MODULE_PKG_IMPLICIT_OBSOLETES = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_IMPLICIT_OBSOLETES;
*ProblemRules_RULE_MODULE_PKG_REQUIRES = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_REQUIRES;
*ProblemRules_RULE_MODULE_PKG_SELF_CONFLICT = *libdnf5::basec::ProblemRules_RULE_MODULE_PKG_SELF_CONFLICT;
*ProblemRules_RULE_MODULE_YUMOBS = *libdnf5::basec::ProblemRules_RULE_MODULE_YUMOBS;
*ProblemRules_RULE_MODULE_UNKNOWN = *libdnf5::basec::ProblemRules_RULE_MODULE_UNKNOWN;
*ProblemRules_RULE_PKG_INSTALLED_CONFLICTS = *libdnf5::basec::ProblemRules_RULE_PKG_INSTALLED_CONFLICTS;
*ProblemRules_RULE_PKG_INSTALLED_REQUIRES = *libdnf5::basec::ProblemRules_RULE_PKG_INSTALLED_REQUIRES;
*ProblemRules_RULE_PKG_BROKEN_DEPS_OF_PROTECTED = *libdnf5::basec::ProblemRules_RULE_PKG_BROKEN_DEPS_OF_PROTECTED;
*GoalProblem_NO_PROBLEM = *libdnf5::basec::GoalProblem_NO_PROBLEM;
*GoalProblem_SOLVER_ERROR = *libdnf5::basec::GoalProblem_SOLVER_ERROR;
*GoalProblem_NOT_FOUND = *libdnf5::basec::GoalProblem_NOT_FOUND;
*GoalProblem_EXCLUDED = *libdnf5::basec::GoalProblem_EXCLUDED;
*GoalProblem_ONLY_SRC = *libdnf5::basec::GoalProblem_ONLY_SRC;
*GoalProblem_NOT_FOUND_IN_REPOSITORIES = *libdnf5::basec::GoalProblem_NOT_FOUND_IN_REPOSITORIES;
*GoalProblem_NOT_INSTALLED = *libdnf5::basec::GoalProblem_NOT_INSTALLED;
*GoalProblem_NOT_INSTALLED_FOR_ARCHITECTURE = *libdnf5::basec::GoalProblem_NOT_INSTALLED_FOR_ARCHITECTURE;
*GoalProblem_HINT_ICASE = *libdnf5::basec::GoalProblem_HINT_ICASE;
*GoalProblem_HINT_ALTERNATIVES = *libdnf5::basec::GoalProblem_HINT_ALTERNATIVES;
*GoalProblem_INSTALLED_LOWEST_VERSION = *libdnf5::basec::GoalProblem_INSTALLED_LOWEST_VERSION;
*GoalProblem_INSTALLED_IN_DIFFERENT_VERSION = *libdnf5::basec::GoalProblem_INSTALLED_IN_DIFFERENT_VERSION;
*GoalProblem_NOT_AVAILABLE = *libdnf5::basec::GoalProblem_NOT_AVAILABLE;
*GoalProblem_ALREADY_INSTALLED = *libdnf5::basec::GoalProblem_ALREADY_INSTALLED;
*GoalProblem_SOLVER_PROBLEM_STRICT_RESOLVEMENT = *libdnf5::basec::GoalProblem_SOLVER_PROBLEM_STRICT_RESOLVEMENT;
*GoalProblem_WRITE_DEBUG = *libdnf5::basec::GoalProblem_WRITE_DEBUG;
*GoalProblem_UNSUPPORTED_ACTION = *libdnf5::basec::GoalProblem_UNSUPPORTED_ACTION;
*GoalProblem_MULTIPLE_STREAMS = *libdnf5::basec::GoalProblem_MULTIPLE_STREAMS;
*GoalProblem_EXCLUDED_VERSIONLOCK = *libdnf5::basec::GoalProblem_EXCLUDED_VERSIONLOCK;
*GoalProblem_MODULE_SOLVER_ERROR_DEFAULTS = *libdnf5::basec::GoalProblem_MODULE_SOLVER_ERROR_DEFAULTS;
*GoalProblem_MODULE_SOLVER_ERROR_LATEST = *libdnf5::basec::GoalProblem_MODULE_SOLVER_ERROR_LATEST;
*GoalProblem_MODULE_SOLVER_ERROR = *libdnf5::basec::GoalProblem_MODULE_SOLVER_ERROR;
*GoalProblem_MODULE_CANNOT_SWITH_STREAMS = *libdnf5::basec::GoalProblem_MODULE_CANNOT_SWITH_STREAMS;
*GoalProblem_EXTRA = *libdnf5::basec::GoalProblem_EXTRA;
*GoalProblem_MALFORMED = *libdnf5::basec::GoalProblem_MALFORMED;
*GoalProblem_NOT_FOUND_DEBUGINFO = *libdnf5::basec::GoalProblem_NOT_FOUND_DEBUGINFO;
*GoalProblem_NOT_FOUND_DEBUGSOURCE = *libdnf5::basec::GoalProblem_NOT_FOUND_DEBUGSOURCE;
*GoalProblem_MERGE_ERROR = *libdnf5::basec::GoalProblem_MERGE_ERROR;
*GoalProblem_NOT_FOUND_IN_ADVISORIES = *libdnf5::basec::GoalProblem_NOT_FOUND_IN_ADVISORIES;
*GoalAction_INSTALL = *libdnf5::basec::GoalAction_INSTALL;
*GoalAction_INSTALL_OR_REINSTALL = *libdnf5::basec::GoalAction_INSTALL_OR_REINSTALL;
*GoalAction_INSTALL_VIA_PROVIDE = *libdnf5::basec::GoalAction_INSTALL_VIA_PROVIDE;
*GoalAction_INSTALL_BY_COMPS = *libdnf5::basec::GoalAction_INSTALL_BY_COMPS;
*GoalAction_REINSTALL = *libdnf5::basec::GoalAction_REINSTALL;
*GoalAction_UPGRADE = *libdnf5::basec::GoalAction_UPGRADE;
*GoalAction_UPGRADE_MINIMAL = *libdnf5::basec::GoalAction_UPGRADE_MINIMAL;
*GoalAction_UPGRADE_ALL = *libdnf5::basec::GoalAction_UPGRADE_ALL;
*GoalAction_UPGRADE_ALL_MINIMAL = *libdnf5::basec::GoalAction_UPGRADE_ALL_MINIMAL;
*GoalAction_DISTRO_SYNC = *libdnf5::basec::GoalAction_DISTRO_SYNC;
*GoalAction_DISTRO_SYNC_ALL = *libdnf5::basec::GoalAction_DISTRO_SYNC_ALL;
*GoalAction_DOWNGRADE = *libdnf5::basec::GoalAction_DOWNGRADE;
*GoalAction_REMOVE = *libdnf5::basec::GoalAction_REMOVE;
*GoalAction_RESOLVE = *libdnf5::basec::GoalAction_RESOLVE;
*GoalAction_REASON_CHANGE = *libdnf5::basec::GoalAction_REASON_CHANGE;
*GoalAction_ENABLE = *libdnf5::basec::GoalAction_ENABLE;
*GoalAction_DISABLE = *libdnf5::basec::GoalAction_DISABLE;
*GoalAction_RESET = *libdnf5::basec::GoalAction_RESET;
*GoalAction_REPLAY_PARSE = *libdnf5::basec::GoalAction_REPLAY_PARSE;
*GoalAction_REPLAY_INSTALL = *libdnf5::basec::GoalAction_REPLAY_INSTALL;
*GoalAction_REPLAY_REMOVE = *libdnf5::basec::GoalAction_REPLAY_REMOVE;
*GoalAction_REPLAY_UPGRADE = *libdnf5::basec::GoalAction_REPLAY_UPGRADE;
*GoalAction_REPLAY_REINSTALL = *libdnf5::basec::GoalAction_REPLAY_REINSTALL;
*GoalAction_REPLAY_REASON_CHANGE = *libdnf5::basec::GoalAction_REPLAY_REASON_CHANGE;
*GoalAction_REPLAY_REASON_OVERRIDE = *libdnf5::basec::GoalAction_REPLAY_REASON_OVERRIDE;
*GoalAction_REVERT_COMPS_UPGRADE = *libdnf5::basec::GoalAction_REVERT_COMPS_UPGRADE;
*GoalAction_INSTALL_DEBUG = *libdnf5::basec::GoalAction_INSTALL_DEBUG;
*GoalAction_MERGE = *libdnf5::basec::GoalAction_MERGE;
*GoalSetting_AUTO = *libdnf5::basec::GoalSetting_AUTO;
*GoalSetting_SET_TRUE = *libdnf5::basec::GoalSetting_SET_TRUE;
*GoalSetting_SET_FALSE = *libdnf5::basec::GoalSetting_SET_FALSE;
*GoalUsedSetting_UNUSED = *libdnf5::basec::GoalUsedSetting_UNUSED;
*GoalUsedSetting_USED_TRUE = *libdnf5::basec::GoalUsedSetting_USED_TRUE;
*GoalUsedSetting_USED_FALSE = *libdnf5::basec::GoalUsedSetting_USED_FALSE;
*CompsTypePreferred_BOTH = *libdnf5::basec::CompsTypePreferred_BOTH;
*CompsTypePreferred_GROUP = *libdnf5::basec::CompsTypePreferred_GROUP;
*CompsTypePreferred_ENVIRONMENT = *libdnf5::basec::CompsTypePreferred_ENVIRONMENT;
1;
