Skip to content

wallet_getCapabilities

Gets supported EIP-5792 Capabilities of the Relay.

Request

type Request = {
  method: 'wallet_getCapabilities',
  // the chain ids
  params: Hex[],
}

Response

A map of chain IDs to the capabilities supported by the Relay on those chains, which includes:

  • contract addresses (contracts)
  • fee configuration (fees), such as supported fee tokens (fees.tokens), and quote lifetimes (fees.quoteConfig.ttl)
type Response = {
  // the chain ID as hex
  [chainId: Hex]: {
    contracts: {
      /** Account implementation address. */
      accountImplementation: {
        address: Address,
        version?: string | null,
      },
      /** Account proxy address. */
      accountProxy: {
        address: Address,
        version?: string | null,
      },
      /** Legacy account implementation addresses. */
      legacyAccountImplementations: {
        address: Address,
        version?: string | null,
      }[],
      /** Legacy orchestrator addresses. */
      legacyOrchestrators: {
        address: Address,
        version?: string | null,
      }[],
      /** Orchestrator address. */
      orchestrator: {
        address: Address,
        version?: string | null,
      },
      /** Simulator address. */
      simulator: {
        address: Address,
        version?: string | null,
      },
      /** Funder contract address. */
      funder: {
        address: Address,
        version?: string | null,
      },
      /** Escrow contract address. */
      escrow: {
        address: Address,
        version?: string | null,
      },
    },
    fees: {
      quoteConfig: {
        /** Sets a constant rate for the price oracle. Used for testing. */
        constantRate?: number | null,
        /** Gas estimate configuration. */
        gas: {
          /** Extra buffer added to Intent gas estimates. */
          intentBuffer: number,
          /** Extra buffer added to transaction gas estimates. */
          txBuffer: number,
        },
        /** The lifetime of a price rate. */
        rateTtl: number,
        /** The lifetime of a fee quote. */
        ttl: number,
      },
      /** Fee recipient address. */
      recipient: Address,
      /** Tokens the fees can be paid in. */
      tokens: {
        address: Address,
        decimals: number,
        interop?: boolean,
        /** The rate of the fee token to native tokens. */
        nativeRate?: bigint,
        symbol: string,
        uid: string
      }[],
    },
  }
}

Example

cast rpc --rpc-url https://rpc.porto.sh wallet_getCapabilities '["0x14a34"]'
{
  "0x14a34": {
    "contracts": {
      "orchestrator": {
        "address": "0xb447ba5a2fb841406cdac4585fdc28027d7ae503",
        "version": "0.4.6"
      },
      "accountImplementation": {
        "address": "0xc4e1dc6045234b913db45e8f51e770d6d12e42a1",
        "version": "0.4.11"
      },
      "legacyOrchestrators": [],
      "legacyAccountImplementations": [],
      "accountProxy": {
        "address": "0x5874f358359ee96d2b3520409018f1a6f59a2cdc",
        "version": null
      },
      "simulator": {
        "address": "0xcb80788813c39d90c48c2733b43b3e47e23a2d3f",
        "version": null
      },
      "funder": {
        "address": "0x665efbf4b831aac6b712471c6bbfdb11e1721b4f",
        "version": null
      },
      "escrow": {
        "address": "0x55626138525a47af075322aafe1df8f68993b11d",
        "version": null
      }
    },
    "fees": {
      "recipient": "0x665efbf4b831aac6b712471c6bbfdb11e1721b4f",
      "quoteConfig": {
        "constantRate": null,
        "gas": {
          "intentBuffer": 20000,
          "txBuffer": 10000
        },
        "ttl": 30,
        "rateTtl": 300
      },
      "tokens": [
        {
          "uid": "exp2",
          "address": "0x2ace05bcb50b49953aaa4c00f318db908a512d99",
          "decimals": 18,
          "feeToken": true,
          "interop": true,
          "symbol": "EXP2",
          "nativeRate": "0xc536acbc02a4"
        },
        {
          "uid": "exp1",
          "address": "0x74e294e9d05bace256796040ca6dc0c47efb9fff",
          "decimals": 18,
          "feeToken": true,
          "interop": true,
          "symbol": "EXP",
          "nativeRate": "0xc536acbc02a4"
        },
        {
          "uid": "teth",
          "address": "0x0000000000000000000000000000000000000000",
          "decimals": 18,
          "feeToken": true,
          "interop": true,
          "symbol": "ETH",
          "nativeRate": "0xde0b6b3a7640000"
        }
      ]
    }
  }
}