@galliun/sofi-sdk
Version:
SDK for interacting with the Galliun SocialFi protocol
192 lines (151 loc) • 3.93 kB
Markdown
A TypeScript SDK for interacting with the Galliun SoFi protocol on the Sui blockchain.
```bash
npm install @galliun/sofi-sdk
```
- Node.js >= 16
- Sui version >= 1.21.2
First, initialize the SDK with your package ID and network:
```typescript
import { SoFiClient } from '@galliun/sofi-sdk';
const sdk = new SoFiClient({
packageId: 'YOUR_PACKAGE_ID',
network: 'mainnet', // or 'testnet', 'devnet'
});
```
```typescript
// Create a profile
const createProfileTx = await sdk.profileManager.createProfile(
signer,
'username',
'Display Name',
'Bio',
'profile_picture_url',
'background_picture_url',
);
// Update profile
const updateProfileTx = await sdk.profileManager.updateProfile(
signer,
profileId,
'New Display Name',
'New Bio',
'new_profile_picture_url',
'new_background_picture_url',
);
// Follow/Unfollow
const followTx = await sdk.profileManager.followProfile(myProfileId, targetProfileId);
const unfollowTx = await sdk.profileManager.unfollowProfile(myProfileId, targetProfileId);
```
```typescript
// Create a goal
const createGoalTx = await sdk.goalManager.createGoal(
profileId,
'SUI',
BigInt(1000000), // amount in smallest unit
'Goal description',
false, // overFund
BigInt(Date.now() + 86400000), // expires in 24h
);
// Pay a goal
const payGoalTx = await sdk.goalManager.payGoal(goalId, coinObjectId, BigInt(100000));
// Claim a goal
const claimGoalTx = await sdk.goalManager.claimGoal(goalId);
// Cancel a goal
const cancelGoalTx = await sdk.goalManager.cancelGoal(goalId);
```
```typescript
// Create a tip
const createTipTx = await sdk.tipManager.createTip(
profileId,
coin,
recipientAddress,
'SUI',
BigInt(1000000),
'Tip description',
);
// Claim a tip
const claimTipTx = await sdk.tipManager.claimTip(tipId);
// Cancel a tip
const cancelTipTx = await sdk.tipManager.cancelTip(tipId);
```
```typescript
// Get single object details
const profile = await sdk.profileMnager.getProfileById(profileId);
const goal = await sdk.profileMnager.getGoal(goalId);
const tip = await sdk.profileMnager.getTip(tipId);
```
All methods that modify state return a `Transaction` that needs to be signed and executed:
```typescript
import { Transaction } from '@mysten/sui/transactions';
// Create the transaction
const tx = await sdk.createProfile(/* ... */);
// Sign and execute the transaction using your preferred wallet or signer
const result = await wallet.signAndExecuteTransactionBlock({
transactionBlock: tx,
});
```
All methods may throw errors if:
- The network is unavailable
- The contract call fails
- Invalid parameters are provided
- The user lacks necessary permissions
Always wrap calls in try-catch blocks and handle errors appropriately.
The SDK uses the following main types:
```typescript
interface Profile {
id: string;
owner: string;
username: string;
displayName: string;
bio: string;
profilePicture: string;
backgroundPicture: string;
points: string;
links: ProfileLink[];
followers: string[];
following: string[];
acceptTips: boolean;
}
interface Goal {
id: string;
profile: string;
creator: string;
coinType: string;
amount: bigint;
status: GoalStatus;
totalPaymentsMade: bigint;
totalAmountPaid: bigint;
totalAmountClaimed: bigint;
totalFeeAmount: bigint;
totalAmountRefunded: bigint;
description: string;
expiresAt?: bigint;
overFund: boolean;
}
interface Tip {
id: string;
creator: string;
recipient: string;
profile: string;
coinType: string;
amount: bigint;
status: TipStatus;
totalAmountPaid: bigint;
totalAmountClaimed: bigint;
totalFeeAmount: bigint;
totalAmountRefunded: bigint;
description: string;
}
```
Contributions are welcome! Please feel free to submit a Pull Request.