@opensubaccounts/sdk
    Preparing search index...

    Function getContractInstance

    • Type Parameters

      • C extends
            | "AllowanceManager"
            | "MultiChainSignaturesModule"
            | "OpenSubaccounts"
            | "SubaccountFactory"
      • TClient extends Client

      Parameters

      • client: TClient
      • contract: C
      • chainId: number

      Returns {
          [K in string | number | symbol]: (
              {
                  [K in string
                  | number
                  | symbol]: (
                      (
                          (
                              TClient extends { public: Client }
                                  ? TClient<TClient>["public"]
                                  : TClient
                          ) extends Client
                              ? (
                                  IsNever<(...) extends (...) ? (...) : (...)> extends true
                                      ? unknown
                                      : { read: { [functionName in (...)]: (...) } }
                              ) & (
                                  IsNever<(...) extends (...) ? (...) : (...)> extends true
                                      ? unknown
                                      : {
                                          estimateGas: { [functionName in (...)]: (...) };
                                          simulate: { [functionName in (...)]: (...) };
                                      }
                              ) & (
                                  IsNever<(...) extends (...) ? (...) : (...)> extends true
                                      ? unknown
                                      : {
                                          createEventFilter: { [EventName in (...)]: (...) };
                                          getEvents: { [EventName in (...)]: (...) };
                                          watchEvent: { [EventName in (...)]: (...) };
                                      }
                              )
                              : unknown
                      ) & (
                          (
                              TClient extends { wallet: Client }
                                  ? TClient<TClient>["wallet"]
                                  : TClient
                          ) extends Client
                              ? IsNever<
                                  (...)[(...)] extends Abi
                                      ? (...) extends (...) ? (...) : (...)
                                      : string,
                              > extends true
                                  ? unknown
                                  : {
                                      estimateGas: {
                                          [functionName in string]: GetEstimateFunction<
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                          >
                                      };
                                      write: {
                                          [functionName in string]: GetWriteFunction<
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                              (...),
                                          >
                                      };
                                  }
                              : unknown
                      )
                  )[K]
              } & {
                  abi: {
                      AllowanceManager: readonly [
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "_permit2"; type: "address" },
                                  { internalType: "address"; name: "factoryAddr"; type: "address" },
                              ];
                              stateMutability: "nonpayable";
                              type: "constructor";
                          },
                          {
                              inputs: readonly [];
                              name: "_HARDCODED_CHAIN_ID";
                              outputs: readonly [
                                  { internalType: "uint256"; name: ""; type: "uint256" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                                  { internalType: "address"; name: ""; type: "address" },
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              name: "allowanceNonces";
                              outputs: readonly [
                                  { internalType: "uint256"; name: ""; type: "uint256" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "allowanceRequestBatchTypehash";
                              outputs: readonly [
                                  { internalType: "bytes32"; name: ""; type: "bytes32" },
                              ];
                              stateMutability: "pure";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "allowanceRequestTypehash";
                              outputs: readonly [
                                  { internalType: "bytes32"; name: ""; type: "bytes32" },
                              ];
                              stateMutability: "pure";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                              ];
                              name: "allowances";
                              outputs: readonly [
                                  {
                                      components: readonly [(...), (...), (...), (...)];
                                      internalType: "struct IAllowanceManager.Allowance";
                                      name: "";
                                      type: "tuple";
                                  },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "uint256"; name: "amount"; type: "uint256" },
                                  { internalType: "uint256"; name: "timeframe"; type: "uint256" },
                              ];
                              name: "bootstrapAllowance";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "address"; name: "holder"; type: "address" },
                              ];
                              name: "commitHolder";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "eip712Domain";
                              outputs: readonly [
                                  { internalType: "bytes1"; name: "fields"; type: "bytes1" },
                                  { internalType: "string"; name: "name"; type: "string" },
                                  { internalType: "string"; name: "version"; type: "string" },
                                  { internalType: "uint256"; name: "chainId"; type: "uint256" },
                                  {
                                      internalType: "address";
                                      name: "verifyingContract";
                                      type: "address";
                                  },
                                  { internalType: "bytes32"; name: "salt"; type: "bytes32" },
                                  { internalType: "uint256[]"; name: "extensions"; type: "uint256[]" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "factory";
                              outputs: readonly [
                                  {
                                      internalType: "address";
                                      name: "factoryAddress";
                                      type: "address";
                                  },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  {
                                      components: readonly [(...), (...)];
                                      internalType: "struct IAllowanceManager.AllowanceRequestBatch";
                                      name: "batch";
                                      type: "tuple";
                                  },
                              ];
                              name: "hashAllowanceRequestBatch";
                              outputs: readonly [
                                  { internalType: "bytes32"; name: "structHash"; type: "bytes32" },
                              ];
                              stateMutability: "pure";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                              ];
                              name: "holderAddress";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "permit2";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "holder"; type: "address" },
                              ];
                              name: "registerHolder";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  {
                                      components: readonly [(...), (...)];
                                      internalType: "struct IAllowanceManager.AllowanceRequestBatch";
                                      name: "requests";
                                      type: "tuple";
                                  },
                                  { internalType: "bytes"; name: "signature"; type: "bytes" },
                              ];
                              name: "setAllowances";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "uint256"; name: "amount"; type: "uint256" },
                              ];
                              name: "spendAllowance";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "owner";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "subaccount";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "token";
                                      type: "address";
                                  },
                                  {
                                      indexed: false;
                                      internalType: "uint256";
                                      name: "amount";
                                      type: "uint256";
                                  },
                                  {
                                      indexed: false;
                                      internalType: "uint256";
                                      name: "timeframe";
                                      type: "uint256";
                                  },
                              ];
                              name: "AllowanceSet";
                              type: "event";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "owner";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "subaccount";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "token";
                                      type: "address";
                                  },
                                  {
                                      indexed: false;
                                      internalType: "uint256";
                                      name: "amount";
                                      type: "uint256";
                                  },
                              ];
                              name: "AllowanceSpent";
                              type: "event";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "holder";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "subaccount";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "uint256";
                                      name: "amount";
                                      type: "uint256";
                                  },
                              ];
                              name: "HolderPullFailed";
                              type: "event";
                          },
                          { inputs: readonly []; name: "AllowanceExceeded"; type: "error" },
                          { inputs: readonly []; name: "AlreadyInitialised"; type: "error" },
                          { inputs: readonly []; name: "HolderAlreadyCommitted"; type: "error" },
                          { inputs: readonly []; name: "HolderCommitMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderManagerMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderNotCommitted"; type: "error" },
                          { inputs: readonly []; name: "HolderOwnerMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderTokenMismatch"; type: "error" },
                          {
                              inputs: readonly [];
                              name: "InvalidContractSignature";
                              type: "error";
                          },
                          { inputs: readonly []; name: "InvalidNonce"; type: "error" },
                          { inputs: readonly []; name: "InvalidSignature"; type: "error" },
                          { inputs: readonly []; name: "InvalidSignatureLength"; type: "error" },
                          { inputs: readonly []; name: "InvalidSigner"; type: "error" },
                          { inputs: readonly []; name: "LengthMismatch"; type: "error" },
                          { inputs: readonly []; name: "Reentrancy"; type: "error" },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "token"; type: "address" },
                              ];
                              name: "SafeERC20FailedOperation";
                              type: "error";
                          },
                          { inputs: readonly []; name: "UnauthorizedCaller"; type: "error" },
                          { inputs: readonly []; name: "ZeroAmount"; type: "error" },
                      ];
                      MultiChainSignaturesModule: readonly [
                          {
                              inputs: readonly [
                                  {
                                      internalType: "address";
                                      name: "_siglessTransactionExecutor";
                                      type: "address";
                                  },
                              ];
                              stateMutability: "nonpayable";
                              type: "constructor";
                          },
                          {
                              inputs: readonly [];
                              name: "SIGLESS_TRANSACTION_EXECUTOR";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "VERSION";
                              outputs: readonly [
                                  { internalType: "string"; name: ""; type: "string" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "domainSeparator";
                              outputs: readonly [
                                  { internalType: "bytes32"; name: "separator"; type: "bytes32" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  {
                                      components: readonly [(...), (...), (...)];
                                      internalType: "struct MultiChainSignaturesModule.SafeTxBatch";
                                      name: "safeTxBatch";
                                      type: "tuple";
                                  },
                              ];
                              name: "encodeTransactionBatchData";
                              outputs: readonly [{ internalType: "bytes"; name: ""; type: "bytes" }];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "account"; type: "address" },
                                  {
                                      components: readonly [(...), (...), (...)];
                                      internalType: "struct MultiChainSignaturesModule.SafeTxBatch";
                                      name: "safeTxBatch";
                                      type: "tuple";
                                  },
                                  { internalType: "bytes"; name: "signatures"; type: "bytes" },
                              ];
                              name: "execTransactionBatch";
                              outputs: readonly [
                                  { internalType: "bool"; name: "success"; type: "bool" },
                              ];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "safe";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "uint256";
                                      name: "index";
                                      type: "uint256";
                                  },
                              ];
                              name: "SafeTxFailed";
                              type: "event";
                          },
                          { inputs: readonly []; name: "LengthMismatch"; type: "error" },
                          { inputs: readonly []; name: "MismatchedSubaccount"; type: "error" },
                      ];
                      OpenSubaccounts: readonly [
                          {
                              inputs: readonly [
                                  {
                                      internalType: "address";
                                      name: "_siglessTransactionExecutor";
                                      type: "address";
                                  },
                                  { internalType: "address"; name: "_safeSingleton"; type: "address" },
                                  {
                                      internalType: "address";
                                      name: "_safeProxyFactory";
                                      type: "address";
                                  },
                                  {
                                      internalType: "address";
                                      name: "_safeModuleSetup";
                                      type: "address";
                                  },
                                  { internalType: "address"; name: "_permit2"; type: "address" },
                              ];
                              stateMutability: "nonpayable";
                              type: "constructor";
                          },
                          {
                              inputs: readonly [];
                              name: "ALLOWANCE_MANAGER";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "MULTICHAIN_SIGNATURES_MODULE";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "SAFE_MODULE_SETUP";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "SAFE_PROXY_FACTORY";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "SAFE_SINGLETON";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "SIGLESS_TRANSACTION_EXECUTOR";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "VERSION";
                              outputs: readonly [
                                  { internalType: "string"; name: ""; type: "string" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "_HARDCODED_CHAIN_ID";
                              outputs: readonly [
                                  { internalType: "uint256"; name: ""; type: "uint256" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                                  { internalType: "address"; name: ""; type: "address" },
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              name: "allowanceNonces";
                              outputs: readonly [
                                  { internalType: "uint256"; name: ""; type: "uint256" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "allowanceRequestBatchTypehash";
                              outputs: readonly [
                                  { internalType: "bytes32"; name: ""; type: "bytes32" },
                              ];
                              stateMutability: "pure";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "allowanceRequestTypehash";
                              outputs: readonly [
                                  { internalType: "bytes32"; name: ""; type: "bytes32" },
                              ];
                              stateMutability: "pure";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                              ];
                              name: "allowances";
                              outputs: readonly [
                                  {
                                      components: readonly [(...), (...), (...), (...)];
                                      internalType: "struct IAllowanceManager.Allowance";
                                      name: "";
                                      type: "tuple";
                                  },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "uint256"; name: "amount"; type: "uint256" },
                                  { internalType: "uint256"; name: "timeframe"; type: "uint256" },
                              ];
                              name: "bootstrapAllowance";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "address"; name: "holder"; type: "address" },
                              ];
                              name: "commitHolder";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "uint256"; name: "quotaAmount"; type: "uint256" },
                                  { internalType: "uint256"; name: "quotaTimeframe"; type: "uint256" },
                                  { internalType: "uint256"; name: "initialFund"; type: "uint256" },
                                  { internalType: "bytes"; name: "firstCallData"; type: "bytes" },
                                  { internalType: "uint256"; name: "permitDeadline"; type: "uint256" },
                                  { internalType: "uint8"; name: "v"; type: "uint8" },
                                  { internalType: "bytes32"; name: "r"; type: "bytes32" },
                                  { internalType: "bytes32"; name: "s"; type: "bytes32" },
                              ];
                              name: "createAllowanceHolder";
                              outputs: readonly [
                                  { internalType: "address"; name: "holder"; type: "address" },
                              ];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "string"; name: "appDomain"; type: "string" },
                                  { internalType: "uint32"; name: "accountIndex"; type: "uint32" },
                              ];
                              name: "createSubaccount";
                              outputs: readonly [
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                              ];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "domainSeparator";
                              outputs: readonly [
                                  { internalType: "bytes32"; name: "separator"; type: "bytes32" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "eip712Domain";
                              outputs: readonly [
                                  { internalType: "bytes1"; name: "fields"; type: "bytes1" },
                                  { internalType: "string"; name: "name"; type: "string" },
                                  { internalType: "string"; name: "version"; type: "string" },
                                  { internalType: "uint256"; name: "chainId"; type: "uint256" },
                                  {
                                      internalType: "address";
                                      name: "verifyingContract";
                                      type: "address";
                                  },
                                  { internalType: "bytes32"; name: "salt"; type: "bytes32" },
                                  { internalType: "uint256[]"; name: "extensions"; type: "uint256[]" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  {
                                      components: readonly [(...), (...), (...)];
                                      internalType: "struct MultiChainSignaturesModule.SafeTxBatch";
                                      name: "safeTxBatch";
                                      type: "tuple";
                                  },
                              ];
                              name: "encodeTransactionBatchData";
                              outputs: readonly [{ internalType: "bytes"; name: ""; type: "bytes" }];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "account"; type: "address" },
                                  {
                                      components: readonly [(...), (...), (...)];
                                      internalType: "struct MultiChainSignaturesModule.SafeTxBatch";
                                      name: "safeTxBatch";
                                      type: "tuple";
                                  },
                                  { internalType: "bytes"; name: "signatures"; type: "bytes" },
                              ];
                              name: "execTransactionBatch";
                              outputs: readonly [
                                  { internalType: "bool"; name: "success"; type: "bool" },
                              ];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "factory";
                              outputs: readonly [
                                  {
                                      internalType: "address";
                                      name: "factoryAddress";
                                      type: "address";
                                  },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "uint256"; name: "quotaAmount"; type: "uint256" },
                                  { internalType: "uint256"; name: "timeframe"; type: "uint256" },
                                  { internalType: "uint256"; name: "initialFund"; type: "uint256" },
                                  { internalType: "bytes"; name: "firstCallData"; type: "bytes" },
                              ];
                              name: "generateAllowanceHolderAddress";
                              outputs: readonly [
                                  { internalType: "address"; name: "holder"; type: "address" },
                                  { internalType: "bool"; name: "isDeployed"; type: "bool" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "string"; name: "appDomain"; type: "string" },
                                  { internalType: "uint32"; name: "accountIndex"; type: "uint32" },
                              ];
                              name: "generateSubaccountAddress";
                              outputs: readonly [
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "bool"; name: "isDeployed"; type: "bool" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  {
                                      components: readonly [(...), (...)];
                                      internalType: "struct IAllowanceManager.AllowanceRequestBatch";
                                      name: "batch";
                                      type: "tuple";
                                  },
                              ];
                              name: "hashAllowanceRequestBatch";
                              outputs: readonly [
                                  { internalType: "bytes32"; name: "structHash"; type: "bytes32" },
                              ];
                              stateMutability: "pure";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                              ];
                              name: "holderAddress";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              name: "isDeployedAllowanceHolder";
                              outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              name: "isDeployedSubaccount";
                              outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "permit2";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "holder"; type: "address" },
                              ];
                              name: "registerHolder";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  {
                                      components: readonly [(...), (...)];
                                      internalType: "struct IAllowanceManager.AllowanceRequestBatch";
                                      name: "requests";
                                      type: "tuple";
                                  },
                                  { internalType: "bytes"; name: "signature"; type: "bytes" },
                              ];
                              name: "setAllowances";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "uint256"; name: "amount"; type: "uint256" },
                              ];
                              name: "spendAllowance";
                              outputs: readonly [];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "holder";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "owner";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "token";
                                      type: "address";
                                  },
                              ];
                              name: "AllowanceHolderCreated";
                              type: "event";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "owner";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "subaccount";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "token";
                                      type: "address";
                                  },
                                  {
                                      indexed: false;
                                      internalType: "uint256";
                                      name: "amount";
                                      type: "uint256";
                                  },
                                  {
                                      indexed: false;
                                      internalType: "uint256";
                                      name: "timeframe";
                                      type: "uint256";
                                  },
                              ];
                              name: "AllowanceSet";
                              type: "event";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "owner";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "subaccount";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "token";
                                      type: "address";
                                  },
                                  {
                                      indexed: false;
                                      internalType: "uint256";
                                      name: "amount";
                                      type: "uint256";
                                  },
                              ];
                              name: "AllowanceSpent";
                              type: "event";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "holder";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "subaccount";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "uint256";
                                      name: "amount";
                                      type: "uint256";
                                  },
                              ];
                              name: "HolderPullFailed";
                              type: "event";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "safe";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "uint256";
                                      name: "index";
                                      type: "uint256";
                                  },
                              ];
                              name: "SafeTxFailed";
                              type: "event";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "subaccount";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "owner";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "string";
                                      name: "appDomain";
                                      type: "string";
                                  },
                                  {
                                      indexed: false;
                                      internalType: "uint32";
                                      name: "accountIndex";
                                      type: "uint32";
                                  },
                              ];
                              name: "SubaccountCreated";
                              type: "event";
                          },
                          { inputs: readonly []; name: "AllowanceExceeded"; type: "error" },
                          {
                              inputs: readonly [];
                              name: "AllowanceManagerRegistrationFailed";
                              type: "error";
                          },
                          { inputs: readonly []; name: "AlreadyInitialised"; type: "error" },
                          { inputs: readonly []; name: "Create2EmptyBytecode"; type: "error" },
                          {
                              inputs: readonly [
                                  { internalType: "bytes"; name: "dns"; type: "bytes" },
                              ];
                              name: "DNSDecodingFailed";
                              type: "error";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "string"; name: "ens"; type: "string" },
                              ];
                              name: "DNSEncodingFailed";
                              type: "error";
                          },
                          { inputs: readonly []; name: "FailedDeployment"; type: "error" },
                          { inputs: readonly []; name: "HolderAddressMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderAlreadyCommitted"; type: "error" },
                          { inputs: readonly []; name: "HolderCommitMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderManagerMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderNotCommitted"; type: "error" },
                          { inputs: readonly []; name: "HolderOwnerMismatch"; type: "error" },
                          { inputs: readonly []; name: "HolderTokenMismatch"; type: "error" },
                          {
                              inputs: readonly [
                                  { internalType: "uint256"; name: "balance"; type: "uint256" },
                                  { internalType: "uint256"; name: "needed"; type: "uint256" },
                              ];
                              name: "InsufficientBalance";
                              type: "error";
                          },
                          {
                              inputs: readonly [];
                              name: "InvalidContractSignature";
                              type: "error";
                          },
                          { inputs: readonly []; name: "InvalidNonce"; type: "error" },
                          { inputs: readonly []; name: "InvalidSignature"; type: "error" },
                          { inputs: readonly []; name: "InvalidSignatureLength"; type: "error" },
                          { inputs: readonly []; name: "InvalidSigner"; type: "error" },
                          { inputs: readonly []; name: "LengthMismatch"; type: "error" },
                          { inputs: readonly []; name: "MismatchedSubaccount"; type: "error" },
                          { inputs: readonly []; name: "Reentrancy"; type: "error" },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "token"; type: "address" },
                              ];
                              name: "SafeERC20FailedOperation";
                              type: "error";
                          },
                          {
                              inputs: readonly [];
                              name: "SubaccountAddressMismatch";
                              type: "error";
                          },
                          { inputs: readonly []; name: "UnauthorizedCaller"; type: "error" },
                          { inputs: readonly []; name: "ZeroAmount"; type: "error" },
                      ];
                      SubaccountFactory: readonly [
                          {
                              inputs: readonly [
                                  {
                                      internalType: "address";
                                      name: "_safeSingleton";
                                      type: "address";
                                  },
                                  {
                                      internalType: "address";
                                      name: "_safeProxyFactory";
                                      type: "address";
                                  },
                                  {
                                      internalType: "address";
                                      name: "_safeModuleSetup";
                                      type: "address";
                                  },
                                  {
                                      internalType: "address";
                                      name: "_multichainSignaturesModule";
                                      type: "address";
                                  },
                                  {
                                      internalType: "address";
                                      name: "_allowanceManager";
                                      type: "address";
                                  },
                              ];
                              stateMutability: "nonpayable";
                              type: "constructor";
                          },
                          {
                              inputs: readonly [];
                              name: "ALLOWANCE_MANAGER";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "MULTICHAIN_SIGNATURES_MODULE";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "SAFE_MODULE_SETUP";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "SAFE_PROXY_FACTORY";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [];
                              name: "SAFE_SINGLETON";
                              outputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "uint256"; name: "quotaAmount"; type: "uint256" },
                                  { internalType: "uint256"; name: "quotaTimeframe"; type: "uint256" },
                                  { internalType: "uint256"; name: "initialFund"; type: "uint256" },
                                  { internalType: "bytes"; name: "firstCallData"; type: "bytes" },
                                  { internalType: "uint256"; name: "permitDeadline"; type: "uint256" },
                                  { internalType: "uint8"; name: "v"; type: "uint8" },
                                  { internalType: "bytes32"; name: "r"; type: "bytes32" },
                                  { internalType: "bytes32"; name: "s"; type: "bytes32" },
                              ];
                              name: "createAllowanceHolder";
                              outputs: readonly [
                                  { internalType: "address"; name: "holder"; type: "address" },
                              ];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "string"; name: "appDomain"; type: "string" },
                                  { internalType: "uint32"; name: "accountIndex"; type: "uint32" },
                              ];
                              name: "createSubaccount";
                              outputs: readonly [
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                              ];
                              stateMutability: "nonpayable";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "address"; name: "token"; type: "address" },
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "uint256"; name: "quotaAmount"; type: "uint256" },
                                  { internalType: "uint256"; name: "timeframe"; type: "uint256" },
                                  { internalType: "uint256"; name: "initialFund"; type: "uint256" },
                                  { internalType: "bytes"; name: "firstCallData"; type: "bytes" },
                              ];
                              name: "generateAllowanceHolderAddress";
                              outputs: readonly [
                                  { internalType: "address"; name: "holder"; type: "address" },
                                  { internalType: "bool"; name: "isDeployed"; type: "bool" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: "owner"; type: "address" },
                                  { internalType: "string"; name: "appDomain"; type: "string" },
                                  { internalType: "uint32"; name: "accountIndex"; type: "uint32" },
                              ];
                              name: "generateSubaccountAddress";
                              outputs: readonly [
                                  { internalType: "address"; name: "subaccount"; type: "address" },
                                  { internalType: "bool"; name: "isDeployed"; type: "bool" },
                              ];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              name: "isDeployedAllowanceHolder";
                              outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "address"; name: ""; type: "address" },
                              ];
                              name: "isDeployedSubaccount";
                              outputs: readonly [{ internalType: "bool"; name: ""; type: "bool" }];
                              stateMutability: "view";
                              type: "function";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "holder";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "owner";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "token";
                                      type: "address";
                                  },
                              ];
                              name: "AllowanceHolderCreated";
                              type: "event";
                          },
                          {
                              anonymous: false;
                              inputs: readonly [
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "subaccount";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "address";
                                      name: "owner";
                                      type: "address";
                                  },
                                  {
                                      indexed: true;
                                      internalType: "string";
                                      name: "appDomain";
                                      type: "string";
                                  },
                                  {
                                      indexed: false;
                                      internalType: "uint32";
                                      name: "accountIndex";
                                      type: "uint32";
                                  },
                              ];
                              name: "SubaccountCreated";
                              type: "event";
                          },
                          {
                              inputs: readonly [];
                              name: "AllowanceManagerRegistrationFailed";
                              type: "error";
                          },
                          { inputs: readonly []; name: "Create2EmptyBytecode"; type: "error" },
                          {
                              inputs: readonly [
                                  { internalType: "bytes"; name: "dns"; type: "bytes" },
                              ];
                              name: "DNSDecodingFailed";
                              type: "error";
                          },
                          {
                              inputs: readonly [
                                  { internalType: "string"; name: "ens"; type: "string" },
                              ];
                              name: "DNSEncodingFailed";
                              type: "error";
                          },
                          { inputs: readonly []; name: "FailedDeployment"; type: "error" },
                          { inputs: readonly []; name: "HolderAddressMismatch"; type: "error" },
                          {
                              inputs: readonly [
                                  { internalType: "uint256"; name: "balance"; type: "uint256" },
                                  { internalType: "uint256"; name: "needed"; type: "uint256" },
                              ];
                              name: "InsufficientBalance";
                              type: "error";
                          },
                          { inputs: readonly []; name: "Reentrancy"; type: "error" },
                          {
                              inputs: readonly [];
                              name: "SubaccountAddressMismatch";
                              type: "error";
                          },
                      ];
                  }[C];
                  address: `0x${string}`;
              }
          )[K]
      }