> Aztec.nr API reference, v6.0.0 (mainnet and testnet). Index: https://docs.aztec.network/aztec-nr-api/v6.0.0/llms.txt

# Struct PrivateCall

Module: `noir_aztec::context::calls`

```rust
pub struct PrivateCall<let M: u32, let N: u32, T> {
    pub target_contract: AztecAddress,
    pub selector: FunctionSelector,
    pub name: str<M>,
    pub args: [Field; N],
    /* private fields */
}
```

## Fields

```rust
target_contract: AztecAddress
```

```rust
selector: FunctionSelector
```

```rust
name: str<M>
```

```rust
args: [Field; N]
```

## Implementations

```rust
impl<let M: u32, let N: u32, T> PrivateCall<M, N, T>
```

```rust
pub fn new(
    target_contract: AztecAddress,
    selector: FunctionSelector,
    name: str<M>,
    args: [Field; N],
) -> Self
```

```rust
impl<let M: u32, let N: u32, T> PrivateCall<M, N, T>
where
    T: Deserialize<N = _>
```

```rust
pub fn call(self, context: &mut PrivateContext) -> T
where
    T: Deserialize
```

**DEPRECATED**.

Please use the new contract API: `self.call(MyContract::at(address).my_private_function(...args))` instead of manually constructing and calling `PrivateCall`.
