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

# SUI

> Sign messages, send transactions, and interact with the SUI blockchain using the Dynamic Flutter SDK.

## Overview

The `SuiModule` provides native SUI blockchain operations including message signing, transaction signing, sending transactions, and network queries. Access it via `DynamicSDK.instance.sui`.

## Prerequisites

* Dynamic SDK initialized (see [Quickstart](https://docs.dynamic.xyz/docs/flutter/quickstart.md))
* User authenticated (see [Authentication](https://docs.dynamic.xyz/docs/flutter/authentication.md))
* SUI wallet available (see [Wallet Creation](https://docs.dynamic.xyz/docs/flutter/wallet-creation.md))

## Get Network Name

Query the network name for the connected SUI wallet.

```dart theme={"system"}
final sdk = DynamicSDK.instance;
final wallet = sdk.wallets.userWallets.first;

final network = await sdk.sui.getNetworkName(
  walletId: wallet.id,
);
print('Network: $network'); // e.g., "mainnet", "testnet"
```

## Sign a Message

Sign a message using the connected SUI wallet.

```dart theme={"system"}
final signature = await sdk.sui.signMessage(
  walletId: wallet.id,
  message: 'Hello, SUI!',
);
print('Signature: $signature');
```

## Sign a Transaction

Sign a raw base64-encoded SUI transaction without sending it.

```dart theme={"system"}
final signature = await sdk.sui.signTransaction(
  walletId: wallet.id,
  transaction: 'base64EncodedTransaction...',
);
print('Signature: $signature');
```

## Sign a Transfer Transaction

Sign a transfer transaction built from parameters. The SDK constructs the transaction internally.

```dart theme={"system"}
final signature = await sdk.sui.signTransferTransaction(
  walletId: wallet.id,
  to: '0xRecipientAddress...',
  value: '0.001', // amount in SUI
  gasPrice: 1000,   // optional
  gasBudget: 50000, // optional
);
print('Signature: $signature');
```

| Parameter | Type | Description |
| - | - | - |
| `walletId` | `String` | The wallet ID to sign with |
| `to` | `String` | Recipient SUI address |
| `value` | `String` | Amount in SUI |
| `gasPrice` | `int?` | Optional gas price override |
| `gasBudget` | `int?` | Optional gas budget override |

## Send a Transaction

Send a raw base64-encoded SUI transaction to the network. Returns the transaction digest.

```dart theme={"system"}
final digest = await sdk.sui.sendTransaction(
  walletId: wallet.id,
  transaction: 'base64EncodedTransaction...',
);
print('Transaction digest: $digest');
```

## Sign and Send a Transaction

Sign and send a raw transaction in one step.

```dart theme={"system"}
final digest = await sdk.sui.signAndSendTransaction(
  walletId: wallet.id,
  transaction: 'base64EncodedTransaction...',
);
print('Transaction digest: $digest');
```

## Sign and Send a Transfer

The most convenient way to send SUI: provide the recipient and amount, and the SDK handles the rest.

```dart theme={"system"}
final digest = await sdk.sui.signAndSendTransferTransaction(
  walletId: wallet.id,
  to: '0xRecipientAddress...',
  value: '0.001',
);
print('Transaction digest: $digest');
```

### With Custom Gas Settings

```dart theme={"system"}
final digest = await sdk.sui.signAndSendTransferTransaction(
  walletId: wallet.id,
  to: '0xRecipientAddress...',
  value: '1.0',
  gasPrice: 1000,
  gasBudget: 50000,
);
```

## Complete Example

```dart theme={"system"}
import 'package:dynamic_sdk/dynamic_sdk.dart';

Future<void> suiExample() async {
  final sdk = DynamicSDK.instance;
  final wallet = sdk.wallets.userWallets.first;

  // Check network
  final network = await sdk.sui.getNetworkName(walletId: wallet.id);
  print('Connected to: $network');

  // Sign a message
  final signature = await sdk.sui.signMessage(
    walletId: wallet.id,
    message: 'Verify wallet ownership',
  );
  print('Signature: $signature');

  // Send SUI directly
  final digest = await sdk.sui.signAndSendTransferTransaction(
    walletId: wallet.id,
    to: '0x...',
    value: '0.001',
  );
  print('Transaction digest: $digest');
}
```

## API Reference

| Method | Returns | Description |
| - | - | - |
| `getNetworkName` | `Future<String>` | Get network name |
| `signMessage` | `Future<String>` | Sign a message |
| `signTransaction` | `Future<String>` | Sign a raw transaction |
| `signTransferTransaction` | `Future<String>` | Sign a transfer built from params |
| `sendTransaction` | `Future<String>` | Send a raw transaction, returns digest |
| `signAndSendTransaction` | `Future<String>` | Sign + send raw transaction |
| `signAndSendTransferTransaction` | `Future<String>` | Sign + send transfer, returns digest |

## Next Steps

* [Bitcoin Operations](https://docs.dynamic.xyz/docs/flutter/wallets/bitcoin/overview.md) - Bitcoin blockchain operations
* [TON Operations](https://docs.dynamic.xyz/docs/flutter/wallets/ton/overview.md) - TON blockchain operations
* [Token Balances](https://docs.dynamic.xyz/docs/flutter/wallets/general/token-balances.md) - Multi-chain balance queries


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.