// Path: argon2-jvm-nolibs/src/main/java/de/mkammerer/argon2/jna/Argon2_type.java
// public class Argon2_type extends NativeLong {
//     /**
//      * Constructor.
//      */
//     public Argon2_type() {
//         this(0);
//     }
// 
//     /**
//      * Constructor.
//      *
//      * @param value Value.
//      */
//     public Argon2_type(long value) {
//         super(value);
//     }
// }


import de.mkammerer.argon2.jna.Argon2_type;
    private static Argon2Advanced createInternal(Argon2Types type, int defaultSaltLength, int defaultHashLength) {
        switch (type) {
            case ARGON2i:
                return new Argon2i(defaultSaltLength, defaultHashLength);
            case ARGON2d:
                return new Argon2d(defaultSaltLength, defaultHashLength);
            case ARGON2id:
                return new Argon2id(defaultSaltLength, defaultHashLength);
            default:
                throw new IllegalArgumentException("Invalid argon2 type");
        }
    }

    /**
     * Argon2 type.
     */
    public enum Argon2Types {
        /**
         * Argon2i.
         */
        ARGON2i(1),
        /**
         * Argon2d.
         */
        ARGON2d(0),
        /**
         * Argon2id
         */
        ARGON2id(2);

// Path: argon2-jvm-nolibs/src/main/java/de/mkammerer/argon2/jna/Argon2_type.java
// public class Argon2_type extends NativeLong {
//     /**
//      * Constructor.
//      */
//     public Argon2_type() {
//         this(0);
//     }
// 
//     /**
//      * Constructor.
//      *
//      * @param value Value.
//      */
//     public Argon2_type(long value) {
//         super(value);
//     }
// }


// Path: argon2-jvm-nolibs/src/main/java/de/mkammerer/argon2/Argon2Factory.java
import de.mkammerer.argon2.jna.Argon2_type;

    private static Argon2Advanced createInternal(Argon2Types type, int defaultSaltLength, int defaultHashLength) {
        switch (type) {
            case ARGON2i:
                return new Argon2i(defaultSaltLength, defaultHashLength);
            case ARGON2d:
                return new Argon2d(defaultSaltLength, defaultHashLength);
            case ARGON2id:
                return new Argon2id(defaultSaltLength, defaultHashLength);
            default:
                throw new IllegalArgumentException("Invalid argon2 type");
        }
    }

    /**
     * Argon2 type.
     */
    public enum Argon2Types {
        /**
         * Argon2i.
         */
        ARGON2i(1),
        /**
         * Argon2d.
         */
        ARGON2d(0),
        /**
         * Argon2id
         */
        ARGON2id(2);

        private final Argon2_type jnaType;