/*
 * NOSTR Core Library - NIP-006: Key Derivation from Mnemonic
 */

#ifndef NIP006_H
#define NIP006_H

#include "nip001.h"
#include <stdint.h>

// Input type detection
typedef enum {
    NOSTR_INPUT_UNKNOWN = 0,
    NOSTR_INPUT_NSEC_HEX,
    NOSTR_INPUT_NSEC_BECH32,
    NOSTR_INPUT_MNEMONIC
} nostr_input_type_t;

// Function declarations
int nostr_generate_keypair(unsigned char* private_key, unsigned char* public_key);
int nostr_generate_mnemonic_and_keys(char* mnemonic, size_t mnemonic_size, 
                                    int account, unsigned char* private_key, 
                                    unsigned char* public_key);
int nostr_derive_keys_from_mnemonic(const char* mnemonic, int account,
                                   unsigned char* private_key, unsigned char* public_key);
nostr_input_type_t nostr_detect_input_type(const char* input);
int nostr_decode_nsec(const char* input, unsigned char* private_key);
int nostr_decode_npub(const char* input, unsigned char* public_key);

#endif // NIP006_H
