import { Signer, Transaction, TransactionInstruction } from '@solana/web3.js'; import { BufferJSON, NotNestedObject, SerializedSigner, SerializedTransaction, SerializedTransactionInstruction, StrPubkey } from './utils'; export declare type Optional = T | undefined | null; export declare type PayloadProposalOpts = Partial<{ name: string; }> & NotNestedObject; export declare enum MessageMethod { getSafeInfo = "getSafeInfo", getSafeBalance = "getSafeBalance", createProposal = "createProposal", signMessage = "signMessage", signTransaction = "signTransaction", signAllTransactions = "signAllTransactions" } export declare type MessagePayload = { [MessageMethod.createProposal]: { display: { proposalName: string; } & NotNestedObject; executeInstructions: TransactionInstruction[]; setupInstructions?: Optional; signers: Signer[]; }; [MessageMethod.getSafeInfo]: unknown; [MessageMethod.getSafeBalance]: unknown; [MessageMethod.signMessage]: { message: Uint8Array; }; [MessageMethod.signTransaction]: { transaction: Transaction; signers: Signer[]; options: PayloadProposalOpts; }; [MessageMethod.signAllTransactions]: { transactions: Transaction[]; options: PayloadProposalOpts; signers: Signer[]; }; }; export declare type MessageSerializedPayload = { [MessageMethod.createProposal]: { display: { proposalName: string; } & NotNestedObject; executeInstructions: SerializedTransactionInstruction[]; setupInstructions?: Optional; signers: SerializedSigner[]; }; [MessageMethod.getSafeInfo]: unknown; [MessageMethod.getSafeBalance]: unknown; [MessageMethod.signMessage]: { message: BufferJSON; }; [MessageMethod.signTransaction]: { transaction: SerializedTransaction; options: PayloadProposalOpts; signers: SerializedSigner[]; }; [MessageMethod.signAllTransactions]: { transactions: SerializedTransaction[]; options: PayloadProposalOpts; signers: SerializedSigner[]; }; }; export declare type MessageReturnData = { [MessageMethod.getSafeInfo]: { vaultAddress: Optional; safeAddress: Optional; safeName: Optional; safeOwners: StrPubkey[]; threshold: Optional; walletPublicKey: Optional; }; [MessageMethod.getSafeBalance]: { symbol: string; decimals: number; name: string; amount: number; fiatBalance: number; }[]; [MessageMethod.createProposal]: { proposalAddress: string; txId: string; }; [MessageMethod.signMessage]: { message: BufferJSON; }; [MessageMethod.signTransaction]: { transaction: SerializedTransaction; }; [MessageMethod.signAllTransactions]: { transactions: SerializedTransaction[]; }; }; export declare type MessageMethodFn = { [MessageMethod.createProposal]: (payload: MessagePayload[MessageMethod.createProposal]) => MessageReturnData[MessageMethod.createProposal]; [MessageMethod.getSafeInfo]: () => MessageReturnData[MessageMethod.getSafeInfo]; [MessageMethod.getSafeBalance]: () => MessageReturnData[MessageMethod.getSafeBalance]; [MessageMethod.signMessage]: (payload: MessagePayload[MessageMethod.signMessage]) => MessageReturnData[MessageMethod.signMessage]; }; export declare type ResponseMessage = { id: string; data?: T; method: MessageMethod; success: boolean; error?: string; timestamp: number; origin: string; version?: number; }; export declare type RequestMessage = { id: string; payload: MessageSerializedPayload[T]; method: MessageMethod; timestamp: number; origin: string; version?: number; }; export declare type MessageCallbackType = (response: any) => void; export declare type MessageResponseEvent = MessageEvent>; export declare type SuccessResponse = ResponseMessage; export declare type ErrorResponse = ResponseMessage;