import type { Infer } from "@metamask/superstruct";
export * from "./bip44.cjs";
export * from "./custom.cjs";
export * from "./private-key.cjs";
/**
 * Enum representing the different ways an account can be created.
 */
export declare enum AccountCreationType {
    /**
     * Represents an account created using a BIP-44 derivation path.
     */
    Bip44DerivePath = "bip44:derive-path",
    /**
     * Represents accounts created using a BIP-44 account index.
     *
     * More than one account can be created, for example, the keyring can create
     * multiple account types (e.g., P2PKH, P2TR, P2WPKH) for the same account
     * index.
     */
    Bip44DeriveIndex = "bip44:derive-index",
    /**
     * Represents accounts created by deriving a range of BIP-44 account indices.
     *
     * More than one account can be created per index, for example, the keyring
     * can create multiple account types (e.g., P2PKH, P2TR, P2WPKH) for each
     * account index in the range.
     */
    Bip44DeriveIndexRange = "bip44:derive-index-range",
    /**
     * Represents accounts created through BIP-44 account discovery.
     *
     * More than one account can be created, for example, the keyring can create
     * multiple account types (e.g., P2PKH, P2TR, P2WPKH) for the same account
     * index.
     */
    Bip44Discover = "bip44:discover",
    /**
     * Represents an account imported from a private key.
     */
    PrivateKeyImport = "private-key:import",
    /**
     * Represents an account created using a custom, keyring-specific method.
     *
     * This is used by keyrings that have non-standard account creation flows
     * and declare `custom.createAccounts: true` in their capabilities.
     */
    Custom = "custom"
}
/**
 * Struct for {@link CreateAccountOptions}.
 */
export declare const CreateAccountOptionsStruct: import("@metamask/superstruct").Struct<{
    type: "bip44:derive-path";
    derivationPath: `m/${string}`;
    entropySource: string;
} | {
    type: "bip44:derive-index";
    groupIndex: number;
    entropySource: string;
} | {
    type: "bip44:discover";
    groupIndex: number;
    entropySource: string;
} | {
    type: "bip44:derive-index-range";
    range: {
        from: number;
        to: number;
    };
    entropySource: string;
} | {
    type: "custom";
} | {
    type: "private-key:import";
    encoding: "hexadecimal" | "base58";
    privateKey: string;
    accountType?: "eip155:eoa" | "eip155:erc4337" | "bip122:p2pkh" | "bip122:p2sh" | "bip122:p2wpkh" | "bip122:p2tr" | "solana:data-account" | "tron:eoa" | "stellar:account" | "any:account";
}, null>;
/**
 * Represents the available options for creating a new account.
 */
export type CreateAccountOptions = Infer<typeof CreateAccountOptionsStruct>;
/**
 * Asserts that a given create account option type is supported by the keyring.
 *
 * @example
 * ```ts
 * createAccounts(options: CreateAccountOptions) {
 *   assertCreateAccountOptionIsSupported(options, [
 *     ${AccountCreationType.Bip44DeriveIndex},
 *     ${AccountCreationType.Bip44DeriveIndexRange},
 *   ] as const);
 *
 *   // At this point, TypeScript knows that options.type is either Bip44DeriveIndex or Bip44DeriveIndexRange.
 *   if (options.type === AccountCreationType.Bip44DeriveIndex) {
 *     ... // Handle Bip44DeriveIndex case.
 *   } else {
 *     ... // Handle Bip44DeriveIndexRange case.
 *   }
 *   ...
 *   return accounts;
 * }
 * ```
 *
 * @param options - The create account option object to check.
 * @param supportedTypes - The list of supported create account option types for this keyring.
 * @throws Will throw an error if the provided options are not supported.
 */
export declare function assertCreateAccountOptionIsSupported<Options extends CreateAccountOptions, Type extends `${CreateAccountOptions['type']}`>(options: Options, supportedTypes: readonly `${Type}`[]): asserts options is Options & {
    type: `${Type}` & `${Options['type']}`;
};
//# sourceMappingURL=index.d.cts.map