Pallets Reference
Complete reference for all 29 Selendra pallets in the TypeScript SDK
Pallets Reference
The Selendra SDK provides TypeScript wrappers for all 29 runtime pallets. Each pallet follows the same pattern:
sdk.pallets.<palletName>.queries // Read-only storage queries
sdk.pallets.<palletName>.manager // Transaction/extrinsic methods
Core Pallets
Balances
Token transfers, balance queries, and account management.
// Queries
const balance = await sdk.pallets.balances.queries.account(address);
const total = await sdk.pallets.balances.queries.totalIssuance();
const locks = await sdk.pallets.balances.queries.locks(address);
// Transactions
const tx = sdk.pallets.balances.manager.transfer({ dest, value });
const txKeepAlive = sdk.pallets.balances.manager.transferKeepAlive({
dest,
value,
});
const txAll = sdk.pallets.balances.manager.transferAll({
dest,
keepAlive: true,
});
| Query | Description |
|---|---|
account(address) | Get free, reserved, frozen balance |
totalIssuance() | Total token supply |
locks(address) | Balance locks |
reserves(address) | Named reserves |
| Transaction | Description |
|---|---|
transfer({ dest, value }) | Transfer tokens |
transferKeepAlive({ dest, value }) | Transfer, keep sender alive |
transferAll({ dest, keepAlive }) | Transfer all free balance |
forceTransfer({ source, dest, value }) | Force transfer (sudo) |
Staking
Validator nomination, bonding, and reward payouts.
// Queries
const validators = await sdk.pallets.staking.queries.validators();
const era = await sdk.pallets.staking.queries.activeEra();
const ledger = await sdk.pallets.staking.queries.ledger(address);
// Transactions
const bondTx = sdk.pallets.staking.manager.bond({ value, payee });
const nominateTx = sdk.pallets.staking.manager.nominate({ targets });
const unbondTx = sdk.pallets.staking.manager.unbond({ value });
| Query | Description |
|---|---|
validators() | Active validator set |
activeEra() | Current era info |
currentEra() | Current era number |
ledger(address) | Staking ledger |
nominators(address) | Nominator info |
bonded(address) | Controller for stash |
erasRewardPoints(era) | Era reward points |
erasValidatorReward(era) | Era validator reward |
| Transaction | Description |
|---|---|
bond({ value, payee }) | Bond tokens |
bondExtra({ maxAdditional }) | Bond more tokens |
unbond({ value }) | Schedule unbond |
withdrawUnbonded({ numSlashingSpans }) | Withdraw unbonded |
nominate({ targets }) | Nominate validators |
validate({ prefs }) | Start validating |
chill() | Stop nominating/validating |
payoutStakers({ validatorStash, era }) | Claim rewards |
rebond({ value }) | Rebond unbonding funds |
Session
Session key management for validators.
// Queries
const validators = await sdk.pallets.session.queries.validators();
const currentIndex = await sdk.pallets.session.queries.currentIndex();
const keys = await sdk.pallets.session.queries.nextKeys(address);
// Transactions
const setKeysTx = sdk.pallets.session.manager.setKeys({ keys, proof });
const purgeKeysTx = sdk.pallets.session.manager.purgeKeys();
Utility
Batch transactions and proxied calls.
// Batch multiple calls
const batchTx = sdk.pallets.utility.manager.batch({ calls: [call1, call2] });
const batchAllTx = sdk.pallets.utility.manager.batchAll({
calls: [call1, call2],
});
const forceBatchTx = sdk.pallets.utility.manager.forceBatch({
calls: [call1, call2],
});
Governance Pallets
Democracy
Proposals, referenda, and voting.
// Queries
const referendums = await sdk.pallets.democracy.queries.referendumInfoOf(index);
const proposals = await sdk.pallets.democracy.queries.publicProps();
const votingOf = await sdk.pallets.democracy.queries.votingOf(address);
// Transactions
const proposeTx = sdk.pallets.democracy.manager.propose({
proposalHash,
value,
});
const voteTx = sdk.pallets.democracy.manager.vote({ refIndex, vote });
const delegateTx = sdk.pallets.democracy.manager.delegate({
to,
conviction,
balance,
});
Council
Collective governance body.
// Queries
const members = await sdk.pallets.council.queries.members();
const proposals = await sdk.pallets.council.queries.proposals();
const voting = await sdk.pallets.council.queries.voting(proposalHash);
// Transactions
const voteTx = sdk.pallets.council.manager.vote({ proposal, index, approve });
const proposeTx = sdk.pallets.council.manager.propose({
threshold,
proposal,
lengthBound,
});
Treasury
Community funding and proposals.
// Queries
const proposals = await sdk.pallets.treasury.queries.proposals(index);
const approvals = await sdk.pallets.treasury.queries.approvals();
const proposalCount = await sdk.pallets.treasury.queries.proposalCount();
// Transactions
const proposalTx = sdk.pallets.treasury.manager.proposeSpend({
value,
beneficiary,
});
const approveTx = sdk.pallets.treasury.manager.approveProposal({ proposalId });
const rejectTx = sdk.pallets.treasury.manager.rejectProposal({ proposalId });
Elections / ElectionsPhragmen
Council elections.
// Queries
const members = await sdk.pallets.elections.queries.members();
const candidates = await sdk.pallets.elections.queries.candidates();
const voting = await sdk.pallets.elections.queries.voting(address);
// Transactions
const voteTx = sdk.pallets.elections.manager.vote({ votes, value });
const submitCandidacyTx = sdk.pallets.elections.manager.submitCandidacy({
candidateCount,
});
const removeVoterTx = sdk.pallets.elections.manager.removeVoter();
Technical Committee
Technical governance decisions.
// Queries
const members = await sdk.pallets.technicalCommittee.queries.members();
const proposals = await sdk.pallets.technicalCommittee.queries.proposals();
// Transactions
const voteTx = sdk.pallets.technicalCommittee.manager.vote({
proposal,
index,
approve,
});
EVM Pallets (Frontier)
EVM
Ethereum Virtual Machine execution.
// Queries
const account = await sdk.pallets.evm.queries.accountBasic(evmAddress);
const code = await sdk.pallets.evm.queries.accountCodes(evmAddress);
const storage = await sdk.pallets.evm.queries.accountStorages(evmAddress, slot);
// Transactions - Deploy contract
const createTx = sdk.pallets.evm.manager.create({
source: evmAddress,
init: bytecode,
value: 0n,
gasLimit: 1000000n,
maxFeePerGas: 1000000000n,
});
// Transactions - Call contract
const callTx = sdk.pallets.evm.manager.call({
source: evmAddress,
target: contractAddress,
input: encodedData,
value: 0n,
gasLimit: 100000n,
maxFeePerGas: 1000000000n,
});
// Transactions - Deploy with CREATE2
const create2Tx = sdk.pallets.evm.manager.create2({
source: evmAddress,
init: bytecode,
salt: saltBytes,
value: 0n,
gasLimit: 1000000n,
maxFeePerGas: 1000000000n,
});
| Query | Description |
|---|---|
accountBasic(address) | Balance and nonce |
accountCodes(address) | Contract bytecode |
accountCodesMetadata(address) | Code metadata |
accountStorages(address, slot) | Storage slot |
| Transaction | Description |
|---|---|
call({ source, target, input, ... }) | Call contract |
create({ source, init, ... }) | Deploy contract (CREATE) |
create2({ source, init, salt, ... }) | Deploy contract (CREATE2) |
withdraw({ address, value }) | Withdraw from EVM |
Ethereum
Ethereum-style transactions.
// Queries
const blockHash = await sdk.pallets.ethereum.queries.blockHash(blockNumber);
const currentBlock = await sdk.pallets.ethereum.queries.currentBlock();
const pending = await sdk.pallets.ethereum.queries.pending();
// Transactions
const tx = sdk.pallets.ethereum.manager.transact({ transaction });
Dynamic EVM Base Fee
EIP-1559 base fee management.
// Queries
const baseFee = await sdk.pallets.dynamicEvmBaseFee.queries.baseFeePerGas();
const targetGas =
await sdk.pallets.dynamicEvmBaseFee.queries.targetGasPerSecond();
// Transactions (sudo)
const setBaseFee = sdk.pallets.dynamicEvmBaseFee.manager.setBaseFeePerGas({
fee,
});
Smart Contract Pallets
Contracts
ink! WASM smart contracts.
// Queries
const contractInfo = await sdk.pallets.contracts.queries.contractInfoOf(
address
);
const code = await sdk.pallets.contracts.queries.codeInfoOf(codeHash);
const pristineCode = await sdk.pallets.contracts.queries.pristineCode(codeHash);
// Transactions
const instantiateTx = sdk.pallets.contracts.manager.instantiate({
value,
gasLimit,
storageDepositLimit,
code,
data,
salt,
});
const callTx = sdk.pallets.contracts.manager.call({
dest,
value,
gasLimit,
storageDepositLimit,
data,
});
const uploadCodeTx = sdk.pallets.contracts.manager.uploadCode({
code,
storageDepositLimit,
determinism,
});
XVM (Cross-VM)
Call between EVM and WASM contracts.
// Call EVM contract from WASM context
const xvmCallTx = sdk.pallets.xvm.manager.call({
vmId,
to,
input,
value,
});
Account Management Pallets
Identity
On-chain identity management.
// Queries
const identity = await sdk.pallets.identity.queries.identityOf(address);
const superOf = await sdk.pallets.identity.queries.superOf(address);
const subsOf = await sdk.pallets.identity.queries.subsOf(address);
// Transactions
const setIdentityTx = sdk.pallets.identity.manager.setIdentity({ info });
const clearIdentityTx = sdk.pallets.identity.manager.clearIdentity();
const requestJudgementTx = sdk.pallets.identity.manager.requestJudgement({
regIndex,
maxFee,
});
Proxy
Account proxy management.
// Queries
const proxies = await sdk.pallets.proxy.queries.proxies(address);
const announcements = await sdk.pallets.proxy.queries.announcements(address);
// Transactions
const addProxyTx = sdk.pallets.proxy.manager.addProxy({
delegate,
proxyType,
delay,
});
const removeProxyTx = sdk.pallets.proxy.manager.removeProxy({
delegate,
proxyType,
delay,
});
const proxyTx = sdk.pallets.proxy.manager.proxy({ real, forceProxyType, call });
Multisig
Multi-signature accounts.
// Queries
const multisigs = await sdk.pallets.multisig.queries.multisigs(
address,
callHash
);
// Transactions
const asMultiTx = sdk.pallets.multisig.manager.asMulti({
threshold,
otherSignatories,
maybeTimepoint,
call,
maxWeight,
});
const approveAsMultiTx = sdk.pallets.multisig.manager.approveAsMulti({
threshold,
otherSignatories,
maybeTimepoint,
callHash,
maxWeight,
});
const cancelAsMultiTx = sdk.pallets.multisig.manager.cancelAsMulti({
threshold,
otherSignatories,
timepoint,
callHash,
});
Vesting
Token vesting schedules.
// Queries
const vesting = await sdk.pallets.vesting.queries.vesting(address);
// Transactions
const vestTx = sdk.pallets.vesting.manager.vest();
const vestOtherTx = sdk.pallets.vesting.manager.vestOther({ target });
const vestedTransferTx = sdk.pallets.vesting.manager.vestedTransfer({
target,
schedule,
});
Selendra-Specific Pallets
Aleph
AlephBFT consensus operations.
// Queries
const authorities = await sdk.pallets.aleph.queries.authorities();
const sessionPeriod = await sdk.pallets.aleph.queries.sessionPeriod();
const emergencyFinalizer = await sdk.pallets.aleph.queries.emergencyFinalizer();
// Transactions (sudo)
const setEmergencyFinalizerTx = sdk.pallets.aleph.manager.setEmergencyFinalizer(
{
emergencyFinalizer,
}
);
Committee Management
Validator committee management.
// Queries
const sessionValidators =
await sdk.pallets.committeeManagement.queries.sessionValidatorBlockCount(
address
);
const underperformedCount =
await sdk.pallets.committeeManagement.queries.underperformedValidatorSessionCount(
address
);
const banConfig = await sdk.pallets.committeeManagement.queries.banConfig();
// Transactions (sudo)
const banFromCommitteeTx =
sdk.pallets.committeeManagement.manager.banFromCommittee({
banned,
banReason,
});
Nomination Pools
Staking pools for smaller nominators.
// Queries
const pool = await sdk.pallets.nominationPools.queries.bondedPools(poolId);
const members = await sdk.pallets.nominationPools.queries.poolMembers(address);
const metadata = await sdk.pallets.nominationPools.queries.metadata(poolId);
// Transactions
const joinTx = sdk.pallets.nominationPools.manager.join({ amount, poolId });
const createTx = sdk.pallets.nominationPools.manager.create({
amount,
root,
nominator,
bouncer,
});
const claimTx = sdk.pallets.nominationPools.manager.claimPayout();
const unbondTx = sdk.pallets.nominationPools.manager.unbond({
memberAccount,
unbondingPoints,
});
Operations
Account maintenance operations.
// Transactions
const perbillPayoutTx = sdk.pallets.operations.manager.perbillPayout({
accounts,
ratio,
});
const fixedPayout = sdk.pallets.operations.manager.fixedPayout({
accounts,
amount,
});
Administration Pallets
Sudo
Privileged operations (development/governance).
// Queries
const key = await sdk.pallets.sudo.queries.key();
// Transactions
const sudoTx = sdk.pallets.sudo.manager.sudo({ call });
const sudoUncheckedWeightTx = sdk.pallets.sudo.manager.sudoUncheckedWeight({
call,
weight,
});
const setKeyTx = sdk.pallets.sudo.manager.setKey({ newKey });
const sudoAsTx = sdk.pallets.sudo.manager.sudoAs({ who, call });
Scheduler
Schedule future calls.
// Queries
const agenda = await sdk.pallets.scheduler.queries.agenda(blockNumber);
const lookup = await sdk.pallets.scheduler.queries.lookup(taskId);
// Transactions
const scheduleTx = sdk.pallets.scheduler.manager.schedule({
when,
maybePeriodic,
priority,
call,
});
const cancelTx = sdk.pallets.scheduler.manager.cancel({ when, index });
Preimage
Store call data for scheduled/governance calls.
// Queries
const status = await sdk.pallets.preimage.queries.statusFor(hash);
const preimageFor = await sdk.pallets.preimage.queries.preimageFor(hash, len);
// Transactions
const notePreimageTx = sdk.pallets.preimage.manager.notePreimage({ bytes });
const unnotePreimageTx = sdk.pallets.preimage.manager.unnotePreimage({ hash });
Safe Mode
Emergency chain protection.
// Queries
const enteredUntil = await sdk.pallets.safeMode.queries.enteredUntil();
// Transactions (governance)
const enterTx = sdk.pallets.safeMode.manager.enter();
const extendTx = sdk.pallets.safeMode.manager.extend();
const forceEnterTx = sdk.pallets.safeMode.manager.forceEnter();
const forceExitTx = sdk.pallets.safeMode.manager.forceExit();
Tx Pause
Pause specific transactions.
// Queries
const pausedCalls = await sdk.pallets.txPause.queries.pausedCalls(pallet, call);
// Transactions (sudo/governance)
const pauseTx = sdk.pallets.txPause.manager.pause({ fullName });
const unpauseTx = sdk.pallets.txPause.manager.unpause({ ident });
Common Patterns
Signing and Sending Transactions
// Get an extrinsic
const tx = sdk.pallets.balances.manager.transfer({ dest, value });
// Sign and send
const result = await tx.signAndSend(signer, { nonce: -1 });
// Or with callback for status updates
await tx.signAndSend(signer, {}, (result) => {
if (result.status.isInBlock) {
console.log(`In block: ${result.status.asInBlock}`);
}
if (result.status.isFinalized) {
console.log(`Finalized: ${result.status.asFinalized}`);
}
});
Error Handling
try {
const tx = sdk.pallets.balances.manager.transfer({ dest, value });
const result = await tx.signAndSend(signer);
// Check for errors in events
result.events.forEach(({ event }) => {
if (sdk.api.events.system.ExtrinsicFailed.is(event)) {
const [error] = event.data;
if (error.isModule) {
const decoded = sdk.api.registry.findMetaError(error.asModule);
throw new Error(`${decoded.section}.${decoded.name}: ${decoded.docs}`);
}
}
});
} catch (error) {
console.error("Transaction failed:", error);
}
Batch Transactions
// Create multiple calls
const transfer1 = sdk.pallets.balances.manager.transfer({
dest: addr1,
value: val1,
});
const transfer2 = sdk.pallets.balances.manager.transfer({
dest: addr2,
value: val2,
});
// Batch them (all or nothing)
const batchTx = sdk.pallets.utility.manager.batchAll({
calls: [transfer1, transfer2],
});
await batchTx.signAndSend(signer);
Found an issue or want to contribute?
Help us improve this documentation by editing this page on GitHub.