@turnkey/viem

This package contains helpers to work with Turnkey. Currently:
If you need a lower-level, fully typed HTTP client for interacting with Turnkey API, check out @turnkey/http
.
Getting started
$ npm install viem @turnkey/viem
import { createWalletClient, http } from "viem";
import { createAccount } from "@turnkey/viem";
async function main() {
const turnkeyAccount = createAccount({
organizationId: "...",
privateKeyId: "...",
apiPublicKey: "...",
apiPrivateKey: "...",
baseUrl: "https://api.turnkey.com",
});
const client = createWalletClient({
account: turnkeyAccount,
chain: sepolia,
transport: http(`https://sepolia.infura.io/v3/$(YOUR_INFURA_API_KEY)`),
});
const transactionRequest = {
to: "0x08d2b0a37F869FF76BACB5Bab3278E26ab7067B7" as `0x${string}`,
value: 1000000000000000n,
};
const txHash = await client.sendTransaction(transactionRequest);
console.log(`Success! Transaction broadcast with hash ${txHash}`);
}
main().catch((error) => {
console.error(error);
process.exit(1);
});
See also
@turnkey/example-with-viem
: example using this package to create, sign, and broadcast a transaction on Sepolia (Ethereum testnet)@turnkey/http
: lower-level fully typed HTTP client for interacting with Turnkey API