> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cdp.coinbase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EvmSmartAccountProperties

```ts theme={null}
type EvmSmartAccountProperties = {
  address: Address;
  name?: string;
  owners: EvmAccount[];
  policies: string[] | undefined;
  signX402Payment: (paymentRequired: SignX402PaymentOptions["paymentRequired"], acceptedIndex: number) => Promise<PaymentPayload>;
  type: "evm-smart";
  useNetwork: <Network>(network: Network) => Promise<NetworkScopedEvmSmartAccount<Network>>;
};
```

Defined in: [accounts/evm/types.ts:155](https://github.com/coinbase/cdp-sdk/blob/a1195adcfa5a93627bd3cb79831b188cc13073a1/typescript/packages/cdp-sdk/src/accounts/evm/types.ts#L155)

## Properties

### address

```ts theme={null}
address: Address;
```

Defined in: [accounts/evm/types.ts:157](https://github.com/coinbase/cdp-sdk/blob/a1195adcfa5a93627bd3cb79831b188cc13073a1/typescript/packages/cdp-sdk/src/accounts/evm/types.ts#L157)

The smart account's address.

***

### name?

```ts theme={null}
optional name: string;
```

Defined in: [accounts/evm/types.ts:159](https://github.com/coinbase/cdp-sdk/blob/a1195adcfa5a93627bd3cb79831b188cc13073a1/typescript/packages/cdp-sdk/src/accounts/evm/types.ts#L159)

The name of the smart account.

***

### owners

```ts theme={null}
owners: EvmAccount[];
```

Defined in: [accounts/evm/types.ts:161](https://github.com/coinbase/cdp-sdk/blob/a1195adcfa5a93627bd3cb79831b188cc13073a1/typescript/packages/cdp-sdk/src/accounts/evm/types.ts#L161)

Array of accounts that own and can sign for the smart account (currently only supports one owner but will be extended to support multiple owners in the future).

***

### policies

```ts theme={null}
policies: string[] | undefined;
```

Defined in: [accounts/evm/types.ts:165](https://github.com/coinbase/cdp-sdk/blob/a1195adcfa5a93627bd3cb79831b188cc13073a1/typescript/packages/cdp-sdk/src/accounts/evm/types.ts#L165)

The list of policy IDs that apply to the smart account. This will include both the project-level policy and the account-level policy, if one exists.

***

### signX402Payment()

```ts theme={null}
signX402Payment: (paymentRequired: SignX402PaymentOptions["paymentRequired"], acceptedIndex: number) => Promise<PaymentPayload>;
```

Defined in: [accounts/evm/types.ts:178](https://github.com/coinbase/cdp-sdk/blob/a1195adcfa5a93627bd3cb79831b188cc13073a1/typescript/packages/cdp-sdk/src/accounts/evm/types.ts#L178)

Signs an x402 payment payload for direct use with any transport.

Smart accounts support the EIP-3009 `exact` flow only. Smart accounts sign
with an ERC-1271/ERC-6492 contract signature, so the Permit2-based `upto`
scheme and `exact` requirements that use the Permit2 transfer method are
rejected.

#### Parameters

##### paymentRequired

`SignX402PaymentOptions`\[`"paymentRequired"`]

The payment requirements returned by a resource server.

##### acceptedIndex

`number`

Index into `paymentRequired.accepts`.

#### Returns

`Promise`\<`PaymentPayload`>

The signed x402 payment payload.

***

### type

```ts theme={null}
type: "evm-smart";
```

Defined in: [accounts/evm/types.ts:163](https://github.com/coinbase/cdp-sdk/blob/a1195adcfa5a93627bd3cb79831b188cc13073a1/typescript/packages/cdp-sdk/src/accounts/evm/types.ts#L163)

Identifier for the smart account type.

***

### useNetwork()

```ts theme={null}
useNetwork: <Network>(network: Network) => Promise<NetworkScopedEvmSmartAccount<Network>>;
```

Defined in: [accounts/evm/types.ts:196](https://github.com/coinbase/cdp-sdk/blob/a1195adcfa5a93627bd3cb79831b188cc13073a1/typescript/packages/cdp-sdk/src/accounts/evm/types.ts#L196)

A function that returns a network-scoped smart account.

#### Type Parameters

##### Network

`Network` *extends* `NetworkOrRpcUrl`

#### Parameters

##### network

`Network`

The network name or RPC URL

#### Returns

`Promise`\<`NetworkScopedEvmSmartAccount`\<`Network`>>

#### Example

```ts theme={null}
// For known networks, type is inferred automatically:
const baseAccount = await smartAccount.useNetwork("base");

// For custom RPC URLs with type hints (requires casting):
const typedAccount = await smartAccount.useNetwork<"base">("https://mainnet.base.org" as "base");

// For custom RPC URLs without type hints (only sendTransaction, transfer and waitForTransactionReceipt methods available):
const customAccount = await smartAccount.useNetwork("https://mainnet.base.org");
```
