import * as Effect from "effect/Effect";
import * as CoreAddress from "../../Address.js";
import * as Bip32PrivateKey from "../../Bip32PrivateKey.js";
import * as PrivateKey from "../../PrivateKey.js";
import * as CoreRewardAddress from "../../RewardAddress.js";
declare const DerivationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
    readonly _tag: "DerivationError";
} & Readonly<A>;
export declare class DerivationError extends DerivationError_base<{
    readonly message: string;
    readonly cause?: unknown;
}> {
}
/**
 * Result of deriving keys and addresses from a seed or Bip32 root
 * - address: Core Address object (payment address)
 * - rewardAddress: bech32 reward address (stake... / stake_test...)
 * - paymentKey / stakeKey: ed25519e_sk bech32 private keys
 * - keyStore: Map of KeyHash hex -> PrivateKey for signing operations
 * - paymentKhHex / stakeKhHex: KeyHash hex strings for quick lookup
 */
export type SeedDerivationResult = {
    address: CoreAddress.Address;
    rewardAddress: CoreRewardAddress.RewardAddress | undefined;
    paymentKey: string;
    stakeKey: string | undefined;
    keyStore: Map<string, PrivateKey.PrivateKey>;
    paymentKhHex: string;
    stakeKhHex: string | undefined;
};
export declare const walletFromSeed: (seed: string, options?: {
    password?: string;
    addressType?: "Base" | "Enterprise";
    accountIndex?: number;
    paymentIndex?: number;
    stakeIndex?: number;
    networkId?: number;
}) => Effect.Effect<SeedDerivationResult, DerivationError | Bip32PrivateKey.Bip32PrivateKeyError>;
/**
 * Derive only the bech32 private keys (ed25519e_sk...) from a seed.
 */
export declare function keysFromSeed(seed: string, options?: {
    password?: string;
    accountIndex?: number;
}): {
    paymentKey: string;
    stakeKey: string;
};
/**
 * Derive only addresses (payment and optional reward) from a seed.
 */
export declare function addressFromSeed(seed: string, options?: {
    password?: string;
    addressType?: "Base" | "Enterprise";
    accountIndex?: number;
    networkId?: number;
}): {
    address: CoreAddress.Address;
    rewardAddress: CoreRewardAddress.RewardAddress | undefined;
};
/**
 * Same as walletFromSeed but accepts a Bip32 root key directly.
 */
export declare function walletFromBip32(rootXPrv: Bip32PrivateKey.Bip32PrivateKey, options?: {
    addressType?: "Base" | "Enterprise";
    accountIndex?: number;
    networkId?: number;
}): SeedDerivationResult;
/**
 * Build an address (enterprise by default) from an already-derived payment private key.
 * Optionally provide a stake private key to get a base address + reward address.
 */
export declare function walletFromPrivateKey(paymentKeyBech32: string, options?: {
    stakeKeyBech32?: string;
    addressType?: "Base" | "Enterprise";
    networkId?: number;
}): Effect.Effect<SeedDerivationResult, DerivationError>;
export {};
//# sourceMappingURL=Derivation.d.ts.map