GovernanceResource
Access via urblock.governance.
Methods
create(params)
Deploy a Governor + Timelock governance instance.
const gov = await urblock.governance.create({
name: "My DAO",
token_id: "tok_abc123",
network: "polygon_amoy",
voting_delay: 1,
voting_period: 50400,
quorum_numerator: 4,
proposal_threshold: "1000000000000000000",
timelock_delay: 86400,
idempotency_key: "gov-001",
});
Returns: GovernanceResponse
list(params?)
List governance instances.
const govs = await urblock.governance.list({ limit: 10 });
Returns: ListResponse<GovernanceListItem>
retrieve(id)
Get a governance instance.
const gov = await urblock.governance.retrieve("gov_abc123");
Returns: GovernanceResponse
getConfig(id)
Get governance configuration (voting delay, period, quorum, etc.).
const config = await urblock.governance.getConfig("gov_abc123");
Returns: GovernanceConfigResponse
getVotingPower(id, params)
Query voting power of an address.
const power = await urblock.governance.getVotingPower("gov_abc123", {
address: "0x...",
block_number: "12345678",
});
Returns: VotingPowerResponse
getQuorum(id, params)
Get quorum for a specific block number.
const quorum = await urblock.governance.getQuorum("gov_abc123", {
block_number: "12345678",
});
Returns: QuorumResponse
hashProposal(id, params)
Compute the proposal hash for given parameters.
const hash = await urblock.governance.hashProposal("gov_abc123", {
targets: ["0x..."],
values: ["0"],
calldatas: ["0x..."],
description: "Transfer funds",
});
Returns: HashProposalResponse
createProposal(id, params)
Create a new governance proposal.
const proposal = await urblock.governance.createProposal("gov_abc123", {
targets: ["0x..."],
values: ["0"],
calldatas: ["0x..."],
description: "Transfer 100 tokens to treasury",
proposer: "0x...",
idempotency_key: "proposal-001",
});
Returns: ProposalResponse
listProposals(id, params?)
List proposals for a governance instance.
const proposals = await urblock.governance.listProposals("gov_abc123", {
limit: 10,
});
Returns: ListResponse<ProposalListItem>
retrieveProposal(id, proposalId)
Get a specific proposal.
const proposal = await urblock.governance.retrieveProposal(
"gov_abc123",
"prp_xyz789",
);
Returns: ProposalResponse
getProposalState(id, proposalId)
Get the current state of a proposal.
const state = await urblock.governance.getProposalState(
"gov_abc123",
"prp_xyz789",
);
Returns: ProposalStateResponse
getProposalEta(id, proposalId)
Get the ETA (time of execution) for a queued proposal.
const eta = await urblock.governance.getProposalEta(
"gov_abc123",
"prp_xyz789",
);
Returns: ProposalEtaResponse
castVote(id, proposalId, params)
Cast a vote on a proposal.
const tx = await urblock.governance.castVote(
"gov_abc123",
"prp_xyz789",
{
voter: "0x...",
support: 1, // 0=Against, 1=For, 2=Abstain
idempotency_key: "vote-001",
},
);
Returns: TransactionShortResponse
queueProposal(id, proposalId, params?)
Queue a successful proposal for timelock execution.
const tx = await urblock.governance.queueProposal(
"gov_abc123",
"prp_xyz789",
{ idempotency_key: "queue-001" },
);
Returns: TransactionShortResponse
executeProposal(id, proposalId, params?)
Execute a queued proposal after the timelock delay.
const tx = await urblock.governance.executeProposal(
"gov_abc123",
"prp_xyz789",
{ idempotency_key: "execute-001" },
);
Returns: TransactionShortResponse
cancelProposal(id, proposalId, params?)
Cancel a proposal.
const tx = await urblock.governance.cancelProposal(
"gov_abc123",
"prp_xyz789",
{ idempotency_key: "cancel-001" },
);
Returns: TransactionShortResponse
delegate(id, params)
Delegate voting power to another address.
const tx = await urblock.governance.delegate("gov_abc123", {
delegator: "0x...",
delegatee: "0x...",
idempotency_key: "delegate-001",
});
Returns: TransactionShortResponse