import { StdSignDoc } from "@keplr-wallet/types"; import { OfflineSigner } from "@cosmjs/proto-signing"; import { AccountAddress, ChainId, EvmChainId } from "@injectivelabs/ts-types"; import { TxClientInclusionOptions, TxResponse } from "@injectivelabs/sdk-ts/core/tx"; import { AminoSignResponse, DirectSignResponse, TxRaw } from "@injectivelabs/sdk-ts/types"; //#region src/types/events.d.ts declare const StrategyEventType: { readonly ConnectionEnd: "connection-end"; readonly ConnectionStart: "connection-start"; readonly WalletSigningEnd: "wallet-signing-end"; readonly WalletSigningStart: "wallet-signing-start"; }; declare const WalletConnectStrategyEventType: { readonly WalletConnectSigningWithTxTimeout: "signing-with-tx-timeout"; }; declare const WalletStrategyEmitterEventType: { readonly TransactionFail: "transaction-fail"; readonly TransactionSigned: "transaction-signed"; readonly TransactionSignStart: "transaction-sign-start"; readonly TransactionBroadcastEnd: "transaction-broadcast-end"; readonly TransactionBroadcastStart: "transaction-broadcast-start"; readonly TransactionBroadcastSynced: "transaction-broadcast-synced"; readonly TransactionPreparationEnd: "transaction-preparation-end"; readonly TransactionPreparationStart: "transaction-preparation-start"; readonly WalletStrategyDisconnect: "wallet-strategy-disconnect"; }; type StrategyEventType = (typeof StrategyEventType)[keyof typeof StrategyEventType] | (typeof WalletConnectStrategyEventType)[keyof typeof WalletConnectStrategyEventType]; type WalletStrategyEmitterEventType = (typeof WalletStrategyEmitterEventType)[keyof typeof WalletStrategyEmitterEventType] | StrategyEventType; type WalletStrategyEmitterEvents = { [K in WalletStrategyEmitterEventType]: Record }; interface WalletStrategyEmitter { on(event: WalletStrategyEmitterEventType, listener: (...args: any[]) => void): this; off(event: WalletStrategyEmitterEventType, listener: (...args: any[]) => void): this; emit(event: WalletStrategyEmitterEventType, ...args: any[]): boolean; } //#endregion //#region src/types/enums.d.ts declare const BroadcastMode: { readonly Block: "block"; readonly Sync: "sync"; readonly Async: "async"; }; type BroadcastMode = (typeof BroadcastMode)[keyof typeof BroadcastMode]; declare const Wallet: { readonly Leap: "leap"; readonly Keplr: "keplr"; readonly Ninji: "ninji"; readonly Magic: "magic"; readonly Rabby: "rabby"; readonly Ledger: "ledger"; readonly BitGet: "BitGet"; readonly OWallet: "owallet"; readonly Phantom: "phantom"; readonly Rainbow: "rainbow"; readonly Turnkey: "turnkey"; readonly Metamask: "metamask"; readonly KeplrEvm: "keplr-evm"; readonly OkxWallet: "okx-wallet"; readonly PrivateKey: "private-key"; readonly TrustWallet: "trust-wallet"; readonly TrezorBip32: "trezor-bip32"; readonly TrezorBip44: "trezor-bip44"; readonly Cosmostation: "cosmostation"; readonly LedgerCosmos: "ledger-cosmos"; readonly LedgerLegacy: "ledger-legacy"; readonly WalletConnect: "wallet-connect"; readonly CosmostationEth: "cosmostation-eth"; readonly PrivateKeyCosmos: "private-key-cosmos"; }; type Wallet = (typeof Wallet)[keyof typeof Wallet]; declare const MagicProvider: { readonly Email: "email"; readonly Apple: "apple"; readonly Github: "github"; readonly Google: "google"; readonly Discord: "discord"; readonly Twitter: "twitter"; readonly Facebook: "facebook"; }; type MagicProvider = (typeof MagicProvider)[keyof typeof MagicProvider]; declare const WalletDeviceType: { readonly Mobile: "mobile"; readonly Other: "other"; readonly Browser: "browser"; readonly Hardware: "hardware"; }; type WalletDeviceType = (typeof WalletDeviceType)[keyof typeof WalletDeviceType]; declare const WalletEventListener: { readonly AccountChange: "account-change"; readonly ChainIdChange: "chain-id-change"; }; type WalletEventListener = (typeof WalletEventListener)[keyof typeof WalletEventListener]; declare const EvmWalletProviderErrorCode: { readonly InternalError: -32603; readonly UserRejectedRequest: 4001; readonly UnrecognizedChain: 4902; }; type EvmWalletProviderErrorCode = (typeof EvmWalletProviderErrorCode)[keyof typeof EvmWalletProviderErrorCode]; declare const WalletAction: { readonly GetChainId: "get-chain-id"; readonly GetAccounts: "get-accounts"; readonly GetNetworkId: "get-network-id"; readonly SignArbitrary: "sign-arbitrary"; readonly SignTransaction: "sign-transaction"; readonly SendTransaction: "send-transaction"; readonly SendEvmTransaction: "send-evm-transaction"; readonly SignEvmTransaction: "sign-evm-transaction"; readonly GetEvmTransactionReceipt: "get-evm-transaction-receipt"; }; type WalletAction = (typeof WalletAction)[keyof typeof WalletAction]; //#endregion //#region src/types/strategy.d.ts interface StrategyEmitter { emit(event: string, data?: Record): boolean; } type onAccountChangeCallback = (account: string | string[]) => void; type onChainIdChangeCallback = () => void; type Eip1193Provider = { request: (args: { method: string; params: any[]; }) => Promise; on: (event: string, listener: (...args: any[]) => void) => void; removeListener: (event: string, listener: (...args: any[]) => void) => void; }; type CosmosWalletAbstraction = { enableGasCheck?(chainId: ChainId): Promise | void; disableGasCheck?(chainId: ChainId): Promise | void; signEIP712CosmosTx(args: { signDoc: StdSignDoc; eip712: any; }): Promise; }; type MagicMetadata = { apiKey?: string; rpcEndpoint?: string; }; type PrivateKeyMetadata = { privateKey: string; }; type WalletConnectMetadata = { projectId?: string; }; interface WalletStrategyEvmOptions { evmChainId: EvmChainId; rpcUrl?: string; rpcUrls?: Partial>; } interface SendTransactionOptions { address: string; chainId: ChainId; txTimeout?: number; txInclusion?: TxClientInclusionOptions; onBroadcast?: (txHash: string) => void; endpoints: { rest: string; grpc: string; tm?: string; }; } declare const TurnkeyProvider: { readonly Sms: "sms"; readonly Apple: "apple"; readonly Email: "email"; readonly Google: "google"; readonly Twitter: "twitter"; }; type TurnkeyProvider = (typeof TurnkeyProvider)[keyof typeof TurnkeyProvider]; type TurnkeyOAuthProvider = typeof TurnkeyProvider.Apple | typeof TurnkeyProvider.Google | typeof TurnkeyProvider.Twitter; type TurnkeySession = { sessionType: any; userId: string; organizationId: string; expiry: number; token: string; }; interface TurnkeyMetadata { apiBaseUrl: string; otpInitPath?: string; otpVerifyPath?: string; googleClientId?: string; oauthLoginPath?: string; session?: TurnkeySession; twitterClientId?: string; apiServerEndpoint: string; credentialBundle?: string; googleRedirectUri?: string; expirationSeconds?: string; twitterRedirectUri?: string; oauth2ExchangePath?: string; defaultOrganizationId: string; } interface WalletMetadata { magic?: MagicMetadata; turnkey?: Partial; walletConnect?: WalletConnectMetadata; privateKey?: PrivateKeyMetadata; derivationPath?: string; baseDerivationPath?: string; } interface ConcreteWalletStrategyArgs { chainId: ChainId; metadata?: WalletMetadata; emitter?: StrategyEmitter; } interface ConcreteEvmWalletStrategyArgs extends ConcreteWalletStrategyArgs { evmOptions: WalletStrategyEvmOptions; } interface ConcreteCosmosWalletStrategyArgs extends ConcreteWalletStrategyArgs { wallet?: Wallet; } interface ConcreteCosmosWalletStrategy { metadata?: WalletMetadata; setMetadata?(metadata?: WalletMetadata): void; /** * The accounts from the wallet (addresses) */ getAddresses(args?: unknown): Promise; /** * The accounts from the wallet with derivation path info (for hardware wallets) */ getAddressesInfo(args?: unknown): Promise<{ address: string; derivationPath: string; baseDerivationPath: string; }[]>; /** * Return the WalletDeviceType connected on the * wallet provider (extension, mobile, hardware wallet) */ getWalletDeviceType(): Promise; /** * Get the PubKey from the wallet * in base64 for Cosmos native wallets */ getPubKey(address?: string): Promise; /** * Perform validations and checks * for the wallet (if the chain is supported, etc) */ enable(args?: unknown): Promise; /** * Sends Cosmos transaction. Returns a transaction hash * @param transaction should implement TransactionConfig * @param options */ sendTransaction(transaction: DirectSignResponse | TxRaw, options: SendTransactionOptions): Promise; signCosmosTransaction(transaction: { txRaw: TxRaw; chainId: string; accountNumber: number; address: string; }): Promise; signAminoTransaction(transaction: { stdSignDoc: StdSignDoc; address: string; }): Promise; } type ConcreteStrategiesArg = { [key in Wallet]?: ConcreteWalletStrategy }; interface WalletStrategyArguments { chainId: ChainId; metadata?: WalletMetadata; evmOptions?: WalletStrategyEvmOptions; disabledWallets?: Wallet[]; wallet?: Wallet; strategies: ConcreteStrategiesArg; } interface ConcreteWalletStrategy extends Omit { /** * The accounts from the wallet with derivation path info (for hardware wallets) */ getAddressesInfo(args?: unknown): Promise<{ address: string; derivationPath: string; baseDerivationPath: string; }[]>; /** * Sends Cosmos transaction. Returns a transaction hash * @param transaction should implement TransactionConfig * @param options */ sendTransaction(transaction: DirectSignResponse | TxRaw, options: { address: string; chainId: ChainId; txTimeout?: number; txInclusion?: TxClientInclusionOptions; onBroadcast?: (txHash: string) => void; endpoints?: { rest: string; grpc: string; tm?: string; }; }): Promise; /** * Confirm the address on the wallet * @param address address */ getSessionOrConfirm(address?: string): Promise; /** * Sends Ethereum transaction. Returns a transaction hash * @param transaction should implement TransactionConfig * @param options */ sendEvmTransaction(transaction: unknown, options: { address: string; evmChainId: EvmChainId; }): Promise; /** * Sign a cosmos transaction using the wallet provider * * @param transaction * @param address - injective address */ signCosmosTransaction(transaction: { txRaw: TxRaw; accountNumber: number; chainId: string; address: string; }): Promise; /** * Sign an amino sign doc using the wallet provider * * @param transaction * @param address - injective address */ signAminoCosmosTransaction(transaction: { signDoc: StdSignDoc; address: string; }): Promise; /** * Sign EIP712 TypedData using the wallet provider * @param eip712TypedData * @param address - ethereum address */ signEip712TypedData(eip712TypedData: string, address: string, options?: { txTimeout?: number; }): Promise; signArbitrary(signer: string, data: string | Uint8Array): Promise; getEthereumChainId(): Promise; getEvmTransactionReceipt(txHash: string, evmChainId?: EvmChainId): void; onAccountChange?(callback: onAccountChangeCallback): Promise | void; onChainIdChange?(callback: onChainIdChangeCallback): Promise | void; initStrategy?(): Promise | void; disconnect?(): Promise | void; getCosmosWallet?(chainId: ChainId): CosmosWalletAbstraction; getWalletClient?(): Promise; getEip1193Provider?(): Promise; getOfflineSigner?(chainId: string): Promise; } interface WalletStrategy { strategies: ConcreteStrategiesArg; wallet: Wallet; args: WalletStrategyArguments; metadata?: WalletMetadata; getWallet(): Wallet; getWalletClient?(): Promise; setWallet(wallet: Wallet): Promise; setMetadata(metadata?: WalletMetadata): void; getStrategy(): ConcreteWalletStrategy; getAddresses(args?: unknown): Promise; getAddressesInfo(args?: unknown): Promise<{ address: string; derivationPath: string; baseDerivationPath: string; }[]>; getWalletDeviceType(): Promise; getPubKey(address?: string): Promise; enable(args?: unknown): Promise; enableAndGetAddresses(args?: unknown): Promise; getEthereumChainId(): Promise; getEvmTransactionReceipt(txHash: string, evmChainId?: EvmChainId): Promise; getSessionOrConfirm(address?: AccountAddress): Promise; sendTransaction(tx: DirectSignResponse | TxRaw, options: SendTransactionOptions): Promise; sendEvmTransaction(tx: any, options: { address: AccountAddress; evmChainId: EvmChainId; }): Promise; signEip712TypedData(eip712TypedData: string, address: AccountAddress, options?: { txTimeout?: number; }): Promise; signAminoCosmosTransaction(transaction: { signDoc: StdSignDoc; address: string; }): Promise; signCosmosTransaction(transaction: { txRaw: TxRaw; accountNumber: number; chainId: string; address: string; }): Promise; signArbitrary(signer: string, data: string | Uint8Array): Promise; onAccountChange(callback: onAccountChangeCallback): Promise; onChainIdChange(callback: onChainIdChangeCallback): Promise; disconnect(): Promise; getCosmosWallet?(chainId: ChainId): CosmosWalletAbstraction; getEip1193Provider?(): Promise; getOfflineSigner?(chainId: string): Promise; deleteCurrentSubOrganization?(): Promise<{ organizationId: string; }>; } //#endregion export { WalletDeviceType as A, onAccountChangeCallback as C, MagicProvider as D, EvmWalletProviderErrorCode as E, WalletStrategyEmitterEventType as F, WalletStrategyEmitterEvents as I, StrategyEventType as M, WalletConnectStrategyEventType as N, Wallet as O, WalletStrategyEmitter as P, WalletStrategyEvmOptions as S, BroadcastMode as T, TurnkeySession as _, ConcreteWalletStrategy as a, WalletStrategy as b, Eip1193Provider as c, SendTransactionOptions as d, StdSignDoc as f, TurnkeyProvider as g, TurnkeyOAuthProvider as h, ConcreteStrategiesArg as i, WalletEventListener as j, WalletAction as k, MagicMetadata as l, TurnkeyMetadata as m, ConcreteCosmosWalletStrategyArgs as n, ConcreteWalletStrategyArgs as o, StrategyEmitter as p, ConcreteEvmWalletStrategyArgs as r, CosmosWalletAbstraction as s, ConcreteCosmosWalletStrategy as t, PrivateKeyMetadata as u, WalletConnectMetadata as v, onChainIdChangeCallback as w, WalletStrategyArguments as x, WalletMetadata as y };