---
# System prepended metadata

title: The MANAGER_LAMBDA object
tags: [ongoing]

---

# The MANAGER_LAMBDA object

The `MANAGER_LAMBDA` is an object exported from the `@taquito/taquito` package that provides a convenient way to create lambda functions in Michelson to interact with the [manager contract](https://gitlab.com/nomadic-labs/mi-cho-coq/blob/master/src/contracts/manager.tz), a multisig contract.

The object exposes 4 methods that take different parameters in order to create the corresponding lambda under the hood, so that developers don't have to tinker with Michelson code.

The methods are the following:
- `removeDelegate`: to remove the current baker to whom the balance of the multisig contract has been delegated
- `setDelegate`: to set a new baker as delegate
- `transferImplicit`: to transfer a given amount of XTZ to a given implicit account
- `transferToContract`: to transfer a given amount of XTZ to a given contract

## The `removeDelegate` method
The method:
```typescript
MANAGER_LAMBDA.removeDelegate()
```
The Michelson output:
```
DROP ;
NIL operation 
NONE key_hash ;
SET_DELEGATE ;
CONS ;
```
The method doesn't take any parameter.

It produces a list of operations with a single operation in it created by the `SET_DELEGATE` instruction with a value of `None`, which removes the current delegate for the contract.

## The `setDelegate` method
The method:
```typescript
MANAGER_LAMBDA.setDelegate(key: string)
```
The Michelson output:
```
DROP ;
NIL operation ;
PUSH key_hash <baker-key_hash> ;
SOME ;
SET_DELEGATE ;
CONS ;
```
The method takes 1 parameter of type `string` whose value is the `key_hash` of the baker address.

It produces a list of operations with a single operation in it created by the `SET_DELEGATE` instruction with a value of `Some <baker-key_hash>` where the `<baker-key_hash>` is replaced with the provided string.

## The `transferImplicit` method
The method:
```typescript
MANAGER_LAMBDA.transferImplicit(key: string, mutez: number)
```
The Michelson output:
```
DROP ;
NIL operation ;
PUSH key_hash <recipient-address> ;
IMPLICIT_ACCOUNT ;
PUSH mutez <amount-to-transfer> ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
```

The method takes 2 parameters: the first one of type `string` whose value is the `key_hash` of the recipient address, the second one of type `number` whose value is the amount of XTZ to be transferred.

It produces a list of operations with a single operation in it created by the `TRANSFER_TOKENS` instruction that will transfer the provided amount of XTZ to the provided address.

## The `transferToContract` method
The method:
```typescript
MANAGER_LAMBDA.transferToContract(key: string, amount: number)
```
The Michelson output:
```
DROP ;
NIL operation ;
PUSH address <contract-address> ;
CONTRACT unit ;
IF_NONE
    {
        UNIT ;
        FAILWITH ;
    }
    {
        PUSH mutez <amount-to-transfer> ;
        UNIT ;
        TRANSFER_TOKENS ;
        CONS ;
    }
```
The method takes 2 parameters: the first one of type `string` whose value is the `key_hash` of the recipient address, the second one of type `number` whose value is the amount of XTZ to be transferred.

It produces a list of operations with a single operation in it created by the `TRANSFER_TOKENS` instruction that will transfer the provided amount of XTZ to the provided contract address. The contract must take a parameter of type `unit` (which is the case for the manager contract), this condition is verified by the Michelson code in the lambda.

## Information
[Link to the MANAGER_LAMBDA code](https://github.com/ecadlabs/taquito/blob/8933ca696822a727e36c3591f866043d9c3ee239/packages/taquito/src/contract/manager-lambda.ts)

###### tags: `ongoing`