1 line
80 KiB
JSON
1 line
80 KiB
JSON
{"address":"T8HsGYv7sMk3kTnyaRqZrbRPuntYzdh12evXBkprint","metadata":{"name":"printr","version":"1.0.0","spec":"0.1.0","description":"Printr on Solana"},"instructions":[{"name":"authorized_spend_all_quote","discriminator":[55,106,238,14,152,246,186,129],"accounts":[{"name":"authorizor","docs":["This is a Printr PDA.","You can see the expected seed in the [Self::apply] static function."],"writable":true},{"name":"authorizor_wallet","writable":true,"optional":true},{"name":"swap","accounts":[{"name":"payer","docs":["The user performing the swap"],"writable":true,"signer":true},{"name":"printr_authority","docs":["This is the account that funds the graduation process.",""],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"input_wallet","writable":true},{"name":"output_wallet","docs":["The mint of this token account determines what's being sold, whether telecoin or quote."],"writable":true},{"name":"telecoin_mint","writable":true},{"name":"quote_mint","writable":true},{"name":"dbc_pool_authority","writable":true},{"name":"dbc_config"},{"name":"dbc_pool","writable":true},{"name":"dbc_telecoin_vault","writable":true},{"name":"dbc_quote_vault","writable":true},{"name":"dbc_event_authority"},{"name":"dbc_migration_metadata","docs":["DEPRECATED: Meteora no longer uses this one.",""],"writable":true},{"name":"damm_printr_partner_config"},{"name":"damm_pool","writable":true},{"name":"damm_pool_authority"},{"name":"damm_telecoin_vault","writable":true},{"name":"damm_quote_vault","writable":true},{"name":"damm_position_nft_mint","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,100,97,109,109,95,112,111,115,105,116,105,111,110,95,110,102,116,95,109,105,110,116]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"damm_position_nft_account","writable":true},{"name":"damm_position","writable":true},{"name":"damm_event_authority"},{"name":"telecoin_token_program","docs":["We'll need this to init the mint and init the token account."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"dbc_program","docs":["The DBC program that abstracts the bonding curve logic."],"address":"dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"},{"name":"damm_program","docs":["The DAMM V2 program that abstracts the AMM logic."],"address":"cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG"},{"name":"system_program","docs":["New accounts, native transfers, etc."],"address":"11111111111111111111111111111111"}]}],"args":[{"name":"max_price","type":{"defined":{"name":"SqrtBitshiftedPrice"}}},{"name":"extra_seed","type":"bytes"}]},{"name":"buyback_and_burn","discriminator":[121,156,154,165,194,86,180,130],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"printr_authority","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"payer_quote_wallet","writable":true},{"name":"buyback_telecoin_wallet","docs":["Owned by printr_authority (PDA)."],"writable":true},{"name":"telecoin_mint","writable":true},{"name":"quote_mint","docs":["UncheckedAccount to avoid self-CPI exit handler corruption."],"writable":true},{"name":"dbc_pool_authority","writable":true},{"name":"dbc_config"},{"name":"dbc_pool","writable":true},{"name":"dbc_telecoin_vault","writable":true},{"name":"dbc_quote_vault","writable":true},{"name":"dbc_event_authority"},{"name":"dbc_migration_metadata","writable":true},{"name":"damm_printr_partner_config"},{"name":"damm_pool","writable":true},{"name":"damm_pool_authority"},{"name":"damm_telecoin_vault","writable":true},{"name":"damm_quote_vault","writable":true},{"name":"damm_position_nft_mint","writable":true},{"name":"damm_position_nft_account","writable":true},{"name":"damm_position","writable":true},{"name":"damm_event_authority"},{"name":"telecoin_token_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program"},{"name":"dbc_program","address":"dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"},{"name":"damm_program","address":"cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"printr_config","pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,99,111,110,102,105,103]}]}},{"name":"dev_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"quote_fee_vault","docs":["Stores all quote fees across all telecoins."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,115,95,102,101,101,95,118,97,117,108,116]},{"kind":"account","path":"quote_mint"}]}},{"name":"printr_quote_fee_wallet","writable":true,"pda":{"seeds":[{"kind":"account","path":"printr_config.printr_fee_authority","account":"PrintrConfig"},{"kind":"account","path":"quote_token_program"},{"kind":"account","path":"quote_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"revshare1_quote_fee_wallet","docs":["If relevant then authority is checked via [CollectProtocolTransfers]"],"writable":true,"optional":true},{"name":"revshare2_quote_fee_wallet","docs":["If relevant then authority is checked via [CollectProtocolTransfers]"],"writable":true,"optional":true},{"name":"instructions_sysvar","address":"Sysvar1nstructions1111111111111111111111111"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[],"returns":{"defined":{"name":"FeesClaimed"}}},{"name":"cancel_authorized_spend_all_quote","discriminator":[167,1,184,69,242,171,240,207],"accounts":[{"name":"authorizor","docs":["This is a Printr PDA.","You can see the expected seed in the [Self::apply] static function."],"writable":true},{"name":"authorizor_wallet","docs":["The SPL token account associated with the authorizor."],"writable":true,"optional":true},{"name":"quote_mint","docs":["The quote mint that was meant to be swapped against the telecoin token."]},{"name":"recipient","docs":["The authorizor's recipient can cancel their own swap order."],"writable":true,"signer":true},{"name":"recipient_wallet","docs":["The recipient's wallet if applicable."],"writable":true,"optional":true},{"name":"quote_token_program","docs":["Allows us to swap."]},{"name":"system_program","docs":["We need to transfer."],"address":"11111111111111111111111111111111"}],"args":[{"name":"max_price","type":{"defined":{"name":"SqrtBitshiftedPrice"}}},{"name":"telecoin_mint","type":"pubkey"},{"name":"extra_seed","type":"bytes"}]},{"name":"claim_damm_fees","discriminator":[221,192,167,35,180,110,107,114],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"printr_authority","pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"printr_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,99,111,110,102,105,103]}]}},{"name":"telecoin_mint"},{"name":"quote_mint","docs":["The quote mint is the token that will be used to buy telecoin tokens."]},{"name":"telecoin_fee_vault_authority","docs":["Authority for the telecoin fee vault.","For staking telecoins: the staking pool PDA.","For non-staking telecoins: printr_config.staking_authority.",""]},{"name":"telecoin_fee_vault","docs":["Stores telecoin fees.","","For staking telecoins: staking pool's fee vault (authority = staking_pool).","","For non-staking telecoins: generic staking wallet (authority =","printr_config.staking_authority).",""],"writable":true},{"name":"dev_config","docs":["The dev config stores information about the dev and must match the damm pool.","","We know this is the right dev config because its seed matches the telecoin mint which in","turn matches the dammv2 pool."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"quote_fee_vault","docs":["Stores all quote fees across all telecoins."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,115,95,102,101,101,95,118,97,117,108,116]},{"kind":"account","path":"quote_mint"}]}},{"name":"damm_position_nft_account"},{"name":"damm_position","writable":true},{"name":"damm_pool_authority"},{"name":"damm_pool","writable":true},{"name":"damm_base_vault","writable":true},{"name":"damm_quote_vault","writable":true},{"name":"damm_event_authority"},{"name":"telecoin_token_program","docs":["We'll need this to transfer."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","docs":["For the telecoin fees."],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"},{"name":"damm_v2_program","docs":["The DAMM program that abstracts the bonding curve logic."],"address":"cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG"}],"args":[],"returns":{"defined":{"name":"FeesClaimed"}}},{"name":"claim_dbc_fees","discriminator":[162,222,128,90,59,115,34,130],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"printr_authority","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"printr_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,99,111,110,102,105,103]}]}},{"name":"telecoin_mint"},{"name":"quote_mint","docs":["The quote mint is the token that is be used to buy telecoin tokens."]},{"name":"any_telecoin_wallet","docs":["Therefore any old telecoin wallet will do, it will not be used."],"writable":true},{"name":"printr_intermediary_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,114,109,101,100,105,97,114,121,95,116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"printr_intermediary_quote_wallet","docs":["Useful only for $wSOL quote token.","We will collect some fee amount to support smart graduation in swap ix."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"printr_intermediary_authority"},{"kind":"account","path":"quote_token_program"},{"kind":"account","path":"quote_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"dbc_pool_authority"},{"name":"dbc_pool","writable":true},{"name":"dbc_base_vault","writable":true},{"name":"dbc_quote_vault","writable":true},{"name":"dbc_event_authority"},{"name":"dev_config","docs":["The dev config stores information about the dev and must match the DBC pool.","","We know this is the right dev config because its seed matches the telecoin mint which in","turn matches the dbc pool."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"quote_fee_vault","docs":["Shared vault per quote mint. Per-telecoin accounting is tracked in DevConfig."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,115,95,102,101,101,95,118,97,117,108,116]},{"kind":"account","path":"quote_mint"}]}},{"name":"telecoin_token_program","docs":["We'll need this to transfer."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"associated_token_program","docs":["Used to create dev's telecoin ATA."],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"},{"name":"dbc_program","docs":["The DBC program that abstracts the bonding curve logic."],"address":"dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"}],"args":[],"returns":{"defined":{"name":"FeesClaimed"}}},{"name":"claim_printr_authority_lamports","discriminator":[52,14,140,114,41,105,0,48],"accounts":[{"name":"admin","writable":true,"signer":true},{"name":"printr_authority","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"}],"args":[]},{"name":"claim_staking_rewards","discriminator":[229,141,170,69,111,94,6,72],"accounts":[{"name":"payer","docs":["Anyone can call this instruction."],"writable":true,"signer":true},{"name":"position_owner","writable":true},{"name":"printr_config","docs":["Printr config for authorizing transfers."],"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,99,111,110,102,105,103]}]}},{"name":"telecoin_mint","docs":["The telecoin mint."]},{"name":"quote_mint","docs":["The quote token mint."]},{"name":"staking_pool","docs":["The staking pool for this telecoin."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,107,105,110,103,95,112,111,111,108]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"stake_position","docs":["The stake position being claimed from."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,107,101,95,112,111,115,105,116,105,111,110]},{"kind":"account","path":"telecoin_mint"},{"kind":"account","path":"position_owner"},{"kind":"account","path":"stake_position.position_nonce","account":"StakePosition"}]}},{"name":"owner_quote_account","docs":["Owner's quote token account."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"position_owner"},{"kind":"account","path":"quote_token_program"},{"kind":"account","path":"quote_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"owner_telecoin_account","docs":["Owner's telecoin token account."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"position_owner"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"quote_fee_vault","docs":["Stores all quote fees across Printr so be gentle with it."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,115,95,102,101,101,95,118,97,117,108,116]},{"kind":"account","path":"quote_mint"}]}},{"name":"pool_telecoin_vault","docs":["Pool's telecoin vault.","Contains both trading fees and staked telecoin."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"staking_pool"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"telecoin_token_program","docs":["Checks the account owner."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"associated_token_program","docs":["ATA boy"],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["Needed because `owner_quote_account` and `owner_telecoin_account` are `init_if_needed`."],"address":"11111111111111111111111111111111"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[]},{"name":"close_stake_position","discriminator":[8,63,74,143,105,42,28,64],"accounts":[{"name":"position_owner","docs":["Only the position owner can close the position.","Receives the rent refund from the closed position account."],"writable":true,"signer":true},{"name":"telecoin_mint","docs":["The telecoin mint."]},{"name":"staking_pool","docs":["The staking pool for this telecoin."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,107,105,110,103,95,112,111,111,108]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"stake_position","docs":["The stake position being closed. Rent is refunded to `position_owner`."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,107,101,95,112,111,115,105,116,105,111,110]},{"kind":"account","path":"telecoin_mint"},{"kind":"account","path":"position_owner"},{"kind":"account","path":"stake_position.position_nonce","account":"StakePosition"}]}},{"name":"owner_telecoin_account","docs":["Owner's telecoin token account. Receives the staked telecoin back."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"position_owner"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"pool_telecoin_vault","docs":["Pool's telecoin vault holding the staked telecoin."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"staking_pool"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"telecoin_token_program","address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["Needed for `init_if_needed` on `owner_telecoin_account` and for `close` on the position."],"address":"11111111111111111111111111111111"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[]},{"name":"create_printr_config","discriminator":[160,191,66,212,5,106,20,215],"accounts":[{"name":"admin","writable":true,"signer":true},{"name":"printr_fee_authority"},{"name":"questflow_ai_fee_authority"},{"name":"printr_staking_authority"},{"name":"printr_config","docs":["We use `init_if_needed` purposefully.","Call this ix again to update the config."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,99,111,110,102,105,103]}]}},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"}],"args":[]},{"name":"create_stake_position","discriminator":[92,168,96,133,102,121,86,138],"accounts":[{"name":"payer","docs":["We can create positions on behalf of others."],"writable":true,"signer":true},{"name":"position_owner","writable":true},{"name":"printr_authority","pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"dev_config","docs":["Dev config must indicate this telecoin uses staking for fee distribution."],"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"staking_pool","docs":["The staking pool for this telecoin.","Will be lazily initialized if this is the first time anyone stakes this telecoin."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,107,105,110,103,95,112,111,111,108]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"stake_position","docs":["The stake position being created.","The ID can be reused, just cannot be used at the same time as another position."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,107,101,95,112,111,115,105,116,105,111,110]},{"kind":"account","path":"telecoin_mint"},{"kind":"account","path":"position_owner"},{"kind":"arg","path":"position_nonce"}]}},{"name":"payer_telecoin_account","docs":["Payer doesn't necessarily equal to the user but most likely will."],"writable":true},{"name":"pool_telecoin_vault","docs":["Staking pool's telecoin vault."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"staking_pool"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"telecoin_mint","docs":["The telecoin mint."]},{"name":"telecoin_token_program","docs":["Checks the account owner."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","docs":["Related to the telecoin vault ATA."],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[{"name":"position_nonce","type":"u32"},{"name":"to_stake","type":{"defined":{"name":"TokenAmount"}}},{"name":"lock_period","type":{"defined":{"name":"LockPeriod"}}}]},{"name":"deploy_telecoin","discriminator":[4,248,20,1,125,63,15,0],"accounts":[{"name":"payer","docs":["Creating a launch is a permission-less operation.","This could be a Printr user or a BE."],"writable":true,"signer":true},{"name":"printr_authority","pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"dev_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"telecoin_mint","docs":["This is the telecoin mint which we initialize according to the telecoin params."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,116,101,108,101,99,111,105,110,95,109,105,110,116]},{"kind":"arg","path":"telecoin_params"}]}},{"name":"telecoin_token_program","docs":["We'll need this to init the mint."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[{"name":"telecoin_params_compact","type":{"defined":{"name":"TelecoinParamsCompact"}}}]},{"name":"deploy_telecoin2","discriminator":[37,155,54,236,186,225,201,137],"accounts":[{"name":"payer","docs":["Creating a launch is a permission-less operation.","This could be a Printr user or a BE."],"writable":true,"signer":true},{"name":"printr_authority","pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"dev_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"telecoin_mint","docs":["This is the telecoin mint which we initialize according to the telecoin params."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,116,101,108,101,99,111,105,110,95,109,105,110,116]},{"kind":"arg","path":"telecoin_params"}]}},{"name":"telecoin_token_program","docs":["We'll need this to init the mint."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[{"name":"telecoin_params","type":{"defined":{"name":"TelecoinParams"}}}]},{"name":"distribute_telecoin_quote_fees","discriminator":[31,197,88,239,123,165,197,208],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"printr_authority","pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"printr_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,99,111,110,102,105,103]}]}},{"name":"quote_mint","docs":["The quote mint is the token that is be used to buy telecoin tokens."]},{"name":"telecoin_mint"},{"name":"quote_fee_vault","docs":["Stores all quote fees across all telecoins.","How much can we claim now is tracked in the dev config."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,115,95,102,101,101,95,118,97,117,108,116]},{"kind":"account","path":"quote_mint"}]}},{"name":"dev_config","docs":["The dev config stores information about how much a dev can claim.","The existence of this account implies that the telecoin mint was created by Printr."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"dev"},{"name":"dev_quote_wallet","writable":true,"pda":{"seeds":[{"kind":"account","path":"dev"},{"kind":"account","path":"quote_token_program"},{"kind":"account","path":"quote_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"printr_quote_fee_wallet","writable":true,"pda":{"seeds":[{"kind":"account","path":"printr_config.printr_fee_authority","account":"PrintrConfig"},{"kind":"account","path":"quote_token_program"},{"kind":"account","path":"quote_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"revshare1_quote_fee_wallet","docs":["If relevant then authority is checked via [CollectProtocolTransfers]"],"writable":true,"optional":true},{"name":"revshare2_quote_fee_wallet","docs":["If relevant then authority is checked via [CollectProtocolTransfers]"],"writable":true,"optional":true},{"name":"dbc_pool"},{"name":"dbc_config"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"associated_token_program","docs":["Used to create dev's quote ATA."],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"}],"args":[]},{"name":"estimate_swap","discriminator":[219,196,183,82,59,37,166,59],"accounts":[{"name":"dbc_config"},{"name":"dbc_pool"},{"name":"damm_pool","docs":["Might be uninitialized if the pool is not yet graduated."]}],"args":[{"name":"params","type":{"defined":{"name":"SwapIntent"}}}],"returns":{"defined":{"name":"EstimateSwapOutput"}}},{"name":"estimate_teleport_with_lz","discriminator":[11,141,166,118,153,255,62,132],"accounts":[{"name":"peer"}],"args":[{"name":"params","type":{"defined":{"name":"EstimateTeleportWithLzParams"}}}],"returns":{"defined":{"name":"TokenAmount"}}},{"name":"lz_receive","discriminator":[8,179,120,109,33,118,189,80],"accounts":[{"name":"payer","docs":["The LZ executor."],"writable":true,"signer":true},{"name":"peer","docs":["Represents where did the message come from."]},{"name":"telecoin_teleport_config","docs":["If this account does not exist then the provided peer must be set as a default peer.","Otherwise we parse this account's configuration and assert it's been upheld."]},{"name":"printr_authority","docs":["Global Printr telecoin mint authority"],"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"telecoin_mint","docs":["We'll mint these tokens.",""],"writable":true},{"name":"recipient"},{"name":"recipient_destination_telecoin_wallet","writable":true,"pda":{"seeds":[{"kind":"account","path":"recipient"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"telecoin_token_program","docs":["Telecoin mint is always token program 2022."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"associated_token_program","docs":["In case we need to create the ATA"],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["In case we need to create the ATA"],"address":"11111111111111111111111111111111"}],"args":[{"name":"params","type":{"defined":{"name":"LzReceiveParams"}}}]},{"name":"lz_receive_types","discriminator":[221,17,246,159,248,128,31,96],"accounts":[],"args":[{"name":"params","type":{"defined":{"name":"LzReceiveParams"}}}],"returns":{"vec":{"defined":{"name":"LzAccount"}}}},{"name":"lz_set_peer","discriminator":[199,123,81,116,208,49,213,232],"accounts":[{"name":"admin","docs":["Printr staff."],"writable":true,"signer":true},{"name":"peer","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,101,101,114]},{"kind":"arg","path":"peer_address"}]}},{"name":"lz_oapp_registry","writable":true,"pda":{"seeds":[{"kind":"const","value":[79,65,112,112]},{"kind":"account","path":"peer"}],"program":{"kind":"account","path":"endpoint_program"}}},{"name":"endpoint_emit_cpi_event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}],"program":{"kind":"account","path":"endpoint_program"}}},{"name":"endpoint_program","address":"76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"peer_address","type":{"array":["u8",32]}}]},{"name":"print_telecoin","discriminator":[214,30,4,102,207,73,108,35],"accounts":[{"name":"payer","docs":["Creating a launch is a permission-less operation.","This could be a Printr user or a BE."],"writable":true,"signer":true},{"name":"printr_authority","pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"dev_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"telecoin_mint","docs":["This is the telecoin mint which we initialize according to the telecoin params in the","Meteora CPI.",""],"writable":true},{"name":"quote_mint","docs":["The quote mint is the token that will be used to buy telecoin tokens."]},{"name":"initial_buy_authority","docs":["When a telecoin is printed we perform an initial buy on behalf of the dev.","","There are three options how the initial buy can happen:","1. No deposit PDA","2. Deposit PDA of native $SOL","3. Deposit PDA with an associated token account.","","See `DepositPda` enum for more details.",""],"writable":true},{"name":"initial_buy_source","writable":true},{"name":"dev_on_solana","writable":true},{"name":"dev_destination_telecoin_wallet","docs":["Associated token account cannot exist because we've just created the telecoin mint.","Will not be initialized if initial spend is zero.",""],"writable":true,"optional":true},{"name":"dbc_config","docs":["We'll init the config first.",""],"writable":true},{"name":"dbc_pool_authority"},{"name":"dbc_pool","docs":["The bonding curve state, initialized after the config.",""],"writable":true},{"name":"dbc_telecoin_vault","writable":true},{"name":"dbc_quote_vault","writable":true},{"name":"dbc_event_authority"},{"name":"dbc_migration_metadata","docs":["DEPRECATED: Meteora no longer uses this one.","","If provided then we create a migration metadata account for the DBC pool.",""],"writable":true,"optional":true},{"name":"telecoin_token_program","docs":["We'll need this to init the mint and init the token account."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"associated_token_program","docs":["Used to create dev's telecoin ATA."],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"},{"name":"dbc_program","docs":["The DBC program that abstracts the bonding curve logic."],"address":"dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[{"name":"telecoin_params_compact","type":{"defined":{"name":"TelecoinParamsCompact"}}}]},{"name":"print_telecoin2","discriminator":[166,60,38,43,238,32,2,160],"accounts":[{"name":"payer","docs":["Creating a launch is a permission-less operation.","This could be a Printr user or a BE."],"writable":true,"signer":true},{"name":"printr_authority","pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"dev_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"telecoin_mint","docs":["This is the telecoin mint which we initialize according to the telecoin params in the","Meteora CPI.",""],"writable":true},{"name":"quote_mint","docs":["The quote mint is the token that will be used to buy telecoin tokens."]},{"name":"initial_buy_authority","docs":["When a telecoin is printed we perform an initial buy on behalf of the dev.","","There are three options how the initial buy can happen:","1. No deposit PDA","2. Deposit PDA of native $SOL","3. Deposit PDA with an associated token account.","","See `DepositPda` enum for more details.",""],"writable":true},{"name":"initial_buy_source","writable":true},{"name":"dev_on_solana","writable":true},{"name":"dev_destination_telecoin_wallet","docs":["Associated token account cannot exist because we've just created the telecoin mint.","Will not be initialized if initial spend is zero.",""],"writable":true,"optional":true},{"name":"dbc_config","docs":["We'll init the config first.",""],"writable":true},{"name":"dbc_pool_authority"},{"name":"dbc_pool","docs":["The bonding curve state, initialized after the config.",""],"writable":true},{"name":"dbc_telecoin_vault","writable":true},{"name":"dbc_quote_vault","writable":true},{"name":"dbc_event_authority"},{"name":"dbc_migration_metadata","docs":["DEPRECATED: Meteora no longer uses this one.","","If provided then we create a migration metadata account for the DBC pool.",""],"writable":true,"optional":true},{"name":"telecoin_token_program","docs":["We'll need this to init the mint and init the token account."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"associated_token_program","docs":["Used to create dev's telecoin ATA."],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["Necessary for creating new accounts."],"address":"11111111111111111111111111111111"},{"name":"dbc_program","docs":["The DBC program that abstracts the bonding curve logic."],"address":"dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[{"name":"telecoin_params","type":{"defined":{"name":"TelecoinParams"}}}]},{"name":"refresh_staking2","discriminator":[36,197,195,27,8,224,118,27],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"printr_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,99,111,110,102,105,103]}]}},{"name":"printr_quote_fee_wallet","writable":true,"pda":{"seeds":[{"kind":"account","path":"printr_config.printr_fee_authority","account":"PrintrConfig"},{"kind":"account","path":"quote_token_program"},{"kind":"account","path":"quote_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"quote_fee_vault","docs":["Stores all quote fees across Printr."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,115,95,102,101,101,95,118,97,117,108,116]},{"kind":"account","path":"quote_mint"}]}},{"name":"revshare1_quote_fee_wallet","writable":true,"optional":true},{"name":"revshare2_quote_fee_wallet","writable":true,"optional":true},{"name":"staking_pool","docs":["The staking pool for this telecoin."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[115,116,97,107,105,110,103,95,112,111,111,108]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"dev_config","docs":["The dev config stores information about accumulated quote fees."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"dbc_config"},{"name":"dbc_pool","docs":["DBC config."]},{"name":"telecoin_mint","docs":["The telecoin mint."]},{"name":"quote_mint","docs":["The quote mint is the token that is be used to buy telecoin tokens."]},{"name":"pool_telecoin_vault","docs":["Telecoin vault that holds staked tokens and accumulated telecoin fees."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"staking_pool"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"protocol_telecoin_wallet","docs":["Protocol's telecoin wallet. Receives the protocol's share of telecoin rewards.","ATA of `printr_config.staking_authority` for the telecoin mint."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"protocol_telecoin_authority"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"protocol_telecoin_authority"},{"name":"telecoin_token_program","docs":["Checks the account owner."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"associated_token_program","docs":["Related to the telecoin vault ATA."],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["Need to init the staking pool if not yet."],"address":"11111111111111111111111111111111"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[]},{"name":"set_dev_config_dev","discriminator":[175,111,205,104,111,167,15,28],"accounts":[{"name":"admin","signer":true},{"name":"telecoin_mint","docs":["The telecoin mint whose dev config we want to update."]},{"name":"dev_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[{"name":"new_dev","type":"pubkey"}]},{"name":"set_dev_config_fees","discriminator":[75,184,89,133,143,57,183,121],"accounts":[{"name":"admin","signer":true},{"name":"telecoin_mint","docs":["The telecoin mint whose dev config we want to update."]},{"name":"dev_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[100,101,118,95,99,111,110,102,105,103]},{"kind":"account","path":"telecoin_mint"}]}}],"args":[{"name":"params","type":{"defined":{"name":"SetDevConfigFeesParams"}}}]},{"name":"set_peer_conf","discriminator":[81,211,81,152,212,153,58,71],"accounts":[{"name":"admin","docs":["Printr staff."],"signer":true},{"name":"peer","writable":true}],"args":[{"name":"params","type":{"defined":{"name":"SetPeerConfParams"}}}]},{"name":"set_telecoin_teleport_conf","discriminator":[100,47,61,148,198,138,62,49],"accounts":[{"name":"payer","writable":true,"signer":true},{"name":"admin","docs":["Printr staff."],"signer":true},{"name":"telecoin_teleport_config","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,101,108,101,99,111,105,110,95,116,101,108,101,112,111,114,116,95,99,111,110,102,105,103]},{"kind":"arg","path":"telecoin_id"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"telecoin_id","type":{"defined":{"name":"TelecoinId"}}},{"name":"params","type":{"defined":{"name":"SetTelecoinTeleportConfParams"}}}]},{"name":"spend_all_quote_no_graduation","discriminator":[198,170,217,245,59,73,114,60],"accounts":[{"name":"payer","docs":["The entity performing the swap.","Owner of the input token account.","","If the quote token is $wSOL then we transfer everything from this account to the","intermediary token account."],"writable":true,"signer":true},{"name":"printr_intermediary_authority","pda":{"seeds":[{"kind":"const","value":[105,110,116,101,114,109,101,100,105,97,114,121,95,116,111,107,101,110,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"printr_intermediary_quote_wallet","docs":["To support post hooks with native $SOL we need to create an intermediate ATA for the quote","token.","All the quote tokens will be transferred to this account first before being swapped.","The account is not closed so that it can be reused in the future without paying rent."],"writable":true,"pda":{"seeds":[{"kind":"account","path":"printr_intermediary_authority"},{"kind":"account","path":"quote_token_program"},{"kind":"account","path":"quote_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"input_quote_wallet","docs":["We will use everything that's in this token account to buy as much telecoin as possible.","","Can be none for $wSOL quote if wrapping is needed."],"writable":true,"optional":true},{"name":"recipient"},{"name":"recipient_quote_wallet","writable":true,"pda":{"seeds":[{"kind":"account","path":"recipient"},{"kind":"account","path":"quote_token_program"},{"kind":"account","path":"quote_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"output_telecoin_wallet","docs":["The owner of the output account will not match the payer for a posthook ix.",""],"writable":true,"pda":{"seeds":[{"kind":"account","path":"recipient"},{"kind":"account","path":"telecoin_token_program"},{"kind":"account","path":"telecoin_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"telecoin_mint","writable":true},{"name":"quote_mint","writable":true},{"name":"dbc_pool_authority","writable":true},{"name":"dbc_config"},{"name":"dbc_pool","writable":true},{"name":"dbc_telecoin_vault","writable":true},{"name":"dbc_quote_vault","writable":true},{"name":"dbc_event_authority"},{"name":"damm_pool","writable":true},{"name":"damm_pool_authority"},{"name":"damm_telecoin_vault","writable":true},{"name":"damm_quote_vault","writable":true},{"name":"damm_event_authority"},{"name":"telecoin_token_program","docs":["We'll need this to init the mint and init the token account."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"dbc_program","docs":["The DBC program that abstracts the bonding curve logic."],"address":"dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"},{"name":"damm_program","docs":["The DAMM V2 program that abstracts the AMM logic."],"address":"cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG"},{"name":"associated_token_program","docs":["Used to create ATA if needed."],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["We might need to refill the input token account with $wSOL."],"address":"11111111111111111111111111111111"}],"args":[{"name":"max_price","type":{"defined":{"name":"SqrtBitshiftedPrice"}}}]},{"name":"swap","discriminator":[248,198,158,145,225,117,135,200],"accounts":[{"name":"payer","docs":["The user performing the swap"],"writable":true,"signer":true},{"name":"printr_authority","docs":["This is the account that funds the graduation process.",""],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"input_wallet","writable":true},{"name":"output_wallet","docs":["The mint of this token account determines what's being sold, whether telecoin or quote."],"writable":true},{"name":"telecoin_mint","writable":true},{"name":"quote_mint","writable":true},{"name":"dbc_pool_authority","writable":true},{"name":"dbc_config"},{"name":"dbc_pool","writable":true},{"name":"dbc_telecoin_vault","writable":true},{"name":"dbc_quote_vault","writable":true},{"name":"dbc_event_authority"},{"name":"dbc_migration_metadata","docs":["DEPRECATED: Meteora no longer uses this one.",""],"writable":true},{"name":"damm_printr_partner_config"},{"name":"damm_pool","writable":true},{"name":"damm_pool_authority"},{"name":"damm_telecoin_vault","writable":true},{"name":"damm_quote_vault","writable":true},{"name":"damm_position_nft_mint","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,114,105,110,116,114,95,100,97,109,109,95,112,111,115,105,116,105,111,110,95,110,102,116,95,109,105,110,116]},{"kind":"account","path":"telecoin_mint"}]}},{"name":"damm_position_nft_account","writable":true},{"name":"damm_position","writable":true},{"name":"damm_event_authority"},{"name":"telecoin_token_program","docs":["We'll need this to init the mint and init the token account."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"quote_token_program","docs":["We'll need this to do transfers."]},{"name":"dbc_program","docs":["The DBC program that abstracts the bonding curve logic."],"address":"dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"},{"name":"damm_program","docs":["The DAMM V2 program that abstracts the AMM logic."],"address":"cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG"},{"name":"system_program","docs":["New accounts, native transfers, etc."],"address":"11111111111111111111111111111111"}],"args":[{"name":"params","type":{"defined":{"name":"SwapIntent"}}}]},{"name":"teleport_with_lz","discriminator":[166,121,233,8,125,40,179,47],"accounts":[{"name":"payer","docs":["This is the user that wants to send telecoin tokens."],"writable":true,"signer":true},{"name":"telecoin_mint","docs":["The telecoin mint that we burn here."],"writable":true},{"name":"telecoin_teleport_config","docs":["If this account does not exist then the provided peer must be set as a default peer.","Otherwise we parse this account's configuration and assert it's been upheld."]},{"name":"peer"},{"name":"user_source_telecoin_wallet","docs":["Where to burn from."],"writable":true},{"name":"telecoin_token_program","docs":["Needed to burn telecoin tokens."],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"event_authority","pda":{"seeds":[{"kind":"const","value":[95,95,101,118,101,110,116,95,97,117,116,104,111,114,105,116,121]}]}},{"name":"program"}],"args":[{"name":"params","type":{"defined":{"name":"TeleportWithLzParams"}}}]}],"accounts":[{"name":"DevConfig","discriminator":[92,158,1,106,83,222,4,81]},{"name":"Peer","discriminator":[50,8,19,55,40,253,37,58]},{"name":"PoolConfig","discriminator":[26,108,14,123,116,230,129,43]},{"name":"PrintrConfig","discriminator":[184,34,37,157,37,223,65,252]},{"name":"StakePosition","discriminator":[78,165,30,111,171,125,11,220]},{"name":"StakingPool","discriminator":[203,19,214,220,220,154,24,102]},{"name":"TelecoinTeleportConfig","discriminator":[146,117,46,78,137,112,71,57]},{"name":"VirtualPool","discriminator":[213,224,5,209,98,69,119,92]}],"events":[{"name":"BuybackAndBurnEvent","discriminator":[158,146,152,190,14,197,155,158]},{"name":"ClaimStakingRewardsEvent","discriminator":[109,78,167,39,50,229,74,85]},{"name":"CreateStakePositionEvent","discriminator":[47,51,210,240,178,138,154,198]},{"name":"DeployTelecoinEvent","discriminator":[133,217,193,229,51,195,248,98]},{"name":"PrintTelecoinEvent","discriminator":[202,7,212,34,205,71,111,139]},{"name":"RefreshStaking2Event","discriminator":[39,218,120,153,29,229,190,254]},{"name":"SetDevConfigDevEvent","discriminator":[89,201,9,41,16,123,16,57]},{"name":"TeleportWithLzEvent","discriminator":[166,170,61,125,224,166,227,98]}],"types":[{"name":"Accumulator","docs":["Accumulator value tracking cumulative rewards per unit of weighted stake.","","Used in the staking system where rewards are distributed proportionally across","all stakers. Values are scaled by 2^64 for precision:","","```text","accumulator += (new_rewards << 64) / total_weighted_stake","pending_rewards = weighted_stake * (current_acc - last_acc) >> 64","```"],"type":{"kind":"struct","fields":["u128"]}},{"name":"BaseFeeConfig","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"cliff_fee_numerator","type":"u64"},{"name":"second_factor","type":"u64"},{"name":"third_factor","type":"u64"},{"name":"first_factor","type":"u16"},{"name":"base_fee_mode","type":"u8"},{"name":"padding_0","type":{"array":["u8",5]}}]}},{"name":"BuybackAndBurnEvent","type":{"kind":"struct","fields":[{"name":"telecoin_id","type":{"defined":{"name":"TelecoinId"}}},{"name":"quote_spent","type":{"defined":{"name":"TokenAmount"}}},{"name":"telecoin_burned","type":{"defined":{"name":"TokenAmount"}}}]}},{"name":"ClaimStakingRewardsEvent","type":{"kind":"struct","fields":[{"name":"owner","docs":["Owner of the position."],"type":"pubkey"},{"name":"telecoin_mint","docs":["Telecoin mint."],"type":"pubkey"},{"name":"position_nonce","docs":["Position nonce."],"type":"u32"},{"name":"quote_rewards","docs":["Quote token rewards claimed."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"telecoin_rewards","docs":["Telecoin rewards claimed."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"position_closed","docs":["Whether the position was closed. Always false for `claim_staking_rewards`;","set to true only by `close_stake_position`."],"type":"bool"},{"name":"returned_stake","docs":["Amount returned to user if closed. Always zero for `claim_staking_rewards`;","the staked amount is only returned by `close_stake_position`."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"quote_token_accumulator","docs":["Position's quote token accumulator after claim."],"type":{"defined":{"name":"Accumulator"}}},{"name":"telecoin_accumulator","docs":["Position's telecoin accumulator after claim."],"type":{"defined":{"name":"Accumulator"}}},{"name":"telecoin_id","docs":["Telecoin ID."],"type":{"defined":{"name":"TelecoinId"}}}]}},{"name":"CreateStakePositionEvent","type":{"kind":"struct","fields":[{"name":"owner","docs":["User that will receive the staking rewards and the telecoins back."],"type":"pubkey"},{"name":"telecoin_id","docs":["Telecoin ID."],"type":{"defined":{"name":"TelecoinId"}}},{"name":"position_nonce","docs":["Position nonce for this user's stake."],"type":"u32"},{"name":"staked","docs":["Amount of telecoin staked."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"lock_period","docs":["Lock period selected."],"type":{"defined":{"name":"LockPeriod"}}},{"name":"staked_at","docs":["Timestamp when staking was created."],"type":"i64"},{"name":"quote_token_accumulator","docs":["Pool's quote token accumulator at position creation (position's initial checkpoint)."],"type":{"defined":{"name":"Accumulator"}}},{"name":"telecoin_accumulator","docs":["Pool's telecoin accumulator at position creation (position's initial checkpoint)."],"type":{"defined":{"name":"Accumulator"}}}]}},{"name":"DeployTelecoinEvent","docs":["Some Printr related details about the deploy."],"type":{"kind":"struct","fields":[{"name":"protocol_version","docs":["The protocol version of the graduating telecoin token."],"type":{"defined":{"name":"PrintrProtocolVersion"}}},{"name":"telecoin_id","docs":["The Printr Telecoin ID."],"type":{"defined":{"name":"TelecoinId"}}},{"name":"dev_on_solana","docs":["The dev's wallet on Solana.","","Will be default if this telecoin doesn't have a solana dev wallet."],"type":"pubkey"}]}},{"name":"DevConfig","docs":["Configuration for a dev of a telecoin token."],"type":{"kind":"struct","fields":[{"name":"fee_sink","docs":["Used to identify the dev for fee distribution.","","Will be the default key if this telecoin doesn't have a solana dev wallet.","That can happen if the telecoin was not printed on Solana and only deployed here","additionally without a bonding curve."],"type":{"defined":{"name":"FeeSink"}}},{"name":"protocol_version","docs":["Can be used to distinguish between breaking changes in the future."],"type":{"defined":{"name":"PrintrProtocolVersion"}}},{"name":"telecoin_id","docs":["What's the canonical telecoin ID at the time of creation.","We try not to break how telecoin IDs are derived but we neither make guarantees they won't","change."],"type":{"defined":{"name":"TelecoinId"}}},{"name":"fee_sink_quote_fee","docs":["When claiming fees we accumulate them in this counter.","When distributing the fees we reset this to zero and transfer the amount.","","# Migration","","After `PrintrProtocolVersion(3)` inclusive this field collects _all_ quote fees, both dev","fees and protocol fees."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"fees","docs":["Custom fee configuration set at print/deploy time."],"type":{"defined":{"name":"DevConfigFees"}}},{"name":"flags","docs":["Bit flags for fee distribution lifecycle."],"type":{"defined":{"name":"DevConfigFlags"}}},{"name":"_padding","type":"u8"}]}},{"name":"DevConfigFees","docs":["Custom fee overrides stored in [DevConfig].","","# Migration","","Until `PrintrProtocolVersion(3)` exclusive we used to store 8 padding bytes."],"type":{"kind":"struct","fields":[{"name":"dbc_protocol_share_of_trading_fee_pct","docs":["Protocol's share of the bonding curve trading fee as a percentage (0-100).","","For example, if the total DBC trading fee is 2% and this value is 15,","then 0.3% goes to the protocol and 1.7% goes to the dev.","","0 means not set.","This is going to be the case for telecoins printed before this struct was introduced.","In that case we use the defaults to keep the behavior consistent with what it was before."],"type":"u8"},{"name":"amm_protocol_share_of_trading_fee_pct","docs":["Protocol's share of the AMM trading fee as a percentage (0-100).","","Same semantics as [Self::dbc_protocol_share_of_trading_fee_pct] but for AMM trades."],"type":"u8"},{"name":"rev_shares","docs":["Up to 2 revshare entries for protocol fee distribution."],"type":{"array":[{"defined":{"name":"RevShareSlot"}},2]}}]}},{"name":"DevConfigFlags","docs":["Anchor-serializable wrapper around [printr_sdk::dev_config::DevConfigFlags]."],"type":{"kind":"struct","fields":["u8"]}},{"name":"DynamicFeeConfig","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"initialized","type":"u8"},{"name":"padding","type":{"array":["u8",7]}},{"name":"max_volatility_accumulator","type":"u32"},{"name":"variable_fee_control","type":"u32"},{"name":"bin_step","type":"u16"},{"name":"filter_period","type":"u16"},{"name":"decay_period","type":"u16"},{"name":"reduction_factor","type":"u16"},{"name":"padding2","type":{"array":["u8",8]}},{"name":"bin_step_u128","type":"u128"}]}},{"name":"EstimateSwapOutput","docs":["This is the returned value from this ix."],"type":{"kind":"struct","fields":[{"name":"estimate","docs":["The swap estimate."],"type":{"defined":{"name":"SwapEstimate"}}},{"name":"which_remaining_accounts_are_owned_by_system_program","docs":["The remaining accounts are mapped onto this list.","The index will be `true` if the account is owned by the system program."],"type":{"vec":"bool"}}]}},{"name":"EstimateTeleportWithLzParams","docs":["Parameters for the [TeleportWithLz] instruction."],"type":{"kind":"struct","fields":[{"name":"message_len","docs":["How long is the message to send.","","See [omnichain_codec::OutgoingMessage] for the message format."],"type":"u16"},{"name":"lz_options","docs":["<https://docs.layerzero.network/v2/developers/evm/configuration/options>"],"type":"bytes"},{"name":"lz_destination_endpoint_id","docs":["The chain ID of the destination chain.","","<https://docs.layerzero.network/v2/deployments/deployed-contracts>"],"type":"u32"}]}},{"name":"FeeSink","type":{"kind":"type","alias":"pubkey"}},{"name":"FeesClaimed","docs":["Fee claiming endpoints return how much fees were claimed - in total - for each token."],"type":{"kind":"struct","fields":[{"name":"in_telecoin","type":{"defined":{"name":"TokenAmount"}}},{"name":"in_quote","type":{"defined":{"name":"TokenAmount"}}}]}},{"name":"LiquidityDistributionConfig","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"sqrt_price","type":"u128"},{"name":"liquidity","type":"u128"}]}},{"name":"LiquidityVestingInfo","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"is_initialized","type":"u8"},{"name":"vesting_percentage","type":"u8"},{"name":"_padding","type":{"array":["u8",2]}},{"name":"bps_per_period","type":"u16"},{"name":"number_of_periods","type":"u16"},{"name":"frequency","type":"u32"},{"name":"cliff_duration_from_migration_time","type":"u32"}]}},{"name":"LockPeriod","docs":["Lock periods for staking, each with its own reward multiplier."],"type":{"kind":"enum","variants":[{"name":"SevenDays"},{"name":"FourteenDays"},{"name":"ThirtyDays"},{"name":"SixtyDays"},{"name":"NinetyDays"},{"name":"OneHundredEightyDays"},{"name":"TenSeconds"}]}},{"name":"LockedVestingConfig","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"amount_per_period","type":"u64"},{"name":"cliff_duration_from_migration_time","type":"u64"},{"name":"frequency","type":"u64"},{"name":"number_of_period","type":"u64"},{"name":"cliff_unlock_amount","type":"u64"},{"name":"_padding","type":"u64"}]}},{"name":"LzAccount","docs":["same to anchor_lang::prelude::AccountMeta"],"type":{"kind":"struct","fields":[{"name":"pubkey","type":"pubkey"},{"name":"is_signer","type":"bool"},{"name":"is_writable","type":"bool"}]}},{"name":"LzReceiveParams","type":{"kind":"struct","fields":[{"name":"src_eid","type":"u32"},{"name":"sender","type":{"array":["u8",32]}},{"name":"nonce","type":"u64"},{"name":"guid","type":{"array":["u8",32]}},{"name":"message","type":"bytes"},{"name":"extra_data","type":"bytes"}]}},{"name":"Peer","docs":["A peer in omnichain network is a connection living on another chain,","typically a smart contract.","","A peer is authorized by the Printr staff to send and receive messages","authoritatively.","This suggests a reciprocal relationship between the two peers.","","To trust a message we must validate that it was sent by a peer.","Validation is done by relaying networks such as Axelar or LayerZero.","Acts as a connection to another chain."],"type":{"kind":"struct","fields":[{"name":"bump","type":"u8"},{"name":"address","docs":["The address of the peer on the other chain.","Is part of the seed"],"type":{"array":["u8",32]}},{"name":"is_lz_enabled","docs":["Admin can enable and disable the LZ communication channel to the peer.","","Multiple peers can be enabled."],"type":"bool"},{"name":"is_lz_default","docs":["Use this peer as the default for LZ teleports.","","Multiple peers can be set as default in which case they are equivalent from the POV of the","security of the protocol."],"type":"bool"}]}},{"name":"PoolConfig","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"quote_mint","docs":["quote mint"],"type":"pubkey"},{"name":"fee_claimer","docs":["Address to get the fee"],"type":"pubkey"},{"name":"leftover_receiver","docs":["Address to receive extra base token after migration, in case token is fixed supply"],"type":"pubkey"},{"name":"pool_fees","docs":["Pool fee"],"type":{"defined":{"name":"PoolFeesConfig"}}},{"name":"partner_liquidity_vesting_info","type":{"defined":{"name":"LiquidityVestingInfo"}}},{"name":"creator_liquidity_vesting_info","type":{"defined":{"name":"LiquidityVestingInfo"}}},{"name":"padding_0","docs":["Padding for future use"],"type":{"array":["u8",14]}},{"name":"padding_1","docs":["Previously was protocol and referral fee percent. Beware of tombstone."],"type":"u16"},{"name":"collect_fee_mode","docs":["Collect fee mode"],"type":"u8"},{"name":"migration_option","docs":["migration option"],"type":"u8"},{"name":"activation_type","docs":["whether mode slot or timestamp"],"type":"u8"},{"name":"token_decimal","docs":["token decimals"],"type":"u8"},{"name":"version","docs":["version"],"type":"u8"},{"name":"token_type","docs":["token type of base token"],"type":"u8"},{"name":"quote_token_flag","docs":["quote token flag"],"type":"u8"},{"name":"partner_permanent_locked_liquidity_percentage","docs":["partner locked liquidity percentage"],"type":"u8"},{"name":"partner_liquidity_percentage","docs":["partner liquidity percentage"],"type":"u8"},{"name":"creator_permanent_locked_liquidity_percentage","docs":["creator post migration fee percentage"],"type":"u8"},{"name":"creator_liquidity_percentage","docs":["creator liquidity percentage"],"type":"u8"},{"name":"migration_fee_option","docs":["migration fee option"],"type":"u8"},{"name":"fixed_token_supply_flag","docs":["flag to indicate whether token is dynamic supply (0) or fixed supply (1)"],"type":"u8"},{"name":"creator_trading_fee_percentage","docs":["creator trading fee percentage"],"type":"u8"},{"name":"token_update_authority","docs":["token update authority"],"type":"u8"},{"name":"migration_fee_percentage","docs":["migration fee percentage"],"type":"u8"},{"name":"creator_migration_fee_percentage","docs":["creator migration fee percentage"],"type":"u8"},{"name":"padding_2","type":{"array":["u8",7]}},{"name":"swap_base_amount","docs":["swap base amount"],"type":"u64"},{"name":"migration_quote_threshold","docs":["migration quote threshold (in quote token)"],"type":"u64"},{"name":"migration_base_threshold","docs":["migration base threshold (in base token)"],"type":"u64"},{"name":"migration_sqrt_price","docs":["migration sqrt price"],"type":"u128"},{"name":"locked_vesting_config","docs":["locked vesting config"],"type":{"defined":{"name":"LockedVestingConfig"}}},{"name":"pre_migration_token_supply","docs":["pre migration token supply"],"type":"u64"},{"name":"post_migration_token_supply","docs":["post migration token supply"],"type":"u64"},{"name":"migrated_collect_fee_mode","docs":["migrated pool collect fee mode"],"type":"u8"},{"name":"migrated_dynamic_fee","docs":["migrated dynamic fee option."],"type":"u8"},{"name":"migrated_pool_fee_bps","docs":["migrated pool fee in bps"],"type":"u16"},{"name":"migrated_pool_base_fee_mode","type":"u8"},{"name":"enable_first_swap_with_min_fee","type":"u8"},{"name":"migrated_compounding_fee_bps","docs":["compounding fee bps for migrated DAMM v2 pool, should only be non-zero if migrated_collect_fee_mode is 2 (Compounding)"],"type":"u16"},{"name":"pool_creation_fee","docs":["pool creation fee in lamports value"],"type":"u64"},{"name":"migrated_pool_base_fee_bytes","docs":["serialized MigratedPoolMarketCapFeeSchedulerParams, only used when migrated_pool_base_fee_mode is market cap scheduler"],"type":{"array":["u8",16]}},{"name":"sqrt_start_price","docs":["minimum price"],"type":"u128"},{"name":"curve","docs":["curve, only use 20 point firstly, we can extend that latter"],"type":{"array":[{"defined":{"name":"LiquidityDistributionConfig"}},20]}}]}},{"name":"PoolFeesConfig","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"base_fee","type":{"defined":{"name":"BaseFeeConfig"}}},{"name":"dynamic_fee","type":{"defined":{"name":"DynamicFeeConfig"}}}]}},{"name":"PoolMetrics","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"total_protocol_base_fee","type":"u64"},{"name":"total_protocol_quote_fee","type":"u64"},{"name":"total_trading_base_fee","type":"u64"},{"name":"total_trading_quote_fee","type":"u64"}]}},{"name":"PrintTelecoinEvent","docs":["Some Printr related details about the launch on top of meteora events."],"type":{"kind":"struct","fields":[{"name":"protocol_version","docs":["The protocol version of the graduating telecoin token."],"type":{"defined":{"name":"PrintrProtocolVersion"}}},{"name":"telecoin_id","docs":["The Printr Telecoin ID."],"type":{"defined":{"name":"TelecoinId"}}},{"name":"quote_mint","docs":["Which mint is used as a quote."],"type":"pubkey"},{"name":"dev_on_solana","docs":["The dev's wallet on Solana."],"type":"pubkey"}]}},{"name":"PrintrConfig","docs":["Configuration struct holding the public keys for various Printr program wallets.","","# Fields","- `printr_fee_authority`: Receives Printr's portion of the protocol fees.","- `questflow_ai_fee_authority`: Receives QuestFlow AI's portion of the protocol fees.","- `staking_authority`: Receives all fees that are in telecoin.","","# Authority","","This account is an authority over several token account vaults that hold protocol and dev fees."],"type":{"kind":"struct","fields":[{"name":"printr_fee_authority","docs":["This account receives Printr's portion of the protocol fees."],"type":"pubkey"},{"name":"questflow_ai_fee_authority","docs":["This account receives QuestFlow AI's portion of the protocol fees."],"type":"pubkey"},{"name":"_padding_1","docs":["# Migration","","See [Self::migrate_if_necessary]."],"type":{"array":["u8",32]}},{"name":"staking_authority","docs":["Receives all fees that are in telecoin."],"type":"pubkey"},{"name":"_padding_2","docs":["# Migration","","See [Self::migrate_if_necessary]."],"type":{"array":["u8",2]}},{"name":"_padding_3","docs":["# Migration","","See [Self::migrate_if_necessary]."],"type":{"array":["u8",2]}},{"name":"_padding_4","docs":["# Migration","","See [Self::migrate_if_necessary]."],"type":{"array":["u8",2]}},{"name":"_padding_5","docs":["# Migration","","See [Self::migrate_if_necessary]."],"type":{"array":["u8",2]}},{"name":"_padding_6","docs":["# Migration","","See [Self::migrate_if_necessary]."],"type":{"array":["u8",1]}},{"name":"last_update","docs":["# Migration","","This field was originally padding.","It was therefore set to 0.","We repurposed it to [PrintrProtocolVersion] to be able to track migrations of this struct."],"type":{"defined":{"name":"PrintrProtocolVersion"}}}]}},{"name":"PrintrProtocolVersion","docs":["Stores the protocol version that the telecoin was created with."],"type":{"kind":"struct","fields":["u8"]}},{"name":"ProtocolFeeSink","docs":["Lookup table for protocol fee sinks.","","Main raison d'etre for this is to avoid storage cost and migrations on Solana.","We agreed with the business side of Printr that the list will be rather static and won't require","additions in near future.","So we buy ourselves time by skipping the need for migrations this way."],"repr":{"kind":"rust"},"type":{"kind":"enum","variants":[{"name":"None"},{"name":"QuestflowAi"}]}},{"name":"RefreshStaking2Event","type":{"kind":"struct","fields":[{"name":"telecoin_id","docs":["Telecoin ID, derives the mint."],"type":{"defined":{"name":"TelecoinId"}}},{"name":"quote_rewards","docs":["Quote token rewards distributed to stakers."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"protocol_quote_fees","docs":["Quote token fees sent to protocol + revshare wallets."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"telecoin_rewards","docs":["Telecoin rewards added."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"quote_token_accumulator","docs":["New quote token accumulator value."],"type":{"defined":{"name":"Accumulator"}}},{"name":"telecoin_accumulator","docs":["New telecoin accumulator value."],"type":{"defined":{"name":"Accumulator"}}},{"name":"protocol_telecoin_fees","docs":["Telecoin fees sent to the protocol staking wallet."],"type":{"defined":{"name":"TokenAmount"}}}]}},{"name":"RevShareSlot","type":{"kind":"struct","fields":[{"name":"sink","type":{"defined":{"name":"ProtocolFeeSink"}}},{"name":"share_of_protocol_fee_pct","docs":["This partner's share of the protocol fee as a percentage (0-100).","","The fee hierarchy is:","1. A trade incurs a **trading fee** (e.g. 1% of trade volume).","2. The protocol takes a share of that trading fee","([DevConfigFees::dbc_protocol_share_of_trading_fee_pct] or","[DevConfigFees::amm_protocol_share_of_trading_fee_pct], e.g. 75%).","3. This field is a percentage of *that* protocol share (e.g. 10%).","","Concrete example: 1% trading fee, 75% protocol share, 10% revshare →","effective revshare = 1% × 75% × 10% = 0.075% of trade volume."],"type":"u8"}]}},{"name":"SetDevConfigDevEvent","docs":["Emitted whenever an admin updates the fee sink on a dev config."],"type":{"kind":"struct","fields":[{"name":"telecoin_id","docs":["The Printr Telecoin ID whose dev config was updated."],"type":{"defined":{"name":"TelecoinId"}}},{"name":"telecoin_mint","docs":["The telecoin mint whose dev config was updated."],"type":"pubkey"},{"name":"previous_fee_sink","docs":["The fee sink before the update."],"type":{"defined":{"name":"FeeSink"}}},{"name":"new_fee_sink","docs":["The fee sink after the update."],"type":{"defined":{"name":"FeeSink"}}}]}},{"name":"SetDevConfigFeesParams","type":{"kind":"struct","fields":[{"name":"dbc_protocol_share_of_trading_fee_pct","type":"u8"},{"name":"amm_protocol_share_of_trading_fee_pct","type":"u8"}]}},{"name":"SetPeerConfParams","docs":["Parameters for the [SetPeerConf] instruction."],"type":{"kind":"struct","fields":[{"name":"enable_lz","type":{"option":"bool"}},{"name":"set_as_default","type":{"option":"bool"}}]}},{"name":"SetTelecoinTeleportConfParams","docs":["Parameters for the [SetTelecoinTeleportConf] instruction."],"type":{"kind":"struct","fields":[{"name":"set_lz_peer_config","type":{"option":{"defined":{"name":"TeleportPathConfig"}}}}]}},{"name":"SqrtBitshiftedPrice","docs":["This is a sqrt and bitshifted price ready to be compared to Meteora prices."],"type":{"kind":"struct","fields":[{"name":"price","docs":["The inner raw value."],"type":"u128"}]}},{"name":"StakePosition","docs":["Individual user's stake position in a staking pool.","","PDA seeds:","```ignore","[","SEED_PREFIX_FOR_STAKE_POSITION,","telecoin_mint.as_ref(),","owner.as_ref(),","position_nonce.to_le_bytes().as_ref(),","]","```","","The position_nonce allows users to have multiple stake positions per telecoin."],"type":{"kind":"struct","fields":[{"name":"bump","docs":["Bump seed for PDA derivation."],"type":"u8"},{"name":"position_nonce","docs":["Position nonce - allows multiple positions per user per telecoin.","","Stored as u32 and used in PDA derivation as little-endian bytes (to_le_bytes()).","There can be only one position per (telecoin, owner, position_nonce) tuple at the time.","However, position nonces can be reused after a position is closed (unlocked and fully","claimed)."],"type":"u32"},{"name":"staked","docs":["Amount of telecoin staked."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"lock_period","docs":["Lock period selected by user."],"type":{"defined":{"name":"LockPeriod"}}},{"name":"staked_at_clock_timestamp","docs":["Timestamp from Clock sysvar when the stake was created."],"type":"i64"},{"name":"quote_token_last_accumulator","docs":["Quote token accumulator value when user last claimed or staked."],"type":{"defined":{"name":"Accumulator"}}},{"name":"telecoin_last_accumulator","docs":["Telecoin accumulator value when user last claimed or staked."],"type":{"defined":{"name":"Accumulator"}}}]}},{"name":"StakingPool","docs":["One pool per telecoin. Users stake the telecoin and earn rewards in multiple tokens:","","- Quote token trading fees","- Telecoin trading fees","","PDA seeds: `[b\"staking_pool\", telecoin_mint.as_ref()]`","","Note: Mint addresses can be derived from telecoin_id, so they're not stored here."],"type":{"kind":"struct","fields":[{"name":"bump","docs":["Bump seed for PDA derivation."],"type":"u8"},{"name":"refreshed_at_clock_slot","docs":["Last slot when the pool was refreshed."],"type":"u64"},{"name":"telecoin_id","docs":["Telecoin ID this pool is associated with."],"type":{"defined":{"name":"TelecoinId"}}},{"name":"total_weighted_stake","docs":["Total weighted stake across all users.","","weighted_stake = sum(user_staked_amount × lock_multiplier_bps / 10000)"],"type":"u128"},{"name":"quote_token_accumulator","docs":["Accumulator for quote token rewards."],"type":{"defined":{"name":"Accumulator"}}},{"name":"telecoin_accumulator","docs":["Accumulator for telecoin rewards."],"type":{"defined":{"name":"Accumulator"}}},{"name":"last_telecoin_vault_balance","docs":["Last observed telecoin vault balance for calculating new rewards."],"type":{"defined":{"name":"TokenAmount"}}}]}},{"name":"SwapEstimate","type":{"kind":"struct","fields":[{"name":"actual_input","docs":["What goes into a pool (either bonding curve or AMM).","Does not include the fees."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"input_fee","docs":["What's spent on fees. (Input)"],"type":{"defined":{"name":"TokenAmount"}}},{"name":"output_fee","docs":["What's spent on fees. (Output)"],"type":{"defined":{"name":"TokenAmount"}}},{"name":"output","docs":["What comes out of the pool.","Does not include the fees."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"next_price","docs":["The sqrt price after the swap."],"type":{"defined":{"name":"SqrtBitshiftedPrice"}}},{"name":"current_price","docs":["The sqrt price after the swap."],"type":{"defined":{"name":"SqrtBitshiftedPrice"}}}]}},{"name":"SwapIntent","docs":["Represents user's intent to swap tokens in Printr ecosystem.","We translate this intent to specific Meteora CPIs."],"type":{"kind":"enum","variants":[{"name":"SpendQuote","fields":[{"name":"sell","docs":["Quote amount"],"type":{"defined":{"name":"TokenAmount"}}},{"name":"max_price","docs":["In Printr we apply slippage to price."],"type":{"defined":{"name":"SqrtBitshiftedPrice"}}}]},{"name":"SellTelecoin","fields":[{"name":"sell","docs":["telecoin amount"],"type":{"defined":{"name":"TokenAmount"}}},{"name":"min_price","docs":["In Printr we apply slippage to price."],"type":{"defined":{"name":"SqrtBitshiftedPrice"}}}]},{"name":"SpendAllQuote","fields":[{"name":"special_value","docs":["Must be equal to [printr_sdk::consts::SPEND_ALL_SPECIAL_VALUE]."],"type":"u64"},{"name":"max_price","docs":["In Printr we apply slippage to price."],"type":{"defined":{"name":"SqrtBitshiftedPrice"}}}]}]}},{"name":"TelecoinId","docs":["Printr's Token ID is a hash of the ABI-encoded telecoin params."],"type":{"kind":"struct","fields":[{"array":["u8",32]}]}},{"name":"TelecoinParams","docs":["The core primitive of the Printr protocol.","","These telecoin params uniquely identify a token launched with Printr."],"type":{"kind":"struct","fields":[{"name":"salt","type":{"array":["u8",32]}},{"name":"dev_addresses","docs":["# Note","","At this point, `dev_addresses` has become a misnomer.","It contains more information than that."],"type":"bytes"},{"name":"name","type":{"array":["u8",32]}},{"name":"symbol","type":{"array":["u8",32]}},{"name":"packed_params","type":{"array":["u8",32]}},{"name":"chains","type":{"vec":{"array":["u8",32]}}},{"name":"quote_pairs","type":{"vec":{"array":["u8",32]}}},{"name":"quote_prices","type":"bytes"}]}},{"name":"TelecoinParamsCompact","docs":["On Solana we're dealing with txs size limits.","Being able to compress the telecoin params into a smaller structure helps us submit smaller txs.","","You can always convert this back to [TelecoinParams]."],"type":{"kind":"struct","fields":[{"name":"version","docs":["It's nice to version this in case we need to further compact it or do other changes."],"type":"u8"},{"name":"data","docs":["The compact representation of the telecoin params."],"type":"bytes"}]}},{"name":"TelecoinTeleportConfig","docs":["Overrides default configuration for a specific telecoin with respect to omnichain transfers."],"type":{"kind":"struct","fields":[{"name":"lz_peer","docs":["If set then only the specified peer can be used to teleport this telecoin."],"type":{"defined":{"name":"TeleportPathConfig"}}}]}},{"name":"TeleportPathConfig","docs":["Defines how teleports should be handled."],"type":{"kind":"enum","variants":[{"name":"Default"},{"name":"Disabled"},{"name":"Peers","fields":[{"name":"teleport_any_direction1","docs":["This peer can be used for teleports in any direction: mint and burn."],"type":"pubkey"},{"name":"teleport_any_direction2","docs":["This peer can be used for teleports in any direction: mint and burn."],"type":"pubkey"},{"name":"teleport_in_only","docs":["This peer can be used for teleports in only: mint"],"type":"pubkey"}]}]}},{"name":"TeleportWithLzEvent","docs":["Event emitted by the [TeleportWithLz] instruction."],"type":{"kind":"struct","fields":[{"name":"guid","type":{"array":["u8",32]}},{"name":"nonce","type":"u64"},{"name":"lz_destination_endpoint_id","type":"u32"},{"name":"telecoin_id","type":{"defined":{"name":"TelecoinId"}}},{"name":"destination_recipient_address","type":{"array":["u8",32]}},{"name":"destination_peer_address","type":{"array":["u8",32]}},{"name":"source_user_address","type":"pubkey"},{"name":"teleporting","type":{"defined":{"name":"TokenAmount"}}}]}},{"name":"TeleportWithLzParams","docs":["Parameters for the [TeleportWithLz] instruction.","Used to construct [OutgoingMessage]."],"type":{"kind":"struct","fields":[{"name":"to_send","docs":["Burns this much telecoin tokens and mints them again on the other chain."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"destination_recipient_address","docs":["Who to mint the telecoin tokens to."],"type":{"array":["u8",32]}},{"name":"telecoin_id","docs":["Printr Telecoin ID derives the telecoin mint."],"type":{"defined":{"name":"TelecoinId"}}},{"name":"lamports_gas","docs":["How much to pay LZ for the transaction."],"type":{"defined":{"name":"TokenAmount"}}},{"name":"lz_options","docs":["<https://docs.layerzero.network/v2/developers/evm/configuration/options>"],"type":"bytes"},{"name":"lz_destination_endpoint_id","docs":["The chain ID of the destination chain.","","<https://docs.layerzero.network/v2/deployments/deployed-contracts>"],"type":"u32"}]}},{"name":"TokenAmount","docs":["A token amount in its smallest denomination as seen in a token account."],"type":{"kind":"struct","fields":[{"name":"amount","docs":["Wraps around this value to give it a meaning."],"type":"u64"}]}},{"name":"VirtualPool","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"volatility_tracker","docs":["volatility tracker"],"type":{"defined":{"name":"VolatilityTracker"}}},{"name":"config","docs":["config key"],"type":"pubkey"},{"name":"creator","docs":["creator"],"type":"pubkey"},{"name":"base_mint","docs":["base mint"],"type":"pubkey"},{"name":"base_vault","docs":["base vault"],"type":"pubkey"},{"name":"quote_vault","docs":["quote vault"],"type":"pubkey"},{"name":"base_reserve","docs":["base reserve"],"type":"u64"},{"name":"quote_reserve","docs":["quote reserve"],"type":"u64"},{"name":"protocol_base_fee","docs":["protocol base fee"],"type":"u64"},{"name":"protocol_quote_fee","docs":["protocol quote fee"],"type":"u64"},{"name":"partner_base_fee","docs":["partner base fee"],"type":"u64"},{"name":"partner_quote_fee","docs":["trading quote fee"],"type":"u64"},{"name":"sqrt_price","docs":["current price"],"type":"u128"},{"name":"activation_point","docs":["Activation point"],"type":"u64"},{"name":"pool_type","docs":["pool type, spl token or token2022"],"type":"u8"},{"name":"is_migrated","docs":["is migrated"],"type":"u8"},{"name":"is_partner_withdraw_surplus","docs":["is partner withdraw surplus"],"type":"u8"},{"name":"is_protocol_withdraw_surplus","docs":["is protocol withdraw surplus"],"type":"u8"},{"name":"migration_progress","docs":["migration progress"],"type":"u8"},{"name":"is_withdraw_leftover","docs":["is withdraw leftover"],"type":"u8"},{"name":"is_creator_withdraw_surplus","docs":["is creator withdraw surplus"],"type":"u8"},{"name":"migration_fee_withdraw_status","docs":["migration fee withdraw status","bit 1 (0b010) creator","bit 2 (0b100) partner"],"type":"u8"},{"name":"metrics","docs":["pool metrics"],"type":{"defined":{"name":"PoolMetrics"}}},{"name":"finish_curve_timestamp","docs":["The time curve is finished"],"type":"u64"},{"name":"creator_base_fee","docs":["creator base fee"],"type":"u64"},{"name":"creator_quote_fee","docs":["creator quote fee"],"type":"u64"},{"name":"legacy_creation_fee_bits","docs":["legacy creation fee bits, we dont use this now"],"type":"u8"},{"name":"creation_fee_bits","docs":["pool creation fee claim status"],"type":"u8"},{"name":"has_swap","docs":["Cached flag"],"type":"u8"},{"name":"_padding_0","docs":["Padding for further use"],"type":{"array":["u8",5]}},{"name":"protocol_liquidity_migration_fee_bps","type":"u16"},{"name":"_padding_1","type":{"array":["u8",6]}},{"name":"protocol_migration_base_fee_amount","type":"u64"},{"name":"protocol_migration_quote_fee_amount","type":"u64"},{"name":"_padding_2","docs":["Padding for further use"],"type":{"array":["u64",3]}}]}},{"name":"VolatilityTracker","serialization":"bytemuck","repr":{"kind":"c"},"type":{"kind":"struct","fields":[{"name":"last_update_timestamp","type":"u64"},{"name":"padding","type":{"array":["u8",8]}},{"name":"sqrt_price_reference","type":"u128"},{"name":"volatility_accumulator","type":"u128"},{"name":"volatility_reference","type":"u128"}]}}]} |