@ledgerhq/hw-app-starknet
Version:
Ledger Hardware Wallet Starknet Application API
87 lines (86 loc) • 4.14 kB
TypeScript
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;
}