TypeScript types exported from @galliun/sdk and re-exported from @galliun/shared.
Client options
interface GalliunClientOptions {
baseUrl: string;
chain?: string;
wallet?: PaymentWalletAdapter;
fetch?: typeof fetch;
hooks?: PaidAIClientHooks;
authToken?: string;
}
Payment types
interface PaymentRequirement {
error: "payment_required";
x402Version: number;
scheme: string;
resource: string;
description?: string;
expiresAt: string;
nonce: string;
requestHash: string;
accepts: PaymentAcceptOption[];
cost?: ResolvedPricing;
}
interface PaymentAcceptOption {
chain: string;
network: string;
asset: string;
amount: string;
decimals: number;
payTo: string;
coinType?: string; // Sui
mint?: string; // Solana
tokenAddress?: string; // EVM
}
interface PaymentProof {
x402Version: number;
scheme: string;
chain: string;
network: string;
asset: string;
amount: string;
payer: string;
payTo: string;
txHash: string;
nonce: string;
requestHash: string;
expiresAt: string;
}
Wallet adapter
interface PaymentWalletAdapter {
chain: string;
address(): Promise<string>;
pay(input: PaymentAcceptOption, requirement: PaymentRequirement): Promise<PaymentProof>;
signMessage?(message: string): Promise<string>;
}
Hook types
type PaymentFlowStatus =
| "idle"
| "sending_request"
| "payment_required"
| "waiting_for_wallet"
| "payment_submitted"
| "retrying_request"
| "verifying_payment"
| "complete"
| "error";
interface PaidAIClientHooks {
onStatusChange?: (status: PaymentFlowStatus, context?: PaymentFlowContext) => void;
onPaymentRequired?: (requirement: PaymentRequirement) => void;
onPaymentSubmitted?: (proof: PaymentProof, requirement: PaymentRequirement) => void;
}