Documentation Index
Fetch the complete documentation index at: https://docs.polygon.technology/llms.txt
Use this file to discover all available pages before exploring further.
All wallet operations require an active wallet session. Complete auth first, then use oms.wallet.
guard !oms.wallet.walletAddress.isEmpty else {
throw NSError(domain: "App", code: 1, userInfo: [NSLocalizedDescriptionKey: "No active wallet"])
}
Supported Networks
Use the SDK network registry when passing network to wallet and indexer calls.
let amoy = oms.findNetworkById(chainId: 80002) ?? .polygonAmoy
let polygon = oms.findNetworkByName(name: "polygon")
if let polygon {
print(amoy.displayName, polygon.id)
}
for network in oms.supportedNetworks {
print(network.id, network.displayName, network.nativeTokenSymbol)
}
Parameters
findNetworkById(chainId:) takes a numeric chain ID. findNetworkByName(name:) takes a registry name such as polygon, amoy, or base-sepolia.
Returns
oms.supportedNetworks returns every Network supported by the SDK build. Lookup helpers return a Network?.
Send A Transaction
sendTransaction sends native tokens. Amounts are raw base-unit integer strings. Use parseUnits to convert a display value without floating-point precision loss.
let value = try parseUnits(value: "0.01", decimals: 18)
let tx = try await oms.wallet.sendTransaction(
network: .polygonAmoy,
to: "0xRecipient",
value: value
)
print("Transaction:", tx.txnHash ?? tx.txnId)
Parameters
| Parameter | Type | Description |
|---|
network | Network | Supported SDK network, such as .polygon or .polygonAmoy. |
to | String | Recipient address. |
value | String | Raw base-unit native token value. |
selectFeeOption | FeeOptionSelector? | Optional fee option selector. |
mode | TransactionMode | Transaction mode. Defaults to .relayer. |
Returns
Returns SendTransactionResponse.
| Field | Type | Description |
|---|
txnId | String | Wallet transaction ID. |
status | TransactionStatus | Latest transaction status returned by OMS Wallet. |
txnHash | String? | On-chain transaction hash when available. |
Send Raw Calldata
Use the request overload when you already have encoded calldata.
let tx = try await oms.wallet.sendTransaction(
network: .polygonAmoy,
request: SendTransactionRequest(
to: "0xTokenContract",
value: "0",
data: "0xa9059cbb000000000000000000000000..."
)
)
print("Contract transaction:", tx.txnHash ?? tx.txnId)
Parameters
| Parameter | Type | Description |
|---|
network | Network | Supported SDK network. |
request | SendTransactionRequest | Request with to, raw value, optional encoded calldata data, and mode. |
selectFeeOption | FeeOptionSelector? | Optional fee option selector. |
Returns
Returns SendTransactionResponse.
Convert Token Values
Use parseUnits before sending display amounts to the wallet API, and formatUnits when showing raw base-unit balances in the UI.
let rawUsdc = try parseUnits(value: "1.23", decimals: 6)
print(rawUsdc) // "1230000"
let displayUsdc = try formatUnits(value: rawUsdc, decimals: 6)
print(displayUsdc) // "1.23"
Parameters
| Function | Parameter | Type | Description |
|---|
parseUnits | value | String | Display amount to convert. |
parseUnits | decimals | Int | Token decimals. Defaults to 18. |
formatUnits | value | String | Raw base-unit integer string to format. |
formatUnits | decimals | Int | Token decimals. Defaults to 18. |
Returns
Both functions return String. They throw UnitConversionError for invalid decimals, invalid numeric strings, or fractional values with more non-zero digits than the requested decimals.
Call A Contract With Method And Args
Use callContract for state-changing contract methods. The SDK prepares the contract call, executes it, and polls for transaction status.
let amount = try parseUnits(value: "1", decimals: 6)
let tx = try await oms.wallet.callContract(
network: .polygonAmoy,
contract: "0xTokenContract",
method: "transfer(address,uint256)",
args: [
AbiArg(type: "address", value: .string("0xRecipient")),
AbiArg(type: "uint256", value: .string(amount))
]
)
print("Contract call:", tx.txnHash ?? tx.txnId)
Parameters
| Parameter | Type | Description |
|---|
network | Network | Supported SDK network. |
contract | String | Contract address to call. |
method | String | ABI method signature, such as transfer(address,uint256). |
args | [AbiArg]? | Method arguments as ABI args. |
selectFeeOption | FeeOptionSelector? | Optional fee option selector. |
mode | TransactionMode | Transaction mode. Defaults to .relayer. |
Returns
Returns SendTransactionResponse.
Select A Fee Option
When a prepared transaction is not sponsored, the SDK selects a fee option before execution. If no selector is provided, the SDK uses the first required fee option.
On testnets, fee options are automatically sponsored, so you usually do not need to choose a fee token.
let tx = try await oms.wallet.sendTransaction(
network: .polygonAmoy,
to: "0xRecipient",
value: "0",
selectFeeOption: .first
)
You can also provide a custom selector.
let tx = try await oms.wallet.sendTransaction(
network: .polygonAmoy,
to: "0xRecipient",
value: "0",
selectFeeOption: .custom { options in
options.first?.selection
}
)
Parameters
FeeOptionSelector receives [FeeOptionWithBalance].
Returns
Return FeeOptionSelection? from custom selectors.
Polling And Status
Transaction helpers execute and poll for transaction status. Fetch status directly when you have a Wallet transaction ID.
let status = try await oms.wallet.getTransactionStatus(txnId: "txn-id")
print("Status:", status.status)
print("Transaction hash:", status.txnHash ?? "pending")
Parameters
| Parameter | Type | Description |
|---|
txnId | String | Wallet transaction ID returned by sendTransaction or callContract. |
Returns
Returns TransactionStatusResponse.
| Field | Type | Description |
|---|
status | TransactionStatus | Latest Wallet transaction status. |
txnHash | String? | On-chain transaction hash when available. |
Sign A Message
signMessage returns a hex-encoded signature for the active wallet.
let signature = try await oms.wallet.signMessage(
network: .polygonAmoy,
message: "Hello from OMS"
)
print("Signature:", signature)
Parameters
| Parameter | Type | Description |
|---|
network | Network | Supported SDK network. |
message | String | Plaintext message to sign. |
Returns
Returns String, the hex-encoded signature.
Verify A Message Signature
isValidMessageSignature verifies a message signature against the wallet address you provide.
let isValid = try await oms.wallet.isValidMessageSignature(
network: .polygonAmoy,
walletAddress: oms.wallet.walletAddress,
message: "Hello from OMS",
signature: signature
)
print("Signature valid:", isValid)
Parameters
| Parameter | Type | Description |
|---|
network | Network | Supported SDK network. |
walletAddress | String | Wallet address to verify the signature against. |
message | String | Original plaintext message. |
signature | String | Hex-encoded signature to verify. |
Returns
Returns Bool.
Sign Typed Data
Use signTypedData for EIP-712 typed data. Build the payload with WebRPCJSONValue values.
let typedData: WebRPCJSONValue = .object([
"domain": .object([
"name": .string("Example App"),
"version": .string("1"),
"chainId": .integer(80002)
]),
"types": .object([
"Message": .array([
.object([
"name": .string("contents"),
"type": .string("string")
])
])
]),
"primaryType": .string("Message"),
"message": .object([
"contents": .string("Hello from OMS")
])
])
let typedSignature = try await oms.wallet.signTypedData(
network: .polygonAmoy,
typedData: typedData
)
Parameters
| Parameter | Type | Description |
|---|
network | Network | Supported SDK network. |
typedData | WebRPCJSONValue | EIP-712 typed-data payload. |
Returns
Returns String, the hex-encoded signature.
Verify Typed Data
Verify an EIP-712 typed-data signature.
let typedDataValid = try await oms.wallet.isValidTypedDataSignature(
network: .polygonAmoy,
walletAddress: oms.wallet.walletAddress,
typedData: typedData,
signature: typedSignature
)
Parameters
| Parameter | Type | Description |
|---|
network | Network | Supported SDK network. |
walletAddress | String | Wallet address to verify the signature against. |
typedData | WebRPCJSONValue | Original EIP-712 typed-data payload. |
signature | String | Hex-encoded signature to verify. |
Returns
Returns Bool.