@worldcoin/minikit-js
Version:
minikit-js is our SDK for building mini-apps.
44 lines (42 loc) • 1.47 kB
TypeScript
/**
* Self-contained EIP-1193 Provider for World App
*
* Works with any Ethereum library (viem, ethers, wagmi, or raw EIP-1193).
* Triggers walletAuth on `eth_requestAccounts` and routes all other RPC
* methods to MiniKit's native commands.
*
* @example
* ```typescript
* // viem
* import { createWalletClient, custom } from 'viem';
* import { getWorldAppProvider } from '@worldcoin/minikit-js';
* const client = createWalletClient({ transport: custom(getWorldAppProvider()), chain: worldchain });
*
* // ethers
* import { BrowserProvider } from 'ethers';
* import { getWorldAppProvider } from '@worldcoin/minikit-js';
* const provider = new BrowserProvider(getWorldAppProvider());
* ```
*/
type WorldAppProvider = {
request: (args: {
method: string;
params?: unknown;
}) => Promise<unknown>;
on: (event: string, fn: (...args: unknown[]) => void) => void;
removeListener: (event: string, fn: (...args: unknown[]) => void) => void;
};
declare global {
interface Window {
__worldapp_eip1193_provider__?: WorldAppProvider;
__worldapp_eip1193_address__?: `0x${string}`;
}
}
/**
* Get the EIP-1193 provider for World App.
*
* Returns a singleton instance (stored on `window`) so all consumers
* share the same provider and address state, even across separate bundles.
*/
declare function getWorldAppProvider(): WorldAppProvider;
export { type WorldAppProvider as W, getWorldAppProvider as g };