ctf

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CTFContractAddress  = "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045"
	USDCContractAddress = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" // USDC.e
	NativeUSDCAddress   = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
	NegRiskCTFExchange  = "0xC5d563A36AE78145C45a50134d48A1215220f80a"
	NegRiskAdapter      = "0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296"
	USDC_DECIMALS       = 6
)

Contract Addresses (Polygon Mainnet)

View Source
const (
	OperationCall         uint8 = 0
	OperationDelegateCall uint8 = 1
)

Gnosis Safe operation types

View Source
const CTF_ABI_FOR_ENCODING = `` /* 987-byte string literal not displayed */
View Source
const ERC20_ABI_FOR_ENCODING = `` /* 225-byte string literal not displayed */
View Source
const (
	NEG_RISK_ADAPTER_ADDR = "0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296"
)
View Source
const SAFE_ABI = `` /* 1657-byte string literal not displayed */

Gnosis Safe ABI (only the methods we need)

Variables

This section is empty.

Functions

This section is empty.

Types

type CTFClient

type CTFClient struct {
	// contains filtered or unexported fields

} // struct end

CTFClient handles interactions with the Conditional Token Framework

func NewCTFClient

func NewCTFClient(config CTFClientConfig) (*CTFClient, error)

NewCTFClient creates a new CTFClient

func (*CTFClient) CheckReadyForCTF

func (c *CTFClient) CheckReadyForCTF(ctx context.Context, amountStr string) (bool, string, error)

CheckReadyForCTF checks if the wallet is ready for CTF operations

func (*CTFClient) GetAddress

func (c *CTFClient) GetAddress() string

GetAddress returns the wallet address (EOA)

func (*CTFClient) GetFunderAddress

func (c *CTFClient) GetFunderAddress() string

GetFunderAddress returns the funder address (Proxy or EOA)

func (*CTFClient) GetNativeUsdcBalance

func (c *CTFClient) GetNativeUsdcBalance(ctx context.Context) (decimal.Decimal, error)

GetNativeUsdcBalance returns the Native USDC balance of the Funder Address

func (*CTFClient) GetPositionBalance

func (c *CTFClient) GetPositionBalance(ctx context.Context, conditionID string) (*PositionBalance, error)

GetPositionBalance gets token balances using calculated Position IDs (Standard CTF)

func (*CTFClient) GetPositionBalanceByTokenIds

func (c *CTFClient) GetPositionBalanceByTokenIds(ctx context.Context, conditionID string, tokenIds TokenIds) (*PositionBalance, error)

GetPositionBalanceByTokenIds gets token balances using explicit Token IDs (CLOB)

func (*CTFClient) GetUsdcBalance

func (c *CTFClient) GetUsdcBalance(ctx context.Context) (decimal.Decimal, error)

GetUsdcBalance returns the USDC.e balance of the Funder Address

func (*CTFClient) Merge

func (c *CTFClient) Merge(ctx context.Context, conditionID string, amountStr string) (string, error)

Merge merges YES/NO tokens back to USDC If Safe Wallet is configured, routes to SafeWalletClient; otherwise executes directly

func (*CTFClient) Redeem

func (c *CTFClient) Redeem(ctx context.Context, conditionID string, outcome string) (string, error)

Redeem redeems winning tokens (Standard CTF)

func (*CTFClient) RedeemByTokenIds

func (c *CTFClient) RedeemByTokenIds(ctx context.Context, conditionID string, tokenIds map[string]string, outcome string) (string, error)

RedeemByTokenIds redeems winning tokens using Token IDs (CLOB)

func (*CTFClient) Split

func (c *CTFClient) Split(ctx context.Context, conditionID string, amountStr string) (string, error)

Split splits USDC into YES/NO tokens If Safe Wallet is configured, routes to SafeWalletClient; otherwise executes directly

type CTFClientConfig

type CTFClientConfig struct {
	PrivateKeyHex string
	RPCURL        string
	ChainID       int64
	FunderAddress string // Optional: Proxy/Safe address
}

CTFClientConfig holds configuration for CTFClient

type PositionBalance

type PositionBalance struct {
	ConditionID   string
	YesBalance    decimal.Decimal
	NoBalance     decimal.Decimal
	YesPositionID string
	NoPositionID  string
}

PositionBalance holds balance info for a condition

type SafeWalletClient

type SafeWalletClient struct {
	// contains filtered or unexported fields
}

SafeWalletClient handles CTF operations via Gnosis Safe execTransaction

func NewSafeWalletClient

func NewSafeWalletClient(ctx context.Context, config SafeWalletConfig) (*SafeWalletClient, error)

NewSafeWalletClient creates a client for CTF operations via Gnosis Safe

func (*SafeWalletClient) Merge

func (s *SafeWalletClient) Merge(ctx context.Context, conditionID string, amount string, negRisk bool) (string, error)

Merge executes Merge operation via Gnosis Safe

func (*SafeWalletClient) Redeem

func (s *SafeWalletClient) Redeem(ctx context.Context, conditionID string, negRisk bool) (string, error)

Redeem executes Redeem operation via Gnosis Safe

func (*SafeWalletClient) Split

func (s *SafeWalletClient) Split(ctx context.Context, conditionID string, amount string, negRisk bool) (string, error)

Split executes Split operation via Gnosis Safe

type SafeWalletConfig

type SafeWalletConfig struct {
	PrivateKeyHex string
	SafeAddress   string // Gnosis Safe contract address (= POLY_FUNDER_ADDR)
	RPCURL        string
	ChainID       int64
}

SafeWalletConfig for SafeWalletClient

type TokenIds

type TokenIds struct {
	YesTokenID string
	NoTokenID  string
}

TokenIds holds YES/NO token IDs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL