@cosmos-kit/react-lite
Version:
cosmos-kit wallet connector
63 lines (62 loc) • 2.75 kB
TypeScript
import { OfflineAminoSigner } from '@cosmjs/amino';
import { OfflineDirectSigner } from '@cosmjs/proto-signing';
import { MainWalletBase, WalletClient, WalletName } from '@cosmos-kit/core';
import { Origin, OverrideHandler, ParentMetadata } from '@dao-dao/cosmiframe';
import { RefCallback } from 'react';
export type FunctionKeys<T> = {
[K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? K : never;
}[keyof T];
export type UseIframeSignerOverrides = Partial<{
[K in keyof (OfflineAminoSigner & OfflineDirectSigner)]: (...params: Parameters<(OfflineAminoSigner & OfflineDirectSigner)[K]>) => OverrideHandler | Promise<OverrideHandler>;
}>;
export type UseIframeOptions = {
/**
* Optionally attempt to use a specific wallet. Otherwise get the first active
* wallet.
*/
walletName?: WalletName;
/**
* Optionally set the metadata that represents this parent to the iframe.
*/
metadata?: ParentMetadata;
/**
* If defined, the relevant override of a wallet client function will be
* called with the parameters. The return value determines how the iframe
* should handle the function. By default, if nothing is returned, an error
* will be thrown with the message "Handled by outer wallet."
*/
walletClientOverrides?: Partial<{
[K in FunctionKeys<WalletClient>]: (...params: Parameters<WalletClient[K]>) => OverrideHandler | Promise<OverrideHandler>;
}>;
/**
* If defined, the relevant override of a direct or amino signer will be
* called with the parameters. The return value determines how the iframe
* should handle the function. By default, if nothing is returned, an error
* will be thrown with the message "Handled by outer wallet."
*/
signerOverrides?: UseIframeSignerOverrides | ((chainId: string) => UseIframeSignerOverrides) | ((chainId: string) => Promise<UseIframeSignerOverrides>);
/**
* Optionally only respond to requests from iframes of specific origin. If
* undefined or empty, all origins are allowed.
*/
origins?: Origin[];
};
export type UseIframeReturn = {
/**
* The main wallet, or undefined if the wallet is not connected.
*/
wallet: MainWalletBase | undefined;
/**
* A ref callback to set the iframe element.
*/
iframeRef: RefCallback<HTMLIFrameElement | null>;
/**
* The iframe element.
*/
iframe: HTMLIFrameElement | null;
/**
* A function to trigger a keystore change event on the iframe app wallet.
*/
triggerKeystoreChange: () => void;
};
export declare const useIframe: ({ walletName, metadata, walletClientOverrides, signerOverrides, origins, }?: UseIframeOptions) => UseIframeReturn;