52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
# # ⚠ Warning
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
|
# LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
#
|
|
# [🥭 Mango Markets](https://mango.markets/) support is available at:
|
|
# [Docs](https://docs.mango.markets/)
|
|
# [Discord](https://discord.gg/67jySBhxrg)
|
|
# [Twitter](https://twitter.com/mangomarkets)
|
|
# [Github](https://github.com/blockworks-foundation)
|
|
# [Email](mailto:hello@blockworks.foundation)
|
|
|
|
|
|
import typing
|
|
|
|
from decimal import Decimal
|
|
|
|
from solana.publickey import PublicKey
|
|
|
|
from .accountinfo import AccountInfo
|
|
from .combinableinstructions import CombinableInstructions
|
|
from .context import Context
|
|
from .instructions import build_spl_create_associated_account_instructions
|
|
from .instrumentvalue import InstrumentValue
|
|
from .tokenaccount import TokenAccount
|
|
from .tokens import Token
|
|
from .version import Version
|
|
from .wallet import Wallet
|
|
|
|
|
|
def build_create_associated_instructions_and_account(
|
|
context: Context, wallet: Wallet, owner: PublicKey, token: Token
|
|
) -> typing.Tuple[CombinableInstructions, TokenAccount]:
|
|
create_ata = build_spl_create_associated_account_instructions(
|
|
context, wallet, owner, token
|
|
)
|
|
ata_address = TokenAccount.derive_associated_token_address(owner, token)
|
|
account_info = AccountInfo(
|
|
ata_address, False, Decimal(0), owner, Decimal(0), bytes()
|
|
)
|
|
token_account = TokenAccount(
|
|
account_info,
|
|
Version.UNSPECIFIED,
|
|
owner,
|
|
InstrumentValue(token, Decimal(0)),
|
|
)
|
|
|
|
return create_ata, token_account
|