> ## 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](/flutter/quickstart))
* User authenticated (see [Authentication](/flutter/authentication))
* SUI wallet available (see [Wallet Creation](/flutter/wallet-creation))

## 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](/flutter/wallets/bitcoin/overview) - Bitcoin blockchain operations
* [TON Operations](/flutter/wallets/ton/overview) - TON blockchain operations
* [Token Balances](/flutter/wallets/general/token-balances) - Multi-chain balance queries
