Class TokenManagerClient

TokenManagerClient

Description

Type-safe contract client for TokenManager

Example

import { sepolia } from "viem/chains";

const client = createTokenManagerClient({
chain: sepolia,
address: "0x1234..."
});

Hierarchy (view full)

Constructors

Properties

Methods

Constructors

Properties

abi: readonly [{
    inputs: readonly [{
        internalType: "address";
        name: "interchainTokenService_";
        type: "address";
    }];
    stateMutability: "nonpayable";
    type: "constructor";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "flowLimiter";
        type: "address";
    }];
    name: "AlreadyFlowLimiter";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "limit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "flowAmount";
        type: "uint256";
    }, {
        internalType: "address";
        name: "tokenManager";
        type: "address";
    }];
    name: "FlowLimitExceeded";
    type: "error";
}, {
    inputs: readonly [];
    name: "GiveTokenFailed";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "bytes";
        name: "bytesAddress";
        type: "bytes";
    }];
    name: "InvalidBytesLength";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "fromAccount";
        type: "address";
    }, {
        internalType: "address";
        name: "toAccount";
        type: "address";
    }, {
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "InvalidProposedRoles";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "MissingAllRoles";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "MissingAnyOfRoles";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint8";
        name: "role";
        type: "uint8";
    }];
    name: "MissingRole";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "flowLimiter";
        type: "address";
    }];
    name: "NotFlowLimiter";
    type: "error";
}, {
    inputs: readonly [];
    name: "NotProxy";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "caller";
        type: "address";
    }];
    name: "NotService";
    type: "error";
}, {
    inputs: readonly [];
    name: "NotSupported";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "caller";
        type: "address";
    }];
    name: "NotToken";
    type: "error";
}, {
    inputs: readonly [];
    name: "TakeTokenFailed";
    type: "error";
}, {
    inputs: readonly [];
    name: "TokenLinkerZeroAddress";
    type: "error";
}, {
    inputs: readonly [];
    name: "TokenTransferFailed";
    type: "error";
}, {
    inputs: readonly [];
    name: "ZeroAddress";
    type: "error";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "bytes32";
        name: "tokenId";
        type: "bytes32";
    }, {
        indexed: false;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "flowLimit_";
        type: "uint256";
    }];
    name: "FlowLimitSet";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "RolesAdded";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "fromAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "toAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "RolesProposed";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "RolesRemoved";
    type: "event";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "fromOperator";
        type: "address";
    }];
    name: "acceptOperatorship";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "addFlowIn";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "flowLimiter";
        type: "address";
    }];
    name: "addFlowLimiter";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "addFlowOut";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "approveService";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "contractId";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [];
    name: "flowInAmount";
    outputs: readonly [{
        internalType: "uint256";
        name: "flowInAmount_";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "flowLimit";
    outputs: readonly [{
        internalType: "uint256";
        name: "flowLimit_";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "flowOutAmount";
    outputs: readonly [{
        internalType: "uint256";
        name: "flowOutAmount_";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes";
        name: "params_";
        type: "bytes";
    }];
    name: "getTokenAddressFromParams";
    outputs: readonly [{
        internalType: "address";
        name: "tokenAddress_";
        type: "address";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint8";
        name: "role";
        type: "uint8";
    }];
    name: "hasRole";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "implementationType";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [];
    name: "interchainTokenId";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [];
    name: "interchainTokenService";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "addr";
        type: "address";
    }];
    name: "isFlowLimiter";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "addr";
        type: "address";
    }];
    name: "isOperator";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes";
        name: "operator_";
        type: "bytes";
    }, {
        internalType: "address";
        name: "tokenAddress_";
        type: "address";
    }];
    name: "params";
    outputs: readonly [{
        internalType: "bytes";
        name: "params_";
        type: "bytes";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }];
    name: "proposeOperatorship";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "flowLimiter";
        type: "address";
    }];
    name: "removeFlowLimiter";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "flowLimit_";
        type: "uint256";
    }];
    name: "setFlowLimit";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes";
        name: "params_";
        type: "bytes";
    }];
    name: "setup";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "tokenAddress";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }];
    name: "transferOperatorship";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}]
address?: `0x${string}`
chain?: Chain
reads: {
    contractId(): Promise<never>;
    flowInAmount(): Promise<bigint>;
    flowLimit(): Promise<bigint>;
    flowOutAmount(): Promise<bigint>;
    getTokenAddressFromParams(getTokenAddressFromParamsArgs): Promise<never>;
    hasRole(hasRoleArgs): Promise<boolean>;
    implementationType(): Promise<never>;
    interchainTokenId(): Promise<never>;
    interchainTokenService(): Promise<`0x${string}`>;
    isFlowLimiter(isFlowLimiterArgs): Promise<boolean>;
    isOperator(isOperatorArgs): Promise<boolean>;
    params(paramsArgs): Promise<never>;
    tokenAddress(): Promise<`0x${string}`>;
}

Type declaration

ABI: readonly [{
    inputs: readonly [{
        internalType: "address";
        name: "interchainTokenService_";
        type: "address";
    }];
    stateMutability: "nonpayable";
    type: "constructor";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "flowLimiter";
        type: "address";
    }];
    name: "AlreadyFlowLimiter";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "limit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "flowAmount";
        type: "uint256";
    }, {
        internalType: "address";
        name: "tokenManager";
        type: "address";
    }];
    name: "FlowLimitExceeded";
    type: "error";
}, {
    inputs: readonly [];
    name: "GiveTokenFailed";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "bytes";
        name: "bytesAddress";
        type: "bytes";
    }];
    name: "InvalidBytesLength";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "fromAccount";
        type: "address";
    }, {
        internalType: "address";
        name: "toAccount";
        type: "address";
    }, {
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "InvalidProposedRoles";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "MissingAllRoles";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "MissingAnyOfRoles";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint8";
        name: "role";
        type: "uint8";
    }];
    name: "MissingRole";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "flowLimiter";
        type: "address";
    }];
    name: "NotFlowLimiter";
    type: "error";
}, {
    inputs: readonly [];
    name: "NotProxy";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "caller";
        type: "address";
    }];
    name: "NotService";
    type: "error";
}, {
    inputs: readonly [];
    name: "NotSupported";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "caller";
        type: "address";
    }];
    name: "NotToken";
    type: "error";
}, {
    inputs: readonly [];
    name: "TakeTokenFailed";
    type: "error";
}, {
    inputs: readonly [];
    name: "TokenLinkerZeroAddress";
    type: "error";
}, {
    inputs: readonly [];
    name: "TokenTransferFailed";
    type: "error";
}, {
    inputs: readonly [];
    name: "ZeroAddress";
    type: "error";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "bytes32";
        name: "tokenId";
        type: "bytes32";
    }, {
        indexed: false;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "flowLimit_";
        type: "uint256";
    }];
    name: "FlowLimitSet";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "RolesAdded";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "fromAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "toAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "RolesProposed";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "accountRoles";
        type: "uint256";
    }];
    name: "RolesRemoved";
    type: "event";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "fromOperator";
        type: "address";
    }];
    name: "acceptOperatorship";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "addFlowIn";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "flowLimiter";
        type: "address";
    }];
    name: "addFlowLimiter";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "addFlowOut";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "approveService";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "contractId";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [];
    name: "flowInAmount";
    outputs: readonly [{
        internalType: "uint256";
        name: "flowInAmount_";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "flowLimit";
    outputs: readonly [{
        internalType: "uint256";
        name: "flowLimit_";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "flowOutAmount";
    outputs: readonly [{
        internalType: "uint256";
        name: "flowOutAmount_";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes";
        name: "params_";
        type: "bytes";
    }];
    name: "getTokenAddressFromParams";
    outputs: readonly [{
        internalType: "address";
        name: "tokenAddress_";
        type: "address";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint8";
        name: "role";
        type: "uint8";
    }];
    name: "hasRole";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "implementationType";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [];
    name: "interchainTokenId";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [];
    name: "interchainTokenService";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "addr";
        type: "address";
    }];
    name: "isFlowLimiter";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "addr";
        type: "address";
    }];
    name: "isOperator";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes";
        name: "operator_";
        type: "bytes";
    }, {
        internalType: "address";
        name: "tokenAddress_";
        type: "address";
    }];
    name: "params";
    outputs: readonly [{
        internalType: "bytes";
        name: "params_";
        type: "bytes";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }];
    name: "proposeOperatorship";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "flowLimiter";
        type: "address";
    }];
    name: "removeFlowLimiter";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "flowLimit_";
        type: "uint256";
    }];
    name: "setFlowLimit";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes";
        name: "params_";
        type: "bytes";
    }];
    name: "setup";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "tokenAddress";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }];
    name: "transferOperatorship";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}] = ABI_FILE.abi
contractName: "TokenManager" = ABI_FILE.contractName

Methods

  • Type Parameters

    • TFunctionName extends "hasRole" | "interchainTokenId" | "interchainTokenService" | "tokenAddress" | "params" | "contractId" | "flowInAmount" | "flowLimit" | "flowOutAmount" | "isOperator" | "getTokenAddressFromParams" | "implementationType" | "isFlowLimiter"

    Parameters

    • functionName: TFunctionName
    • Optional params: Omit<ReadContractParameters<readonly [{
          inputs: readonly [{
              internalType: "address";
              name: "interchainTokenService_";
              type: "address";
          }];
          stateMutability: "nonpayable";
          type: "constructor";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "flowLimiter";
              type: "address";
          }];
          name: "AlreadyFlowLimiter";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "limit";
              type: "uint256";
          }, {
              internalType: "uint256";
              name: "flowAmount";
              type: "uint256";
          }, {
              internalType: "address";
              name: "tokenManager";
              type: "address";
          }];
          name: "FlowLimitExceeded";
          type: "error";
      }, {
          inputs: readonly [];
          name: "GiveTokenFailed";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "bytes";
              name: "bytesAddress";
              type: "bytes";
          }];
          name: "InvalidBytesLength";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "fromAccount";
              type: "address";
          }, {
              internalType: "address";
              name: "toAccount";
              type: "address";
          }, {
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "InvalidProposedRoles";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "MissingAllRoles";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "MissingAnyOfRoles";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              internalType: "uint8";
              name: "role";
              type: "uint8";
          }];
          name: "MissingRole";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "flowLimiter";
              type: "address";
          }];
          name: "NotFlowLimiter";
          type: "error";
      }, {
          inputs: readonly [];
          name: "NotProxy";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "caller";
              type: "address";
          }];
          name: "NotService";
          type: "error";
      }, {
          inputs: readonly [];
          name: "NotSupported";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "caller";
              type: "address";
          }];
          name: "NotToken";
          type: "error";
      }, {
          inputs: readonly [];
          name: "TakeTokenFailed";
          type: "error";
      }, {
          inputs: readonly [];
          name: "TokenLinkerZeroAddress";
          type: "error";
      }, {
          inputs: readonly [];
          name: "TokenTransferFailed";
          type: "error";
      }, {
          inputs: readonly [];
          name: "ZeroAddress";
          type: "error";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "bytes32";
              name: "tokenId";
              type: "bytes32";
          }, {
              indexed: false;
              internalType: "address";
              name: "operator";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "flowLimit_";
              type: "uint256";
          }];
          name: "FlowLimitSet";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "RolesAdded";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "address";
              name: "fromAccount";
              type: "address";
          }, {
              indexed: true;
              internalType: "address";
              name: "toAccount";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "RolesProposed";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "RolesRemoved";
          type: "event";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "fromOperator";
              type: "address";
          }];
          name: "acceptOperatorship";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "amount";
              type: "uint256";
          }];
          name: "addFlowIn";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "flowLimiter";
              type: "address";
          }];
          name: "addFlowLimiter";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "amount";
              type: "uint256";
          }];
          name: "addFlowOut";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "approveService";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "contractId";
          outputs: readonly [{
              internalType: "bytes32";
              name: "";
              type: "bytes32";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [];
          name: "flowInAmount";
          outputs: readonly [{
              internalType: "uint256";
              name: "flowInAmount_";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "flowLimit";
          outputs: readonly [{
              internalType: "uint256";
              name: "flowLimit_";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "flowOutAmount";
          outputs: readonly [{
              internalType: "uint256";
              name: "flowOutAmount_";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "bytes";
              name: "params_";
              type: "bytes";
          }];
          name: "getTokenAddressFromParams";
          outputs: readonly [{
              internalType: "address";
              name: "tokenAddress_";
              type: "address";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              internalType: "uint8";
              name: "role";
              type: "uint8";
          }];
          name: "hasRole";
          outputs: readonly [{
              internalType: "bool";
              name: "";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "implementationType";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [];
          name: "interchainTokenId";
          outputs: readonly [{
              internalType: "bytes32";
              name: "";
              type: "bytes32";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [];
          name: "interchainTokenService";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "addr";
              type: "address";
          }];
          name: "isFlowLimiter";
          outputs: readonly [{
              internalType: "bool";
              name: "";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "addr";
              type: "address";
          }];
          name: "isOperator";
          outputs: readonly [{
              internalType: "bool";
              name: "";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "bytes";
              name: "operator_";
              type: "bytes";
          }, {
              internalType: "address";
              name: "tokenAddress_";
              type: "address";
          }];
          name: "params";
          outputs: readonly [{
              internalType: "bytes";
              name: "params_";
              type: "bytes";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "operator";
              type: "address";
          }];
          name: "proposeOperatorship";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "flowLimiter";
              type: "address";
          }];
          name: "removeFlowLimiter";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "flowLimit_";
              type: "uint256";
          }];
          name: "setFlowLimit";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "bytes";
              name: "params_";
              type: "bytes";
          }];
          name: "setup";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "tokenAddress";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "operator";
              type: "address";
          }];
          name: "transferOperatorship";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }], TFunctionName>, "address" | "abi" | "functionName"> & {
          address?: `0x${string}`;
      }

    Returns Promise<{
            [K in string | number | symbol]: {
                [K in string | number | symbol]: AbiParameterToPrimitiveType<ExtractAbiFunctionForArgs<readonly [{
                    inputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    anonymous: ...;
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    anonymous: ...;
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    anonymous: ...;
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    anonymous: ...;
                    inputs: ...;
                    name: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }, {
                    inputs: ...;
                    name: ...;
                    outputs: ...;
                    stateMutability: ...;
                    type: ...;
                }], "view", TFunctionName, ContractFunctionArgs<readonly [(...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...), (...)], "view", TFunctionName>>["outputs"][K], AbiParameterKind>
            }[K]
        } extends types
        ? types extends readonly []
            ? void
            : types extends readonly [type]
                ? type
                : types
        : never>

  • Type Parameters

    • TFunctionName extends "setup" | "acceptOperatorship" | "proposeOperatorship" | "transferOperatorship" | "addFlowIn" | "addFlowLimiter" | "addFlowOut" | "approveService" | "removeFlowLimiter" | "setFlowLimit"

    Parameters

    • functionName: TFunctionName
    • Optional params: Omit<WriteContractParameters<readonly [{
          inputs: readonly [{
              internalType: "address";
              name: "interchainTokenService_";
              type: "address";
          }];
          stateMutability: "nonpayable";
          type: "constructor";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "flowLimiter";
              type: "address";
          }];
          name: "AlreadyFlowLimiter";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "limit";
              type: "uint256";
          }, {
              internalType: "uint256";
              name: "flowAmount";
              type: "uint256";
          }, {
              internalType: "address";
              name: "tokenManager";
              type: "address";
          }];
          name: "FlowLimitExceeded";
          type: "error";
      }, {
          inputs: readonly [];
          name: "GiveTokenFailed";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "bytes";
              name: "bytesAddress";
              type: "bytes";
          }];
          name: "InvalidBytesLength";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "fromAccount";
              type: "address";
          }, {
              internalType: "address";
              name: "toAccount";
              type: "address";
          }, {
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "InvalidProposedRoles";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "MissingAllRoles";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "MissingAnyOfRoles";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              internalType: "uint8";
              name: "role";
              type: "uint8";
          }];
          name: "MissingRole";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "flowLimiter";
              type: "address";
          }];
          name: "NotFlowLimiter";
          type: "error";
      }, {
          inputs: readonly [];
          name: "NotProxy";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "caller";
              type: "address";
          }];
          name: "NotService";
          type: "error";
      }, {
          inputs: readonly [];
          name: "NotSupported";
          type: "error";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "caller";
              type: "address";
          }];
          name: "NotToken";
          type: "error";
      }, {
          inputs: readonly [];
          name: "TakeTokenFailed";
          type: "error";
      }, {
          inputs: readonly [];
          name: "TokenLinkerZeroAddress";
          type: "error";
      }, {
          inputs: readonly [];
          name: "TokenTransferFailed";
          type: "error";
      }, {
          inputs: readonly [];
          name: "ZeroAddress";
          type: "error";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "bytes32";
              name: "tokenId";
              type: "bytes32";
          }, {
              indexed: false;
              internalType: "address";
              name: "operator";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "flowLimit_";
              type: "uint256";
          }];
          name: "FlowLimitSet";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "RolesAdded";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "address";
              name: "fromAccount";
              type: "address";
          }, {
              indexed: true;
              internalType: "address";
              name: "toAccount";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "RolesProposed";
          type: "event";
      }, {
          anonymous: false;
          inputs: readonly [{
              indexed: true;
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              indexed: false;
              internalType: "uint256";
              name: "accountRoles";
              type: "uint256";
          }];
          name: "RolesRemoved";
          type: "event";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "fromOperator";
              type: "address";
          }];
          name: "acceptOperatorship";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "amount";
              type: "uint256";
          }];
          name: "addFlowIn";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "flowLimiter";
              type: "address";
          }];
          name: "addFlowLimiter";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "amount";
              type: "uint256";
          }];
          name: "addFlowOut";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "approveService";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "contractId";
          outputs: readonly [{
              internalType: "bytes32";
              name: "";
              type: "bytes32";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [];
          name: "flowInAmount";
          outputs: readonly [{
              internalType: "uint256";
              name: "flowInAmount_";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "flowLimit";
          outputs: readonly [{
              internalType: "uint256";
              name: "flowLimit_";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "flowOutAmount";
          outputs: readonly [{
              internalType: "uint256";
              name: "flowOutAmount_";
              type: "uint256";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "bytes";
              name: "params_";
              type: "bytes";
          }];
          name: "getTokenAddressFromParams";
          outputs: readonly [{
              internalType: "address";
              name: "tokenAddress_";
              type: "address";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "account";
              type: "address";
          }, {
              internalType: "uint8";
              name: "role";
              type: "uint8";
          }];
          name: "hasRole";
          outputs: readonly [{
              internalType: "bool";
              name: "";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [];
          name: "implementationType";
          outputs: readonly [{
              internalType: "uint256";
              name: "";
              type: "uint256";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [];
          name: "interchainTokenId";
          outputs: readonly [{
              internalType: "bytes32";
              name: "";
              type: "bytes32";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [];
          name: "interchainTokenService";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "addr";
              type: "address";
          }];
          name: "isFlowLimiter";
          outputs: readonly [{
              internalType: "bool";
              name: "";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "addr";
              type: "address";
          }];
          name: "isOperator";
          outputs: readonly [{
              internalType: "bool";
              name: "";
              type: "bool";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "bytes";
              name: "operator_";
              type: "bytes";
          }, {
              internalType: "address";
              name: "tokenAddress_";
              type: "address";
          }];
          name: "params";
          outputs: readonly [{
              internalType: "bytes";
              name: "params_";
              type: "bytes";
          }];
          stateMutability: "pure";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "operator";
              type: "address";
          }];
          name: "proposeOperatorship";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "flowLimiter";
              type: "address";
          }];
          name: "removeFlowLimiter";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "uint256";
              name: "flowLimit_";
              type: "uint256";
          }];
          name: "setFlowLimit";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "bytes";
              name: "params_";
              type: "bytes";
          }];
          name: "setup";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }, {
          inputs: readonly [];
          name: "tokenAddress";
          outputs: readonly [{
              internalType: "address";
              name: "";
              type: "address";
          }];
          stateMutability: "view";
          type: "function";
      }, {
          inputs: readonly [{
              internalType: "address";
              name: "operator";
              type: "address";
          }];
          name: "transferOperatorship";
          outputs: readonly [];
          stateMutability: "nonpayable";
          type: "function";
      }], TFunctionName>, "address" | "abi" | "functionName"> & {
          address?: `0x${string}`;
      }

    Returns Promise<`0x${string}`>

Generated using TypeDoc