# MultisigConfig.from

Normalizes a native multisig [`MultisigConfig.Config`](/tempo/reference/MultisigConfig/types#config).

Sorts owners into strictly ascending `owner` address order (the canonical form required for account derivation) and asserts the config is valid.

## Imports

:::code-group
```ts [Named]
import { MultisigConfig } from 'ox/tempo'
```

```ts [Entrypoint]
import * as MultisigConfig from 'ox/tempo/MultisigConfig'
```
:::

## Examples

```ts twoslash
import { MultisigConfig } from 'ox/tempo'

const config = MultisigConfig.from({
  threshold: 2,
  owners: [
    {
      owner: '0x2222222222222222222222222222222222222222',
      weight: 1
    },
    {
      owner: '0x1111111111111111111111111111111111111111',
      weight: 1
    }
  ]
})
// owners are now sorted ascending by address
```

## Definition

```ts
function from<numberType>(
  config: Config<numberType>,
): Config<numberType>
```

**Source:** [src/tempo/MultisigConfig.ts](https://github.com/wevm/ox/blob/main/src/tempo/MultisigConfig.ts#L458)

## Parameters

### config

* **Type:** `Config<numberType>`

The multisig config.

#### config.owners

* **Type:** `readonly Owner[]`

Weighted owner list (strictly ascending by `owner` address).

#### config.salt

* **Type:** `0x${string}`
* **Optional**

Caller-chosen 32-byte salt mixed into the derived account address.
Defaults to the zero salt (`MultisigConfig.zeroSalt`) when omitted.

#### config.threshold

* **Type:** `numberType`

Minimum total owner weight required to authorize a transaction.

## Return Type

The normalized multisig config.

`Config<numberType>`
