ribbit-wallet-connect
Version:
Next-generation multi-chain wallet and payments app that makes crypto simple, secure, and usable in daily life.
107 lines (106 loc) • 3.18 kB
TypeScript
import { EntryFunctionArgument, TypeTag } from '@aptos-labs/ts-sdk';
import { TxnBuilderTypes } from 'supra-l1-sdk-core';
export type DappMetadata = {
name: string;
url: string;
description: string;
logo: string;
};
export type ConnectToWalletResponse = {
data: {
accounts?: {
walletAddress: string;
chain: string;
}[] | null;
approved: boolean;
error?: string | null;
};
};
export type WalletInfo = {
walletAddress: string;
connected: boolean;
};
export interface Transport {
sendMessage<T = any>(type: string, payload?: any): Promise<T>;
listen(): void;
registerHandler?(event: string, handler: (...args: any[]) => void): void;
on?(event: string, handler: (...args: any[]) => void): void;
off?(event: string, handler: (...args: any[]) => void): void;
}
export type RawTxnRequest = {
sender: string;
moduleAddress: string;
moduleName: string;
functionName: string;
typeArgs: TypeTag[] | string[] | TxnBuilderTypes.TypeTag[];
args: EntryFunctionArgument[] | Uint8Array[];
chainId: number;
};
export declare enum TransportMessageType {
PING = "PING",
SEND_TRANSACTION = "SEND_TRANSACTION",
GET_WALLET_BALANCE = "GET_WALLET_BALANCE",
CONNECT_REQUEST = "CONNECT_REQUEST",
DISCONNECT_REQUEST = "DISCONNECT_REQUEST",
SIGN_AND_SEND_TRANSACTION = "SIGN_TRANSACTION",
SIGN_MESSAGE = "SIGN_MESSAGE",
WALLET_CHANGED = "WALLET_CHANGED",
NETWORK_CHANGED = "NETWORK_CHANGED"
}
export interface SignMessageRequest {
message: string;
nonce?: number;
chainId?: number;
}
export interface SignMessageResponse {
approved: boolean;
signature?: string;
error?: string;
publicKey?: string;
address?: string;
}
export interface RawTransactionRequest {
rawTxn: string;
chainId: number;
format?: RawTxnFormat;
/** Optional metadata for UI confirmation */
meta?: {
/** Human-readable description for confirmation */
description?: string;
/** Any extra data for UI display */
[key: string]: any;
};
}
export interface RawTransactionResponse {
approved: boolean;
txHash?: string;
error?: string;
result?: string;
}
export interface WalletBalanceRequest {
chainId: number;
resourceType: string;
decimals: number;
}
export interface WalletBalanceResponse {
balance: number | null;
error?: string | null;
}
export declare enum SupraChainId {
TESTNET = 6,
MAINNET = 8
}
export declare enum RawTxnFormat {
supra = "supra",
aptos = "aptos"
}
export interface RibbitWalletSDK {
initialize(): void;
connectToWallet(metadata: DappMetadata): Promise<WalletInfo>;
disconnect(): Promise<void>;
getWalletInfo(): WalletInfo | null;
signMessage(message: SignMessageRequest): Promise<SignMessageResponse>;
signAndSendRawTransaction(tx: RawTransactionRequest): Promise<RawTransactionResponse>;
createRawTransactionBuffer(tx: RawTxnRequest, format?: RawTxnFormat): Promise<string>;
getWalletBalance(walletBalanceRequest: WalletBalanceRequest): Promise<WalletBalanceResponse>;
}