@metamask/eth-ledger-bridge-keyring
Version:
A MetaMask compatible keyring, for ledger hardware wallets
83 lines • 3.57 kB
text/typescript
import { GetPublicKeyParams, GetPublicKeyResponse, LedgerBridge, LedgerSignMessageParams, LedgerSignMessageResponse, LedgerSignTransactionParams, LedgerSignTransactionResponse, LedgerSignTypedDataParams, LedgerSignTypedDataResponse } from "./ledger-bridge.mjs";
export declare enum IFrameMessageAction {
LedgerIsIframeReady = "ledger-is-iframe-ready",
LedgerConnectionChange = "ledger-connection-change",
LedgerUnlock = "ledger-unlock",
LedgerMakeApp = "ledger-make-app",
LedgerUpdateTransport = "ledger-update-transport",
LedgerSignTransaction = "ledger-sign-transaction",
LedgerSignPersonalMessage = "ledger-sign-personal-message",
LedgerSignTypedData = "ledger-sign-typed-data"
}
type IFrameMessageResponseStub<SuccessResult extends Record<string, unknown>, FailureResult = Error> = {
messageId: number;
} & ({
success: true;
payload: SuccessResult;
} | {
success: false;
payload: {
error: FailureResult;
};
});
type LedgerConnectionChangeActionResponse = {
messageId: number;
action: IFrameMessageAction.LedgerConnectionChange;
payload: {
connected: boolean;
};
};
type LedgerMakeAppActionResponse = {
messageId: number;
action: IFrameMessageAction.LedgerMakeApp;
} & ({
success: true;
} | {
success: false;
error?: unknown;
});
type LedgerUpdateTransportActionResponse = {
messageId: number;
action: IFrameMessageAction.LedgerUpdateTransport;
success: boolean;
};
type LedgerUnlockActionResponse = {
action: IFrameMessageAction.LedgerUnlock;
} & IFrameMessageResponseStub<GetPublicKeyResponse>;
type LedgerSignTransactionActionResponse = {
action: IFrameMessageAction.LedgerSignTransaction;
} & IFrameMessageResponseStub<LedgerSignTransactionResponse>;
type LedgerSignPersonalMessageActionResponse = {
action: IFrameMessageAction.LedgerSignPersonalMessage;
} & IFrameMessageResponseStub<LedgerSignMessageResponse>;
type LedgerSignTypedDataActionResponse = {
action: IFrameMessageAction.LedgerSignTypedData;
} & IFrameMessageResponseStub<LedgerSignTypedDataResponse>;
export type IFrameMessageResponse = LedgerConnectionChangeActionResponse | LedgerMakeAppActionResponse | LedgerUpdateTransportActionResponse | LedgerUnlockActionResponse | LedgerSignTransactionActionResponse | LedgerSignPersonalMessageActionResponse | LedgerSignTypedDataActionResponse;
export type LedgerIframeBridgeOptions = {
bridgeUrl: string;
};
export declare class LedgerIframeBridge implements LedgerBridge<LedgerIframeBridgeOptions> {
#private;
iframe?: HTMLIFrameElement;
iframeLoaded: boolean;
eventListener?: (eventMessage: {
origin: string;
data: IFrameMessageResponse;
}) => void;
isDeviceConnected: boolean;
currentMessageId: number;
constructor(opts?: LedgerIframeBridgeOptions);
init(): Promise<void>;
destroy(): Promise<void>;
getOptions(): Promise<LedgerIframeBridgeOptions>;
setOptions(opts: LedgerIframeBridgeOptions): Promise<void>;
attemptMakeApp(): Promise<boolean>;
updateTransportMethod(transportType: string): Promise<boolean>;
getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;
deviceSignTransaction(params: LedgerSignTransactionParams): Promise<LedgerSignTransactionResponse>;
deviceSignMessage(params: LedgerSignMessageParams): Promise<LedgerSignMessageResponse>;
deviceSignTypedData(params: LedgerSignTypedDataParams): Promise<LedgerSignTypedDataResponse>;
}
export {};
//# sourceMappingURL=ledger-iframe-bridge.d.mts.map