Used only by CosmosInterchainService

Prepares an ICQ Connection Kit based on the icq/v1 IBC application protocol.

icq/v1, also referred to as async-icq, is a protocol for asynchronous queries between IBC-enabled chains. It allows a chain to send queries to another chain and receive responses asynchronously.

The ICQ connection kit provides the necessary functionality to establish and manage an ICQ connection between two chains. It includes methods for retrieving the local and remote addresses of the connection, as well as sending queries and handling connection events.

  • Parameters

    • zone: Zone
    • vowTools: {
          allVows: ((maybeVows: unknown[]) => Vow<any[]>);
          asPromise: AsPromiseFunction;
          asVow: (<T>(fn: ((...args: any[]) => Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>)) => Vow<Awaited<T>>);
          makeVowKit: (<T>() => VowKit<T>);
          retriable: (<F>(fnZone: Zone, name: string, fn: F) => F extends ((...args: Args) => Promise<R>)
              ? ((...args: Args) => Vow<R>)
              : never);
          watch: (<T, TResult1, TResult2, C>(specimenP: EVow<T>, watcher?: Watcher<T, TResult1, TResult2, C>, ...watcherArgs: C) => Vow<Narrowest>);
          when: (<T, TResult1, TResult2>(specimenP: T, onFulfilled?: ((value: EUnwrap<T>) => TResult1 | PromiseLike<TResult1>), onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>)) => Promise<TResult1 | TResult2>);
      }
      • allVows: ((maybeVows: unknown[]) => Vow<any[]>)
          • (maybeVows): Vow<any[]>
          • Vow-tolerant implementation of Promise.all.

            Parameters

            • maybeVows: unknown[]

            Returns Vow<any[]>

      • asPromise: AsPromiseFunction
      • asVow: (<T>(fn: ((...args: any[]) => Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>)) => Vow<Awaited<T>>)
          • <T>(fn): Vow<Awaited<T>>
          • Helper function that coerces the result of a function to a Vow. Helpful for scenarios like a synchronously thrown error.

            Type Parameters

            • T extends unknown

            Parameters

            • fn: ((...args: any[]) => Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>)
                • (...args): Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>
                • Parameters

                  • Rest...args: any[]

                  Returns Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>

            Returns Vow<Awaited<T>>

      • makeVowKit: (<T>() => VowKit<T>)
          • <T>(): VowKit<T>
          • Type Parameters

            • T

            Returns VowKit<T>

      • retriable: (<F>(fnZone: Zone, name: string, fn: F) => F extends ((...args: Args) => Promise<R>)
            ? ((...args: Args) => Vow<R>)
            : never)
          • <F>(fnZone, name, fn): F extends ((...args: Args) => Promise<R>)
                ? ((...args: Args) => Vow<R>)
                : never
          • TODO FIXME make this real Create a function that retries the given function if the underlying functions rejects due to upgrade disconnection.

            Type Parameters

            • F extends ((...args: any[]) => Promise<any>)

            Parameters

            • fnZone: Zone

              the zone for the named function

            • name: string
            • fn: F

            Returns F extends ((...args: Args) => Promise<R>)
                ? ((...args: Args) => Vow<R>)
                : never

      • watch: (<T, TResult1, TResult2, C>(specimenP: EVow<T>, watcher?: Watcher<T, TResult1, TResult2, C>, ...watcherArgs: C) => Vow<Narrowest>)
          • <T, TResult1, TResult2, C>(specimenP, watcher?, ...watcherArgs): Vow<Narrowest>
          • Type Parameters

            • T = any
            • TResult1 = T
            • TResult2 = never
            • C extends any[] = any[]

              watcher args

            Parameters

            Returns Vow<Narrowest>

      • when: (<T, TResult1, TResult2>(specimenP: T, onFulfilled?: ((value: EUnwrap<T>) => TResult1 | PromiseLike<TResult1>), onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>)) => Promise<TResult1 | TResult2>)

    Returns ((...args: [port: Port]) => GuardedKit<{
        connection: {
            getLocalAddress(): `/ibc-port/${string}`;
            getRemoteAddress(): `/${string}ibc-port/${string}/ordered/${string}` | `/${string}ibc-port/${string}/unordered/${string}`;
            query(msgs: JsonSafe<RequestQuery>[]): Vow<JsonSafe<ResponseQuery>[]>;
        };
        connectionHandler: {
            onClose(_connection: any, reason: any): Promise<void>;
            onOpen(connection: Remote<Connection>, localAddr: `/ibc-port/${string}`, remoteAddr: `/${string}ibc-port/${string}/ordered/${string}` | `/${string}ibc-port/${string}/unordered/${string}`): Promise<void>;
        };
        parseQueryPacketWatcher: {
            onFulfilled(ack: string): JsonSafe<ResponseQuery>[];
        };
    }>)

      • (...args): GuardedKit<{
            connection: {
                getLocalAddress(): `/ibc-port/${string}`;
                getRemoteAddress(): `/${string}ibc-port/${string}/ordered/${string}` | `/${string}ibc-port/${string}/unordered/${string}`;
                query(msgs: JsonSafe<RequestQuery>[]): Vow<JsonSafe<ResponseQuery>[]>;
            };
            connectionHandler: {
                onClose(_connection: any, reason: any): Promise<void>;
                onOpen(connection: Remote<Connection>, localAddr: `/ibc-port/${string}`, remoteAddr: `/${string}ibc-port/${string}/ordered/${string}` | `/${string}ibc-port/${string}/unordered/${string}`): Promise<void>;
            };
            parseQueryPacketWatcher: {
                onFulfilled(ack: string): JsonSafe<ResponseQuery>[];
            };
        }>
      • Parameters

        • Rest...args: [port: Port]

        Returns GuardedKit<{
            connection: {
                getLocalAddress(): `/ibc-port/${string}`;
                getRemoteAddress(): `/${string}ibc-port/${string}/ordered/${string}` | `/${string}ibc-port/${string}/unordered/${string}`;
                query(msgs: JsonSafe<RequestQuery>[]): Vow<JsonSafe<ResponseQuery>[]>;
            };
            connectionHandler: {
                onClose(_connection: any, reason: any): Promise<void>;
                onOpen(connection: Remote<Connection>, localAddr: `/ibc-port/${string}`, remoteAddr: `/${string}ibc-port/${string}/ordered/${string}` | `/${string}ibc-port/${string}/unordered/${string}`): Promise<void>;
            };
            parseQueryPacketWatcher: {
                onFulfilled(ack: string): JsonSafe<ResponseQuery>[];
            };
        }>