@jungle-bay-island/sdk
v0.2.0
Published
SDK for building bungalow miniapps in Jungle Bay.
Readme
@jungle-bay-island/sdk
SDK for building bungalow miniapps in Jungle Bay.
Installation
npm install @jungle-bay-island/sdkQuick Start
import { getSDK } from '@jungle-bay-island/sdk'
// Initialize SDK
const sdk = getSDK()
// Wait for context from parent
const context = await sdk.ready()
console.log('Welcome to', context.bungalow.name)
console.log('Visitor:', context.visitor.address)
// Post a message to the guestbook
await sdk.postMessage('Hello from my bungalow!')
// Get recent messages
const messages = await sdk.getMessages(50)
// Check token balance
const balance = await sdk.checkTokenBalance()
// Request a transaction (shows wallet confirmation)
const result = await sdk.requestTransaction({
to: '0x...',
value: '1000000000000000000', // 1 ETH in wei
})
// Sign a message
const { signature } = await sdk.signMessage('Hello World')
// Exit back to island
sdk.exit()Context
When your bungalow loads, it receives context about the visitor and bungalow:
interface BungalowContext {
visitor: {
address: string | null // Connected wallet address
}
bungalow: {
id: number // Bungalow index (0-11)
name: string // Bungalow name
owner: string // Owner wallet address
tokenAddress: string // Associated Clanker token
ipfsHash: string // Current content IPFS hash
}
messages: Message[] // Recent guestbook messages
}API Reference
getSDK(): JungleBaySDK
Returns the SDK singleton instance.
sdk.ready(): Promise<BungalowContext>
Wait for the SDK to initialize and receive context from the parent.
sdk.exit(): void
Exit the bungalow and return to the island.
sdk.postMessage(content: string): Promise<Message>
Post a message to the bungalow's guestbook. Requires wallet connection.
sdk.getMessages(limit?: number): Promise<Message[]>
Get recent messages from the guestbook.
sdk.checkTokenBalance(address?: string): Promise<bigint>
Check the bungalow token balance for an address.
sdk.requestTransaction(tx: TransactionRequest): Promise<TransactionResult>
Request a wallet transaction. Shows confirmation UI in the parent.
sdk.signMessage(message: string): Promise<SignMessageResult>
Request to sign a message with the connected wallet.
sdk.on(event: SDKEventType, callback: Function): () => void
Subscribe to events. Returns an unsubscribe function.
Events:
visitorEntered- A new visitor entered the bungalowmessagePosted- A new message was postedcontextUpdated- Context was updated
Deploying Your Bungalow
- Build your bungalow (e.g.,
npm run build) - Deploy to IPFS using Orbiter or another service
- Get the IPFS hash (CID)
- Request Bayla to update your bungalow content
- Bayla signs the update, you submit the transaction
Example
See the jungle-bay-example-bungalow for a complete example.
