Sentre
Search
K
Comment on page

Account Provider

🏦 SPL Accounts Provider

API

<AccountProvider> ... </AccountProvider>
Property
Type
Description
Default
children
ReactNode
The wrapped children.
undefined

For example

import { AccountProvider } from '@sentre/senhub'
// Wrap a paragraph as a child.
<AccountProvider>
<p>Hello world</p>
</AccountProvider>

Context

type Provider = {
accounts: State
}
type State = Record<string, AccountData>
type AccountData = {
mint: string;
owner: string;
amount: bigint;
delegate_option: number;
delegate: string;
state: number;
is_native_option: number;
is_native: bigint;
delegated_amount: bigint;
close_authority_option: number;
close_authority: string;
}

Provider

Property
Type
Description
accounts
Record<string, AccountData>
A mapping from an account address to the corresponding account data.

AccountData

Property
Type
Description
mint
string
The corresponding mint address to the account.
owner
string
The account owner address.
amount
bigint
The number of tokens.
delegate_option
0 | 1
Whether the delegate property is available.
delegate
string
The delegate address.
delegated_amount
bigint
The number of delegated tokens.
state
0 | 1 | 2
0: Uninitialized; 1: Initialized; 2: Frozen;
is_native_option
0 | 1
Whether the is_native property is available.
is_native
bigint
The number of wrapped lamports.
close_authority_option
0 | 1
Whether the close_authority property is available.
close_authority
string
The close authority address.

Hook & HOC

import { useAccount, withAccount } from '@senhub/providers'

For example

Wrap the parent by AccountProvider before accessing the context.
import { useAccount, withAccount } from '@senhub/providers'
// Within a functional component
const Component = () => {
const { accounts } = useAccount()
console.log(accounts['8kGbKrvS3zopf4ZJwNDhEKMbZ3iC4Jztn43MZ8Nabcxq'])
// mint: "sRHC8De9nks5KYQ7n2jYacsVgBKe9irc7vhpSzoAVYY"
// owner: "8UaZw2jDhJzv5V53569JbCd3bD4BnyCfBH3sjwgajGS9"
// amount: 10000000000000n
// delegate_option: 0
// delegate: "11111111111111111111111111111111"
// state: 1
// is_native_option: 0
// is_native: 0
// delegated_amount: 0n
// close_authority_option: 0
// close_authority: "11111111111111111111111111111111"
}
export default Component
// Within a class component
class Component {
render() {
const { accounts } = this.props
console.log(accounts['8kGbKrvS3zopf4ZJwNDhEKMbZ3iC4Jztn43MZ8Nabcxq'])
// mint: "sRHC8De9nks5KYQ7n2jYacsVgBKe9irc7vhpSzoAVYY"
// owner: "8UaZw2jDhJzv5V53569JbCd3bD4BnyCfBH3sjwgajGS9"
// amount: 10000000000000n
// delegate_option: 0
// delegate: "11111111111111111111111111111111"
// state: 1
// is_native_option: 0
// is_native: 0
// delegated_amount: 0n
// close_authority_option: 0
// close_authority: "11111111111111111111111111111111"
}
}
export default withAccount(Component)