The Amplify SDK is fully typed with TypeScript. This section documents the key types, enums, and interfaces you’ll use when integrating.
YieldType Yield strategy enum values (CORE, TREASURY, FRONTIER).
DepositAuthMethod Deposit authorization discriminated unions and type guards.
WithdrawAuthMethod Withdrawal authorization discriminated unions and type guards.
Errors APIError, WithdrawError, and error code reference.
Quick Reference
Core Enums
import {
YieldType ,
LogLevel ,
DepositAuthMethod ,
WithdrawAuthMethod ,
} from '@paxoslabs/amplify-sdk'
// Yield types (used as filters in vault discovery)
YieldType . CORE // Standard yield strategy
YieldType . TREASURY // Treasury-backed strategy
YieldType . FRONTIER // Higher-risk/reward strategy
// Deposit authorization methods
DepositAuthMethod . PERMIT // "permit" — EIP-2612 gasless signature
DepositAuthMethod . APPROVAL // "approval" — ERC-20 approve tx
DepositAuthMethod . ALREADY_APPROVED // "already_approved" — sufficient allowance
// Withdrawal authorization methods
WithdrawAuthMethod . APPROVAL // "approval" — vault share approve tx
WithdrawAuthMethod . ALREADY_APPROVED // "already_approved" — sufficient allowance
// Log levels
LogLevel . DEBUG // 0 - Verbose debugging
LogLevel . INFO // 1 - General information
LogLevel . WARN // 2 - Warnings
LogLevel . ERROR // 3 - Errors only (default)
LogLevel . NONE // 4 - Disable logging
Vault Types
import type {
AmplifyVault ,
VaultContracts ,
VaultSLA ,
VaultSupportedAsset ,
VaultFilterOptions ,
GetVaultsByConfigParams ,
} from '@paxoslabs/amplify-sdk'
interface AmplifyVault {
id : string
name : string
chainId : number
yieldType : YieldType
vault : VaultContracts
sla ?: VaultSLA
supportedAssets : VaultSupportedAsset []
}
interface VaultSupportedAsset {
address : Address
symbol : string
name : string
decimals : number
coinGeckoTokenId ?: string
depositable ?: boolean
withdrawable ?: boolean
}
interface VaultContracts {
boringVaultAddress : Address
tellerAddress : Address
accountantAddress : Address
managerAddress : Address
rolesAuthorityAddress : Address
baseTokenAddress : Address
baseTokenStandIn ?: Address
distributorCodeDepositorAddress ?: Address
withdrawQueueAddress ?: Address
}
interface VaultSLA {
externalWithdrawalQueueDelaySLA : number
externalAccountantRateUpdateSLA : number
}
interface VaultFilterOptions {
chainId ?: number
yieldType ?: YieldType
depositTokenAddress ?: Address
withdrawAssetAddress ?: Address
settlementAssetAddress ?: Address
}
interface GetVaultsByConfigParams {
yieldType ?: YieldType
chainId ?: number
depositAssetAddress ?: Address
withdrawAssetAddress ?: Address
settlementAssetAddress ?: Address
}
AmplifyVault.name is the vault identifier used as vaultName in all
transaction functions. Discover it via getVaultsByConfig().
Asset Types
import type {
SupportedAsset ,
WithdrawSupportedAsset ,
AssetFilterOptions ,
} from '@paxoslabs/amplify-sdk'
interface SupportedAsset {
address : Address
symbol : string
name : string
decimals : number
coinGeckoTokenId ?: string
chains : number []
}
interface AssetFilterOptions {
chains ?: number []
yieldType ?: YieldType
address ?: string
symbol ?: string
}
interface WithdrawSupportedAsset {
address : Address
symbol : string
decimals : number
vaults : Array <{
id : string
yieldType : YieldType
chainId : number
vaultId : string
}>
}
Type Guards
import {
isPermitAuth ,
isApprovalAuth ,
isAlreadyApprovedAuth ,
isWithdrawApprovalAuth ,
isWithdrawAlreadyApprovedAuth ,
isVaultNotFoundByAddressError ,
isVaultNotFoundByNameError ,
} from '@paxoslabs/amplify-sdk'
const auth = await prepareDepositAuthorization ( params )
if ( isPermitAuth ( auth )) {
// TypeScript knows: auth.method === "permit"
// auth.permitData is available
}
if ( isApprovalAuth ( auth )) {
// TypeScript knows: auth.method === "approval"
// auth.txData is available
}
if ( isAlreadyApprovedAuth ( auth )) {
// TypeScript knows: auth.method === "already_approved"
// auth.allowance is available
}
const withdrawAuth = await prepareWithdrawalAuthorization ( params )
if ( isWithdrawApprovalAuth ( withdrawAuth )) {
// withdrawAuth.txData is available
}
if ( isWithdrawAlreadyApprovedAuth ( withdrawAuth )) {
// withdrawAuth.allowance is available
}
SDK Init Options
import type { SDKInitOptions , Logger } from '@paxoslabs/amplify-sdk'
import { LogLevel } from '@paxoslabs/amplify-sdk'
interface SDKInitOptions {
/** Custom RPC URLs keyed by chain ID */
rpcUrls ?: Record < number , string >
/** Enable/disable PostHog telemetry (default: true) */
telemetry ?: boolean
/** Minimum log level (default: LogLevel.ERROR) */
logLevel ?: LogLevel
/** Custom logger implementation */
logger ?: Logger
}
Permit Types
import type {
PermitSignatureData ,
EIP712Domain ,
ParsedPermitSignature ,
} from '@paxoslabs/amplify-sdk'
interface PermitSignatureData {
/** User's wallet address (permit signer) */
account : Address
domain : EIP712Domain
types : typeof PERMIT_TYPES
message : {
owner : Address
spender : Address
value : bigint
nonce : bigint
deadline : bigint
}
primaryType : 'Permit'
}
interface EIP712Domain {
name : string
version : string
chainId : number
verifyingContract : Address
salt ?: Hex
}
interface ParsedPermitSignature {
v : number
r : Hex
s : Hex
}
Common Types
// Address type (from viem)
type Address = `0x ${ string } `
// Flexible chain ID — accepts number or numeric string
type ChainId = number | ` ${ number } `
Built-in chain configs in the SDK include Ethereum Mainnet (1), Sepolia
(11155111), Base (8453), HyperEVM (999), and Stable Testnet (2201). Additional
networks may appear in API responses (for example Boba (288), Sei (1329), Plume
(98866), Form (478), Swell (1923), Rari (1380012617)); those require a matching
entry in the SDK chain map or custom rpcUrls in initAmplifySDK().
Logger Types
import type { Logger } from '@paxoslabs/amplify-sdk'
import {
setLogger ,
setLogLevel ,
getLogger ,
LogLevel ,
} from '@paxoslabs/amplify-sdk'
// Implement for custom logging
interface Logger {
debug ( message : string , context ?: Record < string , unknown >) : void
info ( message : string , context ?: Record < string , unknown >) : void
warn ( message : string , context ?: Record < string , unknown >) : void
error ( message : string , context ?: Record < string , unknown >) : void
}
// Usage
setLogger ({
debug : ( msg , ctx ) => myLogger . debug ( msg , ctx ),
info : ( msg , ctx ) => myLogger . info ( msg , ctx ),
warn : ( msg , ctx ) => myLogger . warn ( msg , ctx ),
error : ( msg , ctx ) => myLogger . error ( msg , ctx ),
})
setLogLevel ( LogLevel . DEBUG ) // Set minimum log level
const logger = getLogger () // Get current logger instance