# Copyright (c) 2024 Yuki Kimoto
# MIT License

class Native::API : pointer {
  version_from SPVM;

  
  use Native::Env;
  use Native::Stack;
  
  # Fields
  has env : Native::Env;
  
  has stack : Native::Stack;
  
  # Class Methods
  native static method new : Native::API ($env : Native::Env, $stack : Native::Stack);
  
  # Instance Methods
  native method set_command_info_program_name : void ($program_name : string);
  
  native method set_command_info_argv : void ($argv : string[]);
  
  native method set_command_info_basetime : void ($base_time : long);
  
  native method call_init_methods : void ();
  
  native method destroy_class_vars : void ();
  
  native method get_exception : string ();
  
  native method set_exception : void ($exception : string);
}