UNPKG

@ledgerhq/hw-app-starknet

Version:

Ledger Hardware Wallet Starknet Application API

87 lines (86 loc) 4.14 kB
import { default as Transport } from '@ledgerhq/hw-transport'; import { ResponsePublicKey, ResponseHashSign, ResponseTxSign, ResponseVersion, ResponseGeneric, TxFields, TxV1Fields, DeployAccountFields, DeployAccountV1Fields, ResponseStarkKey } from './types'; import { LedgerError } from './common'; import { Call, TypedData } from 'starknet'; export { LedgerError }; export * from './types'; /** * Starknet API * * @example * import Stark from "@ledgerhq/hw-app-starknet"; * const stark = new StarknetClient(transport) */ export declare class StarknetClient { transport: Transport; constructor(transport: Transport); sendApdu(ins?: number, p1?: number, p2?: number, data?: Uint8Array): Promise<ResponseGeneric>; /** * get version of Nano Starknet application * @return an object with a major, minor, patch */ getAppVersion(): Promise<ResponseVersion>; /** * get full starknet public key derived from provided derivation path * @param path a path in EIP-2645 format (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2645.md) * @return an object with publicKey * @example * stark.getPubKey("m/2645'/579218131'/0'/0'").then(o => o.publicKey) */ getPubKey(path: string, show?: boolean): Promise<ResponsePublicKey>; /** * get stark key derived from provided derivation path * @param path a path in EIP-2645 format (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2645.md) * @return an object with publicKey * @example * stark.getPubKey("m/2645'/579218131'/0'/0'").then(o => o.publicKey) */ getStarkKey(path: string, show?: boolean): Promise<ResponseStarkKey>; /** * sign the given hash over the staRknet elliptic curve * @param path Derivation path in EIP-2645 format * @param hash Pedersen hash to be signed * @return an object with (r, s, v) signature */ signHash(path: string, hash: string): Promise<ResponseHashSign>; /** * sign a Starknet Tx v3 Invoke transaction * @param path Derivation path in EIP-2645 format * @param calls List of calls [(to, selector, calldata), (), ...] * @param tx Tx fields (account address, tip, l1_gas_bounds, l2_gas_bounds, chainID, nonce, data_availability_mode) * @return an object with Tx hash + (r, s, v) signature */ signTx(path: string, calls: Call[], tx: TxFields): Promise<ResponseTxSign>; /** * sign a Starknet Tx v1 Invoke transaction * @param path Derivation path in EIP-2645 format * @param calls List of calls [(to, selector, calldata), (), ...] * @param tx Tx fields (account address, max_fee, chainID, nonce) * @return an object with Tx hash + (r, s, v) signature */ signTxV1(path: string, calls: Call[], tx: TxV1Fields): Promise<ResponseTxSign>; /** * sign a Starknet Tx v3 DeployAccount transaction * @param path Derivation path in EIP-2645 format * @param tx Tx fields (contract_address, tip, resourceBounds, paymaster_data, chain_id, nonce, nonceDataAvailabilityMode, feeDataAvailabilityMode, constructor_calldata, class_hash, contract_address_salt) * @return an object with Tx hash + (r, s, v) signature */ signDeployAccount(path: string, tx: DeployAccountFields): Promise<ResponseTxSign>; /** * sign a Starknet Tx v1 DeployAccount transaction * @param path Derivation path in EIP-2645 format * @param tx Tx fields (contract_address, class_hash, contract_address_salt, constructor_calldata, max_fee, chainID, nonce) * @return an object with Tx hash + (r, s, v) signature */ signDeployAccountV1(path: string, tx: DeployAccountV1Fields): Promise<ResponseTxSign>; /** * sign a SNIP-12 encoded message * @param path Derivation path in EIP-2645 format * @param message message to be signed * @param account accound address to sign the message * @return an object with (r, s, v) signature */ signMessage(path: string, message: TypedData, account: string): Promise<ResponseHashSign>; private encodeResourceBounds; private encodeDataAvailabilityMode; }