import type { ThresholdSignatureScheme, KeyShareBackupInfo, ILogger, ShareSet, ShareSetType } from '@dynamic-labs-wallet/core';
import type { ForwardMPCClientV2 } from '@dynamic-labs-wallet/forward-mpc-client';
import type { ServerKeyShare } from './mpc/types.js';
export interface DynamicWalletClientProps {
    environmentId: string;
    baseApiUrl?: string;
    baseMPCRelayApiUrl?: string;
    /**
     * Enables verbose debug-level logging when `true`.
     *
     * Only applies to the built-in default logger. If you provide a custom
     * `logger`, configure its verbosity directly — this flag has no effect on it.
     *
     * @default false
     */
    debug?: boolean;
    forwardMPCClient?: ForwardMPCClientV2;
    enableMPCAccelerator?: boolean;
    /**
     * Custom logger for SDK diagnostic output.
     *
     * Accepts any object that implements `ILogger` (`debug`, `info`, `warn`, `error`).
     * When provided, the SDK routes all internal logging through this instance.
     * You are responsible for configuring its log level — the `debug` flag has
     * no effect on custom loggers.
     *
     * When omitted, a built-in logger is used with verbosity controlled by `debug`.
     */
    logger?: ILogger;
}
export interface WalletProperties {
    chainName: string;
    walletId: string;
    accountAddress: string;
    externalServerKeyShares: ServerKeyShare[];
    thresholdSignatureScheme: ThresholdSignatureScheme;
    derivationPath?: string;
    addressType?: string;
    /**
     * Per-share pointer metadata. Populated when the source provides
     * `walletProperties.keyShares` (e.g. `getUser`-derived paths). The
     * `getWaasWalletByAddress` endpoint does not return key-share pointers, so
     * `getWalletByAddress` leaves this `undefined` on the byAddress path.
     * Operations that need it (sign with auto-recovery, password verification,
     * refresh, reshare, updatePassword) will throw on a `WalletProperties`
     * recovered without this field.
     */
    externalServerKeySharesBackupInfo?: KeyShareBackupInfo;
}
/**
 * Non-sensitive wallet metadata, safe to cache in Redis / Postgres / any
 * normal datastore. Pair with `ServerKeyShare[]` (sensitive — secure store)
 * to perform signing, export, or reshare operations.
 *
 * `externalServerKeySharesBackupInfo` carries the per-share pointer metadata
 * the SDK needs to drive recovery (wallet operations that depend on backup
 * state). It is technically optional on the type for serialization
 * convenience, but operations that need it (sign with auto-recovery,
 * password verification, refresh, reshare, updatePassword) will throw if
 * it's missing — there is no SDK-scoped server-side recovery for pointer
 * metadata. Persist the full `walletMetadata` returned by
 * `createWalletAccount` / `importPrivateKey` (which already includes this
 * field) and merge any updated `backupInfo` from refresh/reshare/updatePassword
 * before re-caching.
 */
export interface WalletMetadata {
    walletId: string;
    accountAddress: string;
    chainName: string;
    thresholdSignatureScheme: ThresholdSignatureScheme;
    derivationPath?: string;
    addressType?: string;
    externalServerKeySharesBackupInfo?: KeyShareBackupInfo;
    shareSetId?: string;
    shareSetType?: ShareSetType;
    otherShareSets?: ShareSet[];
}
//# sourceMappingURL=types.d.ts.map