import type Transport from "@ledgerhq/hw-transport"; export type * from "./types"; export declare const CLA = 224; export declare const P1_NON_CONFIRM = 0; export declare const P1_CONFIRM = 1; export declare const P1_SIGN_UNTYPED_VERSIONED_MESSAGE = 1; export declare const P1_SIGN_PREPARED_TRANSACTION = 2; export declare const P2_NONE = 0; export declare const P2_FIRST = 1; export declare const P2_MORE = 2; export declare const P2_MSG_END = 4; export declare const INS: { GET_VERSION: number; GET_APP_NAME: number; GET_ADDR: number; SIGN: number; }; export declare const STATUS: { OK: number; USER_CANCEL: number; }; export declare const SIGNATURE_FRAMING_BYTE = 64; export declare const SIGNATURE_END_BYTE = 0; export type AppConfig = { version: string; }; export type CantonAddress = { publicKey: string; address: string; path: string; }; export type CantonSignature = { signature: string; applicationSignature?: string; }; export type CantonPreparedTransaction = { damlTransaction: Uint8Array; nodes: Uint8Array[]; metadata: Uint8Array; inputContracts: Uint8Array[]; }; export type CantonUntypedVersionedMessage = { transactions: string[]; challenge?: string; }; /** * Canton BOLOS API */ export default class Canton { transport: Transport; constructor(transport: Transport, scrambleKey?: string); /** * Get a Canton address for a given BIP-32 path. * * @param path a path in BIP-32 format * @param display whether to display the address on the device * @return the address and public key */ getAddress(path: string, display?: boolean): Promise; /** * Sign a Canton transaction * using the appropriate signing method based on transaction type. * * @param path a path in BIP-32 format * @param data either prepared transaction components, untyped versioned message, or txHash string (backwards compatibility) * @return the signature */ signTransaction(path: string, data: CantonPreparedTransaction | CantonUntypedVersionedMessage | string): Promise; /** * Sign a transaction hash (backwards compatibility) * @private */ private signTxHash; /** * Sign a prepared Canton transaction * @private */ private signPreparedTransaction; /** * Sign topology transactions for Canton onboarding * @private */ private signUntypedVersionedMessage; /** * Get the app configuration. * @return the app configuration including version */ getAppConfiguration(): Promise; /** * Validate Uint8Array with descriptive error message * @private */ private validateUint8Array; /** * Unified chunking strategy for sending data to device * * P2 flag combinations per protocol (see app-canton/doc/APDU.md): * - P2_MORE (0x02): More chunks to come for current transaction * - P2_MORE | P2_MSG_END (0x06): Transaction complete, more transactions expected * - P2_MSG_END (0x04): Final transaction, end of sequence * * @private */ private sendChunkedData; /** * Create optimized chunks from payload * @private */ private createChunks; /** * Parse signature response - handles both TLV format (onboarding) and single signatures * @private */ private parseSignatureResponse; /** * Check transport response for errors and throw appropriate exceptions * @private */ private checkTransportResponse; /** * Extract response data from transport response * APDU responses have format: [data][status_code(2_bytes)] * @private */ private extractResponseData; /** * Serialize a BIP-32 path string to a data buffer for Canton BOLOS * @private */ private serializeBipPath; /** * Serialize a BIP path array to a data buffer for Canton BOLOS * @private */ private serializePath; /** * Convert public key to address * @private */ private publicKeyToAddress; /** * Extract Pubkey info from APDU response * @private * @returns Object with publicKey and chainCode as hex strings */ private extractPublicKeyAndChainCode; /** * Extract AppVersion from APDU response * @private */ private extractVersion; } //# sourceMappingURL=Canton.d.ts.map