/* tslint:disable */
/* eslint-disable */
/**
 * Generate a new random seed phrase (18 words, 192 bits entropy)
 * This is completely offline - uses browser's crypto.getRandomValues()
 */
export function generate_seed(): string;
/**
 * Get view key and address from seed phrase (offline) - COMPATIBLE WITH NEPTUNE-CORE
 *
 * This derives the view key from a BIP39 seed phrase using neptune-crypto-core.
 * The view key can be used with wallet_getUtxosFromViewKey RPC method.
 *
 * Input: JSON string with seed_phrase array and network ("mainnet" or "testnet")
 * Output: JSON string with receiver_identifier, view_key (hex), and address (bech32m)
 *
 * Example:
 * ```javascript
 * const result = get_viewkey('["word1", "word2", ...]', "testnet");
 * const { receiver_identifier, view_key, address } = JSON.parse(result);
 * console.log('View key:', view_key); // Compatible with neptune-core!
 * ```
 */
export function get_viewkey(seed_phrase_json: string, network: string): string;
/**
 * Get receiving address from seed phrase (offline)
 * Input: JSON string with seed_phrase array and network
 * Output: bech32m encoded address string
 */
export function address_from_seed(seed_phrase_json: string, network: string): string;
/**
 * Validate a seed phrase (offline)
 */
export function validate_seed_phrase(seed_phrase_json: string): boolean;
/**
 * Decode view key from hex string (offline)
 */
export function decode_viewkey(view_key_hex: string): string;
/**
 * Prepare transaction data for server-side signing
 *
 * This prepares transaction details but does NOT sign locally.
 * Instead, it exports the spending key seed so the server can sign.
 *
 * Input: JSON string with BuildTxRequest
 * Output: JSON string with SignedTxData (contains seed for server signing)
 *
 * Example:
 * ```javascript
 * const request = {
 *   seed_phrase: ["word1", "word2", ...],
 *   inputs: [{addition_record: "0xabc..."}],
 *   outputs: [{address: "nep1...", amount: "50.0"}],
 *   fee: "0.01",
 *   network: "testnet"
 * };
 * const txData = build_and_sign_tx(JSON.stringify(request));
 * // Now broadcast via JSON-RPC: wallet_broadcastSignedTransaction(txData)
 * ```
 */
export function build_and_sign_tx(request_json: string): string;
/**
 * Get wallet balance via JSON-RPC (Neptune core ext format)
 * Uses wallet_balance method from Wallet namespace
 */
export function get_balance(rpc_url: string): Promise<string>;
/**
 * Send transaction via JSON-RPC
 * Note: Neptune core ext may not have direct "send" method in public RPC
 * This is a placeholder - check actual available methods
 */
export function send_tx_jsonrpc(rpc_url: string, to_address: string, amount: string, fee: string): Promise<string>;
/**
 * Get block height via JSON-RPC (Neptune core ext format)
 * Uses chain_height method from Chain namespace
 */
export function get_block_height(rpc_url: string): Promise<bigint>;
/**
 * Get network info via JSON-RPC (Neptune core ext format)
 * Uses node_network method from Node namespace
 */
export function get_network_info(rpc_url: string): Promise<string>;
/**
 * Get wallet addresses from Neptune core (PRODUCTION - EXACT Neptune addresses!)
 * Returns both generation_address and symmetric_address
 */
export function get_wallet_address(rpc_url: string): Promise<string>;
/**
 * Get view key from Neptune core (RECOMMENDED)
 * This exports the proper view key format from Neptune core's wallet
 * Returns a hex-encoded view key that can be used with wallet_getUtxosFromViewKey
 */
export function get_viewkey_from_neptune(rpc_url: string): Promise<string>;
/**
 * Get UTXOs from view key (scan blockchain)
 * This calls Neptune core's wallet_getUtxosFromViewKey JSON-RPC method
 *
 * Input: view_key (hex string from neptune-core format), start_block, end_block (optional)
 * Output: JSON string with list of UTXOs
 */
export function get_utxos_from_viewkey(rpc_url: string, view_key_hex: string, start_block: bigint, end_block?: bigint | null): Promise<string>;
/**
 * Generate viewkey from BIP39 seed phrase
 * 
 * # Arguments
 * * `phrase` - Space-separated BIP39 seed phrase (12-24 words)
 * * `key_index` - Key derivation index (default: 0)
 * 
 * # Returns
 * Hex-encoded viewkey compatible with neptune-core
 */
export function generate_viewkey_from_phrase(phrase: string, key_index: bigint): string;
/**
 * Generate receiving address from BIP39 seed phrase
 * 
 * # Arguments
 * * `phrase` - Space-separated BIP39 seed phrase (12-24 words)
 * * `key_index` - Key derivation index (default: 0)
 * * `testnet` - Use testnet network (true) or mainnet (false)
 * 
 * # Returns
 * Bech32m-encoded receiving address
 */
export function generate_address_from_phrase(phrase: string, key_index: bigint, testnet: boolean): string;
/**
 * Get receiver identifier from viewkey hex
 */
export function get_receiver_id_from_viewkey(viewkey_hex: string): string;
/**
 * Debug: Get detailed key derivation info
 */
export function debug_key_derivation(phrase: string, key_index: bigint): string;
/**
 * Sign transaction offline (WASM client-side signing)
 * This creates lock_script_and_witness WITHOUT exposing spending key to server
 * 
 * # Arguments
 * * `phrase` - BIP39 seed phrase (18 words)
 * * `utxos_json` - JSON array of UTXOs from get_utxos (with addition_record)
 * * `outputs_json` - JSON array of outputs [{address, amount}, ...]
 * * `fee` - Transaction fee as string
 * * `key_index` - Key derivation index (usually 0)
 * * `testnet` - Network selection
 * 
 * # Returns
 * JSON containing:
 * - lock_script_and_witness: hex-encoded signature
 * - view_key: hex-encoded view key
 * - inputs: array of addition_records
 * - outputs: array of {address, amount}
 * - fee: fee string
 */
export function sign_transaction_offline(phrase: string, utxos_json: string, outputs_json: string, fee: string, key_index: bigint, testnet: boolean): string;

export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;

export interface InitOutput {
  readonly memory: WebAssembly.Memory;
  readonly generate_seed: () => [number, number, number, number];
  readonly get_viewkey: (a: number, b: number, c: number, d: number) => [number, number, number, number];
  readonly address_from_seed: (a: number, b: number, c: number, d: number) => [number, number, number, number];
  readonly validate_seed_phrase: (a: number, b: number) => [number, number, number];
  readonly decode_viewkey: (a: number, b: number) => [number, number, number, number];
  readonly build_and_sign_tx: (a: number, b: number) => [number, number, number, number];
  readonly get_balance: (a: number, b: number) => any;
  readonly send_tx_jsonrpc: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => any;
  readonly get_block_height: (a: number, b: number) => any;
  readonly get_network_info: (a: number, b: number) => any;
  readonly get_wallet_address: (a: number, b: number) => any;
  readonly get_viewkey_from_neptune: (a: number, b: number) => any;
  readonly get_utxos_from_viewkey: (a: number, b: number, c: number, d: number, e: bigint, f: number, g: bigint) => any;
  readonly generate_viewkey_from_phrase: (a: number, b: number, c: bigint) => [number, number, number, number];
  readonly generate_address_from_phrase: (a: number, b: number, c: bigint, d: number) => [number, number, number, number];
  readonly get_receiver_id_from_viewkey: (a: number, b: number) => [number, number, number, number];
  readonly debug_key_derivation: (a: number, b: number, c: bigint) => [number, number, number, number];
  readonly sign_transaction_offline: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: bigint, j: number) => [number, number, number, number];
  readonly __wbindgen_exn_store: (a: number) => void;
  readonly __externref_table_alloc: () => number;
  readonly __wbindgen_export_2: WebAssembly.Table;
  readonly __wbindgen_export_3: WebAssembly.Table;
  readonly __wbindgen_malloc: (a: number, b: number) => number;
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
  readonly __externref_table_dealloc: (a: number) => void;
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
  readonly closure49_externref_shim: (a: number, b: number, c: any) => void;
  readonly closure268_externref_shim: (a: number, b: number, c: any, d: any) => void;
  readonly __wbindgen_start: () => void;
}

export type SyncInitInput = BufferSource | WebAssembly.Module;
/**
* Instantiates the given `module`, which can either be bytes or
* a precompiled `WebAssembly.Module`.
*
* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
*
* @returns {InitOutput}
*/
export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;

/**
* If `module_or_path` is {RequestInfo} or {URL}, makes a request and
* for everything else, calls `WebAssembly.instantiate` directly.
*
* @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
*
* @returns {Promise<InitOutput>}
*/
export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;
