Skip to main content

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