import { EventEmitter } from "events"; import { JsonRpcResponse, JsonRpcRequest, ErrorResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; import { ISignClient } from "./client.js"; import { RelayerTypes } from "../core/relayer.js"; import { SessionTypes } from "./session.js"; import { ProposalTypes } from "./proposal.js"; import { PairingTypes } from "../core/pairing.js"; import { JsonRpcTypes } from "./jsonrpc.js"; import { PendingRequestTypes } from "./pendingRequest.js"; import { AuthTypes } from "./auth.js"; import { CryptoTypes } from "../core/crypto.js"; export declare namespace EngineTypes { type Event = "session_connect" | "session_approve" | "session_update" | "session_extend" | "session_ping" | "pairing_ping" | "session_request"; interface EventArguments { session_connect: { error?: ErrorResponse; session?: SessionTypes.Struct; }; session_approve: { error?: ErrorResponse; }; session_update: { error?: ErrorResponse; }; session_extend: { error?: ErrorResponse; }; session_ping: { error?: ErrorResponse; }; pairing_ping: { error?: ErrorResponse; }; session_request: { error?: ErrorResponse; result?: any; }; } interface UriParameters { protocol: string; version: number; topic: string; symKey: string; relay: RelayerTypes.ProtocolOptions; methods?: string[]; expiryTimestamp?: number; } interface EventCallback { topic: string; payload: T; transportType?: RelayerTypes.MessageEvent["transportType"]; attestation?: string; encryptedId?: string; } type Hex = `0x${string}`; interface PaymentOption { asset: string; amount: Hex; recipient: string; } interface WalletPayParams { version: string; orderId?: string; acceptedPayments: PaymentOption[]; expiry: number; } interface WalletPayResult { version: string; orderId?: string; txid: string; recipient: string; asset: string; amount: Hex; } interface ConnectParams { requiredNamespaces?: ProposalTypes.RequiredNamespaces; optionalNamespaces?: ProposalTypes.OptionalNamespaces; sessionProperties?: ProposalTypes.SessionProperties; scopedProperties?: ProposalTypes.ScopedProperties; pairingTopic?: string; relays?: RelayerTypes.ProtocolOptions[]; authentication?: AuthTypes.AuthenticateRequestParams[]; walletPay?: WalletPayParams; } interface PairParams { uri: string; } type ProposalRequestsResponses = { authentication?: AuthTypes.Cacao[]; walletPay?: WalletPayResult[]; }; interface ApproveParams { id: number; namespaces: SessionTypes.Namespaces; sessionProperties?: ProposalTypes.SessionProperties; scopedProperties?: ProposalTypes.ScopedProperties; sessionConfig?: SessionTypes.SessionConfig; relayProtocol?: string; proposalRequestsResponses?: ProposalRequestsResponses; } interface RejectParams { id: number; reason: ErrorResponse; } interface UpdateParams { topic: string; namespaces: SessionTypes.Namespaces; } interface ExtendParams { topic: string; } interface RequestParams { topic: string; request: { method: string; params: any; }; chainId: string; expiry?: number; } interface RespondParams { topic: string; response: JsonRpcResponse; } interface EmitParams { topic: string; event: { name: string; data: any; }; chainId: string; } interface PingParams { topic: string; } interface DisconnectParams { topic: string; reason: ErrorResponse; } interface FindParams { requiredNamespaces: ProposalTypes.RequiredNamespaces; } type AcknowledgedPromise = Promise<{ acknowledged: () => Promise; }>; type SessionAuthenticateResponsePromise = { uri: string; response: () => Promise; }; interface RpcOpts { req: RelayerTypes.PublishOptions & { ttl: number; }; res: RelayerTypes.PublishOptions & { ttl: number; }; reject?: RelayerTypes.PublishOptions & { ttl: number; }; autoReject?: RelayerTypes.PublishOptions & { ttl: number; }; } type RpcOptsMap = Record; type EngineQueue = { state: "IDLE" | "ACTIVE"; queue: T[]; }; } export declare abstract class IEngineEvents extends EventEmitter { constructor(); abstract emit: (event: string, args: EngineTypes.EventArguments[E]) => boolean; abstract once: (event: string, listener: (args: EngineTypes.EventArguments[E]) => any) => this; } export interface EnginePrivate { sendRequest(args: { topic: string; method: M; params: JsonRpcTypes.RequestParams[M]; expiry?: number; relayRpcId?: number; clientRpcId?: number; throwOnFailedPublish?: boolean; appLink?: string; tvf?: RelayerTypes.ITVF; publishOpts?: RelayerTypes.PublishOptions; }): Promise; sendBatchRequest(args: { sharedPayload: Record; requests: Record; throwOnFailedPublish?: boolean; appLink?: string; tvf?: RelayerTypes.ITVF; publishOpts?: RelayerTypes.PublishOptions; }): Promise; sendResult(args: { id: number; topic: string; result: JsonRpcTypes.Results[M]; throwOnFailedPublish?: boolean; encodeOpts?: CryptoTypes.EncodeOptions; appLink?: string; publishOpts?: RelayerTypes.PublishOptions; }): Promise; sendError(params: { id: number; topic: string; error: JsonRpcTypes.Error; encodeOpts?: CryptoTypes.EncodeOptions; rpcOpts?: RelayerTypes.PublishOptions; appLink?: string; publishOpts?: RelayerTypes.PublishOptions; }): Promise; sendApproveSession(params: { sessionTopic: string; proposal: ProposalTypes.Struct; pairingProposalResponse: JsonRpcTypes.Results[JsonRpcTypes.WcMethod]; sessionSettleRequest: JsonRpcTypes.RequestParams[JsonRpcTypes.WcMethod]; publishOpts: RelayerTypes.PublishOptions; }): Promise; sendProposeSession(params: { proposal: ProposalTypes.Struct; publishOpts: RelayerTypes.PublishOptions; }): Promise; onRelayEventRequest(event: EngineTypes.EventCallback): Promise; onRelayEventResponse(event: EngineTypes.EventCallback): Promise; onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise; shouldIgnorePairingRequest(params: { topic: string; requestMethod: string; }): boolean; deleteSession(params: { topic: string; expirerHasDeleted?: boolean; id?: number; emitEvent?: boolean; }): Promise; deleteProposal(id: number, expirerHasDeleted?: boolean): Promise; setExpiry(topic: string, expiry: number): Promise; setProposal(id: number, proposal: ProposalTypes.Struct): Promise; setAuthRequest(id: number, params: { request: AuthTypes.SessionAuthenticateRequest; pairingTopic: string; transportType?: RelayerTypes.MessageEvent["transportType"]; }): Promise; setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise; deletePendingSessionRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; deletePendingAuthRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; cleanupDuplicatePairings(session: SessionTypes.Struct): Promise; cleanup(): Promise; onSessionProposeRequest(params: { topic: string; payload: JsonRpcRequest; attestation?: string; encryptedId?: string; }): Promise; onSessionProposeResponse(topic: string, payload: JsonRpcResult | JsonRpcError, transportType?: RelayerTypes.MessageEvent["transportType"]): Promise; onSessionSettleRequest(topic: string, payload: JsonRpcRequest): Promise; onSessionSettleResponse(topic: string, payload: JsonRpcResult | JsonRpcError): Promise; onSessionUpdateRequest(topic: string, payload: JsonRpcRequest): Promise; onSessionUpdateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; onSessionExtendRequest(topic: string, payload: JsonRpcRequest): Promise; onSessionExtendResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; onSessionPingRequest(topic: string, payload: JsonRpcRequest): Promise; onSessionPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; onSessionDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; onSessionRequest(params: { topic: string; payload: JsonRpcRequest; transportType?: RelayerTypes.MessageEvent["transportType"]; attestation?: string; encryptedId?: string; }): Promise; onSessionRequestResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; onSessionEventRequest(topic: string, payload: JsonRpcRequest): Promise; onSessionAuthenticateRequest(params: { topic: string; payload: JsonRpcRequest; transportType?: RelayerTypes.MessageEvent["transportType"]; attestation?: string; encryptedId?: string; }): Promise; onSessionAuthenticateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; isValidConnect(params: EngineTypes.ConnectParams): Promise; isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams["wc_sessionSettle"]): void; isValidApprove(params: EngineTypes.ApproveParams): Promise; isValidReject(params: EngineTypes.RejectParams): Promise; isValidUpdate(params: EngineTypes.UpdateParams): Promise; isValidExtend(params: EngineTypes.ExtendParams): Promise; isValidRequest(params: EngineTypes.RequestParams): Promise; isValidRespond(params: EngineTypes.RespondParams): Promise; isValidPing(params: EngineTypes.PingParams): Promise; isValidEmit(params: EngineTypes.EmitParams): Promise; isValidDisconnect(params: EngineTypes.DisconnectParams): Promise; } export declare abstract class IEngine { client: ISignClient; constructor(client: ISignClient); abstract init(): Promise; abstract connect(params: EngineTypes.ConnectParams): Promise<{ uri?: string; approval: () => Promise; }>; abstract pair(params: EngineTypes.PairParams): Promise; abstract approve(params: EngineTypes.ApproveParams): Promise<{ topic: string; acknowledged: () => Promise; }>; abstract reject(params: EngineTypes.RejectParams): Promise; abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise; abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise; abstract request(params: EngineTypes.RequestParams): Promise; abstract respond(params: EngineTypes.RespondParams): Promise; abstract emit(params: EngineTypes.EmitParams): Promise; abstract ping(params: EngineTypes.PingParams): Promise; abstract disconnect(params: EngineTypes.DisconnectParams): Promise; abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[]; abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[]; abstract authenticate: (params: AuthTypes.SessionAuthenticateParams, walletUniversalLink?: string) => Promise; abstract approveSessionAuthenticate: (params: AuthTypes.ApproveSessionAuthenticateParams) => Promise<{ session: SessionTypes.Struct | undefined; }>; abstract formatAuthMessage: (params: { request: AuthTypes.BaseAuthRequestParams; iss: string; }) => string; abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise; abstract processRelayMessageCache(): void; } //# sourceMappingURL=engine.d.ts.map