Loading...
Loading...
How to read on-chain data in @aptos-labs/ts-sdk: view(), getBalance(), getAccountInfo(), getAccountResources(), getAccountModules(), getResource(). Triggers on: 'aptos.view', 'getBalance', 'getAccountInfo', 'getAccountResources', 'SDK query', 'view function TypeScript'.
npx skill4agent add iskysun96/aptos-agent-skills ts-sdk-view-and-query@aptos-labs/ts-sdkaptos.getBalance({ accountAddress })getAccountCoinAmountgetAccountAPTAmountaptos.view()functionfunctionArgumentstypeArgumentsbigintresult[0]BigInt(...)AccountAddressInputAccountAddressgetAccountCoinAmountgetAccountAPTAmountgetBalance()numberbigintconst balance = await aptos.getBalance({
accountAddress: account.accountAddress,
});
// balance is bigint in octas (1 APT = 100_000_000 octas)
const apt = balance / 100_000_000n;
const remainder = balance % 100_000_000n;
console.log(`${apt}.${remainder.toString().padStart(8, "0")} APT`);const accountInfo = await aptos.getAccountInfo({
accountAddress: "0x1",
});
// accountInfo: { sequence_number, authentication_key, ... }// No type arguments
const result = await aptos.view({
payload: {
function: `${MODULE_ADDRESS}::counter::get_count`,
functionArguments: [accountAddress],
},
});
const count = Number(result[0]);
// With type arguments (e.g. coin type)
const balanceResult = await aptos.view({
payload: {
function: "0x1::coin::balance",
typeArguments: ["0x1::aptos_coin::AptosCoin"],
functionArguments: [accountAddress],
},
});
const coinBalance = BigInt(balanceResult[0] as string);
// Multiple return values
// Move: public fun get_listing(addr): (address, u64, bool)
const [seller, price, isActive] = await aptos.view({
payload: {
function: `${MODULE_ADDRESS}::marketplace::get_listing`,
functionArguments: [listingAddress],
},
});
const listing = {
seller: seller as string,
price: BigInt(price as string),
isActive: isActive as boolean,
};const resources = await aptos.getAccountResources({
accountAddress: account.accountAddress,
});
// resources: Array<MoveResource>
const counterResource = resources.find(
(r) => r.type === `${MODULE_ADDRESS}::counter::Counter`
);const resource = await aptos.getAccountResource({
accountAddress: account.accountAddress,
resourceType: `${MODULE_ADDRESS}::counter::Counter`,
});
// resource.data has the struct fields
const value = (resource?.data as { value: number })?.value;const modules = await aptos.getAccountModules({
accountAddress: modulePublisherAddress,
});
// modules: MoveModuleBytecode[] (ABI, bytecode)const module = await aptos.getModule({
accountAddress: modulePublisherAddress,
moduleName: "counter",
});const { resources, cursor } = await aptos.getAccountResourcesPage({
accountAddress: account.accountAddress,
options: { limit: 10, cursor: nextCursor },
});| Move return type | TypeScript | Example |
|---|---|---|
| u8..u64 | number or bigint | |
| u128, u256 | bigint | |
| address | string | |
| bool | boolean | |
| vector<T> | array | |
| Mistake | Correct approach |
|---|---|
| Using getAccountCoinAmount | Use |
| Using number for u128 | Use |
| Forgetting typeArguments for generic view | Add |
src/internal/view.tssrc/api/account.ts