{"version":3,"file":"index.cjs","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICrypto } from \"./crypto.js\";\nimport { IRelayer } from \"./relayer.js\";\nimport { IKeyChain } from \"./keychain.js\";\nimport { IJsonRpcHistory } from \"./history.js\";\nimport { IExpirer } from \"./expirer.js\";\nimport { IPairing } from \"./pairing.js\";\nimport { IVerify } from \"./verify.js\";\nimport { IEchoClient } from \"./echo.js\";\nimport { IEventClient } from \"./events.js\";\nexport declare namespace CoreTypes {\n  interface Options {\n    projectId?: string;\n    name?: string;\n    relayUrl?: string;\n    logger?: string | Logger;\n    keychain?: IKeyChain;\n    storage?: IKeyValueStorage;\n    storageOptions?: KeyValueStorageOptions;\n    maxLogBlobSizeInBytes?: number;\n    customStoragePrefix?: string;\n    telemetryEnabled?: boolean;\n  }\n\n  interface Metadata {\n    name: string;\n    description: string;\n    url: string;\n    icons: string[];\n    verifyUrl?: string;\n    redirect?: {\n      native?: string;\n      universal?: string;\n      linkMode?: boolean;\n    };\n  }\n}\n\nexport abstract class ICore extends IEvents {\n  public readonly protocol = \"wc\";\n  public readonly version = 2;\n\n  public abstract readonly name: string;\n  public abstract readonly context: string;\n  public abstract readonly relayUrl?: string;\n  public abstract readonly projectId?: string;\n  public abstract readonly customStoragePrefix: string;\n\n  public abstract logger: Logger;\n  public abstract heartbeat: IHeartBeat;\n  public abstract crypto: ICrypto;\n  public abstract relayer: IRelayer;\n  public abstract storage: IKeyValueStorage;\n  public abstract history: IJsonRpcHistory;\n  public abstract expirer: IExpirer;\n  public abstract pairing: IPairing;\n  public abstract verify: IVerify;\n  public abstract echoClient: IEchoClient;\n  public abstract linkModeSupportedApps: string[];\n  public abstract eventClient: IEventClient;\n\n  constructor(public opts?: CoreTypes.Options) {\n    super();\n  }\n\n  public abstract start(): Promise<void>;\n  public abstract dispatchEnvelope(params: {\n    topic: string;\n    message: string;\n    sessionExists: boolean;\n  }): void;\n\n  public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core.js\";\nimport { IKeyChain } from \"./keychain.js\";\n\nexport declare namespace CryptoTypes {\n  export type EncodingType = \"base64pad\" | \"base64url\";\n\n  export interface Participant {\n    publicKey: string;\n  }\n\n  export interface KeyPair {\n    privateKey: string;\n    publicKey: string;\n  }\n\n  export interface EncryptParams {\n    message: string;\n    symKey: string;\n    type?: number;\n    iv?: string;\n    senderPublicKey?: string;\n    encoding?: EncodingType;\n  }\n\n  export interface DecryptParams {\n    symKey: string;\n    encoded: string;\n    encoding?: EncodingType;\n  }\n\n  export interface EncodingParams {\n    type: Uint8Array;\n    sealed: Uint8Array;\n    iv: Uint8Array;\n    senderPublicKey?: Uint8Array;\n    encoding?: EncodingType;\n  }\n\n  export interface DecodingParams {\n    encoded: string;\n    encoding?: EncodingType;\n  }\n\n  export interface EncodeOptions {\n    type?: number;\n    senderPublicKey?: string;\n    receiverPublicKey?: string;\n    encoding?: EncodingType;\n  }\n\n  export interface DecodeOptions {\n    receiverPublicKey?: string;\n    encoding?: EncodingType;\n  }\n\n  export interface EncodingValidation {\n    type: number;\n    senderPublicKey?: string;\n    receiverPublicKey?: string;\n  }\n\n  export interface TypeOneParams {\n    type: 1;\n    senderPublicKey: string;\n    receiverPublicKey: string;\n  }\n}\n\nexport abstract class ICrypto {\n  public abstract name: string;\n\n  public abstract readonly context: string;\n\n  public abstract keychain: IKeyChain;\n\n  public abstract readonly randomSessionIdentifier: string;\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n    // @ts-ignore\n    keychain?: IKeyChain,\n  ) {}\n\n  public abstract init(): Promise<void>;\n\n  public abstract hasKeys(tag: string): boolean;\n\n  public abstract getClientId(): Promise<string>;\n\n  public abstract generateKeyPair(): Promise<string>;\n\n  public abstract generateSharedKey(\n    selfPublicKey: string,\n    peerPublicKey: string,\n    overrideTopic?: string,\n  ): Promise<string>;\n\n  public abstract setSymKey(symKey: string, overrideTopic?: string): Promise<string>;\n\n  public abstract deleteKeyPair(publicKey: string): Promise<void>;\n\n  public abstract deleteSymKey(topic: string): Promise<void>;\n\n  public abstract encode(\n    topic: string,\n    payload: JsonRpcPayload,\n    opts?: CryptoTypes.EncodeOptions,\n  ): Promise<string>;\n\n  public abstract decode(\n    topic: string,\n    encoded: string,\n    opts?: CryptoTypes.DecodeOptions,\n  ): Promise<JsonRpcPayload>;\n\n  public abstract signJWT(aud: string): Promise<string>;\n  public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n  public abstract getPayloadSenderPublicKey(\n    encoded: string,\n    encoding?: CryptoTypes.EncodingType,\n  ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n  ErrorResponse,\n  JsonRpcRequest,\n  JsonRpcResponse,\n  RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core.js\";\n\nexport interface JsonRpcRecord {\n  id: number;\n  topic: string;\n  request: RequestArguments;\n  chainId?: string;\n  response?: { result: any } | { error: ErrorResponse };\n  expiry?: number;\n}\n\nexport interface RequestEvent {\n  topic: string;\n  request: JsonRpcRequest;\n  chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n  public records = new Map<number, JsonRpcRecord>();\n\n  public abstract readonly context: string;\n\n  public abstract readonly size: number;\n\n  public abstract readonly keys: number[];\n\n  public abstract readonly values: JsonRpcRecord[];\n\n  public abstract readonly pending: RequestEvent[];\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n  ) {\n    super();\n  }\n\n  public abstract init(): Promise<void>;\n\n  public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n  public abstract get(topic: string, id: number): Promise<JsonRpcRecord>;\n\n  public abstract resolve(response: JsonRpcResponse): Promise<void>;\n\n  public abstract delete(topic: string, id?: number): void;\n\n  public abstract exists(topic: string, id: number): Promise<boolean>;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core.js\";\n\nexport type MessageRecord = Record<string, string>;\n\nexport abstract class IMessageTracker {\n  public abstract messages: Map<string, MessageRecord>;\n  public abstract messagesWithoutClientAck: Map<string, MessageRecord>;\n\n  public abstract name: string;\n\n  public abstract readonly context: string;\n\n  constructor(\n    public logger: Logger,\n    public core: ICore,\n  ) {}\n\n  public abstract init(): Promise<void>;\n\n  public abstract set(\n    topic: string,\n    message: string,\n    direction?: \"inbound\" | \"outbound\",\n  ): Promise<string>;\n\n  public abstract get(topic: string): MessageRecord;\n\n  public abstract getWithoutAck(topics: string[]): Record<string, string[]>;\n\n  public abstract has(topic: string, message: string): boolean;\n\n  public abstract del(topic: string): Promise<void>;\n\n  public abstract ack(topic: string, message: string): Promise<void>;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer.js\";\n\nexport declare namespace PublisherTypes {\n  export interface Params {\n    topic: string;\n    message: string;\n    opts: Omit<RelayerTypes.PublishOptions, \"internal\">;\n  }\n}\n\nexport abstract class IPublisher extends IEvents {\n  public abstract name: string;\n\n  public abstract readonly context: string;\n\n  constructor(\n    public relayer: IRelayer,\n    public logger: Logger,\n  ) {\n    super();\n  }\n\n  public abstract publish(\n    topic: string,\n    message: string,\n    opts?: RelayerTypes.PublishOptions,\n  ): Promise<void>;\n\n  public abstract publishCustom(params: {\n    payload: any;\n    opts?: RelayerTypes.PublishOptions;\n  }): Promise<void>;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core.js\";\nimport { IMessageTracker } from \"./messages.js\";\nimport { IPublisher } from \"./publisher.js\";\nimport { ISubscriber } from \"./subscriber.js\";\n\nexport declare namespace RelayerTypes {\n  export interface ProtocolOptions {\n    protocol: string;\n    data?: string;\n  }\n  export interface PublishOptions {\n    relay?: ProtocolOptions;\n    ttl?: number;\n    prompt?: boolean;\n    tag?: number;\n    id?: number;\n    internal?: {\n      throwOnFailedPublish?: boolean;\n    };\n    tvf?: ITVF;\n    attestation?: string;\n    publishMethod?: string;\n  }\n\n  export type TransportType = \"relay\" | \"link_mode\";\n\n  export interface SubscribeOptions {\n    relay?: ProtocolOptions;\n    transportType?: TransportType;\n    internal?: {\n      throwOnFailedPublish?: boolean;\n      skipSubscribe?: boolean;\n    };\n  }\n\n  export interface UnsubscribeOptions {\n    id?: string;\n    relay: ProtocolOptions;\n  }\n\n  export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n  export interface PublishPayload {\n    topic: string;\n    message: string;\n    opts?: RelayerTypes.PublishOptions;\n  }\n  export interface MessageEvent {\n    topic: string;\n    message: string;\n    publishedAt: number;\n    transportType?: TransportType;\n    attestation?: string;\n  }\n\n  export interface RpcUrlParams {\n    protocol: string;\n    version: number;\n    auth: string;\n    relayUrl: string;\n    sdkVersion: string;\n    projectId?: string;\n    useOnCloseEvent?: boolean;\n    bundleId?: string;\n    packageName?: string;\n  }\n\n  export interface ITVF {\n    correlationId?: number;\n    rpcMethods?: string[];\n    chainId?: string;\n    txHashes?: string[];\n    contractAddresses?: string[];\n    approvedChains?: string[];\n    approvedMethods?: string[];\n    approvedEvents?: string[];\n    sessionProperties?: Record<string, string>;\n    scopedProperties?: Record<string, unknown>;\n  }\n\n  export type MessageDirection = \"inbound\" | \"outbound\";\n}\n\nexport interface RelayerOptions {\n  core: ICore;\n  logger?: string | Logger;\n  relayUrl?: string;\n  projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n  protocol: string;\n  version: number;\n  env: string;\n  host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n  public abstract protocol: string;\n\n  public abstract version: number;\n\n  public abstract core: ICore;\n\n  public abstract logger: Logger;\n\n  public abstract subscriber: ISubscriber;\n\n  public abstract publisher: IPublisher;\n\n  public abstract messages: IMessageTracker;\n\n  public abstract provider: IJsonRpcProvider;\n\n  public abstract name: string;\n\n  public abstract transportExplicitlyClosed: boolean;\n\n  public abstract readonly context: string;\n\n  public abstract readonly connected: boolean;\n\n  public abstract readonly connecting: boolean;\n\n  constructor(\n    // @ts-ignore\n    opts: RelayerOptions,\n  ) {\n    super();\n  }\n\n  public abstract init(): Promise<void>;\n\n  public abstract publish(\n    topic: string,\n    message: string,\n    opts?: RelayerTypes.PublishOptions,\n  ): Promise<void>;\n\n  public abstract publishCustom(params: {\n    payload: any;\n    opts?: RelayerTypes.PublishOptions;\n  }): Promise<void>;\n\n  public abstract request(request: RequestArguments): Promise<JsonRpcPayload>;\n\n  public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise<string>;\n\n  public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise<void>;\n  public abstract transportClose(): Promise<void>;\n  public abstract transportOpen(relayUrl?: string): Promise<void>;\n  public abstract restartTransport(relayUrl?: string): Promise<void>;\n  public abstract confirmOnlineStateOrThrow(): Promise<void>;\n  public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise<void>;\n  public abstract onLinkMessageEvent(\n    messageEvent: RelayerTypes.MessageEvent,\n    opts?: { sessionExists?: boolean },\n  ): Promise<void>;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core.js\";\n\nexport abstract class IStore<Key, Value> {\n  public abstract map: Map<Key, Value>;\n\n  public abstract readonly context: string;\n\n  public abstract readonly length: number;\n\n  public abstract readonly keys: Key[];\n\n  public abstract readonly values: Value[];\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n    public name: string,\n    // @ts-ignore\n    storagePrefix?: string,\n  ) {}\n\n  public abstract init(): Promise<void>;\n\n  public abstract set(key: Key, value: Value): Promise<void>;\n\n  public abstract get(key: Key): Value;\n\n  public abstract getAll(filter?: Partial<Value>): Value[];\n\n  public abstract update(key: Key, update: Partial<Value>): Promise<void>;\n\n  public abstract delete(key: Key, reason: ErrorResponse): Promise<void>;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer.js\";\n\nexport declare namespace SubscriberTypes {\n  export interface Params extends RelayerTypes.SubscribeOptions {\n    topic: string;\n  }\n\n  export interface Active extends Params {\n    id: string;\n  }\n}\n\nexport declare namespace SubscriberEvents {\n  export type Created = SubscriberTypes.Active;\n\n  export interface Deleted extends SubscriberTypes.Active {\n    reason: ErrorResponse;\n  }\n\n  export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n  public map = new Map<string, string[]>();\n\n  public abstract readonly topics: string[];\n\n  public abstract set(topic: string, id: string): void;\n\n  public abstract get(topic: string): string[];\n\n  public abstract exists(topic: string, id: string): boolean;\n\n  public abstract delete(topic: string, id?: string): void;\n\n  public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n  public abstract subscriptions: Map<string, SubscriberTypes.Active>;\n\n  public abstract topicMap: ISubscriberTopicMap;\n\n  public abstract pending: Map<string, SubscriberTypes.Params>;\n\n  public abstract readonly length: number;\n\n  public abstract readonly ids: string[];\n\n  public abstract readonly values: SubscriberTypes.Active[];\n\n  public abstract readonly topics: string[];\n\n  public abstract readonly hasAnyTopics: boolean;\n\n  public abstract name: string;\n\n  public abstract readonly context: string;\n\n  constructor(\n    public relayer: IRelayer,\n    public logger: Logger,\n  ) {\n    super();\n  }\n\n  public abstract init(): Promise<void>;\n\n  public abstract subscribe(\n    topic: string,\n    opts?: RelayerTypes.SubscribeOptions,\n  ): Promise<string | null>;\n\n  public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise<void>;\n\n  public abstract isSubscribed(topic: string): Promise<boolean>;\n\n  public abstract isKnownTopic(topic: string): Promise<boolean>;\n\n  public abstract start(): Promise<void>;\n\n  public abstract stop(): Promise<void>;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core.js\";\n\nexport abstract class IKeyChain {\n  public abstract keychain: Map<string, string>;\n\n  public abstract name: string;\n\n  public abstract readonly context: string;\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n  ) {}\n\n  public abstract init(): Promise<void>;\n\n  public abstract has(tag: string, opts?: any): boolean;\n\n  public abstract set(tag: string, key: string, opts?: any): Promise<void>;\n\n  public abstract get(tag: string, opts?: any): string;\n\n  public abstract del(tag: string, opts?: any): Promise<void>;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core.js\";\n\nexport declare namespace ExpirerTypes {\n  interface Expiration {\n    target: string;\n    expiry: number;\n  }\n\n  interface Created {\n    target: string;\n    expiration: Expiration;\n  }\n\n  interface Deleted {\n    target: string;\n    expiration: Expiration;\n  }\n\n  interface Expired {\n    target: string;\n    expiration: Expiration;\n  }\n}\n\nexport abstract class IExpirer extends IEvents {\n  public abstract name: string;\n\n  public abstract readonly context: string;\n\n  public abstract readonly length: number;\n\n  public abstract readonly keys: string[];\n\n  public abstract readonly values: ExpirerTypes.Expiration[];\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n  ) {\n    super();\n  }\n\n  public abstract init(): Promise<void>;\n\n  public abstract has(key: string | number): boolean;\n\n  public abstract set(key: string | number, expiry: number): void;\n\n  public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n  public abstract del(key: string | number): void;\n}\n","import {\n  ErrorResponse,\n  JsonRpcRequest,\n  JsonRpcResponse,\n  JsonRpcResult,\n  JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore, CoreTypes } from \"./core.js\";\nimport { IStore } from \"./store.js\";\n\nimport { RelayerTypes } from \"../core/relayer.js\";\n\nexport declare namespace PairingTypes {\n  interface Struct {\n    topic: string;\n    expiry: number;\n    relay: RelayerTypes.ProtocolOptions;\n    active: boolean;\n    peerMetadata?: CoreTypes.Metadata;\n    methods?: string[];\n  }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n  // -- core ------------------------------------------------------- //\n  type DefaultResponse = true | ErrorResponse;\n\n  type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n  type Error = ErrorResponse;\n\n  // -- requests --------------------------------------------------- //\n\n  interface RequestParams {\n    wc_pairingDelete: {\n      code: number;\n      message: string;\n    };\n    wc_pairingPing: Record<string, unknown>;\n  }\n\n  // -- responses -------------------------------------------------- //\n  interface Results {\n    wc_pairingDelete: true;\n    wc_pairingPing: true;\n  }\n\n  // -- events ----------------------------------------------------- //\n  interface EventCallback<T extends JsonRpcRequest | JsonRpcResponse> {\n    topic: string;\n    payload: T;\n  }\n}\n\nexport type IPairingStore = IStore<string, PairingTypes.Struct>;\n\nexport abstract class IPairing {\n  public abstract name: string;\n  public abstract readonly context: string;\n  public abstract events: EventEmitter;\n  public abstract pairings: IPairingStore;\n\n  constructor(\n    public logger: Logger,\n    public core: ICore,\n  ) {}\n\n  public abstract init(): Promise<void>;\n\n  public abstract pair(params: {\n    uri: string;\n    activatePairing?: boolean;\n  }): Promise<PairingTypes.Struct>;\n\n  // for proposer to create inactive pairing\n  public abstract create(params?: {\n    methods?: string[];\n    transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n    internal?: RelayerTypes.SubscribeOptions[\"internal\"];\n  }): Promise<{ topic: string; uri: string }>;\n\n  // for either to activate a previously created pairing\n  public abstract activate(params: { topic: string }): Promise<void>;\n\n  // for both to subscribe on methods requests\n  public abstract register(params: { methods: string[] }): void;\n\n  // for either to update the expiry of an existing pairing.\n  public abstract updateExpiry(params: { topic: string; expiry: number }): Promise<void>;\n\n  // for either to update the metadata of an existing pairing.\n  public abstract updateMetadata(params: {\n    topic: string;\n    metadata: CoreTypes.Metadata;\n  }): Promise<void>;\n\n  // query pairings\n  public abstract getPairings(): PairingTypes.Struct[];\n\n  // for either to ping a peer\n  public abstract ping(params: { topic: string }): Promise<void>;\n\n  // for either peer to disconnect a pairing\n  public abstract disconnect(params: { topic: string }): Promise<void>;\n\n  public abstract formatUriFromPairing(pairing: PairingTypes.Struct): string;\n}\n\nexport interface IPairingPrivate {\n  sendRequest<M extends PairingJsonRpcTypes.WcMethod>(\n    topic: string,\n    method: M,\n    params: PairingJsonRpcTypes.RequestParams[M],\n  ): Promise<number>;\n\n  sendResult<M extends PairingJsonRpcTypes.WcMethod>(\n    id: number,\n    topic: string,\n    result: PairingJsonRpcTypes.Results[M],\n  ): Promise<void>;\n\n  sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise<void>;\n\n  onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback<JsonRpcRequest>): Promise<void>;\n\n  onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback<JsonRpcResponse>): Promise<void>;\n\n  onPairingPingRequest(\n    topic: string,\n    payload: JsonRpcRequest<PairingJsonRpcTypes.RequestParams[\"wc_pairingPing\"]>,\n  ): Promise<void>;\n\n  onPairingPingResponse(\n    topic: string,\n    payload: JsonRpcResult<PairingJsonRpcTypes.Results[\"wc_pairingPing\"]> | JsonRpcError,\n  ): void;\n\n  onPairingDeleteRequest(\n    topic: string,\n    payload: JsonRpcRequest<PairingJsonRpcTypes.RequestParams[\"wc_pairingDelete\"]>,\n  ): Promise<void>;\n\n  onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise<void>;\n\n  onUnknownRpcMethodResponse(method: string): void;\n\n  deletePairing(topic: string, expirerHasDeleted?: boolean): Promise<void>;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core.js\";\n\nexport declare namespace Verify {\n  export interface Context {\n    verified: {\n      origin: string;\n      validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n      verifyUrl: string;\n      isScam?: boolean;\n    };\n  }\n}\n\nexport abstract class IVerify {\n  public abstract readonly context: string;\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n    public store: IKeyValueStorage,\n  ) {}\n\n  public abstract register(params: {\n    id: string;\n    decryptedId: string;\n  }): Promise<string | undefined>;\n\n  public abstract resolve(params: {\n    attestationId?: string;\n    hash?: string;\n    encryptedId?: string;\n    verifyUrl?: string;\n  }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n  type RegisterDeviceTokenParams = {\n    clientId: string;\n    token: string;\n    notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n    enableEncrypted?: boolean;\n  };\n}\nexport abstract class IEchoClient {\n  public abstract readonly context: string;\n  constructor(\n    public projectId: string,\n    public logger: Logger,\n  ) {}\n\n  public abstract registerDeviceToken(\n    params: EchoClientTypes.RegisterDeviceTokenParams,\n  ): Promise<void>;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core.js\";\n\nexport declare namespace EventClientTypes {\n  export interface Event {\n    eventId: string;\n    bundleId: string;\n    timestamp: number;\n    props: Props;\n    addTrace: (trace: string) => void;\n    setError: (error: string) => void;\n  }\n\n  export interface Props {\n    event: string;\n    type: string;\n    properties: Properties;\n  }\n\n  export interface Properties {\n    topic: string;\n    trace: Trace;\n  }\n\n  export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n  public abstract readonly context: string;\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n    public telemetryEnabled: boolean,\n  ) {}\n\n  public abstract init(): Promise<void>;\n\n  public abstract createEvent(params: {\n    event?: \"ERROR\";\n    type?: string;\n    properties: {\n      topic: string;\n      trace: EventClientTypes.Trace;\n    };\n  }): EventClientTypes.Event;\n\n  public abstract getEvent(params: {\n    eventId?: string;\n    topic?: string;\n  }): EventClientTypes.Event | undefined;\n\n  public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core.js\";\nimport { IEngine } from \"./engine.js\";\nimport { IPendingRequest } from \"./pendingRequest.js\";\nimport { IProposal, ProposalTypes } from \"./proposal.js\";\nimport { ISession, SessionTypes } from \"./session.js\";\nimport { Verify } from \"../core/verify.js\";\nimport { IAuth, AuthTypes } from \"./auth.js\";\nimport { RelayerTypes } from \"../core/relayer.js\";\n\nexport declare namespace SignClientTypes {\n  type Event =\n    | \"session_proposal\"\n    | \"session_update\"\n    | \"session_extend\"\n    | \"session_ping\"\n    | \"session_delete\"\n    | \"session_expire\"\n    | \"session_request\"\n    | \"session_request_sent\"\n    | \"session_event\"\n    | \"session_authenticate\"\n    | \"proposal_expire\"\n    | \"session_request_expire\"\n    | \"session_connect\";\n\n  interface BaseEventArgs<T = unknown> {\n    id: number;\n    topic: string;\n    params: T;\n  }\n  interface EventArguments {\n    session_proposal: {\n      verifyContext: Verify.Context;\n    } & Omit<BaseEventArgs<ProposalTypes.Struct>, \"topic\">;\n    session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n    session_extend: Omit<BaseEventArgs, \"params\">;\n    session_ping: Omit<BaseEventArgs, \"params\">;\n    session_delete: Omit<BaseEventArgs, \"params\">;\n    session_expire: { topic: string };\n    session_request: {\n      verifyContext: Verify.Context;\n    } & BaseEventArgs<{\n      request: { method: string; params: any; expiryTimestamp?: number };\n      chainId: string;\n    }>;\n    session_request_sent: {\n      request: { method: string; params: any };\n      topic: string;\n      chainId: string;\n      id: number;\n    };\n    session_event: BaseEventArgs<{\n      event: { name: string; data: any };\n      chainId: string;\n    }>;\n    session_authenticate: {\n      verifyContext: Verify.Context;\n      transportType?: RelayerTypes.TransportType;\n    } & BaseEventArgs<AuthTypes.AuthRequestEventArgs>;\n    proposal_expire: { id: number };\n    session_request_expire: { id: number };\n    session_connect: { session: SessionTypes.Struct };\n  }\n\n  type Metadata = CoreTypes.Metadata;\n\n  type SignConfig = {\n    /**\n     * Disables the sequential processing of session requests.\n     *\n     * WARNING: The WalletConnect system has an at-least-once delivery guarantee,\n     * which means the same message may be delivered multiple times.\n     *\n     * When this option is enabled, you MUST implement your own message\n     * deduplication logic to prevent processing duplicate requests.\n     * This is especially important during the first second after\n     * initialization when duplicate events are more likely to occur.\n     *\n     * @default false\n     */\n    disableRequestQueue?: boolean;\n  };\n\n  interface Options extends CoreTypes.Options {\n    core?: ICore;\n    metadata?: Metadata;\n    signConfig?: SignConfig;\n  }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n  constructor() {\n    super();\n  }\n\n  public abstract emit: <E extends SignClientTypes.Event>(\n    event: E,\n    args: SignClientTypes.EventArguments[E],\n  ) => boolean;\n\n  public abstract on: <E extends SignClientTypes.Event>(\n    event: E,\n    listener: (args: SignClientTypes.EventArguments[E]) => any,\n  ) => this;\n\n  public abstract once: <E extends SignClientTypes.Event>(\n    event: E,\n    listener: (args: SignClientTypes.EventArguments[E]) => any,\n  ) => this;\n\n  public abstract off: <E extends SignClientTypes.Event>(\n    event: E,\n    listener: (args: SignClientTypes.EventArguments[E]) => any,\n  ) => this;\n\n  public abstract removeListener: <E extends SignClientTypes.Event>(\n    event: E,\n    listener: (args: SignClientTypes.EventArguments[E]) => any,\n  ) => this;\n\n  public abstract removeAllListeners: <E extends SignClientTypes.Event>(event: E) => this;\n}\n\nexport abstract class ISignClient {\n  public readonly protocol = \"wc\";\n  public readonly version = 2;\n\n  public abstract readonly name: string;\n  public abstract readonly context: string;\n  public abstract readonly metadata: SignClientTypes.Metadata;\n\n  public abstract core: ICore;\n  public abstract logger: Logger;\n  public abstract events: ISignClientEvents;\n  public abstract engine: IEngine;\n  public abstract session: ISession;\n  public abstract proposal: IProposal;\n  public abstract pendingRequest: IPendingRequest;\n  public abstract auth: IAuth;\n  public abstract signConfig?: SignClientTypes.SignConfig;\n\n  constructor(public opts?: SignClientTypes.Options) {}\n\n  public abstract connect: IEngine[\"connect\"];\n  public abstract pair: IEngine[\"pair\"];\n  public abstract approve: IEngine[\"approve\"];\n  public abstract reject: IEngine[\"reject\"];\n  public abstract update: IEngine[\"update\"];\n  public abstract extend: IEngine[\"extend\"];\n  public abstract request: IEngine[\"request\"];\n  public abstract respond: IEngine[\"respond\"];\n  public abstract ping: IEngine[\"ping\"];\n  public abstract emit: IEngine[\"emit\"];\n  public abstract disconnect: IEngine[\"disconnect\"];\n  public abstract find: IEngine[\"find\"];\n  public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n  public abstract authenticate: IEngine[\"authenticate\"];\n  public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n  public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n  public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import { EventEmitter } from \"events\";\nimport {\n  JsonRpcResponse,\n  JsonRpcRequest,\n  ErrorResponse,\n  JsonRpcResult,\n  JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client.js\";\nimport { RelayerTypes } from \"../core/relayer.js\";\nimport { SessionTypes } from \"./session.js\";\nimport { ProposalTypes } from \"./proposal.js\";\nimport { PairingTypes } from \"../core/pairing.js\";\nimport { JsonRpcTypes } from \"./jsonrpc.js\";\nimport { PendingRequestTypes } from \"./pendingRequest.js\";\nimport { AuthTypes } from \"./auth.js\";\nimport { CryptoTypes } from \"../core/crypto.js\";\n\nexport declare namespace EngineTypes {\n  type Event =\n    | \"session_connect\"\n    | \"session_approve\"\n    | \"session_update\"\n    | \"session_extend\"\n    | \"session_ping\"\n    | \"pairing_ping\"\n    | \"session_request\";\n\n  interface EventArguments {\n    session_connect: {\n      error?: ErrorResponse;\n      session?: SessionTypes.Struct;\n    };\n    session_approve: { error?: ErrorResponse };\n    session_update: { error?: ErrorResponse };\n    session_extend: { error?: ErrorResponse };\n    session_ping: { error?: ErrorResponse };\n    pairing_ping: { error?: ErrorResponse };\n    session_request: { error?: ErrorResponse; result?: any };\n  }\n\n  interface UriParameters {\n    protocol: string;\n    version: number;\n    topic: string;\n    symKey: string;\n    relay: RelayerTypes.ProtocolOptions;\n    methods?: string[];\n    expiryTimestamp?: number;\n  }\n\n  interface EventCallback<T extends JsonRpcRequest | JsonRpcResponse> {\n    topic: string;\n    payload: T;\n    transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n    attestation?: string;\n    encryptedId?: string;\n  }\n\n  type Hex = `0x${string}`;\n\n  interface PaymentOption {\n    asset: string;\n    amount: Hex;\n    recipient: string;\n  }\n\n  interface WalletPayParams {\n    version: string;\n    orderId?: string;\n    acceptedPayments: PaymentOption[];\n    expiry: number;\n  }\n\n  interface WalletPayResult {\n    version: string;\n    orderId?: string;\n    txid: string;\n    recipient: string;\n    asset: string;\n    amount: Hex;\n  }\n\n  interface ConnectParams {\n    /**\n     * @deprecated Use `optionalNamespaces` instead.\n     */\n    requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n    optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n    sessionProperties?: ProposalTypes.SessionProperties;\n    scopedProperties?: ProposalTypes.ScopedProperties;\n    pairingTopic?: string;\n    relays?: RelayerTypes.ProtocolOptions[];\n    /**\n     * @experimental - This feature could change in the next releases. Use with caution.\n     */\n    authentication?: AuthTypes.AuthenticateRequestParams[];\n    /**\n     * @experimental - This feature could change in the next releases. Use with caution.\n     */\n    walletPay?: WalletPayParams;\n  }\n\n  interface PairParams {\n    uri: string;\n  }\n\n  type ProposalRequestsResponses = {\n    authentication?: AuthTypes.Cacao[];\n    walletPay?: WalletPayResult[];\n  };\n\n  interface ApproveParams {\n    id: number;\n    namespaces: SessionTypes.Namespaces;\n    sessionProperties?: ProposalTypes.SessionProperties;\n    scopedProperties?: ProposalTypes.ScopedProperties;\n    sessionConfig?: SessionTypes.SessionConfig;\n    relayProtocol?: string;\n    proposalRequestsResponses?: ProposalRequestsResponses;\n  }\n\n  interface RejectParams {\n    id: number;\n    reason: ErrorResponse;\n  }\n\n  interface UpdateParams {\n    topic: string;\n    namespaces: SessionTypes.Namespaces;\n  }\n\n  interface ExtendParams {\n    topic: string;\n  }\n\n  interface RequestParams {\n    topic: string;\n    request: {\n      method: string;\n      params: any;\n    };\n    chainId: string;\n    expiry?: number;\n  }\n\n  interface RespondParams {\n    topic: string;\n    response: JsonRpcResponse;\n  }\n\n  interface EmitParams {\n    topic: string;\n    event: {\n      name: string;\n      data: any;\n    };\n    chainId: string;\n  }\n\n  interface PingParams {\n    topic: string;\n  }\n\n  interface DisconnectParams {\n    topic: string;\n    reason: ErrorResponse;\n  }\n\n  interface FindParams {\n    requiredNamespaces: ProposalTypes.RequiredNamespaces;\n  }\n\n  type AcknowledgedPromise = Promise<{ acknowledged: () => Promise<void> }>;\n\n  type SessionAuthenticateResponsePromise = {\n    uri: string;\n    response: () => Promise<AuthTypes.AuthenticateResponseResult>;\n  };\n\n  interface RpcOpts {\n    req: RelayerTypes.PublishOptions & {\n      ttl: number;\n    };\n    res: RelayerTypes.PublishOptions & {\n      ttl: number;\n    };\n    reject?: RelayerTypes.PublishOptions & {\n      ttl: number;\n    };\n    autoReject?: RelayerTypes.PublishOptions & {\n      ttl: number;\n    };\n  }\n\n  type RpcOptsMap = Record<JsonRpcTypes.WcMethod, RpcOpts>;\n\n  type EngineQueue<T> = {\n    state: \"IDLE\" | \"ACTIVE\";\n    queue: T[];\n  };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n  constructor() {\n    super();\n  }\n\n  public abstract emit: <E extends EngineTypes.Event>(\n    event: string,\n    args: EngineTypes.EventArguments[E],\n  ) => boolean;\n\n  public abstract once: <E extends EngineTypes.Event>(\n    event: string,\n    listener: (args: EngineTypes.EventArguments[E]) => any,\n  ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n  sendRequest<M extends JsonRpcTypes.WcMethod>(args: {\n    topic: string;\n    method: M;\n    params: JsonRpcTypes.RequestParams[M];\n    expiry?: number;\n    relayRpcId?: number;\n    clientRpcId?: number;\n    throwOnFailedPublish?: boolean;\n    appLink?: string;\n    tvf?: RelayerTypes.ITVF;\n    publishOpts?: RelayerTypes.PublishOptions;\n  }): Promise<number>;\n\n  sendBatchRequest<M extends JsonRpcTypes.WcMethod>(args: {\n    sharedPayload: Record<string, any>;\n    requests: Record<\n      string,\n      {\n        topic: string;\n        method: M;\n        params: JsonRpcTypes.RequestParams[M];\n        expiry?: number;\n        relayRpcId?: number;\n        clientRpcId?: number;\n      }\n    >;\n    throwOnFailedPublish?: boolean;\n    appLink?: string;\n    tvf?: RelayerTypes.ITVF;\n    publishOpts?: RelayerTypes.PublishOptions;\n  }): Promise<number>;\n\n  sendResult<M extends JsonRpcTypes.WcMethod>(args: {\n    id: number;\n    topic: string;\n    result: JsonRpcTypes.Results[M];\n    throwOnFailedPublish?: boolean;\n    encodeOpts?: CryptoTypes.EncodeOptions;\n    appLink?: string;\n    publishOpts?: RelayerTypes.PublishOptions;\n  }): Promise<void>;\n\n  sendError(params: {\n    id: number;\n    topic: string;\n    error: JsonRpcTypes.Error;\n    encodeOpts?: CryptoTypes.EncodeOptions;\n    rpcOpts?: RelayerTypes.PublishOptions;\n    appLink?: string;\n    publishOpts?: RelayerTypes.PublishOptions;\n  }): Promise<void>;\n\n  sendApproveSession(params: {\n    sessionTopic: string;\n    proposal: ProposalTypes.Struct;\n    pairingProposalResponse: JsonRpcTypes.Results[JsonRpcTypes.WcMethod];\n    sessionSettleRequest: JsonRpcTypes.RequestParams[JsonRpcTypes.WcMethod];\n    publishOpts: RelayerTypes.PublishOptions;\n  }): Promise<void>;\n\n  sendProposeSession(params: {\n    proposal: ProposalTypes.Struct;\n    publishOpts: RelayerTypes.PublishOptions;\n  }): Promise<void>;\n\n  onRelayEventRequest(event: EngineTypes.EventCallback<JsonRpcRequest>): Promise<void>;\n\n  onRelayEventResponse(event: EngineTypes.EventCallback<JsonRpcResponse>): Promise<void>;\n\n  onRelayEventUnknownPayload(event: EngineTypes.EventCallback<any>): Promise<void>;\n\n  shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n  deleteSession(params: {\n    topic: string;\n    expirerHasDeleted?: boolean;\n    id?: number;\n    emitEvent?: boolean;\n  }): Promise<void>;\n\n  deleteProposal(id: number, expirerHasDeleted?: boolean): Promise<void>;\n\n  setExpiry(topic: string, expiry: number): Promise<void>;\n\n  setProposal(id: number, proposal: ProposalTypes.Struct): Promise<void>;\n\n  setAuthRequest(\n    id: number,\n    params: {\n      request: AuthTypes.SessionAuthenticateRequest;\n      pairingTopic: string;\n      transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n    },\n  ): Promise<void>;\n\n  setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise<void>;\n\n  deletePendingSessionRequest(\n    id: number,\n    reason: ErrorResponse,\n    expirerHasDeleted?: boolean,\n  ): Promise<void>;\n\n  deletePendingAuthRequest(\n    id: number,\n    reason: ErrorResponse,\n    expirerHasDeleted?: boolean,\n  ): Promise<void>;\n\n  cleanupDuplicatePairings(session: SessionTypes.Struct): Promise<void>;\n\n  cleanup(): Promise<void>;\n\n  onSessionProposeRequest(params: {\n    topic: string;\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionPropose\"]>;\n    attestation?: string;\n    encryptedId?: string;\n  }): Promise<void>;\n\n  onSessionProposeResponse(\n    topic: string,\n    payload: JsonRpcResult<JsonRpcTypes.Results[\"wc_sessionPropose\"]> | JsonRpcError,\n    transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n  ): Promise<void>;\n\n  onSessionSettleRequest(\n    topic: string,\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]>,\n  ): Promise<void>;\n\n  onSessionSettleResponse(\n    topic: string,\n    payload: JsonRpcResult<JsonRpcTypes.Results[\"wc_sessionSettle\"]> | JsonRpcError,\n  ): Promise<void>;\n\n  onSessionUpdateRequest(\n    topic: string,\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionUpdate\"]>,\n  ): Promise<void>;\n\n  onSessionUpdateResponse(\n    topic: string,\n    payload: JsonRpcResult<JsonRpcTypes.Results[\"wc_sessionUpdate\"]> | JsonRpcError,\n  ): void;\n\n  onSessionExtendRequest(\n    topic: string,\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionExtend\"]>,\n  ): Promise<void>;\n\n  onSessionExtendResponse(\n    topic: string,\n    payload: JsonRpcResult<JsonRpcTypes.Results[\"wc_sessionExtend\"]> | JsonRpcError,\n  ): void;\n\n  onSessionPingRequest(\n    topic: string,\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionPing\"]>,\n  ): Promise<void>;\n\n  onSessionPingResponse(\n    topic: string,\n    payload: JsonRpcResult<JsonRpcTypes.Results[\"wc_sessionPing\"]> | JsonRpcError,\n  ): void;\n\n  onSessionDeleteRequest(\n    topic: string,\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionDelete\"]>,\n  ): Promise<void>;\n\n  onSessionRequest(params: {\n    topic: string;\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionRequest\"]>;\n    transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n    attestation?: string;\n    encryptedId?: string;\n  }): Promise<void>;\n\n  onSessionRequestResponse(\n    topic: string,\n    payload: JsonRpcResult<JsonRpcTypes.Results[\"wc_sessionRequest\"]> | JsonRpcError,\n  ): void;\n\n  onSessionEventRequest(\n    topic: string,\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionEvent\"]>,\n  ): Promise<void>;\n\n  onSessionAuthenticateRequest(params: {\n    topic: string;\n    payload: JsonRpcRequest<JsonRpcTypes.RequestParams[\"wc_sessionAuthenticate\"]>;\n    transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n    attestation?: string;\n    encryptedId?: string;\n  }): Promise<void>;\n\n  onSessionAuthenticateResponse(\n    topic: string,\n    payload: JsonRpcResult<JsonRpcTypes.Results[\"wc_sessionAuthenticate\"]> | JsonRpcError,\n  ): void;\n\n  // -- Validators ---------------------------------------------------- //\n  isValidConnect(params: EngineTypes.ConnectParams): Promise<void>;\n\n  isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n  isValidApprove(params: EngineTypes.ApproveParams): Promise<void>;\n\n  isValidReject(params: EngineTypes.RejectParams): Promise<void>;\n\n  isValidUpdate(params: EngineTypes.UpdateParams): Promise<void>;\n\n  isValidExtend(params: EngineTypes.ExtendParams): Promise<void>;\n\n  isValidRequest(params: EngineTypes.RequestParams): Promise<void>;\n\n  isValidRespond(params: EngineTypes.RespondParams): Promise<void>;\n\n  isValidPing(params: EngineTypes.PingParams): Promise<void>;\n\n  isValidEmit(params: EngineTypes.EmitParams): Promise<void>;\n\n  isValidDisconnect(params: EngineTypes.DisconnectParams): Promise<void>;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n  constructor(public client: ISignClient) {}\n\n  public abstract init(): Promise<void>;\n\n  public abstract connect(\n    params: EngineTypes.ConnectParams,\n  ): Promise<{ uri?: string; approval: () => Promise<SessionTypes.Struct> }>;\n\n  public abstract pair(params: EngineTypes.PairParams): Promise<PairingTypes.Struct>;\n\n  public abstract approve(\n    params: EngineTypes.ApproveParams,\n  ): Promise<{ topic: string; acknowledged: () => Promise<SessionTypes.Struct> }>;\n\n  public abstract reject(params: EngineTypes.RejectParams): Promise<void>;\n\n  public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n  public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n  public abstract request<T>(params: EngineTypes.RequestParams): Promise<T>;\n\n  public abstract respond(params: EngineTypes.RespondParams): Promise<void>;\n\n  public abstract emit(params: EngineTypes.EmitParams): Promise<void>;\n\n  public abstract ping(params: EngineTypes.PingParams): Promise<void>;\n\n  public abstract disconnect(params: EngineTypes.DisconnectParams): Promise<void>;\n\n  public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n  public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n  public abstract authenticate: (\n    params: AuthTypes.SessionAuthenticateParams,\n    walletUniversalLink?: string,\n  ) => Promise<EngineTypes.SessionAuthenticateResponsePromise>;\n\n  public abstract approveSessionAuthenticate: (\n    params: AuthTypes.ApproveSessionAuthenticateParams,\n  ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n  public abstract formatAuthMessage: (params: {\n    request: AuthTypes.BaseAuthRequestParams;\n    iss: string;\n  }) => string;\n\n  public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise<void>;\n\n  /**\n   * no longer used as the client initializes instantly without waiting to connect+subscribe\n   * @deprecated\n   */\n  public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","__publicField","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":";;;;;;;;;;;0KA0CO,MAAe,cAAcA,cAAQ,CAuB1C,WAAmBC,CAAAA,CAAAA,CAA0B,CAC3C,KAAA,GADiB,IAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAtBnBC,IAAA,IAAgB,CAAA,UAAA,CAAW,MAC3BA,GAAA,CAAA,IAAA,CAAgB,SAAU,CAAA,CAAA,EAuB1B,CAUF;;ACPsB,MAAA,OAAQ,CAS5B,WAAA,CACSC,CACAC,CAAAA,CAAAA,CAEPC,CACA,CAAA,CAJO,IAAAF,CAAAA,IAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,MAAAA,CAAAA,EAGN,CAwCL;;wKClGO,MAAe,wBAAwBJ,cAAQ,CAapD,WACSG,CAAAA,CAAAA,CACAC,CACP,CAAA,CACA,OAHO,CAAA,IAAA,CAAA,IAAA,CAAAD,EACA,IAAAC,CAAAA,MAAAA,CAAAA,CAAAA,CAdTF,EAAA,IAAO,CAAA,SAAA,CAAU,IAAI,GAAA,EAiBrB,CAaF;;ACpDsB,MAAA,eAAgB,CAQpC,WAAA,CACSE,CACAD,CAAAA,CAAAA,CACP,CAFO,IAAAC,CAAAA,MAAAA,CAAAA,CAAAA,CACA,IAAAD,CAAAA,IAAAA,CAAAA,EACN,CAmBL;;ACtBsB,MAAA,UAAA,SAAmBH,cAAQ,CAK/C,WAAA,CACSM,CACAF,CAAAA,CAAAA,CACP,CACA,KAAM,EAAA,CAHC,aAAAE,CACA,CAAA,IAAA,CAAA,MAAA,CAAAF,EAGT,CAYF;;ACkEO,MAAe,QAAiBJ,SAAAA,cAAQ,CA2B7C,WAAA,CAEEC,CACA,CAAA,CACA,KAAM,GACR,CA6BF;;AC9JO,MAAe,MAAmB,CAWvC,WACSE,CAAAA,CAAAA,CACAC,EACAG,CAEPC,CAAAA,CAAAA,CACA,CALO,IAAA,CAAA,IAAA,CAAAL,CACA,CAAA,IAAA,CAAA,MAAA,CAAAC,CACA,CAAA,IAAA,CAAA,IAAA,CAAAG,EAGN,CAaL;;wKCRsB,MAAA,mBAAoB,CAAnC,WAAA,EAAA,CACLL,CAAA,CAAA,IAAA,CAAO,KAAM,CAAA,IAAI,GAanB,EAAA,CAAA,CAEsB,MAAA,WAAA,SAAoBF,cAAQ,CAqBhD,WACSM,CAAAA,CAAAA,CACAF,CACP,CAAA,CACA,KAAM,EAAA,CAHC,IAAAE,CAAAA,OAAAA,CAAAA,CAAAA,CACA,IAAAF,CAAAA,MAAAA,CAAAA,EAGT,CAkBF;;ACnFsB,MAAA,SAAU,CAO9B,WAAA,CACSD,CACAC,CAAAA,CAAAA,CACP,CAFO,IAAAD,CAAAA,IAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,MAAAA,CAAAA,EACN,CAWL;;ACGsB,MAAA,QAAA,SAAiBJ,cAAQ,CAW7C,WAAA,CACSG,CACAC,CAAAA,CAAAA,CACP,CACA,KAAM,EAAA,CAHC,UAAAD,CACA,CAAA,IAAA,CAAA,MAAA,CAAAC,EAGT,CAWF;;ACKsB,MAAA,QAAS,CAM7B,WAAA,CACSA,CACAD,CAAAA,CAAAA,CACP,CAFO,IAAAC,CAAAA,MAAAA,CAAAA,CAAAA,CACA,IAAAD,CAAAA,IAAAA,CAAAA,EACN,CAyCL;;AC9FO,MAAe,OAAQ,CAG5B,WACSA,CAAAA,CAAAA,CACAC,CACAK,CAAAA,CAAAA,CACP,CAHO,IAAA,CAAA,IAAA,CAAAN,CACA,CAAA,IAAA,CAAA,MAAA,CAAAC,CACA,CAAA,IAAA,CAAA,KAAA,CAAAK,EACN,CAaL;;ACzBsB,MAAA,WAAY,CAEhC,WAAA,CACSC,CACAN,CAAAA,CAAAA,CACP,CAFO,IAAAM,CAAAA,SAAAA,CAAAA,CAAAA,CACA,IAAAN,CAAAA,MAAAA,CAAAA,EACN,CAKL;;ACOO,MAAe,YAAa,CAGjC,WACSD,CAAAA,CAAAA,CACAC,CACAO,CAAAA,CAAAA,CACP,CAHO,IAAA,CAAA,IAAA,CAAAR,CACA,CAAA,IAAA,CAAA,MAAA,CAAAC,CACA,CAAA,IAAA,CAAA,gBAAA,CAAAO,EACN,CAmBL;;ACpDA,IAAA,CAAA,CAAA,MAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,EAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CA2FsB,MAAA,iBAAA,SAA0BC,qBAAa,CAC3D,WAAc,EAAA,CACZ,KAAM,GACR,CA4BF,CAEsB,MAAA,WAAY,CAkBhC,WAAA,CAAmBX,CAAgC,CAAA,CAAhC,IAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAjBnBC,CAAA,CAAA,IAAA,CAAgB,UAAW,CAAA,IAAA,CAAA,CAC3BA,CAAA,CAAA,IAAA,CAAgB,SAAU,CAAA,CAAA,EAgB0B,CAmBtD;;ACyCO,MAAe,sBAAsBW,gBAAa,CACvD,aAAc,CACZ,KAAA,GACF,CAWF,OAyOsB,OAAQ,CAC5B,YAAmBC,CAAqB,CAAA,CAArB,IAAAA,CAAAA,MAAAA,CAAAA,EAAsB,CAuD3C;;;;;;;;;;;;;;;;;;;;;;"}